结构体相关问题
#include<stdio.h>#include<string.h>
main()
{
int i;
char input;
struct Student
{
char num;
char name;
char sex;
int score;
};
struct Student student1={"MZ441426","Mike","Male",516};
printf("该考生编号为:%s\n",student1.num);
printf("请问您要查询什么?\n(输入name查询姓名,输入sex查询性别,输入score查询成绩,输入No或no停止查询。)\n");
while(1)
{
scanf("%s",input);
for (i=0;i>=0;i++)
{
if (strcmp(input,"name")==0)
{printf("该考生姓名为%s\n接下来查询?\n",student1.name);break;}
if (strcmp(input,"sex")==0)
{printf("该考生性别为%s\n接下来查询?\n",student1.sex);break;}
if(strcmp(input,"score")==0)
{printf("该考生成绩为%d\n接下来查询?\n",student1.score);break;}
}
if(strcmp(input,"No")==0||strcmp(input,"no")==0)
{printf("感谢您的使用!\n");break;}
}
}
代码如上,是正确的,但是当我输入no时,要挺久才能打印出感谢您的使用这句话,请问是为啥,我用了两个编译器都是这样 程序是按顺序跑的,你想输入no能快点出来就把关于no的if语句放在前面 你的代码写的也有问题,for (i=0;i>=0;i++)这句为啥不改成判断键盘有没有输入 tian1234 发表于 2021-1-4 17:33
你的代码写的也有问题,for (i=0;i>=0;i++)这句为啥不改成判断键盘有没有输入
那请问怎么改呢? 905853663 发表于 2021-1-4 18:22
那请问怎么改呢?
#include<stdio.h>
#include<string.h>
int main(void)
{
int i;
char input;
struct Student
{
char num;
char name;
char sex;
int score;
};
struct Student student1={"MZ441426","Mike","Male",516};
printf("该考生编号为:%s\n",student1.num);
printf("请问您要查询什么?\n(输入name查询姓名,输入sex查询性别,输入score查询成绩,输入No或no停止查询。)\n");
while(1)
{
scanf("%s",input);
if(input!=0)
{
if (strcmp(input,"name")==0)
{printf("该考生姓名为%s\n接下来查询?\n",student1.name);continue;}
if (strcmp(input,"sex")==0)
{printf("该考生性别为%s\n接下来查询?\n",student1.sex);continue;}
if(strcmp(input,"score")==0)
{printf("该考生成绩为%d\n接下来查询?\n",student1.score);continue;}
}
if(strcmp(input,"No")==0||strcmp(input,"no")==0)
{printf("感谢您的使用!\n");continue;}
}
} 循环改判断,break改成continue 等的时间长,问题出在for循环上了
for (i=0;i>=0;i++)i,这个for循环,i初值为0,若输入的不是姓名、性别、成绩,那么就不会遇到break,i会从0一直加到溢出变为负数,才跳出循环。完全可以不要这个for循环
while(1)
{
scanf("%s",input);
if (strcmp(input,"name")==0)
printf("该考生姓名为%s\n接下来查询?\n",student1.name);
else if (strcmp(input,"sex")==0)
printf("该考生性别为%s\n接下来查询?\n",student1.sex);
else if(strcmp(input,"score")==0)
printf("该考生成绩为%d\n接下来查询?\n",student1.score);
else if(strcmp(input,"No")==0||strcmp(input,"no")==0)
{
printf("感谢您的使用!\n");
break;
}
} tian1234 发表于 2021-1-5 09:04
#include
#include
int main(void)
这样貌似差别不大吧。。应该都可以吧? sunrise085 发表于 2021-1-5 10:27
等的时间长,问题出在for循环上了
for (i=0;i>=0;i++)i,这个for循环,i初值为0,若输入的不是姓名、性别 ...
好的,懂了 905853663 发表于 2021-1-5 11:22
好的,懂了
问题解决了,请给评一个最佳答案。
页:
[1]