这不是占坑:这不是占坑:这不是占坑:重要的事情说三遍!!!
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h>
#define N 10
int main()
{
int score[N],n,sum,max,s,min,index1,index2,i,x;
double average=0;
printf("请输入学生的数量:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d个学生成绩",(i+1));
scanf("%d",&score[i]);
sum=sum+score[i];
}
average=(double)sum/n;
printf("average=%.2lf",average);
score[0];
index1=0;
index2=0;
for(i=1;i<=n;i++)
{
if(score[i]>=max)
{
max=score[i];
index1=i;
printf("max=%d",index1);
break;
}
}
for(i=1;i<=n;i++)
{
if(score[i]<=min)
{
min=score[i];
index2=i;
printf("min=%d",index2);
break;
}
}
printf("\n请输入一个成绩:");
scanf("%d",&x);
for(i=1;i<=n;i++)
{
if(x==score[i])
{
printf("\n与第%d个学生对应",(i+1));
s++;
break;
}
}
printf("有%d个学生",(s-1));
return 0;
}
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> #define N 11 int main() { int num[N]={0,1,2,3,4,5,6,7,8,9},i,a,x; printf("输入你要插入的数:"); scanf("%d",&a); if(x<=0) { printf("error"); } for(i=0;i<=N-1;i++) { if(a<=num[i]) { for(a=N-2;a>=i;a--) { num[a+1]=num[a]; } num[i]=a+1; break; } } for(i=0;i<N;i++) { printf("\n %d",num[i]); } return 0; }
3.用数组实现火柴棍等式
#include<stdio.h> int main() { int gen[10]={6,2,5,5,4,5,6,3,7,6},x,y,z; for(x=0;x<=9;x++) { for(y=0;y<=9;y++) { z=x+y; if(z>9) { break; } if(gen[x]+gen[y]+gen[z]==12) { printf("%d+%d=%d\n",x,y,z); } } } return 0; }
二、知识点总结
1:数组名中存放的是一个地址常量。
2:必须遵循表示符命名规则。
3:动态赋值通常用循环结构实现。
4:先定义,后使用。
5:数组变量本身不能被赋值。
三、实验总结
1:定义某个数是从零开始,并且直到它本身减去一,如果其中某位未赋值,那个就会默认为0.
2:可用#define主函数定义自己要输入值得范围例如#define N 5就是从0到4.
3:越界的数组访问可能导致系统崩溃,怂啥,不就是重启吗?
4:不会就问,别问度娘,否则还不如不写作业。