当前位置:   article > 正文

c语言基础程序——100实例_c语言经典程序100例

c语言经典程序100例

目录

1. 有1,2,3,4个数字,能组成多少个互不相同的无重复数字的三位数?都是多少?

 2.企业发放奖金根据利润提成。利润不高于十万时,奖金可提10%,高于十万时,低于十万部分不变,高于十万部分可提7.5%,20万到40万时,高于20万部分可提5%,40万到六十万时高于四十万部分可提3%,60万到100万,高于60万部分可提1.5%,超过100万按1%提成。键盘输入当月利润 i,求发放的奖金。

3.个整数它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问数是多少。

4.输入某年某月某日,判断这一天是这一年的第几天?

5.三个数排序

6.输出九九乘法表

7. 输出国际象棋棋盘

8.输出楼梯图形

9.有一对兔子,从出生第三个月之后,每个月生一对兔子,小兔子长到第三个月又生一对兔子,假如兔子不死,求每个月兔子的数量是多少?一年之后是多少?

10.编程题10:输出101--200之间的素数

11.打印100-1000内的水仙花数

12.将一个正整数分解因数。例如:输入90,打印90=2*3*3*5

13.利用条件运算符完成。>=90的同学用A表示,60-89分用B表示,60分以下用C表示

14.辗除法实现输入两个正整数m和n,求最大公约数和最小公倍数。

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

16.求a+aa+aaa+aaaa+aaaaa+...+aa...a的值,a是一个数字及其变式。

17.一个数恰好是他的因子之和,这个数就被称为“完数”。例如;6=1+2+3.求1000内的完数

18.一球从100米高度自由落下,每次落地反弹后跳回原来高度的一半,再落下,求十次落地后,共经过多少米?第10次多高?

19.猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半,不过瘾,又吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天都吃了前一天的一半多一个,到第10天只剩一个桃子。求第一天吃了多少?

20.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。比赛名单顺序。a不和x比,c说不和x,z比,请找出三队选手的比赛名单。

21.打印菱形,数字类图形

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

23.1+2!+3!+4!+...+20!的和?

24.水仙花数

25.将一个正整数分解质因数

26.输入一个大于3的整数,判定它是否是素数

27.给一个不多已5位数的正整数,要求:一、求是个几位数。二、逆序打印程序分析:将每个位取出来计算.

28.一个5位数,判断是不是回文数。12321是回文数,个位和万位相同,十位和千位相同。程序分析:将每个位取出来比较。

29.请输入星期几的第几个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。程序分析:情况语句比较好,如果第一个字母一样,可以用if条件语句判断。

30.求一百以内的素数

31. 对10个数排序

32.求一个3*3矩阵对角线元素之和

33.有一个已经排好序的数组。先输入一个数,要求按原来的规律将它插入数组中。

34.将一个数组逆序输出

35.杨辉三角,输出前十行

36.好数 各位数乘积能被各位之和整除

37.不超过

38.海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子分成5份,多了一个,这只猴子将多了的一个仍入海中,拿走了一份。第二只猴子把剩下的桃子又分均分成5份,又多了一个,同样的扔海中了,拿走了一份,第三、第四、第五都是这样做的。求海滩原来最少有多少个?

39.八进制转换成十进制

40.0-3所能组成的奇数个数

41.一个偶数总能表示两个素数之和

42.strcat

 44.输入一个三角形的三条边长,判断这三条边是否能构成直角三角形,输出计算结果

45.根据公示Π/4=1-1/3+1/5-1/7+1/9-1/11+......,计算Π的近似值,当最后一项的绝对值小于0.000001为止。

46.从键盘输入20个学生的姓名和总分,按总分从大到小顺序输出这20个学生的姓名和总分。

47.一个数只能被它本身和1整除的数叫素数,设计一函数可以判断一个数是不是素数,并利用此函数输出2-1000以内的所有素数,并每行十个输出。

48.输入一个圆的半径r,输出这个圆的直径,周长,面积计算结果

49.判断输入的正函数既是5的又是7的倍数,如果是输出“yes”,如果不是输出“no”。

50.从键盘输入一个正整数n,计算1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n) 的值

51.从键盘输入一个四行三列的矩阵,输出这个矩阵以及它的转置矩阵

52.设计一个判别素数的函数,在主函数中输入两个正整数,判别这两个数之和是否是素数

54.输入梯形的上底、下底和高,计算梯形的面积,并输出结果

55.首先输入一个点A的平面坐标,在输入一个矩形的左上角和右下角的平面坐标,判断这个点A在矩形的内部、外部还是边上,输出计算结果。

56.输入1980年1月1日至2009年12月31日之间的任一年月日,计算该日期为该年的第几天。

57.从键盘输出两个三行三列的矩阵,输出这两个矩阵的和矩阵。

58.求a的平方根的迭代公式Xn+1 = (Xn+a/Xn)/2设计一个自定义求平方根函数,并利用此函数输出1-100的平方根。

59.1千克=2.2046226磅,输入一物体的质量(以千克为单位),计算该物体有多少磅,输出计算结果

60.标准差公式为 a=sqrt(1/NΣi=1-->N(Xi-u)²)公式中N为样本个数,Xi为样本值,u为样本均值,输入20个数

61.设计一个函数可以将10进制转化为2进制字符串,并利用此函数计算从键盘的输入的3个10进制正数,输出相应的2进制数。

62.编写程序输出100-300之间的所能同时被3和5整除的数

63.编写一个程序,将两个字符串链接起来,要求不用strcat函数

64.判断是否是水仙花数

65.已知圆柱高h=5,要求输入圆的半径,求出圆周长,圆的面积和圆柱体积,输入对应数字输出对应结果

66.矩阵转置:将二维数组a的行和列元素互换后存到另一个二维数组b中

67.输入4个数,输出4个数的总和以及平均值

68.判断一元二次方程ax²+bx+c=0的根

69.实现公路收费站的车辆收费问题。根据输入的车辆类型,输出对应的收费,A类车:15元 B类车:35元 C类车:50元  D类车:70元


1. 有1,2,3,4个数字,能组成多少个互不相同的无重复数字的三位数?都是多少?

  1. //编程1:有1,2,3,4个数字,能组成多少个互不相同的无重复数字的三位数?都是多少?
  2. #include"stdio.h"
  3. main(){
  4. int i,j,k;
  5. printf("\n");
  6. for(i=1;i<5;i++){
  7. for(j=1;j<5;j++){
  8. for(k=1;k<5;k++){
  9. if(i!=k&&i!=j&&k!=j)
  10. printf("%d%d%d\n",i,j,k);
  11. }
  12. }
  13. }
  14. return 0;
  15. }

 2.企业发放奖金根据利润提成。利润不高于十万时,奖金可提10%,高于十万时,低于十万部分不变,高于十万部分可提7.5%,20万到40万时,高于20万部分可提5%,40万到六十万时高于四十万部分可提3%,60万到100万,高于60万部分可提1.5%,超过100万按1%提成。键盘输入当月利润 i,求发放的奖金。

  1. /*编程2:企业发放奖金根据利润提成。利润不高于十万时,奖金可提10%,高于十万时,低于十万部分不变,
  2. 高于十万部分可提7.5%,20万到40万时,高于20万部分可提5%,40万到六十万时高于四十万部分可提3%,
  3. 60万到100万,高于60万部分可提1.5%,超过100万按1%提成。键盘输入当月利润 i,求发放的奖金。*/
  4. #include"stdio.h"
  5. main(){
  6. long int i; //呆滞刻板
  7. int sum=0;
  8. scanf("%d",&i);
  9. if(i<=100000)
  10. sum=i*0.1;
  11. else if(i<=200000)
  12. sum=100000*0.1+100000*0.075;
  13. else if(i<=400000)
  14. sum=100000*0.1+100000*0.075+200000*0.05;
  15. else if(i<=600000)
  16. sum=100000*0.1+100000*0.075+200000*0.05+200000*0.03;
  17. else if(i<=1000000)
  18. sum=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015;
  19. else sum=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;
  20. printf("sum=%d",sum);
  21. return 0;
  22. }
  23. 第二种:
  24. #include"stdio.h"
  25. int main(){
  26. double i,w1,w2,w4,w6,w10,sum=0;
  27. scanf("%lf",&i);
  28. w1=100000*0.1;
  29. w2=w1+100000*0.075;
  30. w4=w2+200000*0.05;
  31. w6=w4+200000*0.03;
  32. w10=w6+400000*0.015;
  33. if(i<=100000)
  34. sum=i*0.1;
  35. else if(i<=200000)
  36. sum=w1+(i-100000)*0.075;
  37. else if(i<=400000)
  38. sum=w2+(i-200000)*0.05;
  39. else if(i<=600000)
  40. sum=w4+(i-200000)*0.03;
  41. else if(i<=1000000)
  42. sum=w6+(i-600000)*0.015;
  43. else
  44. sum=w10+(i-1000000)*0.01;
  45. printf("sum=%lf",sum);
  46. return 0;
  47. }

