C语言必背经典程序代码

这篇具有很好参考价值的文章主要介绍了C语言必背经典程序代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、水仙花数

题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
   本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

方法一:

#include <stdio.h>

int main(int argc, const char *argv[])
{ 
    for(int i=1;i<10;i++){
        for (int j=0;j<10;j++){
            for (int k=0;k<10;k++){
                if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
            
                printf("%d\n",i*100+j*10+k);                    
                
    
            }

        }
}
    return 0;
} 

方法二:

#include <stdio.h>
int main()
{
int i,j,k,n;
printf("'water flower'number is:");
 for(n=100;n<1000;n++)
 {
  i=n/100;/*分解出百位*/
  j=n/10%10;/*分解出十位*/
  k=n%10;/*分解出个位*/
  if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
   {
   printf("%-5d",n);
   }
 }
printf("\n");
}

2、整型数组内函数求和。

使用函数封装,实现一个整型数组内数据的求和。

 #include <stdio.h>
 
 int array_sum(int *data,int n);
 
 int main(int argc, const char *argv[])
 {
 int a[]={1,2,3,4,5,6,7,8};
 int sum=0;
 sum=array_sum(a,sizeof(a)/sizeof(int));
 printf("sum=%d\n",sum);
 return 0;
 }                                        
 
 
 int array_sum(int *data,int n){
 int ret=0;
 int i;
 for(i=0;i<n;i++){
 
 ret+=data[i];
 
 }

3、斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

#include <stdio.h>
                                          
int main(int argc, const char *argv[])
{
    int arr[15];
    arr[0]=1;
    arr[1]=1;
    for(int i=2;i<15;i++)
    {
arr[i]=arr[i-2]+arr[i-1];
    }
    for(int i=0;i<15;i++){
printf("%d、",arr[i]);
    }
    printf("\n");
    return 0;
}
                                          

4、杨辉三角

杨辉三角的每行行首与每行结尾的数都为1.而且,每个数等于其左上及其正上二数的和

#include <stdio.h>

int main(int argc, const char *argv[])
{
    int a[15][15]={{0}};
    int i,j;
    for(i=0;i<15;i++)
    {
        a[i][0]=1;
        for(j=1;j<=i;j++)
            a[i][j]=a[i-1][j-1]+a[i-1][j];

                                                        
    }
    for(i=0;i<15;i++){
        for(j=0;j<=i;j++)
            printf("%8d",a[i][j]);
            printf("\n");

    }

    return 0;
}

5、猴子吃桃子


一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住多吃了一个。第二天又吃了一半,再加上一个;后面每天都是这样吃.到第10天的时候,小猴子发现只有一个桃子了。
问小猴子第一天共摘了多少个桃子?
用递归函数求得小猴子第一天共摘了多少个桃子。

#include <stdio.h>

int tao(int n);
                                               
int main(int argc, const char *argv[])
{
printf("%d\n",tao(10));

    return 0;
}

int tao(int n){

    if(n==1){
return 1;
}


return (tao(n-1)+1)*2;


}

6、编写一个时钟

#include <unistd.h>
int main(int argc, const char *argv[])
{
int year,month,day, hour,min,sec;
scanf("%d %d %d %d %d %d",&year,&month,&day,&hour,&min,&sec);
while(1){
sleep(1);
if(sec<59){
    sec++;}
else if(min<59){
min++;
sec=00;}
else if(hour<23){
hour++;
min=0;
sec=0;
}else if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<31){
    day++;
hour=00;
min=00;
sec=00;

}
                                                                                                 

else if(month==02&&day<28){
    day++;
hour=00;
min=00;
sec=00;

}


else if((month==4||month==6||month==9||month==11)&&day<30){     
    day++;
hour=00;
min=00;
sec=00;

}
else if(month<12){
month++;
day=01;
hour=00;
min=00;
sec=00;
}else {
year++;
month=01;
day=01;
hour=00;
min=00;
sec=00;
}

printf("%02d:%02d:%02d:%02d:%02d:%02d\r",year,month,day,hour,min,sec);
fflush(stdout);


}
    return 0;
}

7、字符串中计算某字符出现的次数


写一个函数有两个参数,第一个参数是个字符,第二个参数是个char *,
函数功能为返回这个字符串中该字符的个数。

#include <stdio.h>

int func(char a,char *b);

