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」版。查看和发表评论请点击:完整版 »