高级程序C语言经典50例(后)附答案手稿_第1页
高级程序C语言经典50例(后)附答案手稿_第2页
高级程序C语言经典50例(后)附答案手稿_第3页
高级程序C语言经典50例(后)附答案手稿_第4页
高级程序C语言经典50例(后)附答案手稿_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、“高级语言程序设计”编程题-1. 从键盘输入3个整数,求其中的最大数和最小数,并输出结果。-2. 从键盘上输入一个3*3的整数矩阵,求其各行的平均值并输出,输出时保留两位小数。-3. 输出x2的值,x取值从0到10。-4. 从键盘上输入一个3*4的整数矩阵,要求输出其最大元素的值,以及它的行号和列号。-5.编写一个程序从键盘输入10个数,要求输出其中最小的。-6.编写一个函数根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 -7.输出1000年(包括1000年)到1999年之间的所有闰年,要求每三个一行,分行输出。闰年:能被4整除不能被100整除的年份,或是能被400整除的年份-8

2、. 编写程序打印所有的“水仙花数”。“水仙花数”指一个三位数,其各位数字立方和等于该数本身,例如153是一个“水仙花数”,因为 1531×1×13×3×35×5×5。-9.编写一个程序,输入一个3位数的正整数,然后反向输出对应的数。如:123,则输出321。-10. 从键盘输入10名学生的C语言成绩存入一维数组内,编写程序计算10名学生的最高分、平均分和及格人数。-11. 编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a -12. 从键盘输入12个数存入二维数组a34中,编写程序求出最大元素的值及它所在的行号和列号。-

3、13打印所有的“水仙花数”,所谓“水仙花数”是指一个三位正整数,其各位数字的立方和等于该数本身。-14. 利用函数将给定的3×3二维数组转置。-15. 编程输入a、b、c的值后,输出一元二次方程ax2+bx+c=0的解。-16. 从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数计算,并输出结果。-17. 编写输入一个字符串,计算其中空格的个数。-18. 采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和每门课的平均成绩。19. 编写程序,逆转字符串。20. 编写程序,统计一个英语文本中的英语单词个数。21. 打印出所有的“水仙花数”,所谓

4、“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。22有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。23找出101200中所有的素数。24使用循环结构编写程序,打印出如下图案*25.用冒泡排序法将10个整数由大到小排序。26.输入任意正整数,编程判断该数是否为回文数(回文数是指从左到右读与从右到左读一样,如12321)。27. 求出10至1000之内能同时被2、3、7整除的数,并输出。28. 输入一字符串,检查是否回文 (回文是指正反序相同,如,LeveL),若