int main(int argc, const char *argv[])
{
char c;
char s[30]={0};

printf("Please input char:\n");
scanf("%c",&c);
getchar();                                  
printf("Please input string:\n");
gets(s);
func(c,s);
    return 0;
}

int func(char a,char *b){
int i=0;
while(*b){
    if(a==*b){
i++;
}
*b++;
}
printf("%d\n",i);
}

8、逆序输出

一、逆序输出字符串

#include <stdio.h>

int main(int argc, const char *argv[])
{
int arr[10];
for(int i=0;i<10;i++){
    scanf("%d",&arr[i]);
}
printf("逆序输出为");
int n, i;
n=sizeof(arr)/sizeof(int);               
for(i=n-1;i>=0;i--)
    printf("%d\t",arr[i]);
putchar('\n');
    return 0;
}


二、逆序输出数组中的数据

 #include <stdio.h>
 
 int main(int argc, const char *argv[])
 {
     int a[]={1,2,3,4,5,6};
     int *p,*q,n,i,temp;
     n=sizeof(a)/sizeof(int);
     p=a;
     q=&a[n-1];
     while(p<q){
         temp=*p;
         *p=*q;
         *q=temp;
         p++;
         q--;
     }
 
     for (i=0;i<n;i++){
         printf("%d\n",a[i]);
     }
     return 0;
 }
                                         

9、字符串中删除重复字符

#include <stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{
    char s[100];
    printf("input:");
    gets(s);
    int n=strlen(s);
    for(int i=0;i<n;i++){
        int k=i+1;
        for(int j=i+1;j<n;j++){
if (s[j]!=s[i])
        s[k++]=s[j];
        }                                
        s[k]='\0';
    }
    puts(s);
    return 0;
}
                                         

10、用函数封装实现字符串拼接

#include <stdio.h>

char *strcat(char *a,char *b);

int main(int argc, const char *argv[])
{
    char a[50]="hello";
    char b[]="word";
    puts(strcat(a,b));                      
    return 0;
}


char *strcat(char *a,char *b){
char *c=a;
while(*a){
a++;
}
while(*b){
*a=*b;
a++;
b++;
}
*a='\0';

return c;

}

11、删除字符串中的空格

#include <stdio.h>
#include <string.h>
void del_space(char *s1);

int main(int argc, const char *argv[])
{
    char s[]="a d  gg sd ";
    puts(s);
    del_space(s);
    puts(s);
    return 0;
}

void del_space(char *s1)
{
    char *s2;
    s2=s1;
    while(*s1){                               
        if(*s1==' ')
        {
            s1++;
        }else{
            *s2=*s1;
            s1++;
            s2++;
        }
    }
    *s2='\0';

}
                                              
                                              

12、求字符串中数字字符个数及把数字字符转换成数字求和。  

#include <stdio.h>

int main(int argc, const char *argv[]){
    char s[100];
    int i=0;
    int j=0;
    int sum=0;
    gets(s);
    //puts(s);
    while(s[i]!='\0'){
        if('0'<=s[i]&&s[i]<='9'){
            j++;
        sum+=(s[i]-'0');
        }                                                             
        i++;
    }
    printf("字符串中数字字符的个数为:%d\n",j);

    printf("字符串中数字字符求和为:%d\n",sum);
    return 0;
}

13、二维数组中求出最大值及最大值所在的行数和列数。

#include <stdio.h>

int main(int argc, const char *argv[])
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j,row,cloumn;
row=cloumn=0;
for(i=0;i<3;i++){
for (j=0;j<3; j++){
    if(a[row][cloumn]<a[i][j]){
        row=i;
        cloumn=j;
}

}                                                                        
}

printf("max=%d 最大值所在行为%d行 %d列\n",a[row][cloumn],row,cloumn);

    return 0;
}

14、冒泡排序

#include <stdio.h>

int main(int argc, const char *argv[])
{
    int i,j,temp;
    int arr[5]={0};
    printf("input:");                            
    for(i=0;i<5;i++){
        scanf("%d",&arr[i]);
    }
    for(i=0;i<4;i++){
        for (j=0;j<4-i;j++){
            if(arr[j]>arr[j+1]){

                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;

            }

        }

    }
    printf("排序后为:");
    for(i=0;i<5;i++){
        printf("%d ",arr[i]);

    }
    putchar(10);
    return 0;
}
                                                 

