々风の彼端く 发表于 2013-4-21 21:46:22

求高手帮我看看!我实在不知道怎么改了!

#include <stdio.h>

void main()
{
        struct student
        {
                int su;
                char *name;
        }ren1 = { 0, "团子大家族"},ren2 = { 0, "死后的世界"},ren3 = { 0, "罪恶王冠"};
        int a;
        char i;
                printf("欢迎大家进入年度最佳动漫投票现场!\n");
        printf("候选动漫有:团子大家族, 死后的世界, 罪恶王冠");
        for(a=1;a<11;a++)
        {
                printf("第%d位投票者请选择你所投票的动漫!:",a);
                scanf("%c",&i);
                if(i==ren1.name)
                {
                        ren1.su++;
                }
                else if(i==ren2)
                {
                        ren2.su++;
                }
                else
                {
                        ren3.su++;
                }

        }
        printf("团子大家族的票数为:%d\n死后的世界的票数为:%d\n罪恶王冠的为:%d\n", ren.su, ren.su, ren.su);
}

熊文杰 发表于 2013-4-21 22:03:25

你想问的是什么?

熊文杰 发表于 2013-4-21 22:08:58

                else if(i==ren2)
                {
                        ren2.su++;
                }
这里楼主少打了一个name
另外,楼主,比较char * 类型 还是用strcmp比较好。

diouf3 发表于 2013-4-21 22:35:40

看看什么个情况!

小亮1201 发表于 2013-4-21 22:49:38

楼主这程序有几个错误,2l已经说了一个,第二个:printf("团子大家族的票数为:%d\n死后的世界的票数为:%d\n罪恶王冠的为:%d\n", ren.su, ren.su, ren.su);
ren1 = { 0, "团子大家族"},ren2 = { 0, "死后的世界"},ren3 = { 0, "罪恶王冠"};
楼主整个程序都没有定义ren数组,输出语句怎么用ren输出呢,第三个:char *name;
char i;
if(i==ren1.name)第四个:我不怎么确定,也说下了。说错了帮我指指。struct student
      {
                int su;
                char *name;
      }ren1 = { 0, "团子大家族"},ren2 = { 0, "死后的世界"},ren3 = { 0, "罪恶王冠"};
指针变量应该先给它申请内存空间然后再使用吧,像楼主这样的指针应该是野指针吧。

熊文杰 发表于 2013-4-21 23:03:15

小亮1201 发表于 2013-4-21 22:49 static/image/common/back.gif
楼主这程序有几个错误,2l已经说了一个,第二个:楼主整个程序都没有定义ren数组,输出语句怎么用ren输出 ...

这位大哥说的最后一个问题 那是一个 是局部变量。

熊文杰 发表于 2013-4-21 23:04:13

小亮1201 发表于 2013-4-21 22:49 static/image/common/back.gif
楼主这程序有几个错误,2l已经说了一个,第二个:楼主整个程序都没有定义ren数组,输出语句怎么用ren输出 ...

第三个问题,貌似楼主没有用到数组把

不能说_-的秘密 发表于 2013-4-21 23:15:01

小亮1201 发表于 2013-4-21 22:49 static/image/common/back.gif
楼主这程序有几个错误,2l已经说了一个,第二个:楼主整个程序都没有定义ren数组,输出语句怎么用ren输出 ...

是啊,i是char是字符型的,name显然是一个字符串,楼主你if中的比较语句是i和name字符和字符串的比较啊所以出错了~~

不能说_-的秘密 发表于 2013-4-21 23:30:17

熊文杰 发表于 2013-4-21 23:04 static/image/common/back.gif
第三个问题,貌似楼主没有用到数组把

那个最后一行引用结构体里成员的应该是ren1.name不是ren.name

不能说_-的秘密 发表于 2013-4-21 23:31:11

不能说_-的秘密 发表于 2013-4-21 23:30 static/image/common/back.gif
那个最后一行引用结构体里成员的应该是ren1.name不是ren.name

错了,是ren1.su

不能说_-的秘密 发表于 2013-4-21 23:38:08

#include <stdio.h>

void main()
{
      struct student
      {
                int su;
                char *name;
      }ren1 = { 0, "tuan"},ren2 = { 0, "sihou"},ren3 = { 0, "zuie"};
      int a;
      char *b;
                printf("欢迎大家进入年度最佳动漫投票现场!\n");
      printf("候选动漫有:团子大家族, 死后的世界, 罪恶王冠\n");
      for(a=1;a<11;a++)
      {
                printf("第%d位投票者请选择你所投票的动漫!:",a);
                scanf("%s",b);
                if(strcmp(*b,ren1.name))
                {
                        ren1.su++;
                }
                else if(strcmp(*b,ren2.name))
                {
                        ren2.su++;
                }
                else
                {
                        ren3.su++;
                }

      }
      printf("团子大家族的票数为:%d\n死后的世界的票数为:%d\n罪恶王冠的为:%d\n", ren1.su, ren2.su, ren3.su);
}
这是根据楼上几位提出的问题修改后的,还是有问题啊,编译没错,可是运行时一输入名字就报错。。。还是没有解决不知道怎么回事 儿。。。大家帮帮忙啊~~