3.一个整数它加上100后是一个完全平方数,加上168又是一个完全平方数,请问数是多少。(int型)

  1. //编程3:一个整数它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问数是多少。
  2. #include"stdio.h"
  3. #include"math.h"
  4. main(){
  5. long int i,x,y,z;
  6. for(i=1;i<1000000;i++)
  7. {
  8. x=sqrt(i+100);
  9. y=sqrt(i+168);
  10. if(x*x==i+100&&y*y==i+168)
  11. printf("\n%ld\n",i);
  12. }
  13. return 0;
  14. }

4.输入某年某月某日,判断这一天是这一年的第几天?

  1. //编程4:输入某年某月某日,判断这一天是这一年的第几天?
  2. #include"stdio.h"
  3. main(){
  4. int day,month,year,sum=0,leap;
  5. printf("请输入某年某月某天");
  6. scanf("%d,%d,%d",&year,&month,&day);//输入格式符合条件 例如:2022,3,7
  7. switch(month)
  8. {
  9. case 1:sum=0;break;
  10. case 2:sum=31;break;
  11. case 3:sum=59;break;
  12. case 4:sum=90;break;
  13. case 5:sum=120;break;
  14. case 6:sum=151;break;
  15. case 7:sum=181;break;
  16. case 8:sum=212;break;
  17. case 9:sum=243;break;
  18. case 10:sum=273;break;
  19. case 11:sum=304;break;
  20. case 12L:sum=334;break;
  21. default:printf("error\n");
  22. }
  23. sum=sum+day;//总的sum= sum+是某月的第几天
  24. if(year%400==0||(year%4==0&&year%100!=0))
  25. leap=1;
  26. else
  27. leap=0;
  28. if(leap==1&&month>2) //若是闰年且月份大于2月份加一天
  29. sum++;
  30. printf("是该年的第%d天",sum);
  31. return 0;
  32. }

5.三个数排序

  1. //编程5:输入三个整数想,x,y,z,三个数从小到大输出
  2. #include"stdio.h"
  3. main(){
  4. int x,y,z,t;
  5. scanf("%d%d%d",&x,&y,&z);
  6. if(x>y)
  7. {t=x,x=y,y=t;}
  8. if(x>z)
  9. {t=x,x=z,z=t;}
  10. if(y>z)
  11. {t=y,z=y,z=t;}
  12. printf("%d %d %d\n",x,y,z);
  13. return 0;
  14. }

6.输出九九乘法表

  1. //编程6:输出九九乘法口诀
  2. #include"stdio.h"
  3. main() {
  4. int i,j,sum=0;
  5. for(i=1;i<10;i++){
  6. for(j=1;j<=i;j++){
  7. sum=i*j;
  8. printf("%d*%d=%-3d",i,j,sum);
  9. }
  10. printf("\n");
  11. }
  12. return 0;
  13. }

7. 输出国际象棋棋盘

  1. //编程7:输出国际象棋棋盘
  2. #include"stdio.h"
  3. main(){
  4. int i,j;
  5. for(i=0;i<8;i++){
  6. for(j=0;j<8;j++){
  7. if((i+j)%2==0)
  8. printf("%c%c",0xa8,0x80);
  9. else
  10. printf(" ");
  11. }
  12. printf("\n");
  13. }
  14. return 0;
  15. }

8.输出楼梯图形

  1. //编程8:输出楼梯图形
  2. #include"stdio.h"
  3. main(){
  4. int i,j;
  5. for(i=1;i<11;i++){
  6. for(j=1;j<=i;j++){
  7. printf("%c%c",0xa8,0x80);
  8. }
  9. printf("\n");
  10. }
  11. return 0;
  12. }

9.有一对兔子,从出生第三个月之后,每个月生一对兔子,小兔子长到第三个月又生一对兔子,假如兔子不死,求每个月兔子的数量是多少?一年之后是多少?

  1. //编程9:有一对兔子,从出生第三个月之后,每个月生一对兔子,小兔子长到第三个月又生一对兔子,、
  2. //假如兔子不死,求每个月兔子的数量是多少?一年之后是多少?
  3. #include"stdio.h"
  4. main(){
  5. long f1,f2;
  6. int i;
  7. f1=f2=1;
  8. for(i=1;i<=12;i++){
  9. printf("%12d%12d",f1,f2);
  10. if(i%2==0) printf("\n");
  11. f1=f1+f2;
  12. f2=f1+f2;
  13. }
  14. return 0;
  15. }

10.编程题10:输出101--200之间的素数

  1. //编程题10:输出101--200之间的素数
  2. #include"stdio.h"
  3. main(){
  4. int i,j,cnt=0;
  5. for(i=101;i<=200;i++){
  6. for(j=2;j<i;j++){
  7. if(i%j==0) break;
  8. }
  9. if(i==j){
  10. printf("%-5d",i);
  11. cnt++;
  12. if(cnt%5==0)
  13. printf("\n");
  14. }
  15. }
  16. return 0;
  17. }

11.打印100-1000内的水仙花数

  1. //编程11:打印100-1000内的水仙花数
  2. #include"stdio.h"
  3. main(){
  4. int i,j,k,n;
  5. for(n=100;n<1000;n++){
  6. i=n/100;
  7. j=n/10%10;
  8. k=n%10;
  9. if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
  10. printf("%-5d",n);
  11. }
  12. return 0;
  13. }

12.将一个正整数分解因数。例如:输入90,打印90=2*3*3*5

  1. //编程12:将一个正整数分解因数。例如:输入90,打印90=2*3*3*5
  2. #include"stdio.h"
  3. main(){
  4. int n,i;
  5. scanf("%d",&n);
  6. printf("%d=",n);
  7. for(i=2;i<=n;i++)
  8. while(n!=i){
  9. if(n%i==0){
  10. printf("%d*",i);
  11. n=n/i;
  12. }
  13. else
  14. break;
  15. }
  16. printf("%d",n);
  17. return 0;
  18. }

13.利用条件运算符完成。>=90的同学用A表示,60-89分用B表示,60分以下用C表示

  1. //编程13利用条件运算符完成。>=90的同学用A表示,60-89分用B表示,60分以下用C表示
  2. #include"stdio.h"
  3. main(){
  4. int cj;
  5. char g;
  6. scanf("%d",&cj);
  7. g=cj>=90?'A':(cj>=60?'B':'C');
  8. printf("%d %c\n",cj,g);
  9. return 0;
  10. }

14.辗除法实现输入两个正整数m和n,求最大公约数和最小公倍数。

  1. //编程14:输入两个正整数m和n,求最大公约数和最小公倍数。
  2. #include"stdio.h"
  3. main(){
  4. int a,b,num1,num2,t;
  5. printf("输入两个正整数\n");
  6. scanf("%d,%d",&num1,&num2);
  7. if(num1<num2){
  8. t=num1;
  9. num1=num2;
  10. num2=t;
  11. }
  12. a=num1,b=num2;
  13. while(b!=0){
  14. t=a%b;
  15. a=b;
  16. b=t;
  17. }
  18. printf("最大公约数=%d\n",a);
  19. printf("最小公倍数=%d\n",num1*num2/a);
  20. return 0;
  21. }

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

  1. //编程15:输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。
  2. #include"stdio.h"
  3. main(){
  4. char c;
  5. int letters=0,space=0,figure=0,others=0;
  6. printf("请输入一行字符\n");
  7. while((c=getchar())!='\n'){
  8. if(c>='a'&&c<='z'||c>='A'&&c<='Z')
  9. letters++;
  10. else if(c==' ')
  11. space++;
  12. else if(c>='0'&&c<='9')
  13. figure++;
  14. else others++;
  15. }
  16. printf("letters=%d,space=%d,figure=%d,others=%d",letters,space,figure,others);
  17. return 0;
  18. }

