| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 719 人关注过本帖
标题:程序编译正确,运行不正常,请各位看看,谢啦。。。
只看楼主 加入收藏
zcs34989
Rank: 2
等 级:论坛游民
帖 子:34
专家分:34
注 册:2011-8-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
程序编译正确,运行不正常,请各位看看,谢啦。。。
图片附件: 游客没有浏览图片的权限,请 登录注册
代码如下:编译能通过,运行不正常,输入数值的时候没输入完就结束了,究竟什么原因??
程序代码:
#include <stdio.h>
#define N 5
struct student
{
    int num;
    char name[20];
    char sex;
    int score;
};
int main(void)
{
    struct student stu[N];
    int i, Count_m = 0, Count_f = 0;
    for(i=0; i<N; ++i)
    {
        printf("Information No.%d\n", i+1);
        printf("Enter Num&Name:\n");
        scanf("%d%s", &stu[i].num, &stu[i].name);    /*输入学号和姓名*/
        printf("Enter sex&score:\n");
        scanf("%d%c", &stu[i].score, &stu[i].sex);    /*输入成绩和性别*/
        getchar();
    }
     for(i=0; i<N; ++i)
     {
         if(stu[i].sex == 'M'||stu[i].sex == 'm')    /*计算男生和女生的人数*/
             Count_m++;
         else
             Count_f++;
         if(stu[i].score > 85)                        /*分数大于85,输出名字和分数*/
         {
             printf("Name is %s\nScore is %d\n", stu[i].name, stu[i].score);
         }
     }
    printf("boys = %d, girls = %d\n", Count_m, Count_f);
    return 0;
}

搜索更多相关主题的帖子: 看看 
2012-02-22 21:51
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:8 
程序代码:
#include <stdio.h>
#define N 5
struct student
{
    int num;
    char name[20];
    char sex;
    int score;
};
int main(void)
{
    struct student stu[N];
    int i, Count_m = 0, Count_f = 0;
    for(i=0; i<N; i++)                                                  // ++i --->  i++
    {
        printf("Information No.%d\n", i+1);
        printf("Enter Num&Name:\n");
        scanf("%d%s", &stu[i].num, stu[i].name);    /*输入学号和姓名*/                             //这里面&stu[i].name  改为 stu[i].name
        printf("Enter score&sex:\n");
        scanf("%d %c", &stu[i].score, &stu[i].sex);    /*输入成绩和性别*/
        getchar();
    }
     for(i=0; i<N; i++)                                                          //++i ---> i++
     {
         if(stu[i].sex == 'M'||stu[i].sex == 'm')    /*计算男生和女生的人数*/
             Count_m++;
         else
             Count_f++;
         if(stu[i].score > 85)                        /*分数大于85,输出名字和分数*/
         {
             printf("Name is %s\nScore is %d\n", stu[i].name, stu[i].score);
         }
     }
    printf("boys = %d, girls = %d\n", Count_m, Count_f);
    return 0;
}   运行正常...
2012-02-22 22:06
zcs34989
Rank: 2
等 级:论坛游民
帖 子:34
专家分:34
注 册:2011-8-17
收藏
得分:0 
回复 2楼 巴克
改了还是不行啊   还是一样
为什么要去掉stu[i].name这里的 ‘& ’

[ 本帖最后由 zcs34989 于 2012-2-22 22:13 编辑 ]

[fly]努力攻下C语言[/fly]
2012-02-22 22:11
落红有情
Rank: 2
等 级:论坛游民
帖 子:11
专家分:27
注 册:2012-2-20
收藏
得分:8 
printf("Enter sex&score:\n");
        scanf("%d%c", &stu[i].score, &stu[i].sex);    /*输入成绩和性别*/
这是你自己写的你所要求的输入是什么顺序? sex&score   "%d%c
2012-02-22 22:20
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:0 
怎么会...这是N为3 的运行结果.
图片附件: 游客没有浏览图片的权限,请 登录注册

去掉 & 是因为stu[i].name就是地址不需要 &这个地址运算符
2012-02-22 22:23
zcs34989
Rank: 2
等 级:论坛游民
帖 子:34
专家分:34
注 册:2011-8-17
收藏
得分:0 
回复 4楼 落红有情
顺序是我后来改的。  但是修改后,后面那几个输入还是出现一样问题

[fly]努力攻下C语言[/fly]
2012-02-22 22:23
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:0 
scanf("%d %c", &stu[i].score, &stu[i].sex);    /*输入成绩和性别*/
注意 %d  和%c 之间的空格
2012-02-22 22:24
snakelazixp
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2012-2-13
收藏
得分:4 
代码可以正常运行,但是楼主的代码没有达到预期的目标,附上图片楼主自己看吧,我就不解释了。。。
sex的值没有被附上。。。所以后面的计数器就计数错误了。。。
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

2012-02-22 22:30
zcs34989
Rank: 2
等 级:论坛游民
帖 子:34
专家分:34
注 册:2011-8-17
收藏
得分:0 
回复 5楼 巴克
复制了你的代码运行正常了,但我那个运行不行,  谢谢啦

[fly]努力攻下C语言[/fly]
2012-02-22 22:30
snakelazixp
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2012-2-13
收藏
得分:0 
代码改了一下就可以正常运行了
程序代码:
#include <stdio.h>
#include<string.h>
#define N 2
struct student
{
    int num;
    char name[20];
    char sex;
    int score;
};
int main(void)
{
    struct student stu[N];
    int i, Count_m = 0, Count_f = 0;
    for(i=0; i<N; ++i)
    {
        printf("Information No.%d\n", i+1);
        printf("Enter Num&Name:\n");
        scanf("%d%s", &stu[i].num, &stu[i].name);    /*输入学号和姓名*/
        printf("Enter sex&score:\n");
        scanf("%d", &stu[i].score);    /*输入成绩和性别*/
        getchar();
        scanf("%c",&stu[i].sex);
        getchar();
    }
     for(i=0; i<N; ++i)
     {
         //if(strcmp(stu[i].sex,"M")==0)
         if(stu[i].sex == 'M'||stu[i].sex == 'm')    /*计算男生和女生的人数*/
             Count_m++;
         else
             Count_f++;
         if(stu[i].score > 85)                        /*分数大于85,输出名字和分数*/
         {
             printf("Name is %s\nScore is %d\n", stu[i].name, stu[i].score);
         }
     }
    printf("boys = %d, girls = %d\n", Count_m, Count_f);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-02-22 22:51
快速回复:程序编译正确,运行不正常,请各位看看,谢啦。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039294 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved