| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 307 人关注过本帖
标题:比较简单的问题 自己找不出来
只看楼主 加入收藏
xiaoseqingch
Rank: 2
等 级:论坛游民
帖 子:36
专家分:42
注 册:2010-6-19
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:3 
比较简单的问题 自己找不出来
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
struct student
{
char name[10];
int vote;
}stu[20];                                               //定义参选人结构体,包括姓名和所得选票数
struct student  t;                                     //定义中间变量用作排序
int j,k,n,i;                                //定义一些中间变量以作为for循环用
char job[5];                                            //竞选职位
int pan;                                              //最后的是否重来接收输入变量
char vote[200];                                    //以字符串定义了最多200张选票,
int system(const char *string);                          //用作最后重来时清空全部屏幕
label:
printf("输入竞选职务\n");
scanf("%s",&job);                                          //接收职位信息
printf("请输入全部参选人名以数字1结束\n");
for(i=0;i<20;i++)
{
        scanf("%s",&stu[i].name);
        if(strcmp(stu[i].name,"1")==0)                     //接收参选人数信息
        break;
}
for(k=0;k<i;k++)
{
    stu[k].vote=0;                                        //参选人初始票归零
}                                       
printf("输入选票\n");
scanf("%s",&vote);                                    //输入选票以字符串形式如:123124-1241-2  
for(k=0;k<200;k++)                                       //循环接收选票的每个字符
{
    if(vote[k]=='-')                                        //查看是否有'-'
    {
        k+=1;
        vote[k]-='0';                                    //有'-'则读取下一个字符 并转换为数字 该人选票-1
        stu[vote[k]-1].vote-=1;
    }
    else
    {
        vote[k]-='0';
        stu[vote[k]-1].vote+=1;                         //若为正常投票则被选人的票数+1
    }
}
for(k=0;k<i;k++)                                     //冒泡排序法 进行排序
{
    for(j=0;j<i;j++)
    {
        if(stu[j].vote<stu[j+1].vote)
        {
        t=stu[j];
        stu[j]=stu[j+1];
        stu[j+1]=t;
        }
    }
}

printf("获选%s的是%s 票数=%d\n",job,stu[0].name,stu[0].vote);            //输出被选人信息
j=0;
for(k=0;k<i;k++)
{
    printf("%s的票数是%d\n",stu[k].name,stu[k].vote);                    //输出所有参选人信息
    j+=stu[k].vote;
}
printf("总票数是%d\n",j);                                        //统计总票数与实际是否相符

printf("重来请按1?\n");                                         //判断是否重新开始
scanf("%d",&pan);
if(pan==1)
{
system("cls");
goto label;
}
else
{
    exit(0);                                                 //退出程序
}
}






那个输入选票的时候输入 111-1-122等可以正常运行,但是一到有三个减票的时候 就不行了 出错  比如 1111-1-1-1223
求高手解答。。

[ 本帖最后由 xiaoseqingch 于 2012-10-15 18:42 编辑 ]
搜索更多相关主题的帖子: include 结构体 void 
2012-10-15 12:55
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
收藏
得分:7 
printf("输入选票\n");
    scanf("%s",&xuan);
    for(k=0;k<200;k++)
    {
        if(xuan[k]=='-')
        {
            k+=1;
            xuan[k]-='0';
            stu[xuan[k]-1].piao-=1;
        }
        else
        {
            xuan[k]-='0';
            stu[xuan[k]-1].piao+=1;
        }
    }
耐着心把你的代码读完了,还是不太懂上面这几句代码,你要把xuan[200],这两百个字符输满吗?怎么能恰好是满的呢?
for(k=0;k<200;k++) 循环的目的是什么呢?
int j,k,l,n,i,code;  一堆变量不知道是干嘛的!
楼主建议你发帖的时候代码尽量有些注释,否则的话像这么长的代码,很少有人看的!还有你的变量,定义的尽量有点意义,不然的话真可读性真的好差!
2012-10-15 16:58
xiaoseqingch
Rank: 2
等 级:论坛游民
帖 子:36
专家分:42
注 册:2010-6-19
收藏
得分:0 
回复 2楼 小糊涂神c30
代码已修改至您的标准
请批改
2012-10-15 18:43
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:7 
不知道为什么看到这代码,心里有些慌乱.....里面还再使用goto
感觉甚是古远,楼主你还是把代码稍微规范一下

111-1-122等可以正常运行,但是一到有三个减票的时候 就不行了 出错  比如 1111-1-1-1223??
这个还真没有明白是什么意思....
2012-10-15 20:17
快速回复:比较简单的问题 自己找不出来
数据加载中...
 
   



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

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