16.求a+aa+aaa+aaaa+aaaaa+...+aa...a的值,a是一个数字及其变式。

  1. //编程16:求a+aa+aaa+aaaa+aaaaa+...+aa...a的值,a是一个数字。
  2. #include"stdio.h"
  3. main(){
  4. int i,n,a,s=0,ss=0;
  5. printf("请输入多少项,值为多少。\n");
  6. scanf("%d,%d",&n,&a);//输出项的数量n和数值a
  7. for(i=0;i<n;i++){
  8. s=10*s+a;//例:2+22+222+2222 每次是上次数值 ×10+a ,计算每项的值
  9. ss+=s; //计算总的值
  10. }
  11. printf("%d\n",ss);
  12. return 0;
  13. }
  14. //s-ss类变式
  15. //1+(1+2)+(1+2+3)+......+(1+2+3...+9+10)=?
  16. //1!+2!+3!+......+9!+10!=?
  17. //1/1+1/(1+3)+1/(1+3+5)+......+1(1+3+5+...+99)=?
  18. //求 1/2+(1+3)/(2+4)+(1+3+5)/(2+4+6)+......+(1+3+5...+19)/(2+4+...+18+20)=?
  19. //#include"stdio.h"
  20. //int main()
  21. //{
  22. /*int i,s=0,ss=0;
  23. for(i=1;i<=10;i++)
  24. {
  25. s+=i;
  26. ss+=s;
  27. }
  28. printf("%d\n",ss);*/
  29. /*int i,s=1,ss=0;
  30. for(i=1;i<=10;i++)
  31. {
  32. s*=i;
  33. ss+=s;
  34. }
  35. printf("%d\n",ss);*/
  36. /*int i;float s=0,ss=0;
  37. for(i=1;i<=99;i+=2)
  38. {
  39. s+=i;
  40. ss+=1/s;
  41. }
  42. printf("%.4f\n",ss);*/
  43. /* float i,m,s1=0,s2=0,ss=0;
  44. for(i=1,m=2;i<=19;i+=2,m+=2)
  45. {
  46. s1+=i;
  47. s2+=m;
  48. ss+=s1/s2;
  49. }
  50. printf("%f\n",ss);*/
  51. // return 0;
  52. //}
  53. //#include"stdio.h"
  54. //int main()
  55. //{
  56. // int i,x,ss=0,s=1;
  57. // printf(".....\n");
  58. // scanf("%d",&x);
  59. // for(i=1;i<=20;i++)
  60. // {
  61. // s*=(x-i);
  62. // ss+=s;
  63. // }
  64. // printf("%d\n",ss);
  65. // return 0;
  66. //}

17.一个数恰好是他的因子之和,这个数就被称为“完数”。例如;6=1+2+3.求1000内的完数

  1. //编程17:一个数恰好是他的因子之和,这个数就被称为“完数”。例如;6=1+2+3.求1000内的完数。
  2. #include"stdio.h"
  3. main(){
  4. int i,j,s;
  5. for(i=2;i<=1000;i++){
  6. s=0;//s每次都要置0,所以放for循环例里面
  7. for(j=1;j<i;j++){
  8. if(i%j==0) //判断J是I的因子
  9. {
  10. s+=j;
  11. }
  12. }
  13. if(s==i)//除本身因子之和如果等于本身,则是完数
  14. printf("%d是完数\n",i);
  15. }
  16. return 0;
  17. }

18.一球从100米高度自由落下,每次落地反弹后跳回原来高度的一半,再落下,
求十次落地后,共经过多少米?第10次多高?

  1. //编程18:一球从100米高度自由落下,每次落地反弹后跳回原来高度的一半,再落下,
  2. //求十次落地后,共经过多少米?第10次多高?
  3. #include"stdio.h"
  4. main(){
  5. float s=100.0,h=50;
  6. int i,cnt=1;
  7. for(i=2;i<=10;i++){
  8. s=s+h*2;//第一次下落s=100米 反弹高度=下落高度 =2*h
  9. h/=2;//减半
  10. cnt++;
  11. printf("第%d次 %f米\n",cnt,s);
  12. }
  13. printf("共经过%f米\n",s);
  14. printf("第10次高度是%f米\n",h);
  15. return 0;
  16. }

19.猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半,不过瘾,又吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天都吃了前一天的一半多一个,到第10天只剩一个桃子。求第一天吃了多少?

  1. //编程19:猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半,不过瘾,又吃了一个,
  2. //第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天都吃了前一天的一半多一个,
  3. //到第10天只剩一个桃子。求第一天吃了多少?
  4. //程序分析:逆向思维
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. int main(){
  8. int day, x1 = 0, x2;
  9. day=9;
  10. x2=1;
  11. while(day>0) {
  12. x1=(x2+1)*2; // 第一天的桃子数是第2天桃子数加1后的2倍
  13. x2=x1;
  14. day--;
  15. }
  16. printf("总数为 %d\n",x1);
  17. return 0;
  18. }

20.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。比赛名单顺序。a不和x比,c说不和x,z比,请找出三队选手的比赛名单。

  1. //编程20:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。比赛名单顺序。
  2. //a不和x比,c说不和x,z比,请找出三队选手的比赛名单。
  3. #include"stdio.h"
  4. main(){
  5. }

21.打印菱形,数字类图形

  1. //编程21:图形打印
  2. // *
  3. // ***
  4. // *****
  5. // *******
  6. //*********
  7. // *******
  8. // *****
  9. // ***
  10. // *
  11. //程序分析:把图形分为两部分看待,前五行,后四行,for循环嵌套,i循环次数,j输出空格,k输出*
  12. #include"stdio.h"
  13. main(){
  14. int i,j,k;
  15. for(i=1;i<=5;i++){ //第一个for循环,嵌套两个小for循环
  16. for(j=1;j<=5-i;j++)//前五行空格
  17. printf(" ");
  18. for(k=1;k<=2*i-1;k++)//输出前五行*
  19. printf("*");
  20. printf("\n");//程序执行一边换行
  21. }
  22. for(i=1;i<=4;i++){ //第二个for循环,嵌套两个小for循环
  23. for(j=1;j<=i;j++)//后四行空格
  24. printf(" ");
  25. for(k=1;k<=9-2*i;k++)//输出后四行*
  26. printf("*");
  27. printf("\n"); //程序执行一边换行
  28. }
  29. return 0;
  30. }
  31. //图形类1
  32. /*
  33. ******
  34. ******
  35. ******
  36. ******
  37. */
  38. #include"stdio.h"
  39. int main(){
  40. /*int i,j;
  41. for(i=1;i<=4;i++){
  42. for(j=1;j<=i-1;j++)
  43. printf(" ");
  44. for(j=1;j<=6;j++){
  45. printf("*");
  46. printf("\n");
  47. }
  48. }*/
  49. //数字类:printf("*");换成printf("%d",i(b变)或j(变))
  50. //例: 1 5 1 5
  51. // 12 45 21 45
  52. // 123 345 321 345
  53. // 1234 2345 4321 2345
  54. // 12345 12345 54321 12345
  55. int i,j,k;
  56. /*for(i=1;i<=5;i++){
  57. for(j=1;j<=5-i;j++){
  58. printf(" ");
  59. }
  60. for(j=1;j<=i;j++){
  61. printf("%d",j);
  62. }
  63. printf("\n");
  64. }*/
  65. /*for(i=1;i<=5;i++){
  66. for(j=1;j<=5-i;j++){
  67. printf(" ");
  68. }
  69. for(j=6-i;j<=5;j++){
  70. printf("%d",j);
  71. }
  72. printf("\n");
  73. }*/
  74. /*for(i=1;i<=5;i++){
  75. for(j=1;j<=5-i;j++){
  76. printf(" ");
  77. }
  78. for(k=i;k>=1;k--){
  79. printf("%d",k);
  80. }
  81. printf("\n");
  82. }*/
  83. for(i=1;i<=5;i++){
  84. for(j=6-i;j<=5;j++){
  85. printf("%d",j);
  86. }
  87. printf("\n");
  88. }
  89. return 0;
  90. }
  91. //图形类2
  92. /* A
  93. AB
  94. ABC
  95. ABCD
  96. ABCDE */
  97. //#include"stdio.h"
  98. //int main(){
  99. //
  100. // int i,j;
  101. // for(i=1;i<=5;i++){
  102. // for(j=1;j<=5-i;j++){
  103. // printf(" ");
  104. // }
  105. // for(j=1;j<=i;j++){
  106. // printf("%c",j+64);
  107. // }
  108. // printf("\n");
  109. // }
  110. //}
  111. //九九乘法表
  112. // int i,j;
  113. // for(i=1;i<=9;i++){
  114. // for(j=1;j<=i;j++){
  115. // printf("%d*%d=%-3d",i,j,i*j);
  116. printf("%d*%d=%-3d",j,i,i*j);
  117. // }
  118. // printf("\n");
  119. // }
  120. //}

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

  1. //编程22;有一序列 2/1,3/2,5/3,8/5,13/8,21/13...求这个数列的前20项之和。
  2. //程序分析:后一个分子是前一个数的分子+分母,分母是前一个的分子
  3. #include"stdio.h"
  4. main(){
  5. int i,t;
  6. float a=2,b=1,s=0.0;//float 分数
  7. for(i=1;i<=20;i++){
  8. s+=a/b;
  9. t=a;a=a+b;b=t;//a+b赋给下个a,a赋给下个b
  10. }
  11. printf("%9.6f\n",s);
  12. return 0;
  13. }

23.1+2!+3!+4!+...+20!的和?

  1. //编程23:1+2!+3!+4!+...+20!的和?
  2. //程序分析:类似于累加
  3. #include"stdio.h"
  4. main(){
  5. int i;
  6. float s=1,ss=0;//s*= 中s必须是初始值为 1
  7. for(i=1;i<=20;i++){
  8. s*=i;
  9. ss+=s;
  10. }
  11. printf("%f\n",ss);
  12. }

24.水仙花数

  1. #include"stdio.h"
  2. int main(){
  3. int i,x,y,z;
  4. for(i=100;i<1000;i++){
  5. x=i%10;
  6. y=i/10%10;
  7. z=i/100%10;
  8. if(x*x*x+y*y*y+z*z*z==i){ //判断条件
  9. printf("%d\n",i);
  10. }
  11. }
  12. }

