几个问题:
1、电话和密码用 long int长度可能不够,容易越界出错,建议用char[],长度自定。
2、while(b!=c)里面,b、c显然是char[],直接 b!=c没有意义,比较的是地址而不是值,它们不会相等。应该用 strcmp(b, c)!=0;
3、stu[n+i]mima定义为long int, stu[n+i]mima = b只是赋b的地址到密码,而不是值。应该把密码先定义为char[], 然后通过 strcpy(stu[n+i]mima, b)赋值。
4、因为用到字符串函数,应该包括头文件 stringh。
最终代码如下:
#include <stringh>typedef struct
{
char num[50];
char name[50];
char sex[50];
char classroom[50];
char dormitory[50];
char phone[20];
char mima[20];
} Student;
Student stu[99];
while(sign!='n' && sign!='N')
printf("请输入你的学号:\n");
scanf("%s",stu[n+i]num);
printf("请输入你的姓名\n");
scanf("%s",stu[n+i]name);
printf("性别:\n");
scanf("%s",stu[n+i]sex);
printf("请输入你的班级\n");
scanf("%s",stu[n+i]classroom);
printf("请输入你的宿舍地址\n");
scanf("%s",stu[n+i]dormitory);
printf("请输入你的电话号码:\n");
scanf("%s",stu[n+i]phone);
printf("请输入你的密码:\n");
scanf("%s",stu[n+i]mima);
printf("请再次输入你的密码:\n");
scanf("%s",c);
while(strcmp(b, c)!=0)
{
printf("密码输入不一致,请重新输入密码!\n");
printf("请输入你的密码:\n");
scanf("%s",b);
printf("请再次输入你的密码:");
scanf("%s",c);
}
strcpy(stu[n+i]mima, b);
printf("是否继续输入(Y/N):\n");
scanf("%s",&sign);
i++;
}
c语言的语句结束标志是分号。在C语言中分号“;”用于结束一个语句,就如同平日常用的句号“。”作用一样。
C程序是由C语言写的,能完成特定功能的一套完整的指令。组成这些指令的基本元素,称为语句。一个C程序必须要有头文件、一个主程序,主程序必须要以‘{’开头,以‘}’结尾。
两者之间是语句文本。每行语句必须以‘;’分号结尾。注意,所有标点必须用英文标点,如果用中文标点的话,程序会报错。
程序中有时候会有双斜线‘//’,这是单行注释符,它的右边的语句仅仅起注释作用,不会被执行;
此外,还有多行注释符‘/’和‘/’,这两个符号中间的内容不会被执行。
扩展资料
C语言 while(表达式)后面是没有分号的,如果不小心加上分号,系统也不会出现编译错误,但是程序却会不停的执行空 *** 作,形成空循环体,无法执行“while(表达式);”后面的程序,得不到预计的效果。例如,在累加求和的程序中while循环加上分号产生错误。
在do…while循环语句中while后面是有分号的,与普通的语句一样,这个分号是用来结束语句的。如果遗漏了这个分号,程序不会通过编译进而产生错误。
因此,在用do…while循环语句时,不要忘记在while的后面加上分号,即使忘记了,编译器也会有所提示,而不会产生不可预见的错误。
注意:分号在do…while语句中代表一条语句的结束,并不代表循环体的结束。
a
=
0;
++a
<=
100
第一次while循环a=1所以总共执行100次
如果是a++
<=
100
则第一次a
=
0,执行101次了
systemoutprint();打印不换行
"\t"制表符,增加tab空格
systemoutprintln();
是打印换行就是说当a在同一行打印了九个之后就另起一行再打印
以上就是关于c语言为什么while运行到一半就不运行了全部的内容,包括:c语言为什么while运行到一半就不运行了、c语言什么符号代表不运行、java,while循环就执行了一次不执行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)