龙空技术网

C语言学会这5道经典例题,期末不过来找我。建议收藏留用。

稻妻情报商万叶 473

前言:

今天同学们对“c语言函数题目”大致比较讲究,看官们都想要学习一些“c语言函数题目”的相关内容。那么小编在网摘上收集了一些有关“c语言函数题目””的相关内容,希望咱们能喜欢,各位老铁们快快来学习一下吧!

e1.键盘上输入n个数,输出最大值最小值.

# include <stdio.h>

# define M 30

main()

{ int a[M],n,i,max,min;

printf("请输入n(n<%d):",M);

scanf("%d",&n);

printf("请输入这%d个数:\n",n);

for(i=0;i<n;i++)

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

max=min=a[0];

for(i=0;i<n;i++)

{if(a[i]>max)

max=a[i]; }

for(i=0;i<n;i++)

{if(a[i]<min)

min=a[i]; }

printf("这%d个数中最大的数为:%d\n",n,max);

printf("这%d个数中最小的数为:%d\n",n,min);

}

2. 求这样一个三位数,该三位数等于其每位数字的阶乘之和。

#include<stdio.h>

int fab(int n)

{ int i,j=1;

for(i=1;i<=n;i++)

j=j*i;

return j;

}

main()

{ int i,s1,s2,s3;

for(i=100;i<999;i++)

{s1=i/100;

s2=(i-s1*100)/10;

s3=i%10;

if(i==(fab(s1)+fab(s2)+fab(s3)))

printf("the number is:%d\n",i);

}

}

3.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

# include <stdio.h>

main()

{ int n;

float t=0 ,s=2,k=1,m;

for(n=1;n<=20;n++)

{ t=t+s/k;

m=s; s=s+k;k=m;}

printf("%f\n",t);

}

4.输入整数N,求N的阶乘

# include <stdio.h>

main()

{int n,i,s=1;

printf("请输入您要计算的数n:");

scanf("%d",&n);

for(i=1;i<=n;i++)

s=s*i;

printf("%d!=%d\n",n,s);

}

5.输入一串正整数,倒序输出

# include <stdio.h>

# define M 100

main()

{ int i,j;

char a[M];

printf("请输入一列数字:\n");

for(i=0;i<M;i++)

{scanf("%c",&a[i]);

if(a[i]=='\n')

break;

}

printf("则该列数字倒序输出为:");

for(j=i;j>=0;j--)

printf("%c",a[j]);

printf("\n");

}

6. 求100~100000之间所有数字之和为5的整数的个数

# include <stdio.h>

main()

{ long int i,a1,a2,a3,a4,a5,j=0;

for(i=100;i<100000;i++)

{ a1=i/10000;

a2=(i-a1*10000)/1000;

a3=(i-a1*10000-a2*1000)/100;

a4=(i-a1*10000-a2*1000-a3*100)/10;

a5=i-a1*10000-a2*1000-a3*100-a4*10;

if(a1+a2+a3+a4+a5==5)

j=j+1; }

printf("整数100至100000之间所有数字之和为5的整数的总个数为:%ld\n",j);

}

7. 输入字符串,打印除小写元音字母之外的。

# include <stdio.h>

#define M 100

main()

{ int i,n;

char a[M];

printf("请输入一列字符串:");

for(i=1;i<M;i++)

{scanf("%c",&a[i]);

if(a[i]=='\n') break;}

printf("则该列字符串中去除小写元音字母后输出为:");

for(n=1;n<=i;n++)

{if((a[n]!=97)&(a[n]!=101)&(a[n]!=105)&(a[n]!=111)&(a[n]!=117))

printf("%c",a[n]); }

}

8. 从键盘输入10个整数,计算其中偶数的和以及偶数平均数,(用小数表示)

# include <stdio.h>

main()