25.将一个正整数分解质因数

  1. #include"stdio.h"
  2. int main(){
  3. int n,i;
  4. printf("请输入整数:");
  5. scanf("%d",&n);
  6. printf("%d=",n);
  7. for(i=2;i<=n;i++){
  8. while(n%i==0){
  9. printf("%d",i);
  10. n/=i;
  11. if(n!=1){
  12. printf("*");
  13. }
  14. }
  15. }
  16. }

26.输入一个大于3的整数,判定它是否是素数

  1. //输入一个大于3的整数,判定它是否是素数
  2. #include"stdio.h"
  3. int main(){
  4. int a;
  5. printf("请输入一个大于三的正整数;\n");
  6. scanf("%d",&a);
  7. for(int i=2;i<=a/2;i++){
  8. if(a%i==0) break; //
  9. if(i<a) printf("%d不是素数\n",a); //
  10. else printf("%d是素数",a); //
  11. }
  12. return 0;
  13. }
  1. //输入一个大于3的整数,判定它是否是素数
  2. #include"stdio.h"
  3. int main(){
  4. int a;
  5. printf("请输入一个大于三的正整数;\n");
  6. scanf("%d",&a);
  7. for(int i=2;i<=a/2;i++){
  8. if(a%i==0) break; //
  9. if(i<a) printf("%d不是素数\n",a); //
  10. else printf("%d是素数",a); //
  11. }
  12. return 0;
  13. }
  1. //输入一个大于3的整数,判定它是否是素数
  2. #include"stdio.h"
  3. int main(){
  4. int a;
  5. printf("请输入一个大于三的正整数;\n");
  6. scanf("%d",&a);
  7. for(int i=2;i<=a/2;i++){
  8. if(a%i==0) break; //
  9. if(i<a) printf("%d不是素数\n",a); //
  10. else printf("%d是素数",a); //
  11. }
  12. return 0;
  13. }

27.给一个不多已5位数的正整数,要求:一、求是个几位数。二、逆序打印
程序分析:将每个位取出来计算.

  1. //编程27:给一个不多已5位数的正整数,要求:一、求是个几位数。二、逆序打印
  2. //程序分析:将每个位取出来计算
  3. #include"stdio.h"
  4. main(){
  5. int a,b,c,d,e,x;
  6. scanf("%d",&x); //万
  7. a=x/10000; //千
  8. b=x/1000%10; // 百
  9. c=x/100%10; //十
  10. d=x/10%10; //个
  11. e=x%10;
  12. if(a!=0) printf("有5位 %d %d %d %d %d\n",e,d,c,b,a);
  13. else if(b!=0) printf("有4位 %d %d %d %d\n",e,d,c,b);
  14. else if(c!=0) printf("有3位 %d %d %d\n",e,d,c);
  15. else if(d!=0) printf("有2位 %d %d \n",e,d);
  16. else if(e!=0) printf("有1位 %d\n",e);
  17. else printf("error\n");
  18. return 0;
  19. }

28.一个5位数,判断是不是回文数。12321是回文数,个位和万位相同,十位和千位相同。程序分析:将每个位取出来比较。

  1. //编程28:一个5位数,判断是不是回文数。12321是回文数,个位和万位相同,十位和千位相同。
  2. //程序分析:将每个位取出来比较
  3. #include"stdio.h"
  4. main(){
  5. int a,b,c,d,e,x;
  6. printf("请输入一个5位数\n");
  7. scanf("%d",&x);
  8. a=x/10000;//万
  9. b=x/1000%10;//千
  10. d=x/10%10;//十
  11. e=x%10;//个
  12. if(a==e&&b==d) //判断条件是否符合
  13. printf("%d是回文数\n",x);
  14. else
  15. printf("该数不是回文数\n");
  16. return 0;
  17. }

29.请输入星期几的第几个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。程序分析:情况语句比较好,如果第一个字母一样,可以用if条件语句判断。

  1. //编程29:请输入星期几的第几个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
  2. //程序分析:情况语句比较好,如果第一个字母一样,可以用if条件语句判断。
  3. #include"stdio.h"
  4. main(){
  5. char letter;
  6. printf("输入英文日期\n");
  7. while((letter=getchar())!='#'){ //以字符'#'结束
  8. switch(letter){ //Switch语句,搭配break使用
  9. case 'S':printf("请输入第二个字母\n");//第一个字母一样,判断第二个字母
  10. if((letter=getchar())=='a') //if判断,符合条件输出
  11. printf("saturday\n");
  12. else if((letter=getchar())=='u')
  13. printf("sunday\n");
  14. else printf("error\n");//上面两种都不符合输出error
  15. break;//case 结束,跳出循环
  16. case 'F':printf("friday\n");break;
  17. case 'M':printf("monday\n");break;
  18. case 'T':printf("请输入第二个字母\n");
  19. if((letter=getchar())=='h')
  20. printf("thursday\n");
  21. else if((letter=getchar())=='u')
  22. printf("tuesday\n");
  23. else printf("error\n");
  24. break;
  25. case 'w':printf("wednesday\n");break;
  26. default:printf("data error\n");//以上条件都不符合,执行default语句
  27. }
  28. }
  29. return 0;
  30. }

30.求一百以内的素数

  1. //编程30:求一百以内的素数
  2. #include"stdio.h"
  3. #include"math.h"
  4. int main(){
  5. int i,j;
  6. for(i=3;i<=100;i++){//素数:除1和它本身之外没有其他因子的数
  7. for(j=3;j<=i;j++){
  8. if(i%j==0) break;//若有其他因子直接跳出
  9. }
  10. if(i==j)//找到本身的数就是素数
  11. printf("%-5d",i);
  12. }
  13. }

31. 对10个数排序

  1. //编程31:对10个数排序
  2. //程序分析:可以利用选择法,即从后九个比较过程中,选择一个最小的与第一个元素交换,下次类推。
  3. #include"stdio.h"
  4. main(){
  5. int i,j,min,a[10],t;
  6. for(i=0;i<10;i++){
  7. printf("a[%d]=",i);
  8. scanf("%d",&a[i]);
  9. }
  10. for(i=0;i<10;i++)
  11. printf("%5d",a[i]);
  12. printf("\n");
  13. for(i=0;i<9;i++){
  14. min=i;
  15. for(j=i+1;j<10;j++){
  16. if(a[min]>a[j])
  17. {min=j;}
  18. t=a[i];
  19. a[i]=a[min];
  20. a[min]=t;
  21. }
  22. }
  23. for(i=0;i<10;i++)
  24. printf("%5d",a[i]);
  25. return 0;
  26. }

32.求一个3*3矩阵对角线元素之和

  1. //编程32:求一个3*3矩阵对角线元素之和
  2. //程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
  3. #include"stdio.h"
  4. main(){
  5. float a[3][3],sum=0;
  6. int i,j;
  7. for(i=0;i<3;i++)//外循环
  8. {for(j=0;j<3;j++)//内循环
  9. scanf("%f",&a[i][j]);//键入数据值
  10. }
  11. for(i=0;i<3;i++)
  12. {sum=sum+a[i][i];}//对角线i=i
  13. printf("对角线之和%6.2f",sum);
  14. return 0;
  15. }

33.有一个已经排好序的数组。先输入一个数,要求按原来的规律将它插入数组中。

  1. //编程33:有一个已经排好序的数组。先输入一个数,要求按原来的规律将它插入数组中。
  2. //程序分析:先判断是否大于最后一个数,排除不在其中的情况,再考虑插入中间的情况。
  3. //#include"stdio.h"
  4. //main(){
  5. // int a[11]={1,2,3,4,5,6,7,8,9,10};
  6. // int temp1,temp2,i,j,end,number;
  7. // for(i=0;i<10;i++)
  8. // printf("%5d",a[i]);//输出原有数组
  9. // printf("\n");
  10. // printf("请输出一个新的数字number:\n");//提示语句
  11. // scanf("%d",&number);//输入
  12. // end=a[9];//找到最后一个元素
  13. // if(number>a[9])//与a[9]比较大小,超过a[9]放在数组第十位上
  14. // a[10]=number;//第十位
  15. // else {//上面条件不成立执行该语句
  16. // for(i=0;i<10;i++){//遍历
  17. // if(a[i]>number){//判断number会是第几位,将number赋给该位置
  18. // temp1=a[i];
  19. // a[i]=number;//将number赋给该位置
  20. // for(j=i+1;j<11;j++){//从i位往后,将数组后一个下标的数值赋给前面一个下标,
  21. // temp2=a[j];
  22. // a[j]=temp1;
  23. // temp1=temp2;//重复,实现每位数对应下标往后推一位
  24. // }
  25. // break;//执行完跳出
  26. // }
  27. // }
  28. //}
  29. // for(i=0;i<11;i++){
  30. // printf("%5d",a[i]);
  31. // }
  32. //return 0;
  33. //}
  34. #include"stdio.h"
  35. main(){
  36. int a[10]={38,29,25,18,17,12,9,6,4},x,i,t;
  37. printf("请输入一个数x,要求0<=x<=40:\n");
  38. scanf("%d",&x);
  39. a[9]=x;
  40. for(i=0;i<9;i++)
  41. printf("a[%d]=%d ",i,a[i]);
  42. printf("\n");
  43. for(i=0;i<10;i++){
  44. if(a[9]>a[i]){
  45. t=a[9];
  46. a[9]=a[i];
  47. a[i]=t;
  48. }
  49. }
  50. for(i=0;i<10;i++)
  51. printf("a[%d]=%d ",i,a[i]);
  52. return 0;
  53. }

