第七次作业参考答案_668804622
- 格式:pdf
- 大小:573.56 KB
- 文档页数:24
printf("请输入第%d个学生的信息:\n", i+1); printf("姓名: "); scanf("%s", stu[i].name); printf("学号: "); scanf("%s", stu[i].num);
printf("籍贯: "); scanf("%s", stu[i].place); printf("身份证号: "); scanf("%s", stu[i].id); printf("年龄: "); scanf("%d", &stu[i].age); printf("家庭住址: "); scanf("%s", stu[i].address); fflush(stdin); printf("性别(M/F): "); scanf("%c", &stu[i].sex); printf("电话: "); scanf("%s", stu[i].phone); printf("\n"); } }
stu[i].num, stu[i].place, stu[i].id, stu[i].age, stu[i].address, stu[i].sex,
if(isLeap(i)) day += 366;
else dayBiblioteka += 365;// day1变量为年份a年初到当天的年内总天数 for(i=1; i<a.month; ++i)
day1 += d[isLeap(a.year)][i]; day1 += a.day; // day1变量为年份b年初到当天的年内总天数 for(i=1; i<b.month; ++i)
第七次作业参考答案
(结构体)
第 1 题:计算日期的差值
(1)编写一函数,计算两个日期之间的时间差,并将其值返回。 日期以年、月、日表示。 “时间差”以天数表示。 注意考虑日期之间的闰年。 函数的输入参数为日期1和日期2, 函数的返回值为时间差,单位为天数。
(2)编写一程序,在主函数中输入两个日期,调用上述函数计算两个日期之间的时间差,并 将结果输出。
a) 编写函数 input() , 输入基本信息(3~5 条记录); b) 编写函数 print(),输出全体记录信息;
c) 编写函数 search(), 检索一个指定的学生信息并返回, 由主函数打印到屏幕上;
d) 说明,访问结构的时候,什么时候应该用运算符“.”,什么时候应该用运算符“->”。
(运算符前是结构体变量时用“.”,是指向结构体变量的指针时用“->”)
void main() {
char name[20]; input(stu); print(stu); printf("\n请输入想要查找的学生姓名: "); scanf("%s", name); search(stu, name); }
void input(struct student stu[]) {
参考代码:
#include <stdio.h> #include <string.h>
#define N 3 //增加程序的可扩展性 struct student {
char name[20]; char num[15]; char place[20]; char id[20]; int age; char address[100]; char sex; char phone[15]; } stu[N]; void input(struct student stu[]); void print(struct student stu[]); void search(struct student stu[], char name[]);
void main() {
struct date a, b; printf("请输入日期1(空格分隔,年月日):\n"); scanf("%d%d%d", &a.year, &a.month, &a.day); printf("请输入日期2(空格分隔,年月日,晚于日期1):\n"); scanf("%d%d%d", &b.year, &b.month, &b.day); printf("相差天数为:"); printf(" %d 天\n", dif(a, b)); }
day2 += d[isLeap(b.year)][i]; day2 += b.day; return day + day2 - day1; }
参考截图:
第 2 题:结构体数组应用
请定义一个描述学生基本信息的结构,包括姓名,学号,籍贯,身份证号,年龄,家庭 住址,性别,联系方式等。并定义一个结构体数组。编程:
为了计算简便,假设用户输入的日期1总是早于日期2。
参考代码:
#include<stdio.h>
struct date {
int year; int month; int day; }; int isLeap(int year); int dif(struct date a, struct date b);
int isLeap(int year) //判断一个年份是否是闰年的函数 {
if(year%400==0 || (year%4==0 && year%100!=0)) return 1;
else return 0;
}
int dif(struct date a, struct date b) {
int i; long day=0, day1=0, day2=0; int d[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,3 1,31,30,31,30,31}}; // day变量为年份a到年份b前一年的年份总天数 for(i=a.year; i<b.year; i++)
void print(struct student stu[])
{
printf("姓名 学号
籍贯
身份证号
年龄 地址 性别 电话
\n");
for(int i=0; i<N; i++)
printf("%-8s%-12s%-10s%-20s%-4d%-10s%-3c%-10s\n", stu[i].name,