5、是则输出“Yes”,否则输出“No”。29. 设计一个函数,用来判断一个整数是否为素数。30. 从键盘上输入若干学生成绩(成绩在0100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。31. 设计一个函数,用来判断一个整数是否为素数。32. 从键盘上输入若干学生成绩(成绩在0100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。33. 输入三个整型数,找出其中数值最大者并输出。34. 编写程序在屏幕上显示如下图形:1 2 3 4 55 1 2 3 44 5 1 2 33 4 5 1 2 2 3 4 5 135. 编写猜数游戏,程序给定某个整数,从键盘

6、上反复输入数据进行猜测。如果未猜中,程序提示输入过大或者过小;如果猜中,则输出猜的次数,最多允许猜10次36. 将一个数组中的值按逆序重新存放。例如,原来顺序为 a,b,c,d,e,f,g,现在顺序为g,f,e,d,c,b,a.(数组长度不限)37. 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数。38求39将十个整数输入数组,求出其平均值并输出。40.将十个实型数输入数组(float n10;)逆序存放后再输出。41.编写程序:输出x2的值,x取值从1到10。42.设计程序:定义可以存储1000个整数的数组;在该数组中依次存

7、入1到1000;在屏幕上打印出数组中所有17的倍数。43.设计一个函数,用来判断一个整数是否为素数;并在main()函数中调用该函数,在屏幕上打印出100以内的所有素数。44.写出一个函数,求n! .(n! = 1*2*3*n)45使用一维数组计算学生的平均成绩。用输入负数结束输入。 46.从键盘上输入一个3*3的矩阵,并求其主对角线元素的和。47. 写一个函数is_prime,判断整数n是否素数。如果n是素数,则返回1;如果n不是素数,则返回0。48.从键盘输入任意一串字符串,程序输出同样的一串字符,要求输出字符串中大小写相互转化,其他符号不变。如输入“a123BxC”,则输出“A123bX

8、c”49.任意输入10个整数,打印出10个数中的最大值50.输入三个整数a, b, c,请按从小到大的顺序输出这三个数51、输入一个整数n,请判断n是否是质数,如果是,打印 n是质数,否则打印 n不是质数52编程,先输入n,再输入n个实数并分别统计正数的和、负数的和,然后输出统计结果。53.编程,输入a1、a2、.、a15后,计算下列表达式的值并输出。54.编程,设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。55.编程,从键盘上输入一个字符串,将其中的小写字母转换成大写字母,大写字母转换成小写字母,输入字符串以“!”结束,将转换后的字符串输出到电脑屏幕。1. 解答

9、/*从键盘输入3个整数,求其中的最大数和最小数,并输出结果*/#include "stdio.h"void main()printf("从键盘输入3个整数,求其中的最大数和最小数,并输出结果nn");int a,b,c,max; /*定义三个整数和形参变量*/printf("请输入三个整数,用 空格 隔开 n");scanf("%d %d %d",&a,&b,&c);if(a>=b)max=a;/*将两者中的大的值赋予参数*/if(max>=c && b>=

10、c)/*同时找出最大的数和最小的数,下面类似*/printf("三者中最大的数是 a = %dn三者中最小的数是 c = %dn",a,c);else if(max>=c && b<c)printf("三者中最大的数是 a = %dn三者中最小的数是 b = %dn",a,b);else if(max<c)printf("三者中最大的数是 c = %dn三者中最小的数是 b = %dn",c,b);elsemax=b;/*将两者中的大的值赋予参数*/if(max>=c && a&

11、gt;=c)printf("三者中最大的数是 b = %dn三者中最小的数是 c = %dn",b,c);else if(max>=c && a<c)printf("三者中最大的数是 b = %dn三者中最小的数是 a = %dn",b,a);else if(max<c)printf("三者中最大的数是 c = %dn三者中最小的数是 a = %dnn",c,a);2. 解答:#include "stdio.h"void main()int i,j,a33; /*定义i,j为计数器

12、*/float ave1,ave2,ave3;/*平均值要保留小数,故用实型*/printf("请按提示从键盘输入整数n");for(i=0;i<=2;i+)for(j=0;j<=2;j+)/*用双循环来从键盘接收a33的3*3矩阵。ij都不能大于2,与数组定义有关*/printf("请输入(按回车确认) n a%d%d = ",i,j);scanf("%d",&aij);/*接收键盘输入*/printf("n您输入的矩阵为:n");for(i=0;i<=2;i+)/*这个嵌套循环用来打印

13、出所输入的矩阵*/for(j=0;j<=2;j+)printf("%d ",aij);printf("n");ave1=(a00+a01+a02)*1/3.0;/*求平均值。注意这里的1/3.0,这是为了使整型转为实型,以保留小数*/ave2=(a10+a11+a12)*1/3.0;ave3=(a20+a21+a22)*1/3.0;printf("第一行的平均值为ave1 = %.2fn",ave1);printf("第二行的平均值为ave2 = %.2fn",ave2);printf("第三行的平

14、均值为ave3 = %.2fn",ave3);3. 解答:#include "stdio.h"void main()int x;for(x=0;x<=10;x+)printf("%d*%d = %dn",x,x,x*x);4. 解答:#include "stdio.h"void main()int a34,i,j,max;/*定义矩阵和计数器*/int m,n;/*用来记录行号和列号*/printf("请按提示输入n");for(i=0;i<3;i+)for(j=0;j<4;j+)/*双

15、嵌套接收3*4矩阵*/printf("请输入(按回车确认) n a%d%d = ",i,j);scanf("%d",&aij);/*接收键盘输入*/max=a00;for(i=0;i<3;i+)for(j=0;j<4;j+)if(aij>max)/*用双嵌套寻遍数组的元素,用if来实现符合条件的命令*/max=aij,/*这个式子来获得所用循环中的最大值*/m=i,n=j;/*记录最大值的行号和列号*/printf("n矩阵中的最大值是 max= %dnn",max);printf("行号为:%d

16、列号为:%dn ",m,n);5. 解答:#include "stdio.h"void main()int a10,max,i;printf("请按提示输入n");for(i=0;i<10;i+)printf("请输入第 %d 个数: ",i+1);scanf("%d",&ai);printf("n");max=a0;for(i=0;i<10;i+)if(max<ai)max=ai;/*同前几道题类似,用max取出数组里最大值*/printf("这十

17、个数中最大的是:%dn",max);6. 解答:#include "stdio.h"void sum(int n)/*编写函数*/int j;float s=0;for(j=1;j<=n;j+)s=s+1.0 /(2*j-1);printf(" s = %.2fn",s);void main()int n;scanf("%d",&n);sum(n);/*调用函数*/7. 解答:#include "stdio.h"void main()int i;for(i=1000;i<=1999;i

18、+)/*定义循环变量*/if(i%4=0 && i%100!=0)/*筛选符合条件的年份*/printf("this %d year is a leap yearn",i);else if(i%400=0)/*筛选符合条件的年份*/printf("this %d year is a leap yearn",i);8. 解答:#include "stdio.h"void main()int a,b,c,x,i;printf("以下程序打印出所有的水仙花数nn");/下面三层嵌套循环可寻遍所有的三位数f

19、or(a=1;a<=9;a+)/*a作为百位,不能为0,从1开始取*/for(b=0;b<=9;b+)for(c=0;c<=9;c+)if(a*100 + b*10 + c = a*a*a + b*b*b + c*c*c)/*满足水仙花条件*/x=a*100+b*10+c,/*赋值,可以省略*/printf("三位数 %d 是水仙花数n",x);9. 解答:#include "stdio.h"void main()int i,j,k,x,y;printf("请输入一个三位数: ");scanf("%d&qu

20、ot;,&x);/下面是提取出这个三位数的百位、十位和各位/用三层循环寻遍所有三位数if(x>100 && x<999)for(i=1;i<=9;i+)for(j=0;j<=9;j+)for(k=0;k<=9;k+)/*个位倒序后成百位,个也不能为零*/if(i*100 + j*10 + k = x)/*找到和x相等的数,记录i,j,k*/if(k = 0)/*排除个位为0的数*/printf("这个三位数个位为0,不能倒序n");elsey=k*100 + j*10 + i,/*依据i,j,k来逆向形成*/printf

21、("这个倒序的三位数是:%dn",y);elseprintf("你的输入有误!n");10. 解答:#include "stdio.h"void main()int a10,max=0,m,i,k,j=0;float ave;printf("请按提示输入十个同学的成绩 nn");for(i=0;i<10;i+)/*接收成绩*/printf("请输入第 %d 位同学的成绩:",i+1);scanf("%d",&ai);printf("n");f

22、or(i=0;i<10;i+)if(ai>=max)max=ai,m=i+1;/*找出最高成绩,并记录是第几位同学*/if(ai>=60)j+;/*计算及格同学的个数*/ave=(a0+a1+a2+a3+a4+a5+a6+a7+a8+a9)/10.0;/*平均成绩*/printf("成绩中最高的是第 %d 位同学的:%d 分n",m,max);printf("及格的个数为:%dn",j);printf("平均成绩为:%.2fn",ave);11. 解答:#include "stdio.h"void

23、 main()char ch;ch=getchar();/*只接收第一个字符*/if(ch>='0' && ch<='9')/*带单引号表示ASCLL码值的比较*/printf("a numerical charactern");elseprintf("other charactern");12. 解答:参考第四题答案。13. 解答:参考第八题答案。14. 解答:#include "stdio.h"void change(int a33)int i,j,k;for(i=0;i

24、<3;i+)for(j=i+1;j<3;j+)/*注意这里的j=i+1不能是j=0,想想为什么*/k=aij; /*借用参量k完成两者的值互换*/aij=aji;aji=k;void main()int i,j,a33;for(i=0;i<3;i+)/*接收数组*/for(j=0;j<3;j+)printf("请输入a%d%d = ",i,j);scanf("%d",&aij);printf("原来的矩阵:n");for(i=0;i<3;i+)for(j=0;j<3;j+)printf(&q

25、uot; %d ",aij);printf("n");printf("转换后的矩阵:n");change(a);/*调用函数*/for(i=0;i<3;i+)for(j=0;j<3;j+)printf(" %d ",aij);printf("n");15. 解答:#include "stdio.h"#include "math.h" /*这个是需要引用数学函数*/void main()printf("输入a、b、c的值后,输出一元二次方程ax2

26、+bx+c=0的解n");int a,b,c;float n,x1,x2,m;printf("请输入a的值:a = ");scanf("%d",&a);printf("请输入b的值:b = ");scanf("%d",&b);printf("请输入c的值:c = ");scanf("%d",&c);/以下实际为求根公式m = b*b - 4*a*c; /*这个是=b*b-4ac*/if(m>=0)n=sqrt(m); /*对开方。#in

27、clude "math.h 这个里面包含开放函数 sqrt()*/x1=(-b+n)/(2*a);x2=(-b-n)/(2*a);printf("方程的根为:x1 = %.2f x2 = %.2f n",x1,x2);elseprintf("该方程没有实数解n");16. 解答:参见课本69页。17. 解答: #include <stdio.h>#include<string.h>/*定义字符串处理函数*/int main()char ch80;/这里需要定义一个数组int i,n,s=0;printf("请输

28、入一串字符串:n");gets(ch);/为了输入空格,必须要用gets输入/gets 送一字符串到流中n=strlen(ch);/计算字符串长度for(i=0;i<n;i+)if(chi=32 )/空格的ASCII码值为32s=s+1;/不能用i求和,因为i用在了for循环printf("字符串中的空格数有:%d 个n",s);18. 解答:/采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和每门课的平均成绩#include "stdio.h"void main()int a1005,i,j,n;float ave110

29、0=0;float ave280=0;printf("请输入你要计算几个人成绩,n = ");scanf("%d",&n);for(i=0;i<n;i+)for(j=0;j<5;j+)printf("n请输入第 %d 位同学的第 %d 门成绩:",i+1,j+1);scanf("%d",&aij);/*接收成绩*/ave1i=ave1i+aij;/*对每位学生的成绩求和*/ave1i=ave1i/5;/*求出每位学生的平均成绩*/for(j=0;j<5;j+)for(i=0;i&l

30、t;n;i+)ave2j=ave2j+aij;/*对每门课成绩求和*/ave2j=ave2j/n;/*求出每门课平均成绩*/for(i=0;i<n;i+)printf("第 %d 位同学的平均成绩为:%.2fn",i+1,ave1i);for(j=0;j<5;j+)printf("第 %d 门课的平均成绩为:%.2fn",j+1,ave2j);19. 解答:#include "stdio.h"#include "string.h"/*调用库函数*/void main()char ch100;int n,

31、i;printf("请输入字符串:");gets(ch);/*接收一串字符*/n=strlen(ch);/*求取字符串长度*/printf("逆转字符串为:");for(i=0;i<n;i+)printf("%c",chn-i-1);/*这里注意%c和%s的区别,输出的为连续多个单字符*/printf("n");20. 解答:#include "stdio.h"#include "string.h"void main()char ch100;int i,j=0,n;pr

32、intf("请输入一个英语文本:");gets(ch);/*接收一个字符串*/n=strlen(ch);/*获取字符串长度,以便控制循环次数*/*单词的个数也就是空格的个数,每个单词后都有空格*/for(i=0;i<n;i+)if(chi = 32)/*空格的ASCLL码为32,注意32没有单引号*/j=j+1;printf("这个英语文本共有 %d 个单词n",j+1);/*因为最后一个单词后面没有空格*/21. 解答:参见第八题22. 解答:/这个数列是斐波拉切数列,通项不好写,但是能用程序计算#include "stdio.h&qu

33、ot;void sum(int n)int i,c;float s=0,a=2,b=1.0;/*数据类型转换*/for(i=1;i<=n;i+)s=s+a/b;/看规律,数列a/b,c/d,e/f.其中,c=a+b,d=a依次类推c=a;/*下面的几个式子就完成了数的转换*/a=a+b;b=c;printf("数列的前 %d 项和为:%.2fn",n,s);void main()int n;printf("计算数列,斐波拉切数列2/1,3/2,5/3,8/5,13/8,21/13.的前N项和n");printf("请输入项数 N = &q

34、uot;);scanf("%d",&n);sum(n);/*调用函数*/23. 解答:/素数:即质数,指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数#include "stdio.h"void main()int i,j;int flag=1;for(i=101;i<=200;i+)for(j=2;j<i;j+)/*取遍所有的除数*/if(i%j = 0)flag=0;break;/*能被整除,这个数不是素数,则跳出内层循环*/if(flag = 1)/*标记出素数*/printf(" %d n&q

35、uot;,i);flag=1;/*还原flag的初始值,因为在程序运行中flag的值已被改变*/24. 解答:#include "stdio.h"void main()int i,j,k,n;printf("请输入你要打印多少行:");scanf("%d",&n);for(i=1;i<=n;i+)for(j=0;j<(n-i);j+)/*每行空格数和行数的关系*/printf(" ");for(k=0;k<(2*i-1);k+)/*每行星号数和行数的关系*/printf("*&q

