鱼C论坛

 找回密码
 立即注册
查看: 2705|回复: 9

求助,一道例题~~~电脑不知道怎么回事不能悬赏,不好意思

[复制链接]
发表于 2015-8-25 22:26:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

void main()
{
        int max1(int ,int ,int ,int);
        struct toupiao
        {
                char *name;
                int num;
        }a[4] = {{"小甲鱼",0},{"苍井空",0},{"松岛枫",0},{"莫丁丁",0}};
        int i,k;
        char *j[10]  ;

        printf("欢迎进入良好公民评选投票系统:()\n\n");
        printf("候选人有:小甲鱼、苍井空、松岛枫、莫丁丁\n\n");

        for (i = 0 ;i < 10 ; i++)
        {
                printf("第 %d 位投票,请写下支持候选人的名字:", i+1);
                scanf("%s", &j[i]);
                printf("\n");

                if(j[i] = "小甲鱼")
                {a[0].num++;}
                if(j[i] = "苍井空")
                {a[1].num++;}
                if(j[i] = "松岛枫")
                {a[2].num++;}
                if(j[i] = "莫丁丁")
                {a[3].num++;}
        }


        printf("%s同学得票数为:%d\n",a[0].name,a[0].num);
        printf("%s同学得票数为:%d\n",a[1].name,a[1].num);
        printf("%s同学得票数为:%d\n",a[2].name,a[2].num);
        printf("%s同学得票数为:%d\n",a[3].name,a[3].num);
        
        k = max1(a[0].num,a[1].num,a[2].num,a[3].num);
        for(i = 0 ;i < 4 ; i++)
        {
                if( k = a[i].num )
                {
                        printf("此次胜利者为:%s\n",a[i].name);
                        break;
                }
        }
}

int max1(int a, int b, int c ,int d)
{
        int t[4] = {a,b,c,d};
        int max, i = 0;
        
        for( ; i<4 ;i++);
        {
                if(max < t[i])
                {
                        max = t[i];
                }
        }

        return max;        
}
代码是这样的

                               
登录/注册后可看大图

求解!!!

但是输出结果却是这样的,那个得票数不对

但是输出结果却是这样的,那个得票数不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-26 08:46:46 | 显示全部楼层
上的一个if(k = a[i].num)  这里代码错误 改为==   还有下面最大的函数,max没有赋初值,把他赋值为a ,即max=a  即可

评分

参与人数 1荣誉 +3 鱼币 +5 贡献 +3 收起 理由
Minhal + 3 + 5 + 3 多多帮助

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-8-26 10:47:21 | 显示全部楼层
if(j[i] = "小甲鱼");在C与C++里面,=这是表示赋值符号,不是比较而比较(==)这样的,在IF里给一个数赋值永远是真的。你可以这样写if(  "小甲鱼" == j[i]);把字符串常量放在左边。右边为变量,你这样把赋值符号与比较==用混了的话。编译器会提醒错误的。还就是变量在声明时最好给他赋一个值,有些编译器会给他的值。但是不确定。自己赋值最好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-26 12:00:54 From FishC Mobile | 显示全部楼层
helehappy 发表于 2015-8-26 08:46
上的一个if(k = a.num)  这里代码错误 改为==   还有下面最大的函数,max没有赋初值,把他赋值为a ,即max= ...

哦哦就是,马虎了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-26 12:01:26 From FishC Mobile | 显示全部楼层
yjip267 发表于 2015-8-26 10:47
if(j = "小甲鱼");在C与C++里面,=这是表示赋值符号,不是比较而比较(==)这样的,在IF里给一个数赋值永 ...

明白了,谢谢回答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-28 14:33:04 | 显示全部楼层
#include <stdio.h>

void main()
{
        int max1(int, int, int, int);
        struct toupiao
        {
                char *name;
                int num;
        }a[4] = { { "小甲鱼", 0 }, { "苍井空", 0 }, { "松岛枫", 0 }, { "莫丁丁", 0 } };
        int i, k;
        char arr[10];

        printf("欢迎进入良好公民评选投票系统:()\n\n");
        printf("候选人有:小甲鱼、苍井空、松岛枫、莫丁丁\n\n");

        for (i = 0; i < 10; i++)
        {
                printf("第 %d 位投票,请写下支持候选人的名字:", i + 1);
                scanf("%s", arr);
                printf("\n");

                if (!(strcmp(arr ,"小甲鱼")))
                {
                        a[0].num++;
                }
                if (!(strcmp(arr, "苍井空")))
                {
                        a[1].num++;
                }
                if (!(strcmp(arr, "松岛枫")))
                {
                        a[2].num++;
                }
                if (!(strcmp(arr, "莫丁丁")))
                {
                        a[3].num++;
                }
        }


        printf("%s同学得票数为:%d\n", a[0].name, a[0].num);
        printf("%s同学得票数为:%d\n", a[1].name, a[1].num);
        printf("%s同学得票数为:%d\n", a[2].name, a[2].num);
        printf("%s同学得票数为:%d\n", a[3].name, a[3].num);

        k = max1(a[0].num, a[1].num, a[2].num, a[3].num);
        for (i = 0; i < 4; i++)
        {
                if (k = a[i].num)
                {
                        printf("此次胜利者为:%s\n", a[i].name);
                        break;
                }
        }
}

int max1(int a, int b, int c, int d)
{
        int t[4] = { a, b, c, d };
        int max=0, i = 0;

        for (; i<4; i++);
        {
                if (max < t[i])
                {
                        max = t[i];
                }
        }

        return max;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-28 21:53:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-8-28 21:53:51 | 显示全部楼层
Delta 发表于 2015-8-28 14:33
#include

void main()

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-24 14:07:59 | 显示全部楼层
不客气,圣诞快乐!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-30 23:42:49 | 显示全部楼层
Delta 发表于 2015-12-24 14:07
不客气,圣诞快乐!

谢谢,元旦快乐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 16:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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