15、实现两个数的交换(函数封装)

#include <stdio.h>

void  swap(int *x, int *y);

int main(int argc, const char *argv[])
{
    int a;                                  
    int b;
    scanf("%d",&a);
    scanf("%d",&b);
swap(&a,&b);
printf("%d\n",a);
printf("%d\n",b);
    return 0;
}

void  swap(int *x, int *y){
int temp;
temp=*x;
*x=*y;
*y=temp;


}

16、简易超市结账系统

#include <stdio.h>

int main(int argc, const char *argv[])
{   int n;
    double m;
    printf("***********************************************\n");
    printf("欢迎你来给我送钱,请按以下步骤进行送钱程序\n");
    printf("1、是尊贵会员请输入1以及消费金额\n");
    printf("2、不是尊贵会员请输入2以及消费金额\n");
    printf("***********************************************\n");
    scanf("%d %lf",&n,&m);
    if(n=1){
if(m<100){
printf("money is %lf\n",m*0.99);
}else if(m<200){

printf("money is %lf\n",m*0.95);
}else if(m<300){


printf("money is %lf\n",m*0.92);


}else if(m<500){

printf("money is %lf\n",m*0.88);
}else{
                                                                                                   

printf("money is %lf\n",m*0.8);
}

    }else{


if(m<100){
printf("money is %lf\n",m);
}else if(m<200){

printf("money is %lf\n",m*0.98);
}else if(m<300){


printf("money is %lf\n",m*0.95);


}else if(m<500){

printf("money is %lf\n",m*0.9);
}else{


printf("money is %lf\n",m*0.88);
}


    }
    return 0;
}
                                                                                                   
                                                                                                   
                                                                                                   

17、完数

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出1000以内的所有完数。

 

#include <stdio.h>

int main(int argc, const char *argv[])
{
    int i,j,sum;
for (i=3;i<=1000;i++){
    sum=1;
for (j=2;j<i;j++){
                                          
    if((i%j)==0)
        sum+=j;
}

if(sum==i)
printf("%d\n",i);
}
    return 0;
}
                                          
                                          

18、简单选择排序

#include <stdio.h>
#define N 5
int main(int argc, const char *argv[])
{
    int i,j,k,temp;
    int num[N];
    printf("input num:",N);

    for(i=0;i<N;i++){

        scanf("%d",&num[i]);

    }

    for (i=0;i<N-1;i++){
        k=i;
        for(j=i+1;j<N;j++){            
            if (num[j]<num[k]){
                k=j;
            }
        }
        if(k!=i){
            temp=num[i];
            num[i]=num[k];
            num[k]=temp;

        }
    }

    printf("output:\n");
    for(i=0;i<N;i++){

        printf("%d",num[i]);


    }
    putchar(10);
    return 0;
}
                                       

19、用函数封装思想实现strncpy

#include <stdio.h>

int main(int argc, const char *argv[])
{printf("please input two string and n:\n");
    char a[100];
    gets(a);
    char b[100];
    gets(b);
    int n;
    scanf("%d",&n);
char *p=a;
char *q=b;

int i=0;                                            
while(*q&&i<n){
*p=*q;
i++;
p++;
q++;
}
printf("strncpy:\n");
puts(a);

return 0;
}
                                                    

20、实现strcmp的功能

 #include <stdio.h>
 
 int main(int argc, const char *argv[])
 {
     printf("please input two string :\n");
     char a[100];
     gets(a);
     char b[100];
     gets(b);
     char *p=a;
     char *q=b;
 
     while (*p&&*q){
         if(*p<*q){
             printf("-1\n");
             return 0;
         }else if(*p>*q){
 
             printf("1\n");
             return 0;
         }else{
             p++;
             q++;
             if((*p=='\0')&&(*q=='\0')){
                 printf("0\n");
                 return 0;
             }
         }
     }
     if(*p){
         printf("1");
     }else{
         printf("-1");
     }
 
     return 0;
 }                                                 
                                                   
                                                   

21、用函数封装实现strcat的功能

方式一(最后添加'\0'):

#include <stdio.h>
#include<string.h>
void mystrcat(char *x,char *y);
int main(int argc, const char *argv[])
{
char a[100];
char b[100];
gets(a);
gets(b);
mystrcat(a,b);
puts(a);
    return 0;
}