{ int i,a[10];

float s,j=0,k=0;

printf("请输入10个数:\n");

for(i=0;i<10;i++)

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

for(i=0;i<10;i++)

{if(a[i]%2==0)

{j=j+a[i];

k=k+1;}}

s=j/k;

printf("这10个数中偶数和为:%1.0f\n这10个数中偶数的平均值为:%5.5f\n",j,s);

}

9. 从键盘输入10个整数,计算其中奇数之和以及奇数的平均数,(用小数表示)

# include <stdio.h>

int main()

{ int i,a[10];

float s,j=0,k=0;

printf("请输入10个数:\n");

for(i=0;i<10;i++)

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

for(i=0;i<10;i++)

{if(a[i]%2!=0)

{j=j+a[i];

k=k+1;}

}

s=j/k;

printf("这10个数中奇数和为:%1.0f\n这10个数中奇数的平均值为:%5.2f\n",j,s);

return 0;}

10.

# include <stdio.h>

main()

{int a,n,i;

long int s,t;

printf("请输入a(a<10):");

scanf("%d",&a);

printf("请输入n:");

scanf("%d",&n);

t=s=a;

printf("%d",a);

for(i=1;i<n;i++)

{t=t*10+a;

printf("+%ld",t);

s=s+t;}

printf("=%ld\n",s);

}

1求1!+2!+3!+…+n!

# include <stdio.h>

int fac(int x)

{int s=1,m;

for(m=1;m<=x;m++)

s=s*m;

return (s);}

main()

{ long int n ,j,sum=0;

printf("请输入n:");

scanf("%d",&n);

for(j=1;j<=n;j++)

sum=sum+fac(j);

printf("%ld\n",sum);

}

12. 输出满足以下条件的最大的n: 12+22+32+…+n2<=1000

#include <stdio.h>

main()

{int i,s;

for(i=1,s=0;s<=1000;i++)

{s=s+i*i;

if(s>1000) break;

}

printf("%d\n",i-1);}

13. 0~1000同时被7和13整除的数

#include<stdio.h>

main()

{int i;

printf("0~1000中同时能被7和13整除的数为:\n");

for(i=0;i<=1000;i++)

{if((i%7==0)&&(i%13==0))

printf("%5d",i);}

printf("\n");}

14. 1/1,1/3,1/5,1/7,1/9,1/11 ……的前20项之和,并输出。

#include<stdio.h>

main()

{float s,i,t;

for(i=0,s=0,t=1;i<20;i++)

{s=s+1/t;

t=t+2;}

printf("%f\n",s);

}

15. 求s=1-1/3+1/5-1/7+…,直到最后一项的绝对值小于0.00001为止。

#include<stdio.h>

void main()

{ double s1=0,s2=0,s,i;

for(i=0;i<10000;i++)

{if(1/(4*i+1)<0.00001)break;

s1=s1+1/(4*i+1);

if(1/(4*i+3)<0.00001)break;

s2=s2-1/(4*i+3);}

s=s1+s2;printf("%lf\n",s);}

16. 用公式e≈1+1/1!+1/2!+1/3!+…+1/n!,求e的近似值,直到1/n!<10-6为止。

#include<stdio.h>

#include<math.h>

void main()

{ double fac(double a);

double i,t=1;

for(i=1;;i++)

{if(1/fac(i)<0.000001) break;

t=t+1/fac(i); }

printf("%f\n",t);

}

double fac(double a)

{

int i;

double t=1;

for(i=0;i<a;i++)

t=t*(a-i);

return(t);

}

17.用π/4=1-1/3+1/5-1/7+……公式请求π的近似值,直到某一项的绝对值小于10-6为止。

#include<stdio.h>

void main()

{ double s1=0,s2=0,s,i;

for(i=0;i<10000;i++)

{ if( (1/(4*i+1))<0.000001||(1/(4*i+3))<0.000001)

break;

s1=s1+1/(4*i+1);

s2=s2-1/(4*i+3);}

s=s1+s2;

printf("%lf\n",4*s);}

18.输出1~10的阶乘值

#include <stdio.h>65

double fac(double x)

{double s,k;

for(s=1,k=1;s<=x;s++)

k=k*s;

return k;}

