|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码:
- #include <stdo.h>
- #define NAMESIZE 20
- struct std{
- char name[NAMESIZE];
- int age;
- char sex;
- }s[10];
- int main(void){
- int i;
- printf("请输入四名学生的姓名、性别、年龄:\n");
- for(i=0;i<4;i++){
- printf("姓名:\n");
- scanf("%s",&s[i].name);
- printf("性别:\n");
- getchar();
- scanf("%c",&s[i].sex);
- printf("年龄:\n");
- scanf("%d",&s[i].age);
- }
- for(i=0;i<4;i++){
- printf("%s\t%d\t%c\n",s[i].name,s[i].age,s[i].sex);
- return 0;
- }
复制代码
代码可以正常编译执行,结果也符合预期,但有个疑问:输入性别的功能,为什么要同时使用getchar()和scanf?我试过去掉任意一个,当执行到这里时就会跳过去,这是为何?请大佬指点迷津,不胜感谢!
- #include <stdio.h> // 【修改】文件名写错了
- #define NAMESIZE 20
- struct student{ // 【修改】std 是 C++ 保留字
- char name[NAMESIZE];
- int age ;
- char sex ;
- } s[10] ;
- int main(void){
- int i ;
- printf("请输入四名学生的姓名、性别、年龄:\n") ;
- for(i = 0 ; i < 4 ; i ++){
- printf("\n") ;
- printf("姓名:") ;
- scanf("%s" , s[i] . name) ; // 【修改】,s[i] . name 本身就是地址
- printf("性别:") ;
- fflush(stdin) ; // 【修改】,读取单个字符前,清除键盘缓冲区
- scanf("%c" , & s[i] . sex) ;
- printf("年龄:") ;
- scanf("%d" , & s[i] . age) ;
- }
- for(i = 0 ; i < 4 ; i ++) printf("%s\t%d\t%c\n",s[i].name,s[i].age,s[i].sex) ;
- }
复制代码
|
|