1.编写程序,输入三角形的 3 条边长,求其面积。注意:三角形的任意两边之和必须大于第 3 边,对于不合理的边长输入,要求给出错误提示。
#include#include int main() { int a,b,c,s,p; scanf("%d%d%d",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { p=(a+b+c)/2; s=sqrt(p*(p-a)+p*(p-b)+p*(p-c)); printf("%d",s); } else printf("三角形不存在n"); }
3 4 5 6 --------------------------
2.输出所有水仙花数。所谓水仙花数是指一个 3 位数,其各位数字的立方 和等于该数本身。例:153=1^3+5^3+6^3
#includeint main() { int a,b,c,i; for(i=100;i<=999;i++) { a=i%10; b=i/10%10; c=i/100; if(i==a*a*a+b*b*b+c*c*c) printf("%5d",i); } }
153 370 371 407 --------------------------------
3.有一数列 2、3、5、8、…,从第 3 项开始,每一项为其前两项之和,输出 这个数列的前 20 项,且每行显示 5 个数。
#includeint main() { int sum,i; int a1=2,a2=3; printf("%6d%6d",a1,a2); for(i=3;i<=20;i++) { sum=a1+a2; a1=a2; a2=sum; printf("%6d",sum); if(i%5==0) printf("n"); } }
2 3 5 8 13
21 34 55 89 144
233 377 610 987 1597
2584 4181 6765 10946 17711
--------------------------------
4.求 π的近似值,公式如下,要求计算到最后一项的绝对值小于 10-6 为 止(该项不计入)。
#include#include int main() { double sum,c=1,s=1,n=1,pi; while(fabs(c)>=1e-6) { sum=sum+c; n++; s=-s; c=s*1/(2*n-1); } pi=4*sum; printf("%lf",pi); }
3.141591 --------------------------------
5.从键盘输入两个正整数 m 和 n,求它们的最大公约数。
#include//1也可以是最大公约数 int main() { int m,n,i,t; scanf("%d%d",&m,&n); if(m>n) { t=m; m=n; n=t; } for(i=m;i>=1;i--)//求最大公约数要减 { if(m%i==0&&n%i==0) { printf("%d",i); break; } } }
2 4 2
6.从键盘输入一个正整数,判断该数是否为素数。
注:素数又叫质数(prime number),有无限个。质数定义为在大于1的自然数中,除了1和它本 身以外不再有其他因数。
#includeint main() { int x,i=2,a; scanf("%d",&x); while(i 11 是素数 --------------------------------7.《算经》百钱买百鸡:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。 百钱买百鸡,问翁、母、雏各几何?
#includeint main() { int a,b,c; for(a=0;a<=20;a++) { for(b=0;b<=33;b++) { c=100-a-b; if(5*a+3*b+c/3==100&&c%3==0)//c必须为3的倍数 { printf("公鸡:%d 母鸡:%d 小鸡:%dn",a,b,c); } } } } 公鸡:0 母鸡:25 小鸡:75 公鸡:4 母鸡:18 小鸡:78 公鸡:8 母鸡:11 小鸡:81 公鸡:12 母鸡:4 小鸡:84 --------------------------------8.从键盘输入一个正整数 n,求 1!+2!+…+n!。
#includeint main() { int n,i,j,sum=0,a=1; scanf("%d",&n); for(i=1;i<=n;i++)//求累加和 { a=1; for(j=1;j<=i;j++)//求i! { a=a*j; } sum=sum+a; } printf("%d",sum); } 5 153 --------------------------------9.编程求 e=1+1/1!+1/2!+1/3!+…+1/n!,直到最后一项小于 10 的-5 次方为止
#includeint main() { int i=1,j=1; float e=1,m,n=1; m=1/n; for(i=1;m>=1e-5;i++)//最后一项小于10的负5次方 { n=1; for(j=1;j<=i;j++) { n=n*j; } m=1/n; e=e+m; } printf("%f",e); } 2.718282 --------------------------------10. 输入两个正整数 m 和 n,求其最小公倍数。
#includeint main() { int m,n,t,i; scanf("%d%d",&m,&n); if(m 2 4 4 --------------------------------//最大公约数和最小公倍数 #includeint main() { int m,n,i,t; scanf("%d%d",&m,&n); if(m>n) { t=m; m=n; n=t; } for(i=m;i>=1;i--) { if(m%i==0&&n%i==0) break; } t=m*n/i; printf("%dn",i); printf("%d",t); } 11.输入若干学生的成绩,输入负数时表示输入结束,求所有学生的最高分。
#includeint main() { int a[200],max=0,i; for(i=0;i>=0;i++) { printf("请输入第%d个人的成绩:",i+1); scanf("%d",&a[i]); if(a[i]>max) { max=a[i]; } if(a[i]<0) break; } printf("所有同学的最高分是%d",max); } 请输入第1个人的成绩:67 请输入第2个人的成绩:78 请输入第3个人的成绩:90 请输入第4个人的成绩:-6 所有同学的最高分是90 --------------------------------12.有一个分数序列 2/1,3/2,5/3,… 从第 2 项开始,每一项的分子为前一项的分子与分 母之和,每一项的分母为前一项的分子。编程求这个数列的前 n 项之和。
#includeint main() { int n,i=1,t; float a=2,b=1,sum=0,m;//注意a,b,sum都得用sum scanf("%d",&n); //运算结果为小数,过程中都得是小数 for(i=1;i<=n;i++) { m=a/b; sum=sum+m;//注意sum写在前面 t=a;//注意变换 一定要有t做中介值 a=a+b; b=t; } printf("前n项的和是%f",sum); } 5 前5项的和是8.391666 --------------------------------13.从键盘输入 10 个学生的 C 语言成绩到数组中,求平均分、最高分和最低分。
#includeint main() { int a[10],max=0,min=200,i,sum=0; float ave; for(i=0;i<10;i++) { printf("请输入第%d位学生的成绩:",i+1); scanf("%d",&a[i]); if(a[i]>max) max=a[i]; if(a[i] 请输入第1位学生的成绩:90 请输入第2位学生的成绩:89 请输入第3位学生的成绩:77 请输入第4位学生的成绩:88 请输入第5位学生的成绩:67 请输入第6位学生的成绩:47 请输入第7位学生的成绩:56 请输入第8位学生的成绩:90 请输入第9位学生的成绩:90 请输入第10位学生的成绩:44 10位学生的最高成绩为:90 10位学生的最成底绩为:44 10位学生的总成绩为:738 10位学生的平均成绩为:73.800003 --------------------------------14.求 Fibonacci 数列的前 30 个数,将其保存到数组中,并按每行 6 个数输 出。Fibonacci 数列如下:0 , 1 , 1 , 2 , 3 , 5 , 8 , …。该数列从第 3 个数 开始,每一个数是其前面两数之和。
#includeint main() { int a[30],i; a[0]=0,a[1]=1; for(i=2;i<30;i++) { a[i]=a[i-1]+a[i-2]; } for(i=0;i<30;i++) { printf("%dt",a[i]); if((i+1)%6==0)//注意是i+1 printf("n"); } } 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 --------------------------------15.从键盘输入一个字符串,求该字符串的长度。编程时要求不调用字符串库函数strlen()。
#include#include int main() { char a[100];//注意是char int i=0; scanf("%s",a);//注意是a,不是a[i] while(a[i]!=' ')//是a[i],有单引号 i++; printf("%dn",i); printf("%d",strlen(a));//引用strlen() } //头文件 kejidaxue 9 9 --------------------------------16.从键盘输入一个字符串到字符数组 a 中,将其中的大写字符复制到另一个字符数组b中。
#includeint main() { char a[20],b[20]; int i=0,j=0; //scanf("%s",a); gets(a); while(a[i]!=' ') { if(a[i]>='A'&&a[i]<='Z') { b[j]=a[i]; j++; } i++; } b[j]=' ';//字符串末尾都是' '; printf("%sn",b);//注意是b不是b[j]; puts(b);//没有双引号 } zhOngGUO OGUO OGUO --------------------------------17.从键盘输入 N 个整数,采用顺序比较法将这 N 个数按从小到大的顺序排序。
//顺序循环由小到大排列 #include#define N 6//后面没分号 int main() { int a[N],i=0,j=0,t; for(i=0;i a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } } for(i=0;i 67 66 55 44 33 99 33 44 55 66 67 99 --------------------------------18.编程从键盘输入若干个学生的成绩,输入负数时表示输入结束,输出平均成绩和低于平均分的学生成绩。(平均值精确到小数点后 2 位)。
#includeint main() { int a[100],i=0,sum=0,n; float ave; while(1)//for循环不好写时想起while(1) { printf("请输入第%d位同学的成绩:",i+1); scanf("%d",&a[i]); if(a[i]<0) break; sum=sum+a[i]; i++; } ave=(float)sum/i; printf("平均数是%.2fn",ave);//保留两位小数 n=i; printf("低于平均分的分数有:n"); for(i=0;i 请输入第1位同学的成绩:67 请输入第2位同学的成绩:56 请输入第3位同学的成绩:87 请输入第4位同学的成绩:-9 平均数是70.00 低于平均分的分数有: 67 56 --------------------------------19.从键盘输入一个字符串,将其按逆序输出。
#includeint main() { char a[20],b[20]; int i=0,n; scanf("%s",a); while(a[i]!=' ') i++; n=i; //打印字符串 for(i=n-1;i>=0;i--) { printf("%c",a[i]);//打印单个字符 } } yun nuy --------------------------------20.从键盘输入两个字符串,将第二个字符串连接到第一个字符串的后面,并输出连接后的 结果。要求:不能调用字符串库函数 strcat。
#includeint main() { char a[20],b[20]; int i=0,j=0; printf("请输入a中的字符串:"); scanf("%s",a); printf("请输入b中的字符串:"); scanf("%s",b); while(a[i]!=' ') i++; while(b[j]!=' ') j++; j=0; while(1) { a[i+j]=b[j];//a[i],b[j]=' ' if(b[j]==' ') break; j++; } printf("%s",a); } 请输入a中的字符串:yuan 请输入b中的字符串:rui yuanrui --------------------------------21.将字符数组 s2 中的全部字符复制到字符数组s1中。要求:不能调用字符串库函数 strcpy。
#includeint main() { char a[20],b[20]; int i=0; printf("请输入第二个数组:"); scanf("%s",b); while(1) { a[i]=b[i];//此时a[i]=' ',不许再加 if(b[i]==' ') break; i++; } printf("%s",a); } 请输入第二个数组:yuan yuan --------------------------------22.编写函数判断一个正整数是否是素数。要求在 main()函数中输入一个正 整数和输出结果:显示“是素数”或“不是素数”。
#includeint flag(int m) { int i=0; for(i=m-1;i>=1;i--) { if(m%i==0) break; } if(i==1) return 1; else return 0; } int main() { int m,n; printf("请输入一个数:"); scanf("%d",&m); n=flag(m); if(n==1) printf("该数是素数:n"); else printf("该数不是素数:"); } 请输入一个数:11 该数是素数: --------------------------------23.编写函数判断一个整数是否为回文,在 main()函数中调用该函数输出 1000 到 9000 之间所有的回文数字,每行输出 10 个数。回文是指正读和倒读都一样的数 字。例如:6776 98789。
#includeint huiwen(int m)//判断该数是否是回文数 { int a,b,c,d; a=m%10; b=m/10%10; c=m/100%10; d=m/1000; if(a==d&&b==c) return 1; else return 0; } int main() { int i,flag,n=1; for(i=1000;i<=9000;i++) { flag=huiwen(i); if(flag==1) { printf("%dt",i); if(n%10==0) printf("n"); n++;//n++必须和if对齐; } } } 1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002 2112 2222 2332 2442 2552 2662 2772 2882 2992 3003 3113 3223 3333 3443 3553 3663 3773 3883 3993 4004 4114 4224 4334 4444 4554 4664 4774 4884 4994 5005 5115 5225 5335 5445 5555 5665 5775 5885 5995 6006 6116 6226 6336 6446 6556 6666 6776 6886 6996 7007 7117 7227 7337 7447 7557 7667 7777 7887 7997 8008 8118 8228 8338 8448 8558 8668 8778 8888 8998 --------------------------------24.用递归法求 n!
#includeint fac(int n) { int m; if(n==1) m=1; else m=n*fac(n-1); return m; } int main() { int n,flag; scanf("%d",&n); flag=fac(n); printf("%d",flag); } 4 24 --------------------------------#includeint jiecheng(int n) { int i,m=1; if(n==1) m=1; else { for(i=1;i<=n;i++) m=m*i; } return m; } int main() { int n,flag; scanf("%d",&n); flag=jiecheng(n); printf("%d",flag); } 25.编写一个将字符数组中所有小写字母转换成大写字母的函数,并在 main()函数中 调用该函数。要求采用数组名作为函数实参
#includevoid change(char a[10])//无返回值要用void { int i=0; while(1) { if(a[i]>='a'&&a[i]<='z') a[i]=a[i]-32;//小写变大写减32 if(a[i]==' ') //大变小加32 break; i++; } } int main() { char a[10]; scanf("%s",a); change(a);//不写a[i],a[i]单指一个字符,a指一个字符串 printf("%s",a); } Ruan RUAN --------------------------------26.编写函数 int sum(int m) 计算 1+2+3+...+m,运算结果通过变量 sumn 返回调用函数。 要求在主函数中输入 m 的值,调用 sum 函数,返回 sumn 的值,并在主函数输出结果。 例如:输入 4,输出 10。
#includeint sum(int n) { int sum=0,i; for(i=1;i<=n;i++) { sum=sum+i; } return sum; } int main() { int n,m; scanf("%d",&n); m=sum(n); printf("前%d项的和为%d",n,m); } 4 前4项的和为10 --------------------------------27.编写函数,计算以下表达式的值。要求在主函数中输入 x 的值,并输出结果。
#includedouble hanshu(double x) { double m; if(x<0) m=x*x-2*x+1; else m=x*x*x+x+3; return m; } int main() { double x,m; scanf("%lf",&x);//double对应lf m=hanshu(x); printf("%.2lf",m); } 0 3.00 --------------------------------28.、编写函数 min(x,y,z),求 3 个整数的最小值,并利用该函数求 5 个整数的最小值。要求在 主函数中输入 5 个整数,并输出结果。
#includeint min(int x,int y,int z) { if(x>y) x=y; if(x>z) x=z; return x; } int main() { int x,y,z,m,n,flag; scanf("%d%d%d%d%d",&x,&y,&z,&m,&n); flag=min(m,n,min(x,y,z)); printf("5个数的最小值是:%d",flag); } 5 7 4 1 9 5个数的最小值是:1 --------------------------------29.编写函数判断一个数是否为素数,在主函数中调用该函数输出 100 以内的全部素数。
#includeint sushu(int n) { int i,m; for(i=2;i 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 --------------------------------30.编写两个函数,分别求两个整数的最大公约数和最小公倍数,在主函数中输入两个 整数,调用他们后输出结果。
#includeint m1(int m,int n) { int i,t; if(m>n) { t=m; m=n; n=t; } for(i=m;i>=1;i--) { if(m%i==0&&n%i==0) break; } return i; } int m2(int m,int n) { int i; i=(m*n)/m1(m,n); return i; } int main() { int m,n; scanf("%d%d",&m,&n); printf("最大公约数是%d,最小公倍数是%d",m1(m,n),m2(m,n)); } 2 4 最大公约数是2,最小公倍数是4 --------------------------------31.编写一个函数 f,用来求 n 个 a 的值。在主函数中输入两个正整数 a 和 n,调用函数 f, 求 a+aa+aaa+aa…a 的值,并输出结果。
#includeint f(int a,int n) { int i,t=0; for(i=1;i<=n;i++) { t=t*10+a;//注意是t等于 } return t; } int main() { int a,n,sum=0,i; scanf("%d%d",&a,&n); for(i=1;i<=n;i++) { sum=sum+f(a,i);//注意是i } printf("%d",sum); } 1 2 12 --------------------------------32.编写函数 max(int a[]),用来求数组 a 中元素的最大值,在主函数中定义一个数组,并输入其 元素值,然后调用函数 max,输出该数组中元素的最大值。
#include#define N 10//无分号 int max(int a[N]) { int m=0,i;//先给m赋值0 for(i=0;i 56 44 78 33 35 90 78 66 45 23 该数组中的最大值为9033.编写一个采用冒泡法对 n 个数由小到大进行排序的函数。在主函数中输入 n 的值及 n 个数,然后调用自定义函数,输出排序结果。
#includevoid shunxu(int a[],int n)//不要忘记int,写a[]而不是a[n] { //n是自己定义的要写,没有返回值void int i,j,t; for(i=0;i a[j])//交换数字而不是a[i]=a[j] { t=a[i]; a[i]=a[j]; a[j]=t; } } } } int main() { int n,i; printf("请输入元素个数:"); scanf("%d",&n); int a[n]; printf("请输入n个元素的值:"); for(i=0;i 请输入元素个数:5 请输入n个元素的值:78 90 56 22 90 22 56 78 90 90 --------------------------------34.编写一个求 Fibonacci 数列某一项的递归函数,在主函数中输入 n,调用自定义函数后,输出 Fibonacci 数列的前 n 项。说明:Fibonacci 数列的第 1 个数为 0,第 2 个数为 1,以后每个数为其 前两数之和,即 0、1、1、2、3、5、8、13、…、n。
#includeint F(int n) { int a1=0,a2=1,a3,i,f; if(n==1) f=0; else if(n==2) f=1; else { for(i=3;i<=n;i++) { a3=a1+a2; a1=a2; a2=a3; } f=a3; } return f; } int main() { int n,i; scanf("%d",&n); for(i=1;i<=n;i++) printf("%dt",F(i)); } 5 0 1 1 2 3 --------------------------------#includeint F(int n) { int f; if(n==1) f=0; else if(n==2)//else if f=1; else f=F(n-1)+F(n-2); return f; } int main() { int n,i; scanf("%d",&n); for(i=1;i<=n;i++) printf("%dt",F(i));//注意是F(i) } 35.从键盘输入两个整数 x 和 y,求这两个数的最大值。(使用指针)
#includeint main() { int x,y,max,*px,*py; px=&x;//没有星号 py=&y; scanf("%d%d",px,py); if(*px>*py) max=*px;//*px就相当于一个数 else max=*py; printf("%d",max); } 2 5 5 --------------------------------36.编写实现两个整数交换的自定义函数 swap(),要求形参采用指针变量,在 main()函数中输入两个整 数,调用 swap()函数后输出结果
#includevoid swap(int *px,int *py)//定义时对应地址 { int t; t=*px;//*px在过程中就相当于一个整数 *px=*py; *py=t; } int main() { int x,y; scanf("%d%d",&x,&y); swap(&x,&y); printf("%d %d",x,y); } 3 5 5 3 --------------------------------37.写出下面程序的执行结果
#includeint main() { int i,a[6]={1,2,3,4,5,6},*p=a;//p=&a[i],p=a等价于p=&a[0] for(i=0;i<6;i++) printf("%d ",a[i]); printf("n"); for(i=0;i<6;i++) printf("%d ",p[i]); printf("n"); for(i=0;i<6;i++) printf("%d ",*(a+i)); printf("n"); for(i=0;i<6;i++) printf("%d ",*(p+i)); printf("n"); for(p=a;p 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 --------------------------------38.编写求数组所有元素的平均值的自定义函数,在 main()函数中输入学生人数和每个学生的成绩,调用自定义函数后输出平均分。
#includefloat pingjun(int *p,int n) { int i,sum=0; float eve; for(i=0;i 5 78 90 77 66 56 73.40 --------------------------------#includefloat pingjun(int a[],int n) { int sum=0,i; float eve; for(i=0;i 39.输入一个字符串,从中查找字符 k,若找到则输出“已找到!”,否则输出“没找到!”。
#includeint main() { char a[20],*p; int i; scanf("%s",a); p=a;//是p不是*p for(i=0;*(p+i)!=' ';i++)//*(p+i)不是*p { if(*(p+i)=='k') break; } if(*(p+i)==' ') printf("没找到"); else printf("已找到"); } yuank 已找到 --------------------------------#includeint main() { char a[10]; int i; scanf("%s",a); for(i=0;a[i]!=' ';i++) { if(a[i]=='k') break; } if(a[i]==' ') printf("没找到"); else printf("已找到"); } 40.编写函数,判断一个字符串是否为回文。在主函数中输入一个字符串,调用自定义函数,输 出结果。所谓回文是指顺读和倒读都一样的字符串。如“XZYKYZX”是回文。
#includeint huiwen(char a[]) { int i=0,n; char b[20]; while(a[i]!=' ')//计算数组有几个字符,a[i]=' ' i++; n=i; for(i=0;i


