资源描述
一、判断题 (16分)
1. 结构体类型的数据是由不同类型的数据组合而成的。2分
2. 一旦定义了某个结构体类型后,系统将为此类型的各个成员项分配内存单元。2分
3. 被定义为指向某结构体类型数据的指针变量,即可以指向具有该类型的变量,又可以指向它其中的一个成员。2分
4. 在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。2分
5. 在内存中存储结构体类型的变量要占连续一段的存储单元。2分
6. 对结构体变量不能进行整体输入输出。2分
7. 结构体类型数据在内存中所占字节数不固定。2分
8. 结构体类型只有一种。2分
二、选择题 (4分)
1.设有以下说明语句
struct stu
{int a;
float b;
} stutype;
则下面的叙述不正确的是( )。 [C] 2分
A. struct是结构体类型的关键字
B. struct stu是用户定义的结构体类型
C. stutype是用户定义的结构体类型名
D. a和b都是结构体成员名
2.C语言结构体类型变量在程序运行期间( )。 [B] 2分
A. TC环境在内存中仅仅开辟一个存放结构体变量地址的单元
B. 所有的成员一直驻留在内存中
C. 只有最开始的成员驻留在内存中
D. 部分成员驻留在内存中
三、程序填空题 (10分)
1. 编写程序,输入一个日期的数组,大小为N,调用函数比较这个数组中的日期,返回最大的日期,并输出这个日期 10分
#include <stdio.h>
#define N 4
struct date{
int year;
int month;
int day;
};
struct date dateMax(__(1)__)
{
struct date max = __(2)__;
int i;
for( i = 1; i < N; i++)
{
if(dateArray[i].year > max.year)
{
max = dateArray[i];
}
else if(dateArray[i].year == max.year)
{
if(__(3)__)
{
max = dateArray[i];
}
else if(dateArray[i].month == max.month)
{
if(dateArray[i].day >= max.day)
{
__(4)__;
}
}
}
}
return max;
}
int main()
{
struct date dateArray[N],s;
int i;
for( i = 0; i < N; i++)
{
printf("请输入第%d个日期:",(i+1));
scanf("%d%d%d",&dateArray[i].year,&dateArray[i].month,&dateArray[i].day);
}
s = __(5)__;
printf("最大的日期为:%d.%d.%d\n",s.year,s.month,s.day);
return 0;
}
(1)答案 2分 struct date dateArray[]
(2)答案 2分 dateArray[0]
(3)答案 2分 dateArray[i].month > max.month
(4)答案 2分 max = dateArray[i]
(5)答案 2分 dateMax(dateArray)
四、程序设计题 (20分)
1. 编写程序,输入某一时刻的时间,加一秒后输出新的时间,时间以时、分、秒表示(利用结构类型) 10分
题目描述
编写程序,输入某一时刻的时间,加一秒后输出新的时间,时间以时、分、秒表示(利用结构类型)
输入描述
输入某一个时刻的时间
输出描述
输出这个时刻下一秒的时间,数字小于10的前面加个0输出
样例输入
19 3 12
样例输出
19:03:13
#include<stdio.h>
struct time {
int h,m,s;
};
void main()
{
struct time t1,t2;
scanf("%d%d%d",&t1.h,&t1.m,&t1.s);
t2.s=t1.s+1;
t2.m=t1.m;
t2.h=t1.h;
if(t2.s==60){
t2.m=t1.m+1;
t2.s=0;
}
if(t2.m==60){
t2.h=t1.h+1;
t2.m=0;
}
if(t2.h==24){
t2.h=0;
}
printf("%02d:%02d:%02d\n",t2.h,t2.m,t2.s);
}
2. 有5个学生,每个学生的数据包括学号、姓名、三门课的成绩。数据从键盘输入,要求打印出每个学生的总分、三门课的总平均成绩、以及总分最高的学生数据 10分
题目描述
有5个学生,每个学生的数据包括学号、姓名、三门课的成绩。数据从键盘输入,要求打印出每个学生的总分、三门课的总平均成绩、以及总分最高的学生数据
输入描述
输入5个学生的数据,每个学生的数据包括学号、姓名、三门课的成绩
输出描述
输出每个学生的总分、三门课的总平均成绩、以及总分最高的学生数据(保留一位小数)
样例输入
201090101 张三 89 88 73
201090102 李四 77 55 91
201090103 王五 81 94 84
201090104 周六 97 71 61
201090105 徐七 76 80 90
样例输出
姓名 总分 平均成绩
张三 250 83.3
李四 223 74.3
王五 259 86.3
周六 229 76.3
徐七 246 82.0
总分数最高的学生信息如下:
201090103 王五 81 94 84
#include<stdio.h>
#define N 5
struct student {
int no;
char name[10];
float score[3],sum,ave;
};
void main()
{
struct student stu[N];
float max;
int i,j,maxi;
scanf("%d%s",&stu[0].no,stu[0].name);
stu[0].sum=0;
stu[0].ave=0;
for(j=0;j<3;j++){
scanf("%f",&stu[0].score[j]);
stu[0].sum+=stu[0].score[j];
stu[0].ave+=stu[0].score[j]/3;
}
max=stu[0].sum;
maxi=0;
for(i=1;i<N;i++){
scanf("%d%s",&stu[i].no,stu[i].name);
stu[i].sum=0;
stu[i].ave=0;
for(j=0;j<3;j++){
scanf("%f",&stu[i].score[j]);
stu[i].sum+=stu[i].score[j];
stu[i].ave+=stu[i].score[j]/3;
}
if(stu[i].sum>max){
max=stu[i].sum;
maxi=i;
}
}
printf("姓名 总分 平均成绩\n");
for(i=0;i<N;i++)
printf("%s %.0f %.1f\n",stu[i].name,stu[i].sum,stu[i].ave);
printf("总分数最高的学生信息如下:\n");
printf("%d %s ",stu[maxi].no,stu[maxi].name);
for(j=0;j<3;j++)
printf("%.0f ",stu[maxi].score[j]);
}
展开阅读全文