马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
struct Date
{
int year;
int month;
int day;
};
struct Record
{
char name[16];
int age;
struct Date first;
struct Date second;
};
struct Record getInput(struct Record record)
{
printf("请问姓名是:");
scanf("%s", record.name);
printf("请问年龄是:");
scanf("%d", &record.age);
printf("请问是否接种过疫苗(Y/N):");
getchar();
if (getchar() != 'Y')
{
record.first.year = 0;
printf("请尽快接种疫苗!\n");
}
else
{
printf("请输入第一针疫苗接种的日期(yyyy-mm-dd):");
scanf("%d-%d-%d", &record.first.year, &record.first.month, &record.first.day);
printf("请问是否接种第二针疫苗(Y/N):");
getchar();
if (getchar() != 'Y')
{
record.second.year = 0;
printf("请尽快接种第二针疫苗!\n");
}
else
{
printf("请输入第二针疫苗接种的日期(yyyy-mm-dd):");
scanf("%d-%d-%d", &record.second.year, &record.second.month, &record.second.day);
}
}
putchar('\n');
return record;
}
void printRecord(struct Record record)
{
printf("姓名:%s,年龄:%d\n", record.name, record.age);
if (record.first.year == 0)
{
printf("未接种疫苗!\n\n");
}
else
{
printf("第一针疫苗接种日期:%d-%d-%d,", record.first.year, record.first.month, record.first.day);
}
if (record.first.year != 0 && record.second.year == 0)
{
printf("未接种第二针疫苗!\n\n");
}
else if(record.first.year != 0)
{
printf("第二针疫苗接种日期:%d-%d-%d\n\n", record.second.year, record.second.month, record.second.day);
}
}
int main(void)
{
struct Record r1, r2, r3;
r1 = getInput(r1);
r2 = getInput(r2);
r3 = getInput(r3);
printRecord(r1);
printRecord(r2);
printRecord(r3);
return 0;
}
问题1 struct Record getInput(struct Record record) 这条函数语句括号里 struct是类型名 形参是Record record吗?? 还是在形参里对结构体Record定义为recor变量了?
问题2 函数getInput中 return的是record,但函数语句里的返回值是Record 为什么?为什么不能 struct record getinput(struct Record record),
结构体函数的参数,返回值,何时定义结构体变量,结构体变量能定义多次不同的名字吗?
这里面,struct Record 均可以被替换为 Record。其含义一样。(除了结构体定义处不能替换)
1. 类型是 struct Record,变量是 record。
2. Record 是返回值的类型。struct Record 的含义与 Record 一样,都是 Record 本身这个类型,但 record 不一样 ,是 Record 类型的一个变量,作为一个参数输入到了函数中。在函数中,该实参被进行了一些操作步骤,最后返回该 record 变量。
|