习题7
1、任意输入10个整数存入数组x中,并统计输出正数和负数的个数。
#include <stdio.h>
void main()
{
int x[10];
int a=0,b=0,i;//a计数正数,b计数负数,i循环变量。
printf("请输入10个整数:");
for(i=0;i<10;i++)
{
scanf("%d",&x[i]);
if(x[i]>0)
a++;
if(x[i]<0)
b++;
}
printf("正数有%d个\n负数有%d个\n",a,b);
}
2、编程实现评分统计程序,共有8个评委打分,满分10分,统计时去掉一个最高分和最低分,其余6个分数的平均分就是最后的分数,保留2位小数。
#include <stdio.h>
void main()
{
int i;
float max,min,x[8],s=0,aver;
printf("请输入8个评委的分数:");
for(i=0;i<8;i++)
scanf("%f",&x[i]);
s=max=min=x[0];
for(i=1;i<8;i++)
{
if(x[i]>max)
max=x[i];
else if(x[i]<min)
min=x[i];
s=s+x[i];
}
aver=(s-max-min)/6;
printf("最后得分为:%.2f\n",aver);
}
3、编程实现任意输入10个整数,将这10个数字升序排列输出,并且奇数在前,偶数在后。(用比较排序算法排序)
#include <stdio.h>
void main()
{
int x[10],i,j,t;
printf("请输入任意10个整数:");
for(i=0;i<10;i++)
scanf("%d",&x[i]);
for(i=0;i<10;i++)
{
for(j=i+1;j<=10;j++)
{
if(x[i]>x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
if(x[i]%2==1 || x[i]%2==-1)
printf("%4d",x[i]);
}
for(i=0;i<10;i++)
{
for(j=i+1;j<=10;j++)
{
if(x[i]>x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
if(x[i]%2==0)
printf("%4d",x[i]);
}
printf("\n");
}
4、编程实现把下列矩阵第一行和第二行换位置存放并输出.
#include <stdio.h>
void main()
{
int a[2][3]={{22,58,3},{10,9,16}};
int i,j;
printf("the sort:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
printf("the new sort:\n");
for(i=1;i>=0;i--)
{
for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
5、编程实现求任意3*3矩阵的两条对角线上的元素之和。要求先输出这个矩阵,再输出两个对角线上的元素之和。
#include <stdio.h>
void main()
{
int x[3][3];
int i,j,a=0,b=0;
printf("请输入9个数组元素的值:");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&x[i][j]);
}
printf("3*3矩形如下:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
printf("%5d",x[i][j]);
printf("\n");
a=a+x[i][i];
b=x[0][2]+x[1][1]+x[2][0];
}
printf("两个对角线分别为:%d和%d\n",a,b);
}