2008年885编程题

第一题:

#include <stdio.h>
#include <math.h>
#define N 10
int a[N];
int Stand(int num);//判断数字是否符合标准
int NumLen(int num);//获取数字的长度,并将每一位写入数组
void print(int len);//分别打印每一次数字(正序和逆序)
int main(){
    int num;
    printf("请输入一个不多于5位的正整数
");
    scanf("%d",&num);
    if(Stand(num)==2){
        int len=NumLen(num);
        print(len);
    }else{
        printf("输入的数字不符合要求
");
    } 
    return 0;
}
//判断数字是否符合标准 
int Stand(int num){
    if(num<0) return 0;//输入的数是负数 
    else if(num>=100000) return 1;//输入的数超过5位数
    else return 2;//输入的数符合要求 
}
//获取数字的长度,并将每一位写入数组 
int NumLen(int num){
    int k=0;
    while(num!=0){
       a[k++]=num%10;
       num/=10;
    }
    printf("数字是%d位数
",k);
    return k;//返回长度 
}
//分别打印每一次数字(正序和逆序)
void print(int len){
    int i,j;
    printf("正序输出每一位数:
");
    for(i=len-1;i>=0;i--) printf("%4d",a[i]);
    printf("
逆序输出每一位数:
");
    for(i=0;i<len;i++) printf("%4d",a[i]);
} 

第二题

#include <stdio.h>
int fun(int num);//判断是否符合水仙花数的要求
int main(){
    int i;
    printf("水仙花数如下:
");
    for(i=100;i<1000;i++){
        if(fun(i)) printf("%4d",i);
    }
    return 0;
}
int fun(int num){
    int g,s,b;//代表个位,十位,百位
    g=num%10;
    s=num/10%10;
    b=num/100%10;
    if(g*g*g+s*s*s+b*b*b==num) return 1;
    else return 0; 
} 

第三题:

#include <stdio.h>
#include <math.h>
#define N 10
struct student{
    int no;//学号 
    char name[20];
    double score[5];
    double sum;//总分成绩 
}stu[N];
void Input();//输入学生的信息
void StuAvg();//计算每个学生的平均分
void CourAvg();//计算每门课的平均分
void MaxScore();//最高分的学生和信息 
void ScoreFC();//计算平均分方差 
int main(){
    printf("请输入10个学生的信息:
");
    Input();
    StuAvg();
    CourAvg();
    MaxScore();
    ScoreFC();
    return 0;
}
void Input(){//输入学生的信息 
    int i,j;
    double sum;
    for(i=0;i<N;i++){
        sum=0;
        printf("输入第%d个学生信息:
",i+1);
        scanf("%d%s",&stu[i].no,stu[i].name);
        for(j=0;j<5;j++){
            scanf("%lf",&stu[i].score[j]);
            sum+=stu[i].score[j];
        }
        stu[i].sum=sum;
    }
}
void StuAvg(){
    printf("学生平均分信息如下:
");
    int i,j;
    printf("学号	姓名	平均分
");
    for(i=0;i<N;i++){
        printf("%d	%s	%lf
",stu[i].no,stu[i].name,stu[i].sum/5);
    }
}
void CourAvg(){
    printf("
每门课的平均分成绩如下:
");
    double sscore[5]={0};
    int i,j;
    for(i=0;i<N;i++){
        for(j=0;j<5;j++) 
          sscore[j]+=stu[i].score[j]; 
    }
    for(i=0;i<5;i++)
      printf("%lf	",sscore[i]/5); 
}
void MaxScore(){
    int i,j,k;
    int index[6]={0};
    int score[6]={0};
    for(i=0;i<N;i++){
       for(j=0;j<6;j++){
          if(score[j]<stu[i].score[j]){
            score[j]=stu[i].score[j];
            index[j]=i;
          }    
       }
    }
    for(i=0;i<5;i++){
        printf("第%d门课最高分信息:%d	%s	%lf
",i+1,
          stu[index[i]].no,stu[index[i]].name,stu[index[i]].score[i]);
    }    
} 
void ScoreFC()//计算平均分方差
{
    int i,j,k;
   double x12=0.0,x1=0.0;
   for(i=0;i<N;i++){
       x12+=(stu[i].sum/5)*(stu[i].sum/5);
       x1+=(stu[i].sum/5); 
   }
   double s=(1.0/N)*x12-(x1/N)*(x1/N);
   printf("方差是%lf
",s); 
}                 

第四题:

#include <stdio.h>
#define N 5
int a[N][N];
void Input();//输入数组
int AnDian();//寻找安点 
int main(){
    printf("请输入五阶矩阵:
");
    Input();
    int k=AnDian();
    if(k==0){
        printf("NO FIND!
");
    }
    return 0;
}
void Input(){
     int i,j;
     for(i=0;i<N;i++){
         for(j=0;j<N;j++){
             scanf("%d",&a[i][j]);
         }
     }    
}
//寻找安点; 
int AnDian(){
    int i,j,k,r,c,value,count=0;
    for(i=0;i<N;i++){//
        value=a[i][0];
        r=i;c=0;
        for(j=0;j<N;j++){//找出每行的最大值 
            if(value<a[i][j]){
                value=a[i][j];
                r=i;c=j;
            } 
        }
        for(k=0;k<N;k++){//遍历行最小值的所在列,判断是否依然是列的最小值 
            if(value>a[k][c]){
                value=a[k][c];
                r=k;
            }
        }
        if(r==i){//如果最终行没有变化则说明行的最小值也是列的最小值。 
            printf("%d(%d,%d)
",value,r+1,c+1);
            count++;
        }
    }
    if(count==0) return 0;
    else return 1;
}



 收录于《考研计算机885复习》
原文地址:https://www.cnblogs.com/byczyz/p/13806476.html