作业八
Posted 门天宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作业八相关的知识,希望对你有一定的参考价值。
这不是占坑,这不是占坑,这不是占坑,重要的事要说三遍!!!!
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 100 int main() { int score[N],i,n,n1=0,n2=0,sum=0,max,min,n3,n4; double average; printf("请输入人数:\\n"); scanf("%d",&n); for(i=0;i<n;i++) { printf("请输入成绩:\\n"); scanf("%d",&score[i]); if(score[i]==-1) { break; } else if(score[i]!=-1) { n4++; sum=sum+score[i]; } } average=(double)sum/n; printf("平均数为%.2f\\n",average); /*平均数*/ max=score[0]; for(i=0;i<n;i++) { if(score[i]>max) { max=score[i]; /*最大值*/ n1=i; } } printf("最大分数的学生为%d\\n",n1+1); min=score[1]; for(i=0;i<n;i++) { if(score[i]<min) { min=score[i]; /*最小值*/ n2=i; } } printf("最低分数的学生为%d\\n",n2+1); printf("输入一个分数:\\n"); scanf("%d",&n3); for(i=0;i<n;i++) { if(score[i]==n3) { printf("%d号得到这个分数\\n",i+1); break; } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> #define N 10 int main() { int a,b,c,d,i;/*0 1 2 3 4 5 6 7 8 9=0*/ int shuzu[N]={1,3,5,7,9,11,13,15,17}; printf("请输入一个数字,将插入到1,3,5,7,9,11,13,15,17里:\\n"); scanf("%d",&a); for(i=0;i<N;i++) { if(a<=shuzu[i]) { d=i; printf("插入到第%d位\\t",d); break; } } for(i=d,c=N-1;i<=c;c--) { shuzu[c]=shuzu[c-1]; } shuzu[d]=a; for(i=0;i<N;i++) { printf("%d ",shuzu[i]); } return 0; }
3.用数组实现火柴棍等式
#include<stdio.h> int main() { int x,y,sum; int match[10]={6,2,5,5,4,5,6,3,7,6,}; for(x=0;x<=9;x++) for(y=0;y<=9;y++) { sum=x+y; if(sum>9) { break; } if(match[x]+match[y]+match[sum]==12) { printf("%d+%d=%d\\n",x,y,sum); } } return 0; }
附加题
输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…
#include<stdio.h> int main() { int shuzi[10]={0},i; char x; printf("请输入一行数字:\\n"); do { scanf("%c",&x); switch(x) { case \'0\':shuzi[0]++;break; case \'1\':shuzi[1]++;break; case \'2\':shuzi[2]++;break; case \'3\':shuzi[3]++;break; case \'4\':shuzi[4]++;break; case \'5\':shuzi[5]++;break; case \'6\':shuzi[6]++;break; case \'7\':shuzi[7]++;break; case \'8\':shuzi[8]++;break; case \'9\':shuzi[9]++;break; } }while(x!=\'\\n\'); for(i=9;i>=0;i--) { printf("数字 %d 出现了 %d 次。\\n",i,shuzi[i]); } return 0; }
二、知识点总结
1:数据类型 数组名【数组长度】
2:常量表达式中不允许包含变量,但可以包含常量或符号常量
3:可以用int x[N]={1,2,3,4,5,6,7,8,9};这种形式。
4:使用数值型数组时,不能一次引用整个数组,只能逐个引用。
5.要用0-9,否则就毁了。
三、实验总结(实验中遇到的问题及解决方法)
1.求平均数时,用到这个,但是算平均数时,因为没有输入100个数据,所以要重新输入变量,才能正确求出平均数。
2.插入数组的时候要看清条件,准确找出插入的位置。
3.火柴的没什么好说的,注意数字相加和根数相加。
4.int x[10]={0},给部分元素赋初值,则其后的会被初始化为0,用这种形式配合switch可以容易的求出数字字符的个数。
5.在程序之前给数组赋值:,这样方便程序的变换使用。
以上是关于作业八的主要内容,如果未能解决你的问题,请参考以下文章