main()

{double i;

for (i=1;i<=10;i++)

printf("%1.0f!=%1.0f\n",i,fac(i));}

19.输入正数,判断是否是素数

#include <stdio.h>

int prime(int x)

{int flag=1,i;

for(i=2;i<x/2&&flag==1;i++)

{if(x%i==0) flag=0;}

return flag;

}

main()

{int w;

scanf("%d",&w);

if(prime(w))

printf("%d is a prime\n",w);

else

printf("%d is not a prime\n",w);

}

20.求1+(1+2)+(1+2+3)+…+(1+2+…+n)

# include <stdio.h>

int sum (int x)

{int i,j=0;

for(i=1;i<=x;i++)

j=j+i;

return (j);

}

main()

{int n,p,s=0;

printf("input n:");

scanf("%d",&n);

for(p=1;p<=n;p++)

s=s+sum(p);

printf("%d\n",s);

}

21.输入年月,输出该月有多少天。

#include <stdio.h>

main()

{int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}} ;

int y,m,i;

printf("Please input the year:");

scanf("%d",&y);

printf("Please input the month:");

scanf("%d",&m);

i=((y%4==0)&&(y%100!=0)||(y%400==0));/*判断是否为闰年*/

printf("this month has %d days\n",a[i][m]);

}

22. 编一个计算器,可以计算“+”“-”“*”“/”

#include <stdio.h>

main()

{int a1,a2;

char op;

printf("sign:\n");

scanf("%c",&op);

printf("no.1:\n");

scanf("%d",&a1);

printf("no.2:\n");

scanf("%d",&a2);

switch(op)

{case '+':printf("%d+%d=%d\n",a1,a2,a1+a2); break;

case '-':printf("%d-%d=%d\n",a1,a2,a1-a2); break;

case '*':printf("%d*%d=%d\n",a1,a2,a1*a2); break;

case '/':printf("%d/%d=%d\n",a1,a2,a1/a2); break;

default:printf("wrong");

}}

23.求555555的约数中最大的3位数:777

#include <stdio.h>

main()

{int a[1000],n=555555,i,j,k=0,w,t;

printf(" 555555的约数如下:\n");

for(i=100;i<1000;i++)

{j=n%i;

if(j==0)

{a[k]=i;

printf("%5d",a[k]);k=k+1;}}

t=a[0];

printf("\n则其中最大的约数为:\n");

for(w=1;w<k;w++)

{{if(a[w]>t) t=a[w];}

}

printf("%d\n",t);

}

24.

#include<stdio.h>

main()

{int s=11,i=1;

while(i==1) /*由于不知具体循环次数,故使用while型*/

{s++;

if((s%5==1)&&(s%6==5)&&(s%7==4)&&(s%11==10))

{printf("%d\n",s);

i=0; /*此处i=0*/ }

}}

25. 爱因斯坦阶梯问题(119)

#include<stdio.h>

main()

{int s=11,i=1;

while(i==1) /*由于不知具体循环次数,故使用while型*/

{s++;

if((s%2==1)&&(s%3==2)&&(s%5==4)&&(s%6==5)&&(s%7==0))

{printf("%d\n",s);

i=0; /*此处i=0*/ }

}}

26.输入m,n求其最小公倍数

#include <stdio.h>

int num(int u,int v)

{int r;

while((r=u%v)!=0)

{u=v;v=r;}

return(v);

}

main()

{int i,j,t;

printf("请输入两个数:");

scanf("%d%d",&i,&j);

if(i<j){t=i;i=j;j=t;}

printf("则这两个数的最小公倍数为:%d\n",i*j/num(i,j));

}

27,输入两个数并求其最大公约数。

#include <stdio.h>

int num(int u,int v)

{int t,r;

if(v>u){t=u;u=v;v=t;}

while((r=u%v)!=0)

{u=v;v=r;}

return(v);}

main()