34.将一个数组逆序输出

  1. //编程34:将一个数组逆序输出
  2. //程序分析:将第一个和最后一个互换
  3. #include"stdio.h"
  4. #define N 5
  5. main(){
  6. int a[N]={1,4,7,5,9},i,temp1;
  7. for(i=0;i<N;i++){//原数组输出
  8. printf("%3d",a[i]);
  9. }
  10. printf("\n");
  11. for(i=0;i<N/2;i++)//取数组的一半值对应下标,对应互换,奇数偶数都符合
  12. {
  13. temp1=a[i];//数值互换
  14. a[i]=a[N-1-i];
  15. a[N-i-1]=temp1;
  16. }
  17. for(i=0;i<N;i++)//一位数组输出
  18. printf("%3d",a[i]);
  19. return 0;
  20. }

35.杨辉三角,输出前十行

  1. //编程35:杨辉三角,输出前十行
  2. /* 1
  3. 1 1
  4. 1 2 1
  5. 1 3 3 1
  6. 1 4 6 4 1
  7. 1 5 10 10 5 1
  8. */
  9. #include"stdio.h"
  10. main(){
  11. int i,j,a[10][10];//定义
  12. for(i=0;i<10;i++){//特殊情况
  13. a[i][0]=1;
  14. a[i][i]=1;
  15. }
  16. for(i=2;i<10;i++)//规律 某个位置的值=该值上面数值+该值上方左边的数值
  17. for(j=1;j<i;j++)
  18. a[i][j]=a[i-1][j]+a[i-1][j-1]; //[i][j]不要写反了
  19. for(i=0;i<10;i++){//二维数组输出方式
  20. for(j=0;j<=i;j++)
  21. printf("%5d",a[i][j]);
  22. printf("\n");
  23. }
  24. return 0;
  25. }

36.好数 各位数乘积能被各位之和整除

  1. //76:好数 各位数乘积能被各位之和整除
  2. #include "stdio.h"
  3. main()
  4. {
  5. int i,j,k,b,c,d,m[10],cnt=0,a[10];
  6. printf("请输入一组不超过10个数的三位数并以-1作为结束:\n");
  7. for(i=0;i<10;i++){
  8. scanf("%d",&a[i]);
  9. b=a[i]/100%10;
  10. c=a[i]/10%10;
  11. d=a[i]%10;
  12. }
  13. for(i=0;i<10;i++){
  14. if((b+c+d)%(b*c*d)==0)
  15. m[cnt++]=a[i];
  16. }
  17. for(j=0;j<cnt;j++)
  18. printf("m[%d]=%d\n",j,m[j]);
  19. return 0;
  20. }

37.不超过

  1. #include"stdio.h"
  2. main(){
  3. int i,sum=0,s=0;
  4. for(i=1;;i+=3){
  5. sum+=i;
  6. if(sum>1000)
  7. {printf("不超过1000的最大i的值为 %d\n",(i-3)); break;}
  8. }
  9. printf("超过1000的值为 %d\n",sum);
  10. for(i=1;i<=73;i+=3)
  11. s+=i;
  12. printf("不超过1000的最大值为 %d\n",s);
  13. return 0;
  14. }

38.海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子分成5份,多了一个,这只猴子将多了的一个仍入海中,拿走了一份。第二只猴子把剩下的桃子又分均分成5份,又多了一个,同样的扔海中了,拿走了一份,第三、第四、第五都是这样做的。求海滩原来最少有多少个?

  1. //编程38:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子分成5份,多了一个,这只猴子将多了的一个
  2. //仍入海中,拿走了一份。第二只猴子把剩下的桃子又分均分成5份,又多了一个,同样的扔海中了,拿走了一份,
  3. //第三、第四、第五都是这样做的。求海滩原来最少有多少个?
  4. #include"stdio.h"
  5. main(){
  6. int m,i,j,k,count;//i为每次剩下的桃子数量 j 为桃子的总数
  7. for(i=4;i<10000;i+=4){ //循环5次 第一次剩余4个,第二次应该(4+1+1)/4*5 所以必须是4的倍数
  8. count=0;
  9. m=i;
  10. for(k=0;k<5;k++){
  11. j=i/4*5+1; //对应每一次总的桃子数
  12. i=j; //下一次的桃子数量是上一次剩余桃子数量
  13. if(j%4==0) //剩余的能被4整除才能继续算
  14. count++;
  15. else
  16. break;
  17. }
  18. i=m;
  19. if(count==4) //能被4整除的次数为4
  20. {printf("原数量最少为 %d 个\n",j);break;}
  21. }
  22. return 0;
  23. }

39.八进制转换成十进制

  1. //编程39:八进制转换成十进制
  2. #include <stdio.h>
  3. int main()
  4. {
  5. char *p, s[8]; // 100 1*8^2+0*8^1+0*8^0
  6. int n;
  7. p=s;
  8. gets(p);
  9. n = 0;
  10. while (*p)
  11. n = n * 8 + *(p++) - '0';
  12. printf("%d\n", n);
  13. return 0;
  14. }
  15. /*
  16. //#include <stdio.h>
  17. ///*10进制转换为8进制*/
  18. //void fun(int a)
  19. //{
  20. // int chu, yu;
  21. // chu=a/8;
  22. // yu=a%8;
  23. // if(chu==0)
  24. // {
  25. // printf("%d",yu);
  26. // }
  27. // else
  28. // {
  29. // fun(chu);
  30. // printf("%d",yu);
  31. // }
  32. //}
  33. //int main()
  34. //{
  35. // int x;
  36. // printf("请输入10进制数:");
  37. // scanf("%d",&x);
  38. // printf("转化后的8进制为:");
  39. // fun(x);
  40. // return 0;
  41. //}
  42. #include <stdio.h>
  43. /*10进制转换为16进制*/
  44. int sum(int a,char b[])
  45. {
  46. int chu, yu;
  47. chu=a/16;
  48. yu=a%16;
  49. if(chu==0)
  50. printf("%c",b[yu]);
  51. else
  52. {
  53. sum(chu,b);
  54. printf("%c",b[yu]);
  55. }
  56. }
  57. int main()
  58. {
  59. int a;
  60. char b[17]="0123456789ABCDEF";
  61. printf("请输入10进制数:");
  62. scanf("%d",&a);
  63. printf("转化后的16制数为:");
  64. sum(a,b);
  65. return 0;
  66. }
  67. 1.首先理解一下八进制转化为十进制,是数字形式的转化,但是在计算机中数字字符都是按照acsii
  68. 的形式存储的,所以说首先要将数字字符的ascii码转化为数字,代码就是 n=*p-'0';
  69. 2.转化成数字成功之后就是将指针的地址指向下一个数组的值的地址 p++;
  70. 然后就是去判断,将输入发的几个数字字符都转化为十进制数字之后,再整体结合成一个完整的十进制数
  71. 要清楚的两点是:1.数字字符(ascii)转化为数字 n=*p-'0';
  72. 2.八进制转化为为十进制的算法 n=n*8+*p-'0';
  73. 解释链接:https://blog.csdn.net/zmyyyyu/article/details/120212562
  74. */

40.0-3所能组成的奇数个数

  1. //编程40:0-3所能组成的奇数个数
  2. #include"stdio.h"
  3. main(){
  4. long sum=4,s=4; //s是范围内奇数个数 sum=4是一位数时奇数个数
  5. int j;
  6. for(j=2;j<=8;j++) // j代表位数
  7. {
  8. printf("%ld\n",sum);
  9. if(j<=2) //个位为1,3,5,7
  10. s*=3; // 十位不能为0,7种情况
  11. else
  12. s*=4; //大于两位数就是八种情况
  13. sum+=s;} //s是一位,两位数...八位数时可以有多少个奇数 sum是s的和
  14. printf("sum=%ld",sum);
  15. return 0;
  16. }
  17. /*public static void main(String[] args) {
  18. //求0-7组成的奇数个数,不重复,如果可以重复,结果无数多个
  19. int count = 0;
  20. //一位数
  21. count = 4; //1,3,5,7 个位必须保证为奇数
  22. //两位数
  23. count += 6 * 4; //排列问题,个位从4个奇数中选一个,十位不能为0,不能与各位相同,还有6种选择
  24. //三位数
  25. count += 6 * 6 * 4; //同两位数
  26. //四位数
  27. count += 6 * 6 * 5 * 4;
  28. //五位数
  29. count += 6 * 6 * 5 * 4 * 4;
  30. //六位数
  31. count += 6 * 6 * 5 * 4 * 3 * 4;
  32. //七位数
  33. count += 6 * 6 * 5 * 4 * 3 * 2 * 4;
  34. //八位数
  35. count += 6 * 6 * 5 * 4 * 3 * 2 * 1 * 4;
  36. System.out.println("0-7所能组成的奇数个数:"+count);
  37. }
  38. */