熊文杰 发表于 2013-4-22 00:26:31

下面这个是vs2005里面编译的。
#include "stdafx.h"

#include <stdio.h>
#include <string.h>
int _tmain(int argc, _TCHAR* argv[])
{
                struct student
                {
                        int su;
                        char *name;
                }ren1 = { 0, "团子大家族"},ren2 = { 0, "死后的世界"},ren3 = { 0, "罪恶王冠"};
                int a = 1;

                char b = {0};//这里接收输入的字符
               
                printf("欢迎大家进入年度最佳动漫投票现场!\n");
                printf("候选动漫有:团子大家族, 死后的世界, 罪恶王冠\n");
                for(a=1;a<11;a++)
                {
                        memset(b,0,100);//初始化b中的数据
                        printf("第%d位投票者请选择你所投票的动漫!:",a);
                        scanf("%s",b);

                        if(!strcmp(b,ren1.name))
                        {
                                ren1.su++;
                        }
                        else if(!strcmp(b,ren2.name))
                        {
                                ren2.su++;
                        }
                        else if (!strcmp(b,ren3.name))
                        {
                                ren3.su++;
                        }

                }
                printf("团子大家族的票数为:%d\n死后的世界的票数为:%d\n罪恶王冠的为:%d\n", ren1.su, ren2.su, ren3.su);
                while (1)
                {
                        memset(b,0,100);//初始化b中的数据
                        printf("按q/Q退出:");
                        scanf("%s",b);

                        if (!strcmp(b,"q") || !strcmp(b,"Q"))
                        {
                                return 0;
                        }
                }
                return 0;
       
}

这个没什么问题

熊文杰 发表于 2013-4-22 00:28:27

不能说_-的秘密 发表于 2013-4-21 23:38 static/image/common/back.gif
#include

void main()


你看下编译器会报字符串比较函数找不到‘\0’的错误。用数组把所有内容初始化0,这是最简单的办法,不过个人不建议这样,做好是用string类比较好一点。我把修改后的代码贴出来了

々风の彼端く 发表于 2013-4-22 00:57:22

你的源代码发过来看看!谢谢!

喜欢散步 发表于 2013-4-22 01:42:42

怒力啊, 楼猪。支持你。

1144290241 发表于 2013-4-22 07:59:45

根据lz的想法。struct中的char *name应该改为char name这种形式(max_length应该自己定义)。scanf之后的if else比较应该使用strcmp或者strncmp来进行比较。最后在答应的时候,ren,ren,ren是错误的。你这样写是吧ren当成一个struct数组了,因此这里应该是ren1,ren2,ren3

Samples、懂么 发表于 2013-4-22 08:02:05

亲!贴图片吧!这样好乱

ice87 发表于 2013-4-22 08:49:35

强烈支持楼主ing……

252013680 发表于 2013-4-22 17:20:02

我验证过了 可以用

本帖最后由 252013680 于 2013-4-22 17:21 编辑

//验证过了
#include <stdio.h>
#include <string.h>

void main()
{
      struct student
      {
                int su;
                char *name;
                }ren = { 0, "团子大家族"},ren2 = { 0, "死后的世界"},ren3 = { 0, "罪恶王冠"};
      int a;
      char *i;
                printf("欢迎大家进入年度最佳动漫投票现场!\n");
      printf("候选动漫有:团子大家族, 死后的世界, 罪恶王冠");
      for(a=1;a<11;a++)
      {
                printf("第%d位投票者请选择你所投票的动漫!:",a);
                scanf("%c",&i);
                if(strcmp(i,ren.name))
                {
                        ren.su++;
                }
                else if(strcmp(i,ren.name))
                {
                        ren.su++;
                }
                else
                {
                        ren.su++;
                }

      }
      printf("团子大家族的票数为:%d\n死后的世界的票数为:%d\n罪恶王冠的为:%d\n", ren.su, ren.su, ren.su);
}
/*楼主你学C刚入门吧
还是先去看看数组和结构体~~你主要还是对结构体不够了解~~还有就是对c语言函数库不了解
    你打开书的后面几页   ~~看看里面的库~~~然后去看看例题;最好自己打一遍;这样你再写着程序就不会有问题了*/

熊文杰 发表于 2013-4-24 00:20:19

々风の彼端く 发表于 2013-4-22 00:57 static/image/common/back.gif
你的源代码发过来看看!谢谢!

12楼不就是我发的代码么。。。
页: [1] 2
查看完整版本: 求高手帮我看看!我实在不知道怎么改了!