鱼C论坛

 找回密码
 立即注册
查看: 3115|回复: 5

关于结构体的 视频的 投票系统的实现出了问题

[复制链接]
发表于 2012-3-23 22:28:35 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 Yogurt_lei 于 2012-3-24 07:26 编辑

[i][i][i]#include<stdio.h>
#include<string.h>
struct count
{
        char *name;
        int score;
}str[4]={
        {"Yogurt",0},
        {"Sugar",0},
        {"Swallow",0},
        {"LELE",0}
},temp,*p=str;
void main()
{
        char ch[50];
        int i,j;
        printf("欢迎参加投票!\n");
        printf("有以下的人参加投票:\n");
        printf("Yogurt,Sugar,Swallow,LELE\n");
        printf("请输入你想投票的人!(注意只有十次投票机会.)\n");
        for (i=0,j=0;i < 10;i++)
        {
                memset(ch,'\0',sizeof(ch));
                scanf("%s",ch);
                if(0==strcmp(str[j].name,ch))
                {
                        str[j].score ++;
                        j++;
                }
        }
        for(i=0;i < 4;i++)
        {
                for(j=i+1;j < 4;j++)
                {
                        if(str[j].score > str[i].score)
                        {
                                temp = str[i];
                                str = str[j];
                                str[j] = temp;
                        }
                }
        }
        for(i=0;i < 4;i++)
        {
                printf("%s的得分是:%d\n",p->name,p->score);
                p++;
        }
}
现在结果还是不对 ,,谁来帮帮忙 啊
[/i][/i]

最佳答案

查看完整内容

这个是修改后的代码,希望能对你有帮助。 #include #include struct count { char name[20]; int score; }; void main() { count str[4] = { {"Yogurt",0}, {"Sugar",0}, {"Swallow",0}, {"LELE",0}, }; count *p = str; char ch[50]; int i,j; printf("欢迎参加投票!\n"); printf("有以下的人参加投票:\n"); printf("Yogurt,Sugar,Swallow,LELE\n"); for (i=0 ; i < 1 ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-3-23 22:28:36 | 显示全部楼层
这个是修改后的代码,希望能对你有帮助。


#include<stdio.h>
#include<string.h>

struct count
{
        char name[20];
        int score;       
};

void main()
{
        count str[4] =
        {       
                {"Yogurt",0},
                {"Sugar",0},
                {"Swallow",0},
                {"LELE",0},
        };

        count *p = str;

        char ch[50];
        int i,j;
        printf("欢迎参加投票!\n");
        printf("有以下的人参加投票:\n");
        printf("Yogurt,Sugar,Swallow,LELE\n");
        for (i=0 ; i < 10; i++)
        {
                printf("请输入你想投票的人!(注意只有十次投票机会.)\n");
                scanf("%s",ch);
                for (j = 0; j < 4; j ++)
                if(0==strcmp(str[j].name, ch))
                {
                        str[j].score ++;
                }
        }

        for(i=0;i < 4;i++)
        {
                printf("%s的得分是:%d\n",p->name,p->score);
                p++;
        }
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-24 00:41:58 | 显示全部楼层
头文件最好加上 #include <memory.h>

  printf("%s的得分是:%d\n",p->name,p->name);
最后一个参数错了。。。

程序思维比较混乱。。。结构体干嘛搞得那么复杂咧。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-24 20:35:51 | 显示全部楼层
本帖最后由 醉轩少年 于 2012-3-24 20:40 编辑

// 这部分逻辑出了问题。。。
for (i=0,j=0;i < 10;i++)
        {
                memset(ch,'\0',sizeof(ch)); //这句就不要啦!!
                scanf("%s",ch);  // 输入被投人
                if(0==strcmp(str[j].name,ch)) //问题出在这里。。比较一次之后就进入第二次投票了,如果第一个刚好一样就记录到了,若是后面的 就直接跳过这个比较了。。所以这里应该有个循环来比较四个人。。
                {
                        str[j].score ++;
                        j++;
                }
        }


这是我帮你修改的程序,你看看。。

        for (i=0 ;i < 4;i++)
        {
                printf("请投出您的第%d票,您这一票投给:",i+1);
                scanf("%s",ch);
                j = 0;  //每次投完票之后都是从第一个开始核对是否选中,所以这里要清零
                while(j<4)   //这里进行四个人的匹配
                {
                        if(0==strcmp(str[j].name,ch))
                        {
                                str[j].score ++;   //若相同则票数加 1
                                break;  //跳出循环,进行下一轮投票; 因为被投人不会有两个一样的
                                
                        }

                        j++;
                }
        }


整个程序代码:

#include<stdio.h>
#include<string.h>
struct count
{
char *name;
int score;
}str[4]={
{"Yogurt",0},
{"Sugar",0},
{"Swallow",0},
{"LELE",0}
},temp;
void main()
{
char ch[50];
int i,j;
printf("欢迎参加投票!\n");
printf("有以下的人参加投票:\n");
printf("Yogurt,Sugar,Swallow,LELE\n");
printf("请输入你细想投票的人!(注意只有十次投票机会.)\n");

for (i=0 ;i < 4;i++)
{
  printf("请投出您的第%d票,您这一票投给:",i+1);
  scanf("%s",ch);
  j = 0;
  while(j<4)
  {
   if(0==strcmp(str[j].name,ch))
   {
    str[j].score ++;
    break;
   
   }
   j++;
  }
}

for(i=0;i < 4;i++)
{
  for(j=i+1;j < 4;j++)
  {
   if(str[j].score > str[i].score)
   {
    temp = str[i];
    str[i] = str[j];
    str[j] = temp;
   }
  }
}

for(i=0;i < 4;i++)
{
  printf("%s的得分是:%d\n",str[i][i][i].name,str[i][i].score);
  
}
}

[/i][/i][/i][/i][/i][/i]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-24 20:41:12 | 显示全部楼层
编辑不了哎。。。
最后一句:
printf("%s的得分是:%d\n",str[i].name,str[i].score);
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-24 20:46:57 | 显示全部楼层
我也求啊啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-14 17:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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