admin 管理员组文章数量: 887062
2024年1月18日发(作者:osi七层模型数据封装)
1、从键盘上输入10个整数,将10个整数逆序输出。
分析:将10个整数存入数组x,逆序输出就是从x[9]开始,输出到x[0]
#include
#define M 10
main()
{int x[M],n;
printf("输入10个整数:n");
for(n=0;n scanf("%d",&x[n]); printf("按输入相反的顺序输出为:n"); for(n=M-1;n>=0;n--) printf("%dt",x[n]); return 0; } 2、计算并输出一维数组{9.8,12,45,67,23,19.8,2.55,45,37.5}中最大值、最小值和平均值 数组长度为9,把最大、最小值初始化为第一个数组元素,从第二个元素开始与最大、最小值比较获得最大、最小值。 #include #define M 9 main() {float x[]={9.8,12,45,67,23,19.8,2.55,45,37.5}; float max,min,sum=0; int n; max=min=x[0]; for(n=1;n {max= max min= min>x[n]?x[n]:min; sum+=x[n];} printf("数组中的最大值是=%.2f,最小值是=%.2fn",max,min); printf("数组中各元素的平均值=%.2fn",sum/M); return 0; } 3、从键盘上输入10个整数,计算其中的奇数的个数并输出。 先输入10个整数x[n],然后对数组从头扫描找出奇数(x[n]%2)并输出 #include #define M 10 main() {int x[M],n,cnt=0; //cnt是奇数计数器 printf("输入10个整数:n"); for(n=0;n scanf("%d",&x[n]); printf("其中的奇数有:n"); for(n=0;n if (x[n]%2) cnt++,printf("%dt",x[n]); printf("n奇数数量有:%d个",cnt); return 0; } 4、输入10个学生的成绩,统计高于平均分的人数。 先输入10个成绩并计算平均分,然后逐个扫描数组元素并与平均分比较。 #include #define M 10 main() {float x[M],ave,sum=0; int n,cnt=0; //cnt是奇数计数器 printf("输入10个学生的成绩:n"); for(n=0;n {scanf("%f",&x[n]); sum+=x[n];} ave=sum/M; for(n=0;n if (x[n]>ave) cnt++; printf("n高于平均分%.2f的有:%d人n",ave,cnt); return 0; } 5、输入10个学生3门课程的成绩,统计各科全部及格的人数。 先通过双重循环输入10行3列共30个数据,然后按行扫描 3个数据均大于30的人数 #include #define M 5 #define N 3 main() {float x[M][N]; int m,n; //m控制行号,n控制列号 int cnt=0; //cnt是计数器 printf("输入10个学生3门课的成绩:n"); for(m=0;m for(n=0;n scanf("%f",&x[m][n]); for(m=0;m if (x[m][0]>60 && x[m][1]>60 &&x[m][2]>60) cnt++; printf("n3门课程全部及格的共有%d人。n",cnt); return 0; } 6、编写一个程序,将两个字符串连接起来,不要使用strcat函数。 分析:定义一大一小两个字符数组s1和s2,输入两个字符串后,确定s1结束的位置,然后把s2的字符依次取出连接到s1的后边。 #include main() {char s1[100],s2[50]; //定义一大一小两个字符数组s1,s2 int m,n; gets(s1); gets(s2); //输入两个字符串s1,s2 for(m=0;(s1[m]!='0');m++); //找到S1字符串’0’的位置 for(n=0;(s2[n]!='0');n++) s1[m]=s2[n],m++; //取出s2一个字符连接到s1后边 s1[m]='0'; puts(s1); //输出新的s1 } 7、编写一个程序,求字符串长度,不要使用strlen()函数。 分析:输入字符串存入数组,然后扫描数组到’0’ #include main() {char s1[100]; int m,len=0; puts("请输入一段文本:") ; gets(s1); for(m=0;(s1[m]!='0');m++) len++ ; printf("你输入的字符串长度=%dn",len); } 8.编写一个程序,对用户输入的一个字符串,将大写字母循环右移五位 #include main() {char s[100]; gets(s); int n=0; while(s[n]!='0') { if (s[n]>='A'&&s[n]<='Z') {s[n]=s[n]+5; if(s[n]>'Z') s[n]=s[n]-26;} n++;} puts(s); } 9.编写一个程序对用户输入的任意一组数字,输出其中出现次数最多的数字,并显示其出现次数。 #include main() {int x[20]={1,2,1,3,2,2,3,5,4,2,2,3,4,5,2,3,5,3,2,3}; int y,cnt,cnt2; //y是要寻找的数,cnt是该数的次数,cnt2是每一个数出现次数 int m,n; for(m=0;m<20;m++) {cnt2=1; //当前数出现次数回到1 {for(n=m+1;n<20;n++) if(x[n]==x[m]) cnt2++; if (cnt2>cnt) cnt=cnt2, y=x[m];} } printf("出现次数最多的是:%d 出现了%d次",y,cnt); } 10.计算并输出杨辉三角前10行 //输出等腰三角形 #include #define M 10 #define N 10 main() {int x[M][N]={0},m,n,i; for(m=0;m x[m][0]=1; for(m=1;m for(n=1;n x[m][n]=x[m-1][n]+x[m-1][n-1]; for(m=0;m {for(i=0;i<10-m;i++) printf(" "); for(n=0;n if(x[m][n]) printf("%5d",x[m][n]); printf("n"); } } //输出为直角三角形 #include #define M 10 #define N 10 main() {int x[M][N]={0},m,n,i; for(m=0;m x[m][0]=1; for(m=1;m for(n=1;n x[m][n]=x[m-1][n]+x[m-1][n-1]; for(m=0;m {for(n=0;n if(x[m][n]) printf("%-4d",x[m][n]); printf("n"); } } 11.定义一个6*6的矩阵,将其主对角线上的元素置1,次对角线上的元素置-1,其他置0,行输出。 #include #define M 6 #define N 6 main() {int x[M][N]={0},m,n,i; for(m=0;m x[m][m]=1; for(m=0;m x[m][M-m-1]=-1; for(m=0;m {for(n=0;n printf("%4d",x[m][n]); puts("");} } 12. 输出波那契数列前20项,如1,1,1,2,3…… #include main( ) {int fb[20]={1,1}; int n; for(n=2;n<20;n++) fb[n]=fb[n-1]+fb[n-2]; puts("斐波那契数列前20项依次是:"); for(n=0;n<20;n++) {printf("%dt",fb[n]); if((n+1)%5==0) printf("n"); } }
版权声明:本文标题:第五章《数组》课后编程题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705557772h489858.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论