上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

40道C语言大学经典例题及代码(免费 全)

guduadmin12小时前

废话不说,咱们直接上车

索引

    • 1.计算三角形面积
    • 2.分段函数计算,输入一个x值,计算并输出y值。
    • 3.求e=1+1/1!+1/2!+1/3!+……..+1/n!
    • 4.最小公倍数
    • 5.求最高分
    • 6.求数列和
    • 7.输出平均分和低于平均分学生成绩
    • 8.从键盘输入一字符串,将其逆序输出。
    • 9.字符串连接
    • 10.字符串复制
    • 11.编写函数,求1+2+3+…….+m。
    • 12.用函数计算分段函数的值
    • 13.编写函数,求3个整数最小值。
    • 14.编写判断素数函数
    • 15.编写求最大公约和最小公倍函数
    • 16.编写求n个a的值的函数。
    • 17.编写求数组中元素最大值函数。
    • 18..编写函数排序数组元素
    • 19.fibonacci数列递归函数
    • 20.输入一字符串,查找字符’k’
    • 21.判断字符串是否回文
    • 22.输出所有的水仙花数(水仙花数:153= 1^3+ 5^ 3+3^3)
    • 23.输出数列2、3、5、8、...(从第三项开始,每一项为前两项的和)的前二十项,且每行显示五个数
    • 24.兀/4=1-1/3+1/5-1/7+...+(-1)^(n-1)*(1/(2n-1)),求兀
    • 25.从键盘输入一个正整数,判断该数是否为素数
    • 26.请输入m和n,求他们的最大公约数
    • 27.百元买百鸡
    • 28.从键盘输入一个整数n,求1!+2!+3!+...+n!
    • 29.输入10个学生的成绩,求平均分、最高分和最低分
    • 30.求Fibonacci数列的前30个数,将其保存在数组中,并按每行6个数输出(Fibonacci:0,1,1,2,3,5,8,13,21,34,...)
    • 31.输入一个字符串,求该字符串的长度(例如:"VC"的长度为2)
    • 32.从键盘输入一个字符串到字符数组a中,将其中的大写字母复制到另一个字符数组b中
    • 33.用递归法求n!
    • 34.编写一个将字符数组中所有小写字母转换成大写字母的函数,并在main()函数中调用该函数
    • 35.输入一行字符,统计其中字母,数字,空格及其他字符的个数
    • 36.求x和y的最大值
    • 37.编写实现两个整数交换的自定义函数swap(),要求形参采用指针变量,在main()函数中输入两个整数,调用swap()函数后输出结果
    • 38.编写求数组所有元素的平均值的自定义函数,在main()函数中输入学生人数和每个学生的成绩,调用自定义函数后输出平均分
    • 39.求1+2+3+...+100的和
    • 40.编程找出1000以内的所有完数(一个数如果恰好等于它的因子之和,这个数就称为“完数” 例如6=1+2+3)

      1.计算三角形面积

      #include
      #include
      double area(double a,double b,double c)
      {
      	double s,sarea=-1;
      	if(a+b>c&&b+c>a&&c+a>b)
      	{
              s=(a+b+c)/2;
              sarea=sqrt(s*(s-a)*(s-b)*(s-c));
      	}
      	return sarea;
      }
      void main()
      {	
      	double a,b,c,sarea;
      	printf("请输入三个数:");
      	scanf("%lf%lf%lf",&a,&b,&c);
      	sarea=area(a,b,c);
      	if(sarea>0)
      		printf("可以构成三角形,其面积为:%.2lf\n",sarea);
      	else
      		printf("不可以构成三角形\n");
      	
      }
      

      2.分段函数计算,输入一个x值,计算并输出y值。

      #include 
      void main()
      {
          int x,y;
          scanf("%d",&x);
          if(x>-5 && x<0)  y=x-1;
          else if(x==0)  y=x;
          else if(x>0 && x<8)  y=x+1;
          else y=10;
          printf("y=%d\n",y);
      }
      

      3.求e=1+1/1!+1/2!+1/3!+………+1/n!

      #include 
      void main ()
      {
      	int i=1;
      	double s=1,e=1;
      	while(1/s>=1E-5)
      	{
      		s=s*i;
      		e=e+1/s;
      		i++;
      	}
      	printf("e=%lf\n",e);
      }
      

      4.最小公倍数

      #include 
      void main ()
      {	int m,n,i;
      	printf("请输入两个正整数: ");
      	scanf("%d%d",&m,&n);
      	for(i=m;;i++)
      		if(i%m==0 && i%n==0)
      			break;
      	printf("%d,%d的最小公倍数为%d\n",m,n,i);
      }
      

      5.求最高分

      #include 
      void main()
      {
          int cj,max=0;
          printf("输入成绩,以负数结束: ");
          scanf ("%d",&cj);
          while(cj>=0)
          {   if(cj>max)   max=cj;
               scanf ("%d",&cj);
          }
          printf("最高分:%d\n",max);
      }
      

      6.求数列和

      #include 
      void main()
      {
      	int a,b,t,i,n;
      	double sum=0.0;
      	printf("请输入n:");
      	scanf("%d",&n);
      	a=2,b=1;
      	for (i=1;i<=n;i++)
      	{
      		sum=sum+(double)a/b;
      		t=a;  a=a+b;  b=t;
      	}
      	printf("sum=%f\n",sum);
      }
      

      7.输出平均分和低于平均分学生成绩

      #include 
      void main()
      {	int a[100],i,n,score;	float sum,ave;
      	i=0,sum=0;
      	while(1)
      	{	printf("请输入第%d个学生成绩: ",i+1);
      		scanf("%d",&score);
      		if(score<0)  break;
      		a[i]=score;     sum+=a[i];
      		i++;
      	}
      	n=i;
      	ave=sum/n;
      	printf("平均分为: %.2f\n",ave);
      	printf("低于平均分的成绩有: ");
      	for(i=0;i 
      

      8.从键盘输入一字符串,将其逆序输出。

      #include 
      #include
      void main()
      { 
      	char a[20];
      	int i;
      	printf("请输入字符串:");
      	gets(a);
      	for(i=strlen(a)-1;i>=0;i--)
      		printf("%c",a[i]);
      	printf("\n");
      }
      

      9.字符串连接

      #include
      void main()
      { 
      	char s1[80],s2[40];
      	int i,j;
      	printf("请输入第1个字符串:");
      	gets(s1);
      	printf("请输入第2个字符串:");
      	gets(s2);
      	i=0;
      	while(s1[i]!='\0')
      		i++;
      	j=0;
      	while(s2[j]!='\0')
      	    s1[i++]=s2[j++];    
      	s1[i]='\0';
      	printf(" 连接后的字符串为:%s\n",s1);
      }
      

      10.字符串复制

      #include 
      void main()
      { 
      	char s1[80],s2[80];
      	int i;
      	printf("请输入一个字符串:");
      	gets(s2);
      	for(i=0;s2[i]!='\0';i++)
      		s1[i]=s2[i]; 
      	s1[i]='\0';
      	printf("复制后的字符串为:%s\n",s1);
      }
      

      11.编写函数,求1+2+3+…….+m。

      #include
      int sum(int m)
      {
      	int i,sumn=0; 
          for(i=1;i<=m;i++)
      	   sumn=sumn+i;
          return sumn;
      }
      void main()
      {
      	int m;
      	int sumn;
      	printf("请输入一个整数:");
      	scanf("%d",&m);
      	sumn=sum(m);
      	printf("1+2+3+...+%d=%d\n",m,sumn);
      }
      

      12.用函数计算分段函数的值

      #include
      double fd(double x)
      {
      	double y;
      	if(x<0)
      		y=x*x-2*x+1;
      	else
      		y=x*x*x+x+3;
      	return y;
      }
      void main()
      {
      	double x,y;
      	scanf("%lf",&x);
      	y=fd(x);
      	printf("y=%.2lf\n",y);
      }
      

      13.编写函数,求3个整数最小值。

      #include
      void main()
      {   int min(int,int,int);
          int a,b,c,d,e,m1,m2;
          printf("请输入5个整数: ");
          scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
          m1=min(a,b,c);
          m2=min(m1,d,e);
          printf("最小值为: %d\n",m2);
      }
      int min(int x,int y,int z)
      {   int m=x;   
          if(m>y)  m=y;
          if(m>z)  m=z;
          return m;
      }
      

      14.编写判断素数函数

      #include
      #include
      void main()
      {   int prime(int m);
          int m,i;
      	i=0;
          for(m=2;m<=100;m++)
      	   if(prime(m))  
      		{
      			
      			printf("%5d",m);
      			i++;
      			if(i%5==0) printf("\n");
      		}
      	
      	printf("\n");
      }
      int prime(int m)
      {   int k,n;
          n=(int)sqrt(m);
          for(k=2;k<=n;k++)
              if(m%k==0) return 0;
          return 1;
      }
      

      15.编写求最大公约和最小公倍函数

      #include
      int gy(int x,int y)
      {
      	int gyxy,i;
      	for(i=x;i>=1;i--)
             if(x%i==0&&y%i==0)
      	   {gyxy=i;break;}
           return gyxy;
      }
      int gb(int x,int y)
      {
      	int gbxy,i;
      	for(i=x;i<=x*y;i++)
             if(i%x==0&&i%y==0)
      	   {gbxy=i;break;}
           return gbxy;
      }
      void main()
      {
      	int x,y,gyxy,gbxy;
      	printf("请输入两个整数:");
      	scanf("%d%d",&x,&y);
      	gyxy=gy(x,y);
      	gbxy=gb(x,y);
      	printf("%d和%d的最大公约数是:%d\n",x,y,gyxy);
      	printf("%d和%d的最小公倍数是:%d\n",x,y,gbxy);
      	
      }
      

      16.编写求n个a的值的函数。

      #include
      int f(int a,int n)
      {   int i,t=0;
          for(i=1;i<=n;i++)
              t=t*10+a;
          return t;
      }
      void main()
      {   int a,n,i,s=0;
          printf("请输入两个整数a,n: ");
          scanf("%d%d",&a,&n);
          for(i=1;i<=n;i++)
              s=s+f(a,i);
          printf("结果为: %d\n",s);
      }
      

      17.编写求数组中元素最大值函数。

      #include
      #define N 6
      int max(int a[])
      {   int i,m;
          m=a[0];
          for(i=1;i   int i,b[N];
          printf("请输入%d个整数: ",N);
          for(i=0;i 
      

      18…编写函数排序数组元素

      //(1)顺序比较法
      #include
      void sort(int str[],int n)
      {   int i,j; 
          int t;
          for(i=0;istr[j])
                  { t=str[i]; str[i]=str[j]; str[j]=t; }
      }
      void main()
      {   int i,n,str[100];    
          printf("请输入元素个数: ");
          scanf("%d",&n);
          printf("请输入%d个元素: ",n);
          for(i=0;i 
      
      //(2)冒泡排序法
      #include
      void sort(int a[],int n)
      {   int i,j,t; 
          for(i=0;ia[j+1])
                  { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
      }
      void main()
      {   int i,n,a[100];    //最多100个元素
          printf("请输入元素个数: ");
          scanf("%d",&n);
          printf("请输入%d个元素: ",n);
          for(i=0;i 
      

      19.fibonacci数列递归函数

      #include
      int fib(int k)
      {   int f;
          if(k==1) f=0;
          else if(k==2) f=1;
          else f=fib(k-1)+fib(k-2);
          return f;
      }
      void main()
      {   int i,n;
          printf("请输入项数: ");
          scanf("%d",&n);
          printf("前%d项fibonacci数列为:",n);
          for(i=1;i<=n;i++)
              printf("%d  ",fib(i));
          printf("\n");
      }
      

      20.输入一字符串,查找字符’k’

      #include
      void main()
      {   char a[100],*p=a;
          int flag=0;
          printf("请输入一个字符串: ");
          gets(a);
          while(*p!='\0')
          {    if(*p=='k')
               {  flag=1;  break;  }
               p++;
          }
          if(flag==1)  printf("已找到!\n");
          else printf("没找到\n");   
      }
      

      21.判断字符串是否回文

      #include
      #include
      void main()
      {   int hw(char *s);
          char s[80];
          printf("请输入一个字符串: ");      gets(s);
          if(hw(s))  printf("该字符串是回文!\n");
          else  printf("该字符串不是回文!\n");   
      } 
      int hw(char *s)
      {   int flag=1;
          char *p,*q;
          for( p=s,q=s+strlen(s)-1 ; p  flag=0;  break;  }
          return flag;
      }
      

      22.输出所有的水仙花数(水仙花数:153= 1^3+ 5^ 3+3^3)

      #include 
      int main()
      {
          int i,j,k,n;
          for(i = 100;i < 1000;i++)
          {
              j = i%10;
              k = i/10%10;
              n = i/100;
              if(j*j*j + k*k*k + n*n*n == i)
                  printf("%5d\n",i);
          }
          return 0;
      } 
      

      23.输出数列2、3、5、8、…(从第三项开始,每一项为前两项的和)的前二十项,且每行显示五个数

      #include 
      void main()
      { int i,a1=2,a2=3,a3;
        printf("%6d%6d%6d",a1,a2);
        for(i=3;i<=20;i++)
        { a3=a1+a2;
        printf("%6d",a3);
        a1=a2;
        a2=a3;
        if(i%5==0)
          printf("\n");
         }
      }
      

      24.兀/4=1-1/3+1/5-1/7+…+(-1)^(n-1)*(1/(2n-1)),求兀

      #include 
      #include 
      void main()
      { double sum=0,pi,c=1,s=1;//c为当前项,s为符号位
        int n=1;
        while(fabs(c)>=1e-6)
        { sum=sum+c;
        s=-s;
        n++;
        c=s/(2*n-1);
        }
        pi=4*sum;
        printf("pi=%lf\n",pi);
      }
      

      25.从键盘输入一个正整数,判断该数是否为素数

      #include 
      void main()
      { int i,m;
        scanf("%d",&m);
        for(i=2;i<=m-1;i++)
          if(m%i==0) break;
          if(i>m-1)
            printf("%d是素数\n",m);
          else
            printf("%d不是素数\n",m);
      }
      

      26.请输入m和n,求他们的最大公约数

      #include 
      void main()
      { int i,m,n;
        scanf("%d%d",&m,&n);
        for(i=m;i>=1;i--)
        { if(m%i==0 && n%i==0)
             break;
        }
       printf("最大公约数:%d\n",i);
      } 
      

      27.百元买百鸡

      #include 
      void main()
      { int a,b,c; //a,b,c分别表示公鸡、母鸡和小鸡的数量
      for(a=0;a<=19;a++)
        for(b=0;b<=33;b++)
        {
        c=100-a-b;
        if(5*a+3*b+b/3==100 && c%3==0)
          printf("公鸡:%d,母鸡:%d,小鸡:%d\n",a,b,c);
        }
      }
      

      28.从键盘输入一个整数n,求1!+2!+3!+…+n!

      #include 
      void main()
      { int i,j,n;
        long p,sum=0;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
          p=1;
          for(j=1;j<=i;j++)
            p=p*j;
          sum=sum+p;
         }
         printf("计算结果为:%d\n",sum);
       }
      

      29.输入10个学生的成绩,求平均分、最高分和最低分

      #include 
      void main()
      { int i,sum=0,max=0,min=100,c[10];
        float ave;
        for(i=0;i<10;i++)
        { 
         scanf("%d",&c[i]);
         sum=sum+c[i];
         if(c[i]>max)
           max=c[i];
           if(c[i] 
      

      30.求Fibonacci数列的前30个数,将其保存在数组中,并按每行6个数输出(Fibonacci:0,1,1,2,3,5,8,13,21,34,…)

      #include 
      void main()
      { int i;
        long f[30]={0,1};
        for(i=2;i<30;i++)
          f[i]=f[i-1]+f[i-2];
        for(i=0;i<30;i++)
        {
        if(i%6==0)
          printf("\n");
        printf("%10d",f[i]);
        }
      }
      

      31.输入一个字符串,求该字符串的长度(例如:"VC"的长度为2)

      #include 
      void main()
      { char a[20];
        int i=0;
        scanf("%s",a);
        while(a[i]!='\0')
           i++;
        printf("%s的长度为:%d\n",a,i);
      }
      

      32.从键盘输入一个字符串到字符数组a中,将其中的大写字母复制到另一个字符数组b中

      #include 
      void main()
      { char a[20],b[20];
        int i=0,j=0;//i和j分别为数组a和b的下标
        gets(a);
        while(a[i]!='\0')
        { 
          if(a[i]>='A' && a[i]<='Z')
          {
            b[j]=a[i];
            j++;
          }
          i++;
         }
         b[j]='\0';
         puts(b);
      }
        
      

      33.用递归法求n!

      #include 
      int fac(int n)
      { int f;
        if(n==1)
        f=1;
        else
        f=n*fac(n-1);
        return f;
      }
      void main()
      {
        int n,c;
        printf("请输入n的值:");
        scanf("%d",&n);
        c=fac(n);
        printf("%d!=%d\n",n,c);
      }
      

      34.编写一个将字符数组中所有小写字母转换成大写字母的函数,并在main()函数中调用该函数

      #include 
      void change(char b[10])
      {
        int i=0;
        while(b[i]!='\0')
        {
        if(b[i]>='a' && b[i]<='z')
          b[i]=b[i]-32;
        i++;
        }
      }
      void main()
      {
      char a[10];
      printf("请输入一个字符串:");
      gets(a);
      change(a);
      printf("调用函数后数组a的值:");
      puts(a);
      }
      

      35.输入一行字符,统计其中字母,数字,空格及其他字符的个数

      #include 
      int letter,digit,space,others;
      void main()
      {
      	char str[1000];
      	void count(char ch[]);
      	printf("请输入一个字符串(<1000个字符):");
      	gets(str);
      	letter=0;
      	digit=0;
      	space=0;
      	others=0;
      	count(str);
      	printf("字母:%d\n 数字:%d\n 空格:%d\n 其他:%d\n",letter,digit,space,others); 
       } 
      void count(char ch[])
      {
      	int i=0;
      	while(ch[i]!='\0')
      	{
      		if((ch[i]>='a' && ch[i]<='z')|| (ch[i]>='A' && ch[i]<='Z'))
      		letter++;
      		else if(ch[i]>='0' && ch[i]<='9')
      		digit++;
      		else if(ch[i]==' ')
      		space++;
      		else
      		others++;
      		i++;
      		
      	}
      }
      

      36.求x和y的最大值

      #include 
      void main()
      {
        int x,y,max,*px,*py;
        px=&x;
        py=&y;
        printf("请输入两个整数:");
        scanf("%d%d",px,py);
        if(*px<*py)
          max=*py;
        else
        max=*px;
        printf("max=%d\n",max);
      }
      

      37.编写实现两个整数交换的自定义函数swap(),要求形参采用指针变量,在main()函数中输入两个整数,调用swap()函数后输出结果

      #include 
      void main()
      {
      int m,n;
      void swap(int *pm,int *pn);  
      printf("请输入两个整数:");
      scanf("%d%d",&m,&n);
      printf("交换前:m=%d,n=%d\n",m,n);//输出交换前两个实参的值
      swap(&m,&n);//调用函数
      printf("交换后:m=%d,n=%d\n",m,n);//输出交换后两个实参的值
      }
      void swap(int *pm,int *pn)
      {
      int temp; 
      temp=*pm;  
      *pm=*pn;  
      *pn=temp;
      }
      

      38.编写求数组所有元素的平均值的自定义函数,在main()函数中输入学生人数和每个学生的成绩,调用自定义函数后输出平均分

      #include 
      void main()
      {
      float score[100],ave;
      int i,n;
      float compute(float *a,int n);
      printf("请输入学生人数:");
      scanf("%d",&n);
      printf("请输入学生成绩:");
      for(i=0;i
      float sum=0,ave;
      int i;
      for(i=0;i 
      

      39.求1+2+3+…+100的和

      #include 
      void main()
      {
        int sum=0,i=1;
        do
        {  
           sum=sum+i;
           i=i+1;
        }while(i<=100);
        printf("sum=%d\n",sum);
      }
      

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

      #include 
      main()
      {
        static int k[10];
        int i,j,n,s;
        for(j=2;j<1000;j++)
          {
           n=-1;
           s=j;
           for(i=1;iif((j%i)==0)
                {  n++;
                   s=s-i;
                   k[n]=i;
                }
             }
        if(s==0)
         {printf("%d是一个完数:  ",j);
          for(i=0;i 
      

      <–精力有限,就先整理这么多–>

      有错误的欢迎大家在评论区批评指正😍

      以上这些仅供大家参考,建议大家不要照搬照抄,这对提升自己的编程能力没有任何的作用,最主要的是去理解、明白为什么这么写。

      40道C语言大学经典例题及代码(免费 全),多敲代码,第1张

网友评论