为什么输出结果是这个?………………
#include <stdio.h>#include <stdlib.h> /*因为要用strcpy函数,所以要包含头文件stdlib.h。*/
struct student /*定义一个结构体。*/
{
char name; /*姓名。*/
int age; /*年龄。*/
int sex; /*性别。*/
int height; /*身高。 */
};
void main()
{
struct student stu; /*定义一个结构体,表示有50个学生。*/
int i=0; /*输入学生的计数。*/
int j ; /*输出的计数。*/
char s; /*用户输入数据。*/
char name; /*姓名。*/
while(1) /*进入一个while循环。*/
{
printf("input a student?\n?Y/N:"); /*提示用户输入选择。*/
scanf("%c",&s); /*用户输入一个字符。*/
if(s=='N'||s=='n') /*输入N或n则中断循环。*/
{
break; /*中止当前循环。*/
}
if(s!='n'&&s!='N'&&s!='y'&&s!='Y') /*如果不是N、n、Y、y这几个字母则进入下次循环。*/
{
printf("error.\n"); /*输出提示。*/
continue; /*进入下一次循环。*/
}
printf("please input age:\n"); /*提示输入年龄。*/
scanf("%d",&stu.age); /*输入年龄。*/
printf("please input height:\n"); /*提示身高。*/
scanf("%d",&stu.height); /*输入身高。*/
printf("please input sex:\n"); /*提示性别。*/
scanf("%d",&stu.sex); /*输入性别。*/
printf("please input name:\n"); /*提示姓名。*/
scanf("%s",&stu.name); /*输入姓名到name字符串。*/
/*将字符串复制到学生姓名上。*/
i++; /*计数器自加。*/
}
for(j=0;j<i;j++) /*for循环输出。*/
{
printf("Student[%d]\n",j); /*提示第几个学生。*/
printf("Name:%s\n",stu.name); /*输出姓名。*/
printf("Age :%d\n",stu.age); /*输出年龄。*/
printf("Sex :%d\n",stu.sex); /*输出性别。*/
printf("Height:%d\n",stu.height); /*输出身高。*/
}
}
就是输入时:问什么输完一个学生的信息后“printf("error.\n");”都执行了一次? 你的问题,这篇文章应该可以解决:http://blog.csdn.net/xuefu2008/article/details/4645049 自己顶起,谁能给我个准确的说法啊,谢谢啦,上面的那个文章看了,感觉不是那个问题 楼主你的判断条件if(s!='n'&&s!='N'&&s!='y'&&s!='Y') 有问题,应该是||不是&& 回复 3# lihui19891118
楼主,你是没仔细看。输入完名字后,你多弄几个空格看现象,就知道那文章是不是有提到你的问题了。 回复 4# dxwno1
你好好的再看看C语言方面的逻辑判断语句吧,很高兴为我解答, 回复 4# dxwno1
你好好的再看看C语言方面的逻辑判断语句吧,很高兴为我解答, 回复 5# txgc_wm
我又运行了几次发现那个printf("error");语句都比我输入的空格数目多执行一次,那边文章也看了大部分,有些不懂,你能帮我分析下到底是怎么回事吗,谢谢啦 scanf("%s",&stu.name);
这句stu前边不应该添加&符号了吧结构体里你的name已经是一个字符串了,name就是地址,你再加&不就是指针的指针了么 代码i++;之后,添加如下语句setbuf(stdin, NULL);//setbuf用于linux,windows 用fflush(stdin);就是buf缓存的问题,具体的解释参考之前发给你的链接。
页:
[1]