Problem A:输入输出
题目描述
定义一个结构体student,存储学生的学号、名字、性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出。结构体student的定义如下:
struct student {
int num;
char name[20];
char sex;
int age;
};
本题要求使用指向结构体数组进行输入和输出。
输入
第一行有一个整数n,表示以下有n个学生的信息将会输入。保证n不大于20。
以后的n行中,每一行包含对应学生的学号、名字、性别和年龄,用空格隔开。保证每一个人名都不包含空格且长度不超过15,性别用M和F两个字符来表示。
输出
有n行,每行输出一个学生的学号、名字、性别和年龄,用空格隔开。
请注意行尾输出换行。
样例输入
3
10101 LiLin M 18
10102 ZhangFun M 19
10104 WangMin F 20
样例输出
10101 LiLin M 18
10102 ZhangFun M 19
10104 WangMin F 20
答案
#include <stdio.h>
struct student {
int num;
char name[20];
char sex;
int age;
} stu[20], *p;
int main() {
int n;
scanf("%d", &n);
p = stu;
for(int i = 0; i < n; i++) {
scanf("%d %s %c %d", &p->num, p->name, &p->sex, &p->age);
printf("%d %s %c %d\n", p->num, p->name, p->sex, p->age);
}
return 0;
}
Problem B:逆序输出成绩表
题目描述
输入一组学生的成绩,将输入内容逆序输出。
输入
输入格式为每行两个数值,学号N为10位数字,成绩S取值为整数(0≤S≤100)
读取输入直到输入结束(数据总量不超过50行)
输出
输出格式为每行两个数值,学号N之后有一个空格,成绩值的输出宽度占3个位置
样例输入
2017010405 78
2017010426 80
2017010402 61
2017010377 95
样例输出
2017010377 95
2017010402 61
2017010426 80
2017010405 78
答案
#include <stdio.h>
#include <string.h>
const int N = 50 + 5;
typedef struct student{
char no[15];
int score;
}STU;
int main() {
STU stu[N];
int n = 0;
while(scanf("%s%d",stu[n].no,&stu[n].score) != EOF)
n++;
for(int i = n - 1;i >= 0;i--){
printf("%s %3d\n",stu[i].no,stu[i].score);
}
return 0;
}
Problem C:【结构体】日期统计
题目描述
定义一个包括年、月、日的结构体变量,读入年、月、日,计算该日在当年中是第几天。注意闰年问题。
输入
三个整数,分别表示年、月、日。保证输入是实际存在的日期,且年份在1000至3000之间(包含1000和3000)。
输出
输出该日期是一年中的第几天。
请注意行尾输出换行。
样例输入
2012 12 21
样例输出
356
答案
#include<stdio.h>
int main( ){
struct dd{
int y,m,d;
}date;
int i,j,k;
scanf("%d%d%d",&date.y,&date.m,&date.d);
k=date.d;
if(date.m>1) k+=31;
if(date.m>2) k+=28;
if(date.m>3) k+=31;
if(date.m>4) k+=30;
if(date.m>5) k+=31;
if(date.m>6) k+=30;
if(date.m>7) k+=31;
if(date.m>8) k+=31;
if(date.m>9) k+=30;
if(date.m>10) k+=31;
if(date.m>11) k+=30