循环嵌套:
数组:
一维数组操作思维导图:
练习:
1、有10位评委打分,为了公平起见,要求删除最高成绩和最低成绩,算出平均成绩。
提示:输入10个评委的打分情况,利用算法算出最高和最低成绩,将总成绩减去最高最低成绩后,求出平均成绩,使用C语言完成。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,count=0;
float a[10],max,min,ave=0,sum=0;
for(i = 0;i<10;i++)
{
printf("请输入第%d位评委的评分:",i+1);
scanf("%f",&a[i]);
}
for(i=0;i<10;i++)
{
if(i==0)
{
max = a[i];
min = a[i];
}
if(a[i]>=max)
{
max = a[i];
}
if(a[i]<=min)
{
min = a[i];
}
}
for(i=0;i<10;i++)
{
if(a[i]!=max&&a[i]!=min)
{
sum+=a[i];
count++;
}
}
ave=sum*1.00/count;
printf("平均成绩为:%.2f\n",ave);
return 0;
}
2、班级有9位同学,期末考试结束后,需要统计出对班级平均分做出贡献的学生所占百分比。
提示:输入9个学生成绩,算出平均成绩,利用平均成绩统计出高于平均成绩的学生个数,利用个数算出百分比。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
float a[9];
int i;
float sum=0,avg=0,bfb=0;
for(i=0;i<9;i++)
{
printf("请输入学生%d的成绩",i+1);
scanf("%f",&a[i]);
sum+=a[i];
}
avg=sum/9;
printf("平均成绩为%.2f\n",avg);
int count=0;
for(i=0;i<9;i++)
{
if(a[i]>avg)
{
count++;
}
}
bfb=count*1.0/9;
printf("高于平均成绩的学生个数占总学生的百分比为%.2f%%\n",bfb*100);
return 0;
}
3、已知数组元素(6,4,9,0,8,12,3},提示用户输入一个关键字,如果存在该关键字,输出该关键字的位置,不存在该关键字,给出一定的提示。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int key,i,a[]={6,4,9,0,8,12,3};
printf("请输入要查找的关键字:");
scanf("%d",&key);
int len = sizeof(a)/sizeof(int);
int sub = -9;
for(i=0;i<len;i++)
{
if(key==a[i])
{
sub = i;
break;
}
}
if(sub==a[i])
{
printf("查找失败\n");
}
else
{
printf("查找成功,第%d个位置\n",sub+1);
}
return 0;
}
4、已知数组元素{6,4,9,0,8,12,3},将该数组中低于平均值的元素放入新数组并输出。
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a[]={6,4,9,0,8,12,3},i,j,sum=0;
int b[7],n =0,count=0,len;
float avg;
len = sizeof(a)/sizeof(int);
for(i=0;i<len;i++)
{
sum+=a[i];
}
avg=sum*1.00/len;
printf("平均值是%.2f\n",avg);
for(i = 0;i<len;i++)
{
if(a[i]<avg)
{
b[n++]=a[i];
count++;
}
}
for(int j=0;j<count;j++)
{
printf("b[%d]=%d\t",j,b[j]);
}
return 0;
}