First
演讲比赛中有10个评委打分(实型数据,十分制分数),求某个选手最终得分(去掉一个最高分和一个最低分后,其余分数的平均值)。
输入格式:
数据之间用空格隔开。
输出格式:
保留2位小数输出。(注意输出格式)
注意点:
1.题目给的数就是浮点数,所以数组类型别搞错 double精度高一些
2. 数值初始化,比如sum=0等,避免影响
3. 因为max必定大于0,所以开始max=0也是可以的,min=0就不可以了,毕竟最小数不确定是不是0
4. 别的就没啥了,自己思路没错就OK ,别再计数都搞错了。。。。。。
#include <stdio.h>
int main()
{
int i;
double max=0,min,a[10]={0},avg,sum=0;
for(i=0;i<10;i++)
{
scanf("%lf",&a[i]);
sum=sum+a[i];
if(a[i]>max)
{
max=a[i];
}
if(i==0)
{
min=a[i];
}
else if(a[i]<min)
{
min=a[i];
}
}
avg=(sum-max-min)/8;
printf("%.2lf",avg);
return 0;
}
Second
已知一个按升序排序的一维数组int a[11]={2,5,7,10,17,24,30,38,44,50},编程实现输入一个整数,并按原来排序的规律将它插入到数组中,最后输出数组中所有元素。
输入格式:
输入待插入的整数
输出格式:
每个数据后面跟一个空格(这里需要注意最后为——printf("%d ",a[i]);)
注意点
1.因为需要插入,所以就需要有一个数组元素的移动,这里采用的是从最后开始移动。
2.双层循环这个地方还是挺好的,能够减少一些运算量
3.感觉还是背一下这个思路吧
#include <stdio.h>
int main()
{
int a[11]={2,5,7,10,17,24,30,38,44,50};
int n,k,j,t,i;
scanf("%d",&n);
a[10]=n;
for(i=0;i<10;i++)
{
for (j=0;j<10-i;j++)
if (a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<11;i++)
{
printf("%d ",a[i]);
}
return 0;
}
Third
输入10个不重复的整数存放在一维数组中,然后输入欲删除数x,最后删除数组中值为x的元素并输出,若数组中没有值为x的元素则显示“Not exist!”。
输入格式:
两行数据; 第一行输入任意10个不重复的整数,每个数之间用空格隔开; 第二行输入待删除整数
输出格式:
每个数后面跟一个空格;若无欲删除数,输出 Not exist!
注意点:
1.这个是用了两个数组做的,emmm,用两个确实比较方便。删除那个步骤不用费脑筋,直接覆盖掉就OK了。
2.通过一个C的值来判断是否有那个元素,没有的话直接输出Not exist!就OK了
#include <stdio.h>
int main()
{
int a[10],b[9],n,k,i,c=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&n);
for(i=0;i<10;i++)
{
if(n==a[i])
{k=i; c++;}
}
if(c==1)
{
for(i=0;i<9;i++)
{
if(i<k)
b[i]=a[i];
else
b[i]=a[i+1];
}
for(i=0;i<9;i++)
printf("%d ",b[i]);
}
else
printf("Not exist!");
return 0;
}
Fourth
键盘输入一个4×4阶的矩阵,编程输出它的转置矩阵。
输入格式:
矩阵格式输入,同行数据之间用空格隔开
输出格式:
矩阵格式输出,同行每个数据后跟一个空格,最后一行数据后面不输出换行符’\n’
#include <stdio.h>
int main()
{
int a[4][4];
int i,j;
for (i=0;i<=3;i++)
{
for (j=0;j<=3;j++)
scanf("%d",&a[i][j]);
}
for (i=0;i<=3;i++)
{
for (j=0;j<=3;j++)
{
printf("%d ",a[j][i]);
if(j==3)
printf("\n");
}
}
return 0;
}
Fifth
从键盘输入3行4列整型二维数组a的各元素值,然后找出数组a中各行的最大值并依次存放到一维数组b中,最后按升序输出数组b的各元素。
(每行找个最大的,然后把最大的放在一个数组中(升序输出)呗)
输入格式:
矩阵格式输入,每行数据之间用空格隔开。
输出格式:
每个数据后面跟一个空格
1.就是m[i]——这个一维数组的基础可能会导致难理解吧,这个在取每行最大值的时候
2.题目还有一个升序输出数组b,这个还需要一次排序。
3.最后排序用的冒泡法
#include <stdio.h>
int main()
{
int a[3][4],i,j,max[3],t;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
{
max[i]=a[i][0];
for(j=0;j<4;j++)
{
if(a[i][j]>=max[i])
max[i]=a[i][j];
}
}
for (i=0;i<3;i++)
{
for(j=0;j<2-i;j++)
if (max[j]>max[j+1])
{
t=max[j];
max[j]=max[j+1];
max[j+1]=t;
}
}
for(i=0;i<3;i++)
printf("%d ",max[i]);
return 0;
}