关于C语言的简单小程序4

{最近好忙,但不知道在忙什么,为了看起来忙的有理由,抽空发个博客吧,嘿嘿嘿}

来个小“目录”

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写完了} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值