C语言,这个编程为什么能输入,不能输出?请帮我看看,改正确。拜托。

#include<stdio.h>#defineSTD_NUM2//学生人数enumE_Sex{MAIL,//0FEMAIL//1};typedefenumE_SexES... #include <stdio.h>

#define STD_NUM 2 //学生人数

enum E_Sex{
MAIL, //0
FEMAIL //1
};

typedef enum E_Sex ESex; //类型别名

char SexStr[2][7]={
"MAIL",
"FEMAIL"
};

struct ST_Date{
int brithdate;
};

typedef struct ST_Date TDate;

struct ST_student{
int Num;
ESex TypeID;
char name;
};

typedef struct ST_student Tstudent;

void F_InputData(Tstudent* pS,TDate* tS);
void F_InputData(Tstudent* pS,TDate* tS){
int k;

printf("输入学号和,姓名,性别,生日,样例如下:\n");
printf("201601 黎明 1 19981223回车\n");
for(k = 0; k < STD_NUM; k++){
scanf("%d", &(pS[k].Num) );
scanf("%s", &(pS[k].name) );
scanf("%s", &(pS[k].TypeID) );
scanf("%d", &(tS[k].brithdate) );
}
}

void F_PrintReport(Tstudent* pS,TDate* tS);
void F_PrintReport(Tstudent* pS,TDate* tS){
int k;

//报表表头
printf(" 学生信息管理\n");
printf("---------------------------------------\n");
printf("%-6s ", " 学号");
printf("%-5s ", " 姓名");
printf("%-5s ", " 性别");
printf("%7s \n", "生日");
printf("---------------------------------------\n");

//内容和统计
for(k = 0; k < STD_NUM; k++) {
printf("%d\t ", pS[k].Num);
printf("%s\t ", pS[k].name);
printf("%s\t ",SexStr[pS[k].TypeID]);
printf("%d\n ", tS[k].brithdate);
}

//表尾部
printf("---------------------------------------\n");
}

int main(int argc, char *argv[]){
Tstudent S[STD_NUM]; //定义一个学生对象(变量)
TDate n[STD_NUM];

F_InputData(S,n); //输入数据(参数是对象数组的入口地址)

F_PrintReport(S,n); //输出报表(参数是对象数组的入口地址)

return 0;
}
展开
 我来答
帐号已注销
2018-12-14 · 超过14用户采纳过TA的回答
知道答主
回答量:37
采纳率:36%
帮助的人:18.8万
展开全部

ESex TypeID;    //这个可改成 int TypelD

scanf("%s", &(pS[k].TypeID) );  //再将%s改成%d ,这样就可以完成你想用的那种方式

还有一处错误就是  生日输入类似 19981212 超过整型范围 可改成字符。

#include <stdio.h>

#define STD_NUM 2 //学生人数 

enum E_Sex{
MAIL, //0
FEMAIL //1
};

typedef enum E_Sex ESex; //类型别名 

char SexStr[2][7]={
"MAIL", 
"FEMAIL"
};

struct ST_Date{
char brithdate[10];
};

typedef struct ST_Date TDate;

struct ST_student{
int Num;
int TypeID;
char name[10];
};

typedef struct ST_student Tstudent;

void F_InputData(Tstudent* pS,TDate* tS);
void F_InputData(Tstudent* pS,TDate* tS){
int k; 

printf("输入学号和,姓名,性别,生日,样例如下:\n");
printf("201601 黎明 1 19981223回车\n");
for(k = 0; k < STD_NUM; k++){
scanf("%d", &(pS[k].Num) );
scanf("%s", &(pS[k].name) ); 
scanf("%d", &(pS[k].TypeID) ); 
scanf("%s", &(tS[k].brithdate) ); 
}
}

void F_PrintReport(Tstudent* pS,TDate* tS);
void F_PrintReport(Tstudent* pS,TDate* tS){
int k; 

//报表表头
printf(" 学生信息管理\n");
printf("---------------------------------------\n"); 
printf("%-6s ", " 学号");
printf("%-5s ", " 姓名");
printf("%-5s ", " 性别");
printf("%7s \n", "生日");
printf("---------------------------------------\n"); 

//内容和统计 
for(k = 0; k < STD_NUM; k++) {
printf("%d\t ", pS[k].Num);
printf("%s\t ", pS[k].name);
printf("%s\t ",SexStr[pS[k].TypeID]);
printf("%s\n ", tS[k].brithdate);
}

//表尾部 
printf("---------------------------------------\n"); 
}

int main(int argc, char *argv[]){
Tstudent S[STD_NUM]; //定义一个学生对象(变量)
TDate n[STD_NUM];

F_InputData(S,n); //输入数据(参数是对象数组的入口地址) 

F_PrintReport(S,n); //输出报表(参数是对象数组的入口地址) 

return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式