c新手吧 关注:8,590贴子:48,090
  • 9回复贴,共1

求助,编了半天了,都看不出是哪里的问题。

只看楼主收藏回复

我用一个while语句,先设置c=1,while(c),然后下面有一个是输入scanf的选择,若是2会从switch语句的case 2里将c=0,但是现在是按照另外一个功能输出了。


IP属地:广西1楼2017-12-15 00:18回复
    源代码
    #include <stdio.h>
    #define N 10
    #include <string.h>
    typedef struct
    {
    char name[N];
    char sex[N];
    char adress[N];
    int old,number,math,phy,pro;
    }student;
    student grp[50];
    void main()
    {
    int i,x,c=1,j,choice,k;
    // float allmath,allphy,allpro,average,pass;
    char a[N],b[N], xingming[N]={"yangxu"},mima[N]={"1042"};
    for(i=0;i<3;i++)
    { printf("请输入账号:");
    scanf("%s",&a);
    printf("请输入密码:");
    scanf("%s",&b);
    if((strcmp(xingming,a))||(strcmp(mima,b)))
    {
    printf("账号或密码错误!");continue;
    }
    else {
    printf("登陆成功!");i=3;
    }
    {
    while(c)
    {
    printf("功能导航\n[1]录入信息\n[2]退出\n");
    scanf("%d",&x);
    switch(x)
    {
    case 1:
    {for(j=0;j<100;j++)
    {
    printf("请输入学员信息:\n学号 ");
    scanf("%d",&grp[j].number);
    printf("姓名 ");
    scanf("%s",&grp[j].name);
    printf("性别 ");
    scanf("%s",&grp[j].sex);
    printf("年龄 ");
    scanf("%d",&grp[j].old);
    printf("籍贯 ");
    scanf("%s",&grp[j].adress);
    printf("数学成绩 ");
    scanf("%d",&grp[j].math);
    printf("物理成绩 ");
    scanf("%d",&grp[j].phy);
    printf("程序成绩 ");
    scanf("%d",&grp[j].pro);
    printf("[1]继续录入\n[2]退出\n");
    scanf("%d",&choice);
    switch(choice)
    {case 1: break;
    case 2: for(k=0;k<j+1;k++)
    printf("学号 %d\n姓名 %s\n性别 %s\n年龄 %d\n籍贯 %s\n数学成绩 %d\n物理成绩 %d\n程序成绩 %d\n",grp[k].number,grp[k].name,grp[k].sex,grp[k].old,grp[k].adress,grp[k].math,grp[k].phy,grp[k].pro);
    printf("一共输入了%d名学生",j+1);
    };break;
    case 2:c=0;}break;
    }
    }
    }
    }
    }
    }


    IP属地:广西2楼2017-12-15 00:19
    回复
      Emmmmmm,按道理来说这书上会讲的吧。
      这是因为你输入2后还要回车,2被读取后那个回车还在,所以下一次读取时就读取了这个回车,导致输入被跳过了。


      IP属地:安徽来自iPhone客户端3楼2017-12-15 12:20
      收起回复
        等等,我好像看错了。。。。。。。。


        IP属地:安徽来自iPhone客户端4楼2017-12-15 12:22
        回复
          仔细看了一下,是case 2放错位置了


          IP属地:安徽来自iPhone客户端5楼2017-12-15 12:31
          收起回复
            做完作业才有空,回复晚了一点


            IP属地:安徽来自iPhone客户端6楼2017-12-15 20:03
            收起回复