41.一个偶数总能表示两个素数之和

  1. //编程41:一个偶数总能表示两个素数之和
  2. //#include"stdio.h"
  3. //#include"math.h"
  4. //main(){
  5. // int a,b,c,d;
  6. // scanf("%d",&a);
  7. // for(b=3;b<=a/2;b+=2){
  8. // for(c=2;c<=sqrt(b);c++)
  9. // if(b%c==0) break;
  10. // if(c>sqrt(b))
  11. // d=a-b;
  12. // else
  13. // break;
  14. // for(c=2;c<=sqrt(d);c++)
  15. // if(d%c==0) break;
  16. // if(c=sqrt(d))
  17. // printf("%d=%d+%d\n",a,b,d);
  18. // }
  19. // return 0;
  20. //}
  21. #include <stdio.h>
  22. #include <stdlib.h>
  23. #include <math.h>
  24. int isPrime(int n)
  25. {
  26. if(n < 2) {
  27. return 0;
  28. }
  29. for(int i = 2; i <= sqrt(n); i++) {
  30. if(n % i == 0) {
  31. return 0;
  32. }
  33. }
  34. return 1;
  35. }
  36. int main()
  37. {
  38. int n;
  39. int i;
  40. printf("请输入一个偶数:");
  41. scanf("%d",&n);
  42. for (i = 1; i < n; i++) {
  43. if (isPrime(i) && isPrime(n-i)) {
  44. break;
  45. }
  46. }
  47. printf("偶数%d可以分解成%d和%d两个素数的和:", n, i, n-i);
  48. return 0;
  49. }

42.strcat

  1. //编程75:strcat
  2. #include"stdio.h"
  3. #include"string.h"
  4. main(){
  5. // char a[100],b[100];
  6. // int i,j,k;
  7. // printf("请输出a数组:\n");
  8. // gets(a);
  9. // printf("请输出b数组:\n");
  10. // gets(b);
  11. // for(i=strlen(a),j=0;i<=strlen(a)+strlen(b);i++,j++)
  12. // a[i]=b[j];
  13. // puts(a);
  14. // return 0;
  15. char a[100],b[100],i,j,k;
  16. printf("输入数组a\n");
  17. for(i=0;i<5;i++)
  18. scanf("%d",&a[i]);
  19. for(i=1,j=0;i<=strlen(a);i++,j++)
  20. a[i]=b[j];
  21. for(i=0;i<strlen(a);i++)
  22. printf("%d",a[i]);
  23. return 0;
  24. }

  1. //输入一个球的半径,计算这个球的表面积和体积,输出计算结果。
  2. #include"stdio.h"
  3. int main(){
  4. double r,s,v; //定义半径、面积和体积
  5. double pi=3.14;//定义Π
  6. printf("请输入球的半径:\n");
  7. scanf("%lf",&r);//输入
  8. s=4*pi*r*r;
  9. v=4.0/3.0*pi*r*r*r;
  10. printf("球的表面积为%lf,球的体积为%lf",s,v);
  11. return 0;
  12. }

 44.输入一个三角形的三条边长,判断这三条边是否能构成直角三角形,输出计算结果

  1. //输入一个三角形的三条边长,判断这三条边是否能构成直角三角形,输出计算结果。
  2. #include"stdio.h"
  3. int main(){
  4. float a,b,c,t;//定义a,b,c三条边和交换变量t
  5. printf("请输入三条边a,b,c\n");
  6. scanf("%f%f%f",&a,&b,&c);//输入
  7. if(a>b){
  8. t=a;
  9. a=b;
  10. b=t;
  11. }
  12. if(a>c){
  13. t=a;
  14. a=t;
  15. c=t;
  16. }
  17. if(b>c){
  18. t=b;
  19. b=c;
  20. c=t; //保证a边大于b边大于c边
  21. }
  22. if((a*a)+(b*b)==(c*c)){//直角三角形条件
  23. printf("a,b,c三条边能构成直角三角形:\n");
  24. }else{
  25. printf("a,b,c三条边不能构成直角三角形:\n");
  26. }
  27. return 0;
  28. }

45.根据公示Π/4=1-1/3+1/5-1/7+1/9-1/11+......,计算Π的近似值,当最后一项的绝对值小于0.000001为止。

  1. //根据公示Π/4=1-1/3+1/5-1/7+1/9-1/11+......,计算Π的近似值,当最后一项的绝对值小于0.000001为止。
  2. #include"stdio.h"
  3. #include"math.h"
  4. int main(){
  5. int f=1;//变号用
  6. double i=1.0,sum=0; //i是分母,sum是Π/4的值
  7. while (fabs(1.0/i)>=1e-6)//当绝对值小于10的-5次方认为为0
  8. {
  9. sum=sum+f*1.0/i;//累加每项的值
  10. f*=-1;//变号
  11. i+=2;//分母+2变化
  12. }
  13. printf("Π的近似值为%.5lf",sum*4);
  14. }

46.从键盘输入20个学生的姓名和总分,按总分从大到小顺序输出这20个学生的姓名和总分。

  1. //从键盘输入20个学生的姓名和总分,按总分从大到小顺序输出这20个学生的姓名和总分。
  2. #include"stdio.h"
  3. struct student
  4. {
  5. char name[100];
  6. int score;
  7. };
  8. void main(){
  9. struct student a[20];
  10. struct student s; //s替换变量
  11. int i,j;
  12. for(i=0;i<20;i++){
  13. printf("请输入第%d名同学的姓名总分:\n",i+1);
  14. scanf("%s%d",a[i].name,&a[i].score); //为什么啊a[i].score需要加取地址符
  15. }
  16. for(i=0;i<20;i++){
  17. for(j=0;j<20-1-i;j++){
  18. if(a[j].score<a[j+1].score){//冒泡排序
  19. s=a[j];
  20. a[j]=a[j+1];
  21. a[j+1]=s;
  22. }
  23. }
  24. }
  25. for(i=0;i<20;i++){
  26. printf("%s*****%d\n",a[i].name,a[i].score);//遍历输出
  27. }
  28. }

47.一个数只能被它本身和1整除的数叫素数,设计一函数可以判断一个数是不是素数,并利用此函数输出2-1000以内的所有素数,并每行十个输出。

  1. //一个数只能被它本身和1整除的数叫素数,设计一函数可以判断一个数是不是素数,并利用此函数输出2-1000以内的所有素数,并每行十个输出。
  2. #include"stdio.h"
  3. int sushu(int m){//函数体
  4. int f=1,j;//定义返回值真假f,j
  5. for(j=2;j<m;j++){//判断是否是素数
  6. if(m%j==0){
  7. f=0;
  8. break;
  9. }
  10. return f;
  11. }
  12. }
  13. int main(){
  14. int i,cnt=0;
  15. printf("2-1000以内的素数如下:\n");
  16. for(i=2;i<=1000;i++){
  17. if(sushu(i)==1){//如果i是素数,cnt加一
  18. cnt++;
  19. printf("%5d",i);
  20. if(cnt%10==0){//每输出10个换行
  21. printf("\n");
  22. }
  23. }
  24. }
  25. }

48.输入一个圆的半径r,输出这个圆的直径,周长,面积计算结果

  1. //输入一个圆的半径r,输出这个圆的直径,周长,面积计算结果
  2. #include"stdio.h"
  3. int main(){
  4. double pi=3.1415926;//定义Π
  5. double r,d,s,l;//定义半径r、直径d、周长l和面积s
  6. printf("请输入半径r:\n");
  7. scanf("%lf",&r);//输入半径r
  8. d=2*r;
  9. l=pi*2*r;
  10. s=2*pi*r*r;
  11. printf("%lf%12lf%12lf",d,l,s);
  12. }

49.判断输入的正函数既是5的又是7的倍数,如果是输出“yes”,如果不是输出“no”。

  1. //判断输入的正函数既是5的又是7的倍数,如果是输出“yes”,如果不是输出“no”。
  2. #include"stdio.h"
  3. int main(){
  4. int i;
  5. printf("请输入一个人正整数:\n");
  6. scanf("%d",&i);//输入正整数i
  7. if(i%5==0&&i%7==0){//判断i既是5的倍数,又是7的倍数
  8. printf("yes");
  9. }else{
  10. printf("no");
  11. }
  12. return 0;
  13. }

50.从键盘输入一个正整数n,计算1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n) 的值

  1. //从键盘输入一个正整数n,计算1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n) 的值
  2. #include"stdio.h"
  3. int main(){
  4. double sum=0,den=1;//定义总和sum、分母den
  5. int i,n;//定义变量i,定义项数n
  6. printf("请输入一个正整数n\n");
  7. scanf("%d",&n);
  8. for(i=1;i<=n;i++){
  9. sum+=1/den;//累加每一项的值
  10. den+=i+1;//分母变化
  11. printf("%-12lf",den);
  12. }
  13. printf("%lf",sum);
  14. }

