不冷博客

C语言程序设计期末考试试卷

答案来源于百度,不保证正确性

1、从键盘上输入10个整数,用函数调用的方式求其中的最大值。

#include<stdio.h>
#define n 10
    int fun(int a[]){//求数组a的最大值函数
    int i,max=a[0];
    for(i=1;i<n;i++)
        if(max<a[i]) max=a[i];
    return max;
}
int main()
{
    int a[n],i;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);        
    printf("数组最大值为%d\n",fun(a));
    return 0;
}

2、用指向一维数组的指针解决冒泡排序问题。

#include <stdio.h>
    #define N 5
    void swap(int *p);
int main()
{
    int i, a[10];
    for(i=0;i<N;i++)
        scanf("%d",&a[i]);
    swap(a);
    for(i=0;i<N;i++)
        printf("%d ",a[i]);
    printf("\n");
}void swap(int *p)
{
    int i,j,temp;
    for(i=0;i<N;i++)
        for(j=0;j<N-i-1;j++)
        if(p[j]>p[j+1])
    {
        temp=p[j];
        p[j]=p[j+1];
        p[j+1]=temp;
    }
}

3、有3个候选人,每个选民只能投票选一人,要求编写一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。(利用结构体实现)

#include <string.h>
    #include <stdio.h>
    struct person// 声明结构体类型struct person
{
    char name[20];  // 候选人姓名
    int count; // 候选人得票数 
}
leader[3]={"Li",0,"Zhang",0,"Fun",0}; // 定义结构体数组并初始化
int main()
{
    int i,j;
    char leader_name[20]; // 定义字符数组 
    for (i=1;i<=10;i++)
    {
        scanf("%s",leader_name); // 输入所选的候选人姓名  
        for(j=0;j<3;j++)
            if(strcmp(leader_name,leader[j].name)==0) leader[j].count++;
    }
    printf("\nResult:\n");
    for(i=0;i<3;i++)
        printf("%5s:%d\n",leader[i].name,leader[i].count);
    return 0;
}

4、有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号、姓名、3门课程成绩),计算出平均成绩,将原有数据和计算出的数据的平均分数存放在磁盘文件“stud”中。

#include <stdio.h>
#include <stdlib.h>
#define N 5
struct student
{
    int num;
    char name[10];
    float score[3];
    float aver;
}stu[N];
void save()
{
    FILE *fp;
    int i;
    if((fp=fopen("stud","wb"))==NULL)
    {
        printf("cannot open the file stud!\n");
        exit(0);
    }
    for(i=0;i<N;i++)
    {
        if((fwrite(&stu[i],sizeof(struct student),1,fp))!=1)
            printf("flie write error!\n");
    }
    fclose(fp);
}
int main()
{
    int i;
    printf("请输入学号、姓名、三门课程成绩:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
        stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
    }
    save();
    FILE *fp;
    if((fp=fopen("stud","rb"))==NULL)
    {
        printf("cannot open the file stud!\n");
        exit(0);
    }
    printf("the data:\n");
    printf("num name score1 score2 score3 average\n");
    for(i=0;i<N;i++)
    {
        fread(&stu[i],sizeof(struct student),1,fp);
        printf("%-2d%5s%7.1f%7.1f%7.1f%7.1f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver);
    }    //输出从文件中读取的数据在屏幕上以验证 
    fclose(fp);
    return 0;
}

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »