{最近好忙,但不知道在忙什么,为了看起来忙的有理由,抽空发个博客吧,嘿嘿嘿}
来个小“目录”
1.青歌赛评委打分,去掉最高最低求平均分
2.韩信点兵,根据一定条件得出数量
3.求1、2、3、4能组成的无重复数字的三位数及总个数
4.将88插入一个数组,且插入后该数组按从小到大排列
5.用选择排序法对数字进行排序
6.4行4列整型数组序列对角线之和
正文:
1.
/*青歌赛,设N(#define N 5)个选手参赛,有M(#define M 6)个评委,
M个评委依次为每个选手打分:要求编写程序实现输出每个选手的最终得分,
并对N个选手的最终得分按从大到小排序。提示:每个选手的最终得分
的计算规则:去掉一个最高分,去掉一个最低分平均。*/
#include <stdio.h>
#define N 5
#define M 6
int main ()
{
float s[N],p[M],max,min,sum,t;
int i,j;
for (j=0;j<N;j++)
{
//计算第一个选手的最终得分
printf ("请输入%d个评委为第%d个选手打的分:\n",M,j+1);
for (i=0;i<M;i++)
scanf ("%f",&p[i]);
max=min=sum=p[0];
for (i=1;i<M;i++)
{
sum+=p[i];//求和
if(p[i]>max)
max=p[i];//求最高分
if(p[i]<min)
min=p[i];//求最低分
}
s[j] =(sum-max-min)/(M-2);//每一个选手的最终得分
}
//输出
printf("选手的最终得分为:\n");
for(i=0;i<N;i++)
printf("%.2f\t",s[i]);
//排序-从大到小
for (j=0;j<N-1;j++)//控制比较的轮数N-1
{
for(i=0;i<N-1-j;i++) //控制每轮比较的次数
{
if(s[i]<s[i+1])
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
}
}
}
//输出结果
printf ("\n选手的得分由高到低依次为:\n");
for(i=0;i<N;i++)
printf("%.2\t",s[i]);
return 0;
}
2.
/*韩信点兵:韩信有一队兵,他想知道有多少人,便让士兵排队报数:
按从1至5报数,最末一个士兵报的数为1;
按从1到6报数,最末一个士兵报的数为4;
最后再按从1到11报数,最末一个士兵报的数为10;
计算韩信至少有多少兵?*/
#include <stdio.h>
int main ()
{
int m;
for (m=1;;m++)
{
if (m%5==1&&m%6==4&&m%11==10)
{
printf("%d个兵\n",m);
break;
}
}
return 0;
}
3.
/*有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?*/
#include <stdio.h>
int main ()
{
int a,b,c,num,k=0;
for (a=1;a<=4;a++)//百位
{
for (b=1;b<=4;b++)//十位
{
for (c=1;c<=4;c++)//个位
{
if (a!=b&&b!=c&&c!=a)
{
num=a*100+b*10+c;
printf ("%d\t",num);
k++;//统计组成的三位数个数
}
}
}
}
printf("\n能组成%d 个互不相同的三位数\n",k);
return 0;
}
4.
/*一维数组a的长度为10,现有前9个数据,按从小到大的顺序排列,
依次为:-22,0,15,35,76,90,99,105,120。
编写程序,实现将88插入该数组,且插入后的数据依然按从小到大的
顺序排列。*/
#include <stdio.h>
int main()
{
int a[10]={-22,0,15,35,76,90,99,105,120},i,k;
printf("插入之前的数组:\n");
for(i=0;i<9;i++)
printf("%5d",a[i]);
//数据的插入
for(i=0;i<9;i++)
{
if(a[i]>=88)
{
k=i;
break;
}
}
for(i=9;i>=k;i--)
a[i]=a[i-1];
a[k]=88;
printf("\n插入之后的数组:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
return 0;
}
5.
/*用选择排序法对6个数(1、2、4、5、7、9)进行排序(从小到大)*/
#include <stdio.h>
int main()
{
int a[6]={9,7,2,5,4,1};
int i,t,j;
for(j=0;j<6-1;j++)//控制比较的轮数
{
for(i=j+1;i<6;i++)
{
if(a[j]>a[i])//a[j]依次与a[i]到a[5]的(6-i)个元素比较
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
printf ("排序之后的结果为:\n");
for(i=0;i<6;i++)
printf("%d",a[i]);
return 0;
}
6.
/*编程实现:从键盘输入一个4行4列的整型数组序列,
计算输出对角线的数之和*/
#include <stdio.h>
int main()
{
int a[4][4]={{1,3,5,7},{2,4,6,8},{9,0,6,5},{7,9,5,2}};
int sum1=0,sum2=0,i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i==j)
sum1+=a[i][j];
if(i+j==3)
sum2+=a[i][j];
}
}
printf("主对角线的和为:%d\n",sum1);
printf("副对角线的和为:%d\n",sum2);
return 0;
}
{ok写完了}