鱼C论坛

 找回密码
 立即注册
查看: 3503|回复: 24

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

[复制链接]
发表于 2013-4-21 21:46:22 | 显示全部楼层 |阅读模式
5鱼币
#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[0].su, ren[1].su, ren[2].su);
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-21 22:03:25 | 显示全部楼层
你想问的是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-21 22:08:58 | 显示全部楼层
                else if(i==ren2)
                {
                        ren2.su++;
                }
这里楼主少打了一个name
另外,楼主,比较char * 类型 还是用strcmp比较好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-21 22:35:40 | 显示全部楼层
看看什么个情况!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-21 22:49:38 | 显示全部楼层
楼主这程序有几个错误,2l已经说了一个,第二个:
  1. printf("团子大家族的票数为:%d\n死后的世界的票数为:%d\n罪恶王冠的为:%d\n", ren[0].su, ren[1].su, ren[2].su);
  2. ren1 = { 0, "团子大家族"},ren2 = { 0, "死后的世界"},ren3 = { 0, "罪恶王冠"};
复制代码
楼主整个程序都没有定义ren数组,输出语句怎么用ren[X]输出呢,第三个:
  1. char *name;
  2. char i;
  3. if(i==ren1.name)
复制代码
第四个:我不怎么确定,也说下了。说错了帮我指指。
  1. struct student
  2.         {
  3.                 int su;
  4.                 char *name;
  5.         }ren1 = { 0, "团子大家族"},ren2 = { 0, "死后的世界"},ren3 = { 0, "罪恶王冠"};
复制代码
指针变量应该先给它申请内存空间然后再使用吧,像楼主这样的指针应该是野指针吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-21 23:03:15 | 显示全部楼层

这位大哥说的最后一个问题 那是一个 是局部变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-21 23:04:13 | 显示全部楼层
小亮1201 发表于 2013-4-21 22:49
楼主这程序有几个错误,2l已经说了一个,第二个:楼主整个程序都没有定义ren数组,输出语句怎么用ren[X]输出 ...

第三个问题,貌似楼主没有用到数组把
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-21 23:15:01 | 显示全部楼层
小亮1201 发表于 2013-4-21 22:49
楼主这程序有几个错误,2l已经说了一个,第二个:楼主整个程序都没有定义ren数组,输出语句怎么用ren[X]输出 ...

是啊,i是char是字符型的,name显然是一个字符串,楼主你if中的比较语句是i和name字符和字符串的比较啊所以出错了~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-21 23:30:17 | 显示全部楼层
熊文杰 发表于 2013-4-21 23:04
第三个问题,貌似楼主没有用到数组把

那个最后一行引用结构体里成员的应该是ren1.name不是ren[1].name
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-21 23:31:11 | 显示全部楼层
不能说_-的秘密 发表于 2013-4-21 23:30
那个最后一行引用结构体里成员的应该是ren1.name不是ren[1].name

错了,是ren1.su
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
}
这是根据楼上几位提出的问题修改后的,还是有问题啊,编译没错,可是运行时一输入名字就报错。。。还是没有解决不知道怎么回事 儿。。。大家帮帮忙啊~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[100] = {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;
       
}

这个没什么问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-22 00:28:27 | 显示全部楼层
不能说_-的秘密 发表于 2013-4-21 23:38
#include

void main()

你看下编译器会报字符串比较函数找不到‘\0’的错误。用数组把所有内容初始化0,这是最简单的办法,不过个人不建议这样,做好是用string类比较好一点。我把修改后的代码贴出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-22 00:57:22 | 显示全部楼层
你的源代码发过来看看!谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-22 01:42:42 | 显示全部楼层
怒力啊, 楼猪。支持你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-22 07:59:45 | 显示全部楼层
根据lz的想法。struct中的char *name应该改为char name[max_length]这种形式(max_length应该自己定义)。scanf之后的if else比较应该使用strcmp或者strncmp来进行比较。最后在答应的时候,ren[1],ren[2],ren[3]是错误的。你这样写是吧ren当成一个struct数组了,因此这里应该是ren1,ren2,ren3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-22 08:02:05 | 显示全部楼层
亲!贴图片吧!这样好乱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-22 08:49:35 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[3] = { 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[0].name))
                {
                        ren[0].su++;
                }
                else if(strcmp(i,ren[1].name))
                {
                        ren[1].su++;
                }
                else
                {
                        ren[2].su++;
                }

        }
        printf("团子大家族的票数为:%d\n死后的世界的票数为:%d\n罪恶王冠的为:%d\n", ren[0].su, ren[1].su, ren[2].su);
}
/*楼主你学C刚入门吧
还是先去看看数组和结构体~~你主要还是对结构体不够了解~~还有就是对c语言函数库不了解
    你打开书的后面几页   ~~看看里面的库~~~然后去看看例题;最好自己打一遍;这样你再写着程序就不会有问题了*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-24 00:20:19 | 显示全部楼层
々风の彼端く 发表于 2013-4-22 00:57
你的源代码发过来看看!谢谢!

12楼不就是我发的代码么。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 03:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表