void mystrcat(char *x,char *y){
x=x+strlen(x);
while(*y){
*x=*y;
x++;
y++;

}
*x='\0';
}                                       


方式二(初始化数组'\0'):
#include <stdio.h>
#include<string.h>
void mystrcat(char *x,char *y);
int main(int argc, const char *argv[])
{
char a[100]={0};
char b[100]={0};
gets(a);
gets(b);
mystrcat(a,b);
puts(a);
    return 0;
}

void mystrcat(char *x,char *y){
x=x+strlen(x);
while(*y){
*x=*y;
x++;
y++;
  
}
//*x='\0';                                    
}
                                              
方式二(定义全局变量'\0'):  
                                           
#include <stdio.h>
#include<string.h>
void mystrcat(char *x,char *y);
char a[100];
char b[100];
int main(int argc, const char *argv[])
{
gets(a);
gets(b);
mystrcat(a,b);
puts(a);                                                   
    return 0;
}

void mystrcat(char *x,char *y){
x=x+strlen(x);
while(*y){
*x=*y;
x++;
y++;

}
//*x='\0';
}

22、用sqrt 实现求三角形面积

 #include <stdio.h>                   //编译时加-lm
 #include <math.h>
 int main(int argc, const char *argv[])
 {
     double area;
     double a,b,c,s,n;
     printf("请输入三角形的三边长\n");
     scanf("%lf",&a);
     scanf("%lf",&b);
     scanf("%lf",&c);                           
     if((a+b)>c&&(a+c)>b&&(b+c)>a){
         s=1.0/2*(a+b+c);
         area=sqrt(s*(s-a)*b*c);
         printf("%lf",area);
         putchar('\n');
     } else{
         printf("erro");
         putchar('\n');
     }
     return 0;
 }

23、输入整数转换为字符串

#include <stdio.h>
char *zhuan(char *p,int n);

int main(int argc, const char *argv[])
{char s[50],*r;
    int n;
    printf("请输入要转换为字符串的整数\n");
    scanf("%d",&n);
    r=zhuan(s,n);
    puts(r);
    puts(s);
    return 0;
}

char *zhuan(char *p,int n){

    int r,i=0,j;
                                                  
    while(n){

        r=n%10;
        n=n/10;
        p[i]=r+'0';
        i++;
    }

    p[i]='\0';
    j=i-1;
    i=0;
    while(i<j){
        r=p[i];
        p[i]=p[j];
        p[j]=r;
        i++;
        j--;
    }
    return p;

}

24、简易实现手机商城功能

#include <stdio.h>
typedef struct
{
    int ID;
    char Brand[10];
    char Model[20];
    char CPU[20];
    float Price;
}PH;

void ui();
void input(PH ph[],int a);
void output(PH ph[],int a);
void selec(PH *p);
int num;

int main(int argc, const char *argv[])
{

while(1){
 sleep(1);
    ui();
    int s;
    PH ph[10];                                                                                                           
    PH *p=ph;
    printf("please selec:\n");
    scanf("%d",&s);
switch(s)
{
case 1: input(ph,s);break;
case 2: output(ph,s);break;
case 3: return 0;
case 4:selec(p);break;
default:
       puts("xia hu shu");

}

       while(getchar()!='\n');
}
return 0;
}



void input(PH ph[],int a){
    int n=0;
    printf("please input iphone num:\n");
    scanf("%d",&n);
    printf("ID\tBrand\tModel\tCPU\tPrice\n");
    for(int i=num;i<num+n;i++){

        scanf("%d %s %s %s %f",&ph[i].ID,ph[i].Brand,ph[i].Model,ph[i].CPU,&ph[i].Price);

    }
puts("input success");
num=num+n;
}



void output(PH ph[],int a){
    printf("ID\tBrand\tModel\tCPU\tPrice\n");
    for(int i=0;i<num;i++){

        printf("%d\t%s\t %s\t %s\t %f\n",ph[i].ID,ph[i].Brand,ph[i].Model,ph[i].CPU,ph[i].Price);

    }
}



void ui(){

puts("*************************************");
puts("****iphone management systerm********");
puts("*************1、input****************");
puts("*************2、output***************");
puts("*************3、exit*****************");
puts("*************4、selec*****************");
puts("*************************************");


}


