2020年专业课编程题

用递归把数组的n个数实现“倒序”
主函数输入n个数,用递归将其顺序颠倒,并输出

#include <stdio.h>
 #include <math.h>
 #define N 100
void swap(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
void reverse(int a[],int low,int high)
{
    if (low<high)
    {
        swap((a+low),(a+high));  //交换两个数 函数形式
        reverse(a,low+ 1,high-1); //递归调用 
    }
}
 int main(){
     int a[N];
     int n;
     printf("需要输入的数(n个)\n");
     scanf("%d",&n);
     int i,j;
     for(i=0;i<n;i++) scanf("%d",&a[i]);
    reverse(a,0,n-1);
     for(j=0;j<n;j++) printf("%d ",a[j]);
     return 0;
 }
View Code

男,女,小孩一共40人,共花了50元。
男的花3元,女的花了2元,小孩花1元
问男,女,小孩各多少人。

#include <stdio.h>
#include <math.h>
#define N 40
int main(){
    int man,women,child;
    for(man=0;man<=N;man++){
        for(women=0;women<=N;women++){
            for(child=0;child<=N;child++){
                int person_sum=child+women+man;
                int money_sum=child+women*2+man*3;
                if(person_sum==40&&money_sum==50){
                    printf("男有%d人,女有%d人,小孩有%d人\n",man,women,child);
                }
            }
        }
    }
    return 0;
}
View Code

10个负责打分的人,分值0-100,去掉最高分和最低分,余下8个分数平均分
为最终分数
要求:
1 输入50个选手名字,与10个评委打分
2 按最终得分求名次,分一样则名次一样
3 最终结果输出在result.txt,包括姓名,10位评委的打分,最终得分和名次。且上下对齐。
最终得分相同的名次相同。
如四名选手 80 75 75 70 名次 1 2 2 4

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define N 5
struct student{
    char name[20];
    int score[10];//10个评委打分;
    double endscore;//最后的分数
    int rank;//成绩排名 
}stu[N];
void reverse(){
    int i,j,index;
    struct student temp,k;
    for(i=0;i<N;i++){
        k=stu[i];index=i;
        for(j=i+1;j<N;j++){
            if(k.endscore<stu[j].endscore){
               k=stu[j];
               index=j;    
            }
        }
        if(i!=index){
            temp=stu[i];
            stu[i]=k;
            stu[index]=temp;
        }
    } 
}
void sortrank(){
    int i,j,rank=0;
    for(i=0;i<N;i++){
        if(rank==0){
            stu[i].rank=rank+1;
            rank=rank+2;
        }else{
            if(stu[i].endscore==stu[i-1].endscore){
                stu[i].rank=stu[i-1].rank;
                rank++;
            }else{
                stu[i].rank=rank;
                rank++;
            }
        }
    }
} 
int main(){
    int i,j;
    FILE *fp;
    if((fp=fopen("result.txt","w+"))==NULL){
        printf("cannot open the file:\n");
        exit(0);
    }
    printf("请输入%d名人员信息:\n",N);
    for(i=0;i<N;i++){
        scanf("%s",stu[i].name);//输入姓名
        int sum=0,max=0,min=101; 
        for(j=0;j<10;j++){//输入10名评委的打分 
            scanf("%d",&stu[i].score[j]);
            sum+=stu[i].score[j];
            if(max<=stu[i].score[j]) max=stu[i].score[j];
            if(min>=stu[i].score[j]) min=stu[i].score[j];
        }
        sum=sum-min-max;
        stu[i].endscore=sum/8.0;//最终得分 
    }
    //按照最终得分进行排序
    reverse();
    //按照现有的排序进行排名
    sortrank();
    //写入文件
    for(i=0;i<N;i++){
        fprintf(fp,"%-s",stu[i].name);
        for(j=0;j<10;j++)
          fprintf(fp,"%-5d",stu[i].score[j]);
        fprintf(fp,"%-5lf %-5d\n",stu[i].endscore,stu[i].rank);
    }
    //在屏幕上显示信息
    for(i=0;i<N;i++){
        printf("%-10s",stu[i].name);
        for(j=0;j<10;j++)
          printf("%-5d",stu[i].score[j]);
        printf("%-5lf %-5d\n",stu[i].endscore,stu[i].rank);
    }
    fclose(fp);
    return 0; 
}
View Code

 

posted @ 2020-11-23 22:44  薄眠抛却陈年事。  阅读(574)  评论(1编辑  收藏  举报