{int i,j;

printf("请输入两个数:");

scanf("%d%d",&i,&j);

printf("则这两个数的最大公约数为:%d\n",num(i,j));

}

28.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。

#include <stdio.h>

main ()

{int i,j;

int e=0,b=0,c=0,d=0;

char a[100];

printf("请输入一列字符串:\n");

for(i=0;i<100;i++)

{a[i]=getchar();

if(a[i]=='\n')break;}

for(j=0;j<i;j++)

{if((a[j]>=65&&a[j]<=88)||(a[j]>=97&&a[j]<=122)) e++;

else if(a[j]>=48&&a[j]<=57) c++;

else if(a[j]==' ') b++;

else d++;

}

printf("该行字符串中空格个数为:%d\n",b);

printf("该行字符串中数字个数为:%d\n",c);

printf("该行字符串中英文字母个数为:%d\n",e);

printf("该行字符串中其他字符个数为:%d\n",d);

}

29. 输入十个数,将其排序

#include<stdio.h>

main()

{int a[100],i,j,t,n;

printf("请输入n:");

scanf("%d",&n);

printf("请输入这%d个数:",n);

for(i=0;i<n;i++)

{scanf("%d",&a[i]);}

for(i=0;i<n-1;i++)

{for(j=0;j<n-1-i;j++)

{if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}

}}

printf("则这%d个数按照从小到大的顺序排列为:\n",n);

for(i=0;i<n;i++)

{printf("%d\n",a[i]);}

}

30. 输出100~200之间的素数

# include <stdio.h>

int prime(int x)

{int flag=1,i;

for (i=2;i<x/2&&flag==1;i++)

if(x%i==0) flag=0;

return flag;}

main()

{int i,j=0;

printf("100到200之间的素数有:\n");

for(i=100;i<201;i++)

{if(prime(i))

{printf("%d ",i);j=j+1;if(j%10==0)printf("\n");}

}}