void selec(PH *p){
float min,max;
printf("please input max:\n");
scanf("%f",&max);

printf("please input min:\n");
scanf("%f",&min);
puts("the iphone in this rage have:i\n");
for (int i=0;i<num;i++){
if((p+i)->Price>=min&&(p+i)->Price<=max){
    printf("%d\n",(p+i)->ID);
}else{
printf("sorry,no phone");
}
}
}
                                                                                                                         
                                                                                                                         

 文章来源地址https://www.toymoban.com/news/detail-419605.html

 

到了这里,关于C语言必背经典程序代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言详解-关于水仙花数的算法

    所谓\\\"水仙花数\\\"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个\\\"水仙花数\\\",因为153=1的三次方+5的三次方+3的三次方。 程序分析: 利用for循环控制100-999个数,每个数分解出个位,十位,百位。         x=i%10;        //X表示个位,如153%10的余数是3.  

    2024年02月08日
    浏览(43)
  • C语言 打印0~100000之内的水仙花数

    已知: //求出0~100000之间的所有“水仙花数”并输出。 //水仙花数”是指一个n位数,其各位数字的n次方之和确好 // 等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。

    2024年01月25日
    浏览(43)
  • 用python制作水仙花

    “水仙花数”是指一个三位正整数,其各位数字立方的和等于该数本身。 例如:153是一个“水仙花数”,因为1+5+3等于153。 编程实现: 给定一个正整数N,判断100到N之间有多少个“水仙花数”。 输入描述:输入一个正整数N(100N1000) 输出描述;输出100到N之间(包含100和N)有多少个“水

    2024年02月16日
    浏览(38)
  • 水仙花数(Java解法)

            水仙花数是指一个 3 位数,它每位上的数字的 3 次幂之和等于它本身(例如: 1³ + 5³+ 3³ = 153 ),水仙花数的取值范围在 100~1000 之间。         这个题需要把所以的数字都拿到,然后与 每位上的数字的 3 次幂之和它本身做判断后进行输出。首先,需要使用取余

    2024年02月02日
    浏览(40)
  • Python实现 — —水仙花数(一问多解)

    在这次实例分享之前先祝自己生日快乐\\٩( ‘ω’ )و //// 水仙花数(Narcissistic number)是指一个三位整数,其各位数字的3次方和等于该数本身。例如:abc是一个\\\"水仙花数\\\",则:a的3次方+b的3次方+c的3次方 = abc。 for循环 在Python中通过range函数可以生成指定范围的整数

    2024年02月15日
    浏览(42)
  • Python每日一练——第1天:水仙花数

    前言 📢📢 Python每日一练来啦,本文已收录于: 《Python每日一练》专栏 此专栏目的在于,帮忙学习Python的小白提高编程能力,训练逻辑思维,每周持续更新中,欢迎免费订阅!!! 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花

    2024年02月03日
    浏览(40)
  • Python小案例1:水仙花数及其自幂数

    用Python实现,水仙花数 水仙花 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身。 ​ 自幂数 是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。 例如:1 3 + 5 3 + 3 3 = 153。

    2024年02月01日
    浏览(61)
  • 「题解」关于sizeof陷阱,无符号整形,变种水仙花数

    🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 让我们看一下这段代码: ​​​​​​​ 大家会认为结果是多少呢?结果会是\\\"y is greater\\\"?让我们看一下运行结果吧  为什么会出现这种结果呢,由于x是有符号数-1,内存中是全1,当有符号的

    2024年02月02日
    浏览(43)
  • 【华为OD机试】水仙花数Ⅰ【2023 B卷|100分】

    【 华为OD机试】-真题 !!点这里!! 【 华为OD机试】真题考点分类 !!点这里  !! 题目描述 所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。 例如153是水仙花数,153是一个3位数,并且153 = 1^3 + 5^3 + 3^3。 输入描述 第一行输入一个整数n,表示一个n位的

    2024年02月07日
    浏览(39)
  • C/C++每日一练(20230512) 成绩打印、补齐数组、水仙花数

    目录 1. 成绩打印  ※ 2. 按要求补齐数组  🌟🌟🌟 3. 水仙花数  ※ 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 一个班有10个同学,通过键盘输入成绩, 并打印输出,每行输出5个同学的成绩。并求出平均成绩,最

    2024年02月04日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包