36、uot;);printf("n");25. 解答:#include <stdio.h>void main()int a10,i,j,t;printf("请任意输入十个整数,程序将对其进行排序n");for(i=0;i<10;i+)/*接收十个整数*/printf("请输入第 %d 个数: ",i+1);scanf("%d",&ai);for(i=0;i<9;i+)/*需要循环9次*/for(j=0;j<9-i;j+)/*此处的j<9-i与下面的if语句有关。在执行if语句

37、后,最小的数将被放在数组的最后一位。所以循环到第二轮比较互换的过程时,就不需要在和最小的数比较了*/if(aj<aj+1)/*用语句来连续完成两个相邻数的比较和互换,把最小的数放在数组的末尾*/t=aj;aj=aj+1;aj+1=t;printf("排列后的数为: ");for(i=0;i<10;i+)printf(" %d ",ai);printf("n");26. 解答:#include "stdio.h"#include "string.h"/*引入库函数*/void main

38、()int n,i,flag=1;char ch100;printf("请输入一串字符:");gets(ch);/*接收一串字符*/n=strlen(ch);/*计算字符长度,好控制循环次数*/for(i=0;i<n;i+)if(chi != chn-i-1)/*判断,如果第一位和最后位、第二位和倒数第二位不相等,则执行下面语句*/flag=0;break;/*此处的if一旦执行,则就有flag=0,跳出循环*/if(flag=1)/*如果上面的if未执行,则说明字符是回文了*/printf("这串字符是回文n");elseprintf("

39、;这串字符不是回文n");27. 解答:#include "stdio.h"void main()int i;for(i=10;i<=1000;i+)if(i%2 = 0)if(i%3=0)if(i%7=0)printf("Êý %d ÄÜͬʱ±»Õû³ýn",i);28. 解答:#include "stdio.h"#include "string.h"/*

40、引入库函数*/void main()int n,i,flag=1;char ch100;printf("请输入一串字符:");gets(ch);/*接收一串字符*/n=strlen(ch);/*计算字符长度,好控制循环次数*/for(i=0;i<n;i+)if(chi != chn-i-1)/*判断,如果第一位和最后位、第二位和倒数第二位不相等,则执行下面语句*/flag=0;break;/*此处的if一旦执行,则就有flag=0,跳出循环*/if(flag=1)/*如果上面的if未执行,则说明字符是回文了*/printf("这串字符是回文n");

41、elseprintf("这串字符不是回文n");29. 解答:#include "stdio.h"void sushu(int n)int i,j,flag=1;if(n<=1)printf("你的输入有误n");elsefor(i=2;i<n;i+)if(n%i=0)/*如果能被1和本身之外的数整除,则不是素数*/flag=0;break;/*标记flag=0,并跳出循环*/if(flag=1)/*在上面循环全部完成时flag依然等于1,则说明除去1和数本身,已经找不到能整除n的数了*/printf("n这个数

42、是素数n");elseprintf("n这个数不是素数n");void main()int n;printf("请输入一个整数:");scanf("%d",&n);sushu(n);30. 解答:#include "stdio.h"void main()int i,n;float a100,ave,sum=0.0;printf("请输入你要计算几个学生的成绩:");scanf("%d",&n);for(i=0;i<n;i+)printf(&qu

43、ot;请输入第 %d 位同学的成绩:",i+1);scanf("%f",&ai);/*接收成绩*/if(ai<0 | ai>100)/*判断是否输入有误*/printf("你的输入有误!n");goto end;/*goto函数,程序直接跳转到有标记的地方继续执行*/sum=sum+ai;/*成绩求和*/ave=sum/n;/*计算平均*/printf("平均成绩为:%.1fn",ave);for(i=0;i<n;i+)if(ai<ave)/*筛选出低于平均分的同学*/printf("

44、;第%d位同学成绩为%.1f不及格n",i+1,ai);end:; /*goto函数的目标标记*/*附goto函数的用法:前面程序段goto flag; (勿忘了分号)中间程序段 flag: ; (勿忘了分号) 后面程序段程序从goto的地方直接跳转到flag的地方,中间的部分全部不执行,并且flag不需要事先定义,比如不需要 int flag*/31. 解答:同 29题32. 解答:同 30题33. 解答:同 01题34. 解答:#include "stdio.h"void main()int a5=1,2,3,4,5,i,j,t,n;printf("

45、请输入你想要打印多少行:");scanf("%d",&n);for(i=0;i<5;i+)printf(" %d ",ai);/*打印原来的数组*/printf("n");for(i=0;i<n;i+)/*控制打印行数*/下面几句是进行递推的语句t=a4;for(j=3;j>=0;j-)aj+1=aj;/*将aj的值赋予aj+1,这是根据数表的规律判断的*/a0=t;/*上面连续赋值无法实现将最后元素和第一个元素互换,故加上t=a4,a0=t的语句来完成*/for(j=0;j<5;j+)pri

46、ntf(" %d ",aj);/*打印出新的数组*/printf("n");35. 解答:#include "stdio.h"void main()int i,m=90,n,t;printf("n请输入数来进行猜数游戏,你有10次机会。请输入:");for(i=0;i<9;i+)/*限制猜测次数,用i<9是因为最后一次的提示不一样*/scanf("%d",&n);if(n>m)/*猜测判断*/printf("n你输入的数有点大,你还有%d次机会。请重新输入:&

47、quot;,9-i);/*i初始值为0,故用9-i*/else if(n<m)printf("n你输入的数有点小,你还有%d次机会。请重新输入:",9-i);else if(n=m)printf("n恭喜你,猜对了!n你共猜测了 %d 次n",i+1);break;/*i初始值为0,故用i+1*/scanf("%d",&t);/*这里是第十次输入*/if(t=m)printf("n恭喜你,猜对了!n你共用了10次机会n");elseprintf("n你的10次机会已经用完,程序结束.n&qu

48、ot;);36. 解答:#include "stdio.h"#include "string.h"/*调用库*/void main()char ch100;int n,i,t;printf("请输入一串字符:");gets(ch);/*接收字符串*/n=strlen(ch);/*计算字符串长度*/for(i=0;i<n/2;i+)/*限制循环次数,i<n/2因为如果i<n,则会在如ai和ai+1交换后,继续进行了ai+1和ai交换,又还原了*/t=chi;/*以下三条是交换语句*/chi=chn-i-1;chn-i-

