标题:简单地结构体编程问题
只看楼主
小代帅帅
Rank: 1
来 自:北京昌平
等 级:新手上路
帖 子:92
专家分:7
注 册:2013-5-11
结帖率:89.66%
已结贴  问题点数:8 回复次数:6 
简单地结构体编程问题
各路大神们,我是一只菜鸟,今天编了一个小程序,发现运行不了,倒是没有错误,有图有真相!请求牛人帮忙啊!先谢谢啦!!

#include<stdio.h>
#include<string.h>
struct People
{
    char name[20];
    int count;
}people_name[3]={"li",0,"zhang",0,"wang",0};

int main()
{
    int i,j;
    char Name[20];
    printf("请输入候选人姓名:\n");
    for(i=1;i<=10;i++)
    {
        scanf("%s",Name[i]);
        for(j=1;j<=3;j++)
            if(strcmp(people_name[j].name,Name[i])==0)
                people_name[j].count++;
    }
    printf("结果为:");
    for(i=1;j<=3;j++)
        printf("%5s,%d",people_name[j].name,people_name[j].count);
    return 0;
}
搜索更多相关主题的帖子: include 结构体 zhang 候选人 count 
2013-11-08 19:31
雨夜梧桐
Rank: 2
等 级:论坛游民
帖 子:63
专家分:89
注 册:2010-6-4
得分:8 
Name[i]不是地址,Name是数组的地址。两种方式可以输入字符串,%s,和循环加%c。
2013-11-08 21:31
小代帅帅
Rank: 1
来 自:北京昌平
等 级:新手上路
帖 子:92
专家分:7
注 册:2013-5-11
得分:0 
回复 2楼 雨夜梧桐
谢谢您的回复,但是我还是不知道怎样修改,我刚才改了一下还是没有成功,您能再帮帮我吗??

别用你的常规和常识来诋毁我卓越的创造力和另类的行为······
2013-11-08 22:26
a151141
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:197
专家分:680
注 册:2012-10-19
得分:0 
#include<stdio.h>
#include<string.h>
struct People
{
    char name[20];
    int count;
}people_name[3]={"li",0,"zhang",0,"wang",0};

int main()
{
    int i,j;
    char Name[20];
    printf("请输入候选人姓名:\n");
    for(i=1;i<=1;i++)
    {
        scanf("%s",Name);            //这将[i]去到,原因如二楼所说,须是数组的首地址
        for(j=0;j<3;j++)            //这里的j=1;改为j=0,相应的j<=3,改为j<3,就不必解释了吧
            if(strcmp(people_name[j].name,Name)==0)        //这里也是
                people_name[j].count++;
    }
    printf("结果为:");
    for(j=0;j<3;j++)        //这里也是j=1;改为j=0,相应的j<=3,改为j<3
        printf("%5s,%d",people_name[j].name,people_name[j].count);
    return 0;
}

世界上幸福的事就是抓到一只羊,更幸福的事就是抓到两只羊……
2013-11-08 22:55
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
得分:0 
Name是数组首元素的地址……
数组首地址是&Name


莫问前尘有愧,但求今生无悔
2013-11-08 22:59
小爸爸
Rank: 2
等 级:论坛游民
帖 子:12
专家分:10
注 册:2013-9-13
得分:0 
老兄,你的这个错误点多啊,首先你的Name错了,应该用scanf("%s",Name);
其次,你的数组也错了,数组都是从0开始的,比如a[0],下面是我给你修改的程序
#include<stdio.h>
#include<string.h>
struct People
{
    char name[20];
    int count;
}people_name[3]={"li",0,"zhang",0,"wang",0};

int main()
{
    int i,j;
    char Name[20];
    printf("请输入候选人姓名:\n");
    for(i=1;i<=10;i++)
    {
        scanf("%s",Name);
        for(j=0;j<=2;j++)
            if(strcmp(people_name[j].name,Name)==0)
                people_name[j].count++;
    }
    printf("结果为:\n");
    for(j=0;j<=2;j++)
        printf("%5s\t%d\n",people_name[j].name,people_name[j].count);
    return 0;
}
2013-11-08 23:18
唐书豪
Rank: 2
等 级:论坛游民
帖 子:28
专家分:52
注 册:2013-5-10
得分:0 
#include<stdio.h>
 #include<string.h>
 struct People
 {
     char name[20];
     int count;
 }people_name[3]={"li",0,"zhang",0,"wang",0};

 int main()
 {
     int i,j;
     char Name[20];
   
         
    for(j=0;j<3;j++)//数组越界
    {
        printf("请输入第%d个候选人姓名:\n",j+1);
        scanf("%s",Name);//问题1
        if(strcmp(people_name[j].name,Name)==0)//数组用的不对
        {
            people_name[j].count++;
        }
    }
   
    printf("结果为:");
   
    for(j=0;j<3;j++)//j = 0
    {
        printf("%5s,%d\n",people_name[j].name,people_name[j].count);
    }
   
    return 0;
 }

看看是你要的效果吗?你这个输入的要和初始化的名字相同,而且顺序也一样,你是不是想用strcpy
2013-11-09 12:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-423248-1-1.html




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

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