1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include <stdio.h> #define N 33 int main() { int score[N],a,b,c,sum=0,max,min,grade; double average; printf("输入学生人数\n"); scanf("%d",&a); for(c=1;c<=a;c++) { printf("输入第%d个学生的成绩\n",c); scanf("%d",&score[c]); sum=sum+score[c]; } average=(double)sum/a; printf("平均成绩%.2f\n",average); max=score[1]; min=score[1]; for(c=1;c<=a;c++) { if(score[c]>max) max=score[c]; if(score[c]<min) min=score[c]; } for(c=1;c<=a;c++) { if(score[c]==min) { printf("第%d名学生成绩最低\n",c); } if(score[c]==max) { printf("第%d名学生成绩最高\n",c); } } printf("输入成绩\n"); scanf("%d",&grade); b=0; for(c=1;c<=a;c++) { if(score[c]==grade) { printf("该学生为%d\n",c); b++; } } printf("共有%d名\n",b); return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
# include<stdio.h> # define N 11 int main() { int a=1,b,c,number,numbers[N]={1,3,5,7,9,10,11,12,13,14}; printf("输入该数\n"); scanf("%d",&number); for(b=0;b<N-1;b++) { if(number<=numbers[b]) { for(c=N-2;c>=b;c--) { numbers[c+1]=numbers[c]; } numbers[b]=number; break; } if(number<numbers[0]) { numbers[0]=number; } if(number>=numbers[N-2]) { numbers[N-1]=number; } } for(b=0;b<N;b++) { printf(" %d",numbers[b]); } return 0; }
3.用数组实现火柴棍等式
#include <stdio.h> int main() { int a,b,c,g[10]={6,2,5,5,4,5,6,3,7,6}; for(a=0;a<=9;a++) for(b=0;b<=9;b++) { c=a+b; if(c>9) break; if(g[a]+g[b]+g[c]==12) { printf("%d+%d=%d\n",a,b,c); } } return 0; }
二.知识点总结: 数组不初始化,其元素为随机数 只给部分数组元素赋初值,则其后的元素被初始值为0 当全部数组元素赋初值时,可不指定数组长度 数组中的每一个元素都属于同一种数据类型 数组一旦建立,不能改变大小 数组的元素在内存中是连续依次排序的
三.实验错误 题2.逻辑思维,是在那个变量的基础上往后推 题1.简化,能写到一起的写到一起
原文:http://www.cnblogs.com/1601wyn/p/6091131.html