51.从键盘输入一个四行三列的矩阵,输出这个矩阵以及它的转置矩阵

  1. //从键盘输入一个四行三列的矩阵,输出这个矩阵以及它的转置矩阵
  2. #include"stdio.h"
  3. void main(){
  4. int a[4][3],b[3][4],i,j;//定义数组a,数组b
  5. printf("请输入一个四行三列的矩阵:\n");
  6. for(i=0;i<4;i++){
  7. for(j=0;j<3;j++){
  8. scanf("%d",&a[i][j]);//遍历输入a数组
  9. }
  10. }
  11. for(i=0;i<4;i++){
  12. for(j=0;j<3;j++){
  13. printf("%d\t",a[i][j]);//遍历输出a数组
  14. }
  15. printf("\n");//一行4个,第5个换行
  16. }
  17. printf("转置矩阵为:\n");
  18. for(i=0;i<3;i++){
  19. for(j=0;j<4;j++){
  20. b[i][j]=a[j][i];//转置
  21. }
  22. }
  23. for(i=0;i<3;i++){
  24. for(j=0;j<4;j++){
  25. printf("%d\t",b[i][j]);//遍历输出b数组
  26. }
  27. printf("\n");//一行3个,第4个换行
  28. }
  29. return 0;
  30. }

52.设计一个判别素数的函数,在主函数中输入两个正整数,判别这两个数之和是否是素数

  1. //设计一个判别素数的函数,在主函数中输入两个正整数,判别这两个数之和是否是素数
  2. #include"stdio.h"
  3. #include"stdbool.h"
  4. #include"math.h"
  5. int pd(int x,int y){//判断是否是素数的函数
  6. int z=x+y;//定义z存放两个数之和
  7. printf("%d\n",z);
  8. for(int i=2;i<=sqrt(z);i++){//从2开始,遍历到在z的平方根就行
  9. if(z%i==0){//判断是否是素数
  10. return false;//如果z取余i为0是真,则不是素数
  11. }else{
  12. return true;
  13. }
  14. }
  15. }
  16. int main(){
  17. int a,b;//定义输入整形
  18. printf("请输入两个正整数;\n");
  19. scanf("%d%d",&a,&b);
  20. if(pd(a,b)){//判断函数返回值,即两个数之和是否是素数的布尔值
  21. printf("%d和%d之和是素数\n",a,b);
  22. }else{
  23. printf("%d和%d之和不是素数\n",a,b);
  24. }
  25. }

54.输入梯形的上底、下底和高,计算梯形的面积,并输出结果

  1. //输入梯形的上底、下底和高,计算梯形的面积,并输出结果
  2. #include"stdio.h"
  3. void main(){
  4. double a,b,h,s=0;
  5. printf("输出梯形的上底下底和高,中间用空格分隔:\n");
  6. scanf("%lf%lf%lf",&a,&b,&h);
  7. s=(a+b)*h/2;
  8. printf("梯形的面积为 %.2lf",s);
  9. }

55.首先输入一个点A的平面坐标,在输入一个矩形的左上角和右下角的平面坐标,判断这个点A在矩形的内部、外部还是边上,输出计算结果。

  1. //首先输入一个点A的平面坐标,在输入一个矩形的左上角和右下角的平面坐标,判断这个点A在矩形的内部、外部还是边上,输出计算结果。
  2. #include"stdio.h"
  3. struct point
  4. {
  5. float x;
  6. float y;
  7. };
  8. void main(){
  9. struct point p;
  10. struct point pr;
  11. struct point pl;//声明变量
  12. printf("判断这个点A在矩形的内部、外部还是边上:\n");
  13. printf("首先输入一个点A的平面坐标,在输入一个矩形的左上角和右下角的平面坐标:\n");
  14. scanf("%f%f",&p.x,&p.y);
  15. scanf("%f%f",&pl.x,&pl.y);
  16. scanf("%f%f",&pr.x,&pr.y);
  17. if((p.x==pr.x&&p.y<=pl.y&&p.y>=pr.y)||(p.x==pl.x&&p.y<=pl.y&&p.y>=pr.y)||(p.y==pr.y&&p.x<=pr.x&&p.x>=pl.x)||(p.y==pl.y&&p.x<=pr.x&&p.x>=pl.x)){
  18. printf("点A落在矩形的边上:\n");
  19. }
  20. if((p.y>pl.y)||(p.y<pr.y)||(p.x>pr.x)||(p.x<pl.x)){
  21. printf("点A落在矩形的外部:\n");
  22. }
  23. else printf("点A落在矩形的内部:\n");
  24. return 0;
  25. }

56.输入1980年1月1日至2009年12月31日之间的任一年月日,计算该日期为该年的第几天。

  1. //输入1980年1月1日至2009年12月31日之间的任一年月日,计算该日期为该年的第几天。
  2. //switch{} 31 28/29 31 30
  3. #include"stdio.h"
  4. void main(){
  5. int year,month,day,sum,leap=0;//定义年月日,该年的第几天sum,
  6. printf("输入1980年1月1日至2009年12月31日之间的任一年月日\n");
  7. scanf("%d%d%d",&year,&month,&day);
  8. printf("%d年%d月%d日\n",year,month,day);
  9. if(year%400==0||(year%4==0&&year%100!=0)){//判断闰年
  10. leap=1;//闰年加一天
  11. }
  12. switch (month)
  13. {
  14. case 12:sum+=31;
  15. case 11:sum+=30;
  16. case 10:sum+=31;
  17. case 9 :sum+=30;
  18. case 8 :sum+=31;
  19. case 7 :sum+=31;
  20. case 6 :sum+=30;
  21. case 5 :sum+=31;
  22. case 4 :sum+=30;
  23. case 3 :sum+=31;
  24. case 2 :sum+=leap+28;
  25. case 1 :sum+=31;
  26. }
  27. sum+=day;
  28. printf("%d",sum);
  29. }

57.从键盘输出两个三行三列的矩阵,输出这两个矩阵的和矩阵。

  1. //从键盘输出两个三行三列的矩阵,输出这两个矩阵的和矩阵。
  2. #include"stdio.h"
  3. int main(){
  4. int a[3][3],b[3][3],i,j;
  5. printf("输入两个三行三列的矩阵:\n");
  6. for(i=0;i<3;i++){
  7. for(j=0;j<3;j++){
  8. scanf("%d",&a[i][j]);
  9. }
  10. }
  11. for(i=0;i<3;i++){
  12. for(j=0;j<3;j++){
  13. scanf("%d",&b[i][j]);
  14. }
  15. }
  16. for(i=0;i<3;i++){
  17. for(j=0;j<3;j++){
  18. printf("%d\t",a[i][j]);
  19. }
  20. printf("\n");
  21. }
  22. for(i=0;i<3;i++){
  23. for(j=0;j<3;j++){
  24. printf("%d\t",b[i][j]);
  25. }
  26. printf("\n");
  27. }
  28. for(i=0;i<3;i++){
  29. for(j=0;j<3;j++){
  30. a[i][j]+=b[i][j];
  31. }
  32. }
  33. for(i=0;i<3;i++){
  34. for(j=0;j<3;j++){
  35. printf("%d\t",a[i][j]);
  36. }
  37. printf("\n");
  38. }
  39. return 0;
  40. }

58.求a的平方根的迭代公式Xn+1 = (Xn+a/Xn)/2设计一个自定义求平方根函数,并利用此函数输出1-100的平方根。

  1. //求a的平方根的迭代公式Xn+1 = (Xn+a/Xn)/2设计一个自定义求平方根函数,并利用此函数输出1-100的平方根。
  2. //要求:用函数实现迭代求平方根 平方根:开根号
  3. #include"stdio.h"
  4. #include"math.h"
  5. void function(int n){ //传参
  6. float x0,x1,x;
  7. x=(float)n;
  8. x1=(float)n;
  9. do{
  10. x0=x1;
  11. x1=(x0+(x/x0))/2; //按公式来写呗,迭代公式就是开平方的公式
  12. }while (fabs(x0-x1)>=1e-5);
  13. printf("%f\n",x1);
  14. }
  15. void main(){
  16. int i;
  17. for(i=1;i<=100;i++){ //1-100循环
  18. function(i);
  19. }
  20. }

59.1千克=2.2046226磅,输入一物体的质量(以千克为单位),计算该物体有多少磅,输出计算结果

  1. //1千克=2.2046226磅,输入一物体的质量(以千克为单位),计算该物体有多少磅,输出计算结果
  2. #include"stdio.h"
  3. # define N 2.2046226
  4. void hs(float n){
  5. double s=0.0;
  6. s=n*N;
  7. printf("%.7lf",s);
  8. }
  9. void main(){
  10. float x;
  11. printf("请输入物体的重量,以千克为单位:\n");
  12. scanf("%f",&x);
  13. hs(x);
  14. }

60.标准差公式为 a=sqrt(1/NΣi=1-->N(Xi-u)²)公式中N为样本个数,Xi为样本值,u为样本均值,输入20个数

  1. //标准差公式为 a=sqrt(1/NΣi=1-->N(Xi-u)²)公式中N为样本个数,Xi为样本值,u为样本均值,输入20个数,
  2. //计算这20个数的标准差,输出计算结果。
  3. #include"stdio.h"
  4. #include"math.h"
  5. #define N 20
  6. void main(){
  7. int a[20],i,sum=0,u;
  8. double b=0;
  9. printf("输入20个整数:\n");
  10. for(i=0;i<20;i++){
  11. scanf("%d",&a[i]);
  12. }
  13. for(i=0;i<20;i++){
  14. printf("%d ",a[i]);//输出验证
  15. a[i]+=sum;
  16. u=sum/20.0;
  17. b+=pow((a[i]-u),2);
  18. }
  19. printf("%-20lf",sqrt(1.0/N*b));
  20. }

61.设计一个函数可以将10进制转化为2进制字符串,并利用此函数计算从键盘的输入的3个10进制正数,输出相应的2进制数。

  1. //设计一个函数可以将10进制转化为2进制字符串,并利用此函数计算从键盘的输入的3个10进制正数,输出相应的2进制数。
  2. #include"stdio.h"
  3. void function(int n){
  4. int i=0,j;
  5. char b[20];
  6. while (n>0)
  7. {
  8. if(n%2==0){
  9. b[i]='0';
  10. i++;
  11. }else{
  12. b[i]='1';
  13. i++;
  14. }
  15. n/=2;
  16. }
  17. for(j=i-1;j>=0;j--){
  18. printf("%c",b[j]);
  19. }
  20. printf("\n");
  21. }
  22. void main(){
  23. int i,a[3];
  24. printf("请输入三个正整数:\n");
  25. for(i=0;i<3;i++){
  26. scanf("%d",&a[i]);
  27. }
  28. for(i=0;i<3;i++){
  29. function(a[i]);
  30. }
  31. }

62.编写程序输出100-300之间的所能同时被3和5整除的数

  1. //编写程序输出100-300之间的所能同时被3和5整除的数
  2. #include"stdio.h"
  3. int main(){
  4. int i,s=0;
  5. for(i=100;i<301;i++){
  6. if(i%3==0 && i%5==0){
  7. printf("%5d",i);
  8. s++;
  9. }
  10. }
  11. }

63.编写一个程序,将两个字符串链接起来,要求不用strcat函数

  1. //编写一个程序,将两个字符串链接起来,要求不用strcat函数
  2. #include"stdio.h"
  3. #include"string.h"
  4. void main(){
  5. char a[20],b[20];
  6. int i=0,j=0;
  7. printf("输入a数组:\n");
  8. gets(a);
  9. printf("输入b数组:\n");
  10. gets(b);
  11. i=strlen(a);
  12. while (b[j]!=0)
  13. {
  14. a[i++]=b[j++];
  15. }
  16. a[i]='\0';
  17. puts(a);
  18. }

64.判断是否是水仙花数

  1. //判断是否是水仙花数
  2. #include"stdio.h"
  3. int main(){
  4. int i,a,b,c;
  5. char x;
  6. do
  7. {
  8. printf("请输入一个三位正整数:\n");
  9. scanf("%d",&i);
  10. if(i>999||i<100){
  11. printf("请输入合适的正整数:\n");
  12. }
  13. a=i/100;
  14. b=i/10%10;
  15. c=i%10;
  16. if(i==(a*a*a+b*b*b+c*c*c)){
  17. printf("%d是水仙花数:\n");
  18. }
  19. printf("选择是否继续,继续请按y键:\n");
  20. scanf(" %c",&x);
  21. } while(x=='y'||x=='Y');
  22. }

65.已知圆柱高h=5,要求输入圆的半径,求出圆周长,圆的面积和圆柱体积,输入对应数字输出对应结果

  1. //已知圆柱高h=5,要求输入圆的半径,求出圆周长,圆的面积和圆柱体积,输入对应数字输出对应结果
  2. #include"stdio.h"
  3. #define pi 3.1415926
  4. #define h 5
  5. void function(double r){
  6. double l,s,v;
  7. int m;
  8. double yz[4];
  9. l=2*pi*r;
  10. s=pi*r*r;
  11. v=s*h;
  12. yz[0]=r;
  13. yz[1]=l;
  14. yz[2]=s;
  15. yz[3]=v;
  16. printf("请输入程序对应的数字:\n");
  17. printf("0:圆的半径 1:圆周长 2:圆的面积 3:圆柱体积\n");
  18. scanf("%d",&m);
  19. printf("%6.2lf",yz[m]);
  20. }
  21. int main(){
  22. double n;
  23. int i;
  24. printf("请输入圆的半径:\n");
  25. scanf("%lf",&n);
  26. function(n);
  27. }

66.矩阵转置:将二维数组a的行和列元素互换后存到另一个二维数组b中

  1. //矩阵转置:将二维数组a的行和列元素互换后存到另一个二维数组b中
  2. #include"stdio.h"
  3. int main(){
  4. int i,j,x,y;
  5. printf("请输入X行Y列的矩阵:\n");
  6. scanf("%d%d",&x,&y);
  7. int a[x][y];
  8. for(i=0;i<x;i++){
  9. for(j=0;j<y;j++){
  10. scanf("%d",&a[i][j]);
  11. }
  12. for(i=0;i<x;i++){
  13. for(j=0;j<y;j++){
  14. printf("%d",a[i][j]); //有问题
  15. }
  16. printf("\n");
  17. }
  18. }
  19. }

67.输入4个数,输出4个数的总和以及平均值

  1. //输入4个数,输出4个数的总和以及平均值
  2. #include"stdio.h"
  3. void main(){
  4. int i;
  5. double a[4],sum=0,avg;
  6. printf("请输入四个数:\n");
  7. for(i=0;i<4;i++){
  8. scanf("%lf",&a[i]);
  9. sum+=a[i];
  10. }
  11. avg=sum/4;
  12. printf("总和为%.5lf,平均值为%.4lf",sum,avg);
  13. }

68.判断一元二次方程ax²+bx+c=0的根

  1. //判断一元二次方程ax²+bx+c=0的根
  2. //b²-4ac >0 =0 <0
  3. #include"stdio.h"
  4. #include"math.h"
  5. void main(){
  6. int a,b,c;
  7. float x1,x2,p;
  8. while (1)
  9. {
  10. printf("输入一元二次方程的系数a,b,c\n");
  11. scanf("%d%d%d",&a,&b,&c);
  12. if(a==0){
  13. printf("输入不是一元二次函数:\n"); //重新输出的部分
  14. continue;
  15. }else break;
  16. }
  17. if((b*b-4*a*c)>=0){
  18. p=sqrt(b*b-4*a*c);
  19. x1=((-b)+p)/2*a;
  20. x2=((-b)-p)/2*a;
  21. printf("方程有两个实根%f %f:\n",x1,x2);
  22. if((b*b-4*a*c)==0){
  23. printf("方程有一个实根%f:\n",x1);
  24. }
  25. }else printf("方程没有实根%f:\n");
  26. }

69.实现公路收费站的车辆收费问题。根据输入的车辆类型,输出对应的收费,A类车:15元 B类车:35元 C类车:50元  D类车:70元

  1. //实现公路收费站的车辆收费问题。根据输入的车辆类型,输出对应的收费
  2. //A类车:15元 B类车:35元 C类车:50元 D类车:70元
  3. #include"stdio.h"
  4. void main(){
  5. int n,a[4]={15,35,50,70};
  6. printf("请输入车的类型A B C D:\n");
  7. scanf("%c",&n);
  8. if(n='A') printf("%d",a[0]);
  9. else if(n='B') printf("%d",a[1]);
  10. else if(n='C') printf("%d",a[2]);
  11. else if(n='D') printf("%d",a[3]);
  12. else printf("输入有误:\n");
  13. }

70.输入一个整数打印字符图形 一个整数(1<N<=9)代表行数,输出以下图形

  1. 1
  2. 222
  3. 33333
  1. #include"stdio.h"
  2. int main(){
  3. int N;//N代表输入的行数
  4. scanf("%d",&N);
  5. for(int i=1;i<=N;i++){//循环N次,既有N行
  6. for(int j=N-i;j>0;j--){//循环输出补充的空格
  7. printf(" ");//空格填充
  8. }
  9. for(int k=1;k<=2*i-1;k++){//控制每行的数量
  10. printf("%d",i);//数字大小随i变化同步
  11. }
  12. printf("\n");//输出完一行换行
  13. }
  14. }

 71.输入一个整数n,符号的行数(保证n是大于1的奇数),输出沙漏符号,使用“*”打印,样例:输入 n=5.

  1. *****
  2. ***
  3. *
  4. ***
  5. *****

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/527877
推荐阅读
相关标签
  

闽ICP备14008679号