49、1=t;printf("逆序后的字符为:");for(i=0;i<n;i+)printf("%c",chi);/*打印结果*/printf("n");37. 解答:#include "stdio.h"#include "string.h"/*调用库*/void main()char ch250;int i,a=0,b=0,c=0,d=0,e=0,n;printf("请输入文本:");gets(ch);/*接收字符串*/n=strlen(ch);/*计算字符串长度*/fo

50、r(i=0;i<n;i+)if(chi>='A' && chi<='Z')/*统计大写字母*/a+;else if(chi>='a' && chi<='z')/*统计小写*/b+;else if(chi>='0' && chi<='9')/*统计数字*/c+;else if(chi=' ')/*统计空格*/d+;else/*统计其他*/e+;printf("输入的文本中有:nn大写字母

51、%d个n小写字母%d个n数 字%d个n空 格%d个n其他字符%d个n",a,b,c,d,e);38. 解答:#include "stdio.h"void main()int i,a=0,b=0;float sum,c=0;for(i=1;i<=100;i+)a=a+i;for(i=1;i<=50;i+)b=b+i*i;for(i=1;i<=10;i+)c=c+1.0/i;/*数据类型转换*/sum=a+b+c;printf("这个算式的和为: %.2fn",sum);39. 解答#include "stdio.h&q

52、uot;void main()int a10,i;float sum=0,ave;printf("请输入十个整数n");for(i=0;i<10;i+)printf("请输入第%d个数:",i+1);scanf("%d",&ai);sum+=ai;/*求和,等同于 sum=sum+ai*/ave=sum/10.0;printf("这十个数的平均值为:%.2fn",ave);40. 解答:#include "stdio.h"void main()float n10,t;int i;p

53、rintf("请输入十个实数n");for(i=0;i<10;i+)printf("n请输入第%d个实数:",i+1);scanf("%f",&ni);printf("原来的数组:n");for(i=0;i<10;i+)printf(" %.2f ",ni);/*打印原数组*/printf("n");for(i=0;i<5;i+)t=ni;/*三条逆序语句*/ni=n9-i;n9-i=t;printf("逆序后的数组为:n");f

54、or(i=0;i<10;i+)printf(" %.2f ",ni);/*打印逆序后数组*/printf("n");41. 解答:参见第三题42. 解答:#include "stdio.h"void main()int a1000,i;for(i=0;i<1000;i+)ai=i+1;/*i初始值为0*/for(i=0;i<1000;i+)if(ai%17=0)/*筛选符合条件的数*/printf("%dn",ai);43. 解答:参见29题44. 解答:#include "stdio.

55、h"void jiecheng(int n)long int i,ans=1;/*这里注意赋初值为1*/if(n=0)printf("0的阶乘为1n");else if(n<0)printf("负数的阶乘为无穷大n");elsefor(i=1;i<=n;i+)ans=ans*i;/*阶乘运算式*/printf("数 %d 的阶乘: %d! = %d n",n,n,ans);void main()int n;printf("请输入一个自然数,程序将计算它的阶乘n n = ");scanf(&qu

56、ot;%d",&n);jiecheng(n);45. 解答:参见第30题46. 解答:#include "stdio.h"void main()int a33,sum=0,i,j;printf("请输入一个3*3的矩阵n");for(i=0;i<3;i+)for(j=0;j<3;j+)/*接收数组*/printf("请输入a%d%d = ",i,j);scanf("%d",&aij);printf("输入的矩阵为:n");for(i=0;i<3;i+)

57、/*打印原矩阵*/for(j=0;j<3;j+)printf(" %d ",aij);printf("n");for(i=0;i<3;i+)sum=sum+aii;/*求主对角线的和*/printf("主对角线的和为:%dn",sum);47. 解答:参见29题48. 解答:#include "stdio.h"#include "string.h"/*调用库函数*/void main()char ch100;int n,i;printf("请输入一个字符串:");gets(ch);/*接收串字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论