31题:由36块砖,男人一次可以搬4块,女人一次可以搬3块,2个小孩一次可以搬一块,问男人女人小孩各需多少人可以一次性将砖搬完?(有一共36人

#include <stdio.h>

main()

{int d,z,x;

for(d=1;d<9;d++)

{for(z=1;z<=(36-4*d)/3;z++)

{x=36-d-z;

if(4*d+3*z+0.5*x==36)

printf("%d(男) %d(女) %d(小孩)\n",d,z,x);}

}

}

32题:输入一个字符串,将其正序反序输出?

# include <stdio.h>

# define M 100

main()

{ int i,j;

char a[M];

printf("请输入一列字符串:\n");

for(i=0;i<M;i++)

{scanf("%c",&a[i]);

if(a[i]=='\n')

break;

}

printf("则该列字符串倒序输出为:");

for(j=i;j>=0;j--)

printf("%c",a[j]);

printf("\n");

}

33题:输入一行字符,统计以空格间隔的的单词个数?

# include <stdio.h>

main()

{int i,n,l=1;

char a[100];

printf("请输入一行字符串:\n");

for(n=0,i=0;n<100;n++,i++)

{a[i]=getchar();

if(a[i]=='\n')break;}

for(n=0;n<i;n++)

{if(a[n]==' ')l++;}

printf("则行字符串共有%d个单词。\n",l);

}

34题:输出一个十进制数,将其转化为一个2进制数输出?

#include <stdio.h>

main()

{

int n,x=0,a[100];

printf("请输入一个数字:\n");

scanf("%d",&n);

while(n)

{a[x++]=n%2;

n=n/2;}

--x;

printf("则该数字的二进制表示为:\n");

while(x>=0)

printf("%d",a[x--]);

printf("\n");

}

35题:水仙花数,输入一个三位数,该三位数各位数字立方和等于该数本身?

# include <stdio.h>

int cube(int x)

{return (x*x*x);}

main()

{int i,g,s,b;

for(i=100;i<1000;i++)

{b=i/100;

s=(i-b*100)/10;

g=i%10;

if(cube(g)+cube(s)+cube(b)==i)

printf("%d\n",i);

}

}

36题:求从3开始到小于100的所有双素数?

#include<stdio.h>

int prime(int x)

{int flag=1,i;

for (i=2;i<x/2&&flag==1;i++)

if(x%i==0) flag=0;

return flag;}

main()

{int n;

for(n=3;n<99;n++)

{if(prime(n)&&prime(n+2))

printf("%d/%d\n",n,n+2);}}

37题:求两位绝对素数

#include<stdio.h>

int prime(int x)

{int flag=1,i;

for (i=2;i<x/2&&flag==1;i++)

if(x%i==0) flag=0;

return flag;}

main()

{int t,w,g,s;

for(t=10;t<100;t++)

{g=t%10; s=t/10; w=g*10+s;

if(prime(t)&&prime(w))

printf("%d\n",t);

}}

38题:100~150之间整除3,每行输出5个数?

#include<stdio.h>

main()

{int i=100,j;

for(j=0;i<=150;i++)

{if(i%3==0)

{if(j%5==0)printf("\n");

j++;

printf("%3d ",i);

}}}

39题:对10个整数排序,输出10个数并按升序排序

#include<stdio.h>

main()

{int a[100],i,j,t,n;

printf("请输入n:");

scanf("%d",&n);

printf("请输入这%d个数:",n);

for(i=0;i<n;i++)

{scanf("%d",&a[i]);}

for(i=0;i<n-1;i++)

{for(j=0;j<n-1-i;j++)

{if(a[j]<a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}

}}

printf("则这%d个数按照从大到小的顺序排列为:\n",n);

for(i=0;i<n;i++)

{printf("%d\n",a[i]);}

}

40题:建立一个3*4的二维数组(3x4矩阵)求所有元素中最大值?【或求最小值,本题给出的是最大值】

#include<stdio.h>

main()

{int a[100][100],max,i,j,m,n;

printf("请输入该数组的行数:");

scanf("%d",&m);

printf("请输入该数组的列数:");

scanf("%d",&n);

printf("请输入该数组的%d个元素:",m*n);

for(i=0;i<m;i++)

{for(j=0;j<n;j++)

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

}

printf("则该数组为:\n");

for(i=0;i<m;i++)

{for(j=0;j<n;j++)

printf("%4d",a[i][j]);

printf("\n");

}

max=a[0][0];

for(i=0;i<m;i++)

{for(j=0;j<n;j++)

{if(a[i][j]>max)max=a[i][j];}

}

printf("该数组中最大的数为:%d\n",max);

}

41题:求一个整数在存储单元中,从右端开始第4到第7位的值?(未做)

#include<stdio.h>

main()

{int e;

unsigned a,b,c,d,num;

printf("您可以转换八进制、十进制和十六进制的数字\n");

printf("请输入您想转换的数字类型(8,10或16):\n");

scanf("%d",&e);

if(e==8)

{printf("请输入该八进制数字:\n");

scanf("%o",&num);}

else if(e==10)

{printf("请输入该十进制数字:\n");

scanf("%d",&num);}

else if(e==16)

{printf("请输入该十六进制数字:\n");

scanf("%x",&num);}

a=num>>4;

b=~(~0<<4);

c=a&b;

printf("转换后的数字,八进制输出为:%o\n",c);

printf("转换后的数字,十进制输出为:%d\n",c);

printf("转换后的数字,十六进制输出为:%0x\n",c);

}

42题:100匹马驮100袋货,一匹大马可驮3袋,一匹中马可驮1袋,两匹小马可驮一袋,求大中小马的个数

#include <stdio.h>

main()

{int d,z,x;

for(d=1;d<=33;d++)

{for(z=1;z<=(100-3*d)/2;z++)

{x=100-d-z;

if(3*d+2*z+0.5*x==100)

printf("大马%d匹 中马%d匹 小马%d匹\n",d,z,x);}

}}

43题:将一元钱分成一分、二分、五分的,共有多少种分法

#include <stdio.h>

main()

{int d,z,x,i=0;

for(d=0;d<=20;d++)

{for(z=0;z<=50;z++)

{for(x=0;x<=100;x++)

{if(5*d+2*z+x==100)

i++;}}}

printf("%d\n",i);}

44题:求一个四位数,它的9倍为其反序数(答案:1089)

#include <stdio.h>

main()

{int g,s,b,q,i,t;

for(i=1000;i<10000;i++)

{q=i/1000;b=(i-q*1000)/100;

s=(i-q*1000-b*100)/10;g=i%10;

t=i*9;

if(g*1000+s*100+b*10+q==t)

printf("%d\n",i);}}

45题:斐波那契序列:1,1,2,3,5,8,13……n,求第n项的值

#include <stdio.h>

# define M 500

main()

{long int a[M];

int n,i;

printf("Please input n:");

scanf("%d",&n);

a[0]=1;a[1]=1;

//printf("1 1"); //输出n项斐波那契数列(需用代码1)

for(i=2;i<n;i++)

{a[i]=a[i-1]+a[i-2];

//printf("%3d",a[i]); //输出n项斐波那契数列(需用代码2)

}

printf("\n%ld\n",a[i-1]);

}

46题:求双素数,输入一个素数,将其分成两个素数之和

#include <stdio.h>

int prime(int x)

{int flag=1,i;

for(i=2;i<x/2&&flag==1;i++)

{if(x%i==0) flag=0;

}

return flag;}

main()

{int j,k,t;

printf("请输入一个偶数n(n>4):");

scanf("%d",&j);

printf("则其可分解为一下各两个素数之和:\n");

for(k=5;k<=j-k;k++)

{t=j-k;

if(prime(t)&&prime(k))

printf("%d+%d\n",k ,t);

}}

47题:编写一个程序,输入16进制数转换成10进制数

#include <stdio.h>

main()

{int i,n=0,a[4];

printf("请输入一个十六进制数字:");

for(i=0;i<4;i++)

{a[i]=getchar();

if(a[i]=='\n')break;}

for(i=0;i<4;i++)

{if(a[i]>=48&&a[i]<=57) a[i]=a[i]-48;

else if(a[i]>=65&&a[i]<=70) a[i]=a[i]-55;

else if(a[i]>=97&&a[i]<=102) a[i]=a[i]-87;

else printf("error!");

}

for(i=0;i<4;i++)

n=n*16+a[i];

printf("%d\n",n);

}

48题:一辆卡车撞人,有三人目击,甲看到了车号中的两个数,乙看到了另两个,丙是一位数学家,说这四位数是一个整数的平方,这四位数车号是多少?(答案:7744)

#include<stdio.h>

main()

{

int i,j,w=1,s,t;

for(i=1;i<10;i++)

{

for(j=1;j<10;j++)

{

t=i*1000+i*100+j*10+j;

for(s = 30 ; s<=99 ; s++){

if(s*s == t){

printf("%d\n",t);

break;}}

}}}

49题:求前n项斐波那契序列之和 ,斐波那契序列为1,1,2,3,5,8,13……n

#include <stdio.h>

# define M 500

main()

{long int a[M];

int n,i;

printf("Please input n:");

scanf("%d",&n);

a[0]=1;a[1]=1;

printf("1 1 ");

for(i=2;i<n;i++)

{a[i]=a[i-1]+a[i-2];

printf("%1d ",a[i]);

}

printf("\n");

}

50题:输入年月日,输出该天为一年中的第几天?

#include <stdio.h>

main()

{

int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}} ;

int y,m,d,i,t;

printf("Please input the year:");

scanf("%d",&y);

printf("Please input the month:");

scanf("%d",&m);

printf("Please input the day:");

scanf("%d",&d);

i=((y%4==0)&&(y%100!=0)||(y%400==0));

for(t=1;t<m;t++)

{d=d+a[i][t];

}

printf("今天是%d年的第%d天.\n",y,d);

}

标签: #c语言函数题目