illvlli 发表于 2019-7-13 19:30:54

写了个投票系统 运行后半段遇未知bug

本帖最后由 illvlli 于 2019-7-17 21:57 编辑

源代码
第57行有输出
第五十八行无输出,部分如下



---------------------------------------------------
姓名                  票数

[ Process completed ( signal 11)- press Enter ]

---------------------------------------------------


爪机编译器


可以执行一个打印函数紧挨着的下一个打印函数却无法执行 直接signal 11就结束了
换了个编译器segmentation fault
有没有dalao啊

illvlli 发表于 2019-7-17 11:34:35

已解决
修复代码:
#include<stdio.h>
#include<string.h>

main()
{
    struct ABCD
    {
      int vote;
      char name;
    } candidate= {{0,"Alice"},{0,"Billy"},{0,"Charles"},{0,"Dick"}};
    printf("候选人名单:\nAlice\tBilly\nCharles\tDick\n");
    printf("输入你支持的候选人\n");
    char a;
    int trigger=0;
    for(int i=0; i<=3; i++,trigger=0)    //修改投票次数
    {
      gets(a);
      for(int b=0; b<=3; b++)
      {
            if(strcmp(a,candidate.name)==0)
            {
                candidate.vote++;
                trigger++;
            }
      }
      if(trigger==0)
      {
            printf("此人不在候选名单,请重新输入\n");
            i--;
      }
    }
    /*****
    *排序*
    *****/
    printf("统计完成:\n");
    char *sort= {&candidate.name,&candidate.name,&candidate.name,&candidate.name};
    int *sort1= {&candidate.vote,&candidate.vote,&candidate.vote,&candidate.vote};
    for(int b=3; b>=0; b--)
    {
      for(trigger=0; trigger<=b&&trigger+1<=b;trigger++)
      {
            if(*sort1<*sort1)
            {
                int *AA;
                char *BB;
                AA=sort1;
                sort1=sort1;
                sort1=AA;
                BB=sort;
                sort=sort;
                sort=BB;
            }
      }
    }
    /********
    *输出结果*
    ********/
    printf("姓名\t\t票数\n");
    int d;
    for(d=0; d<=3; d++)
    {
      printf("%s\t\t%d\n",sort,*sort1);
    }
    printf("输出完毕");
    getchar();
}
原代码出现的bug:
    1排序的冒泡算法取到了sort以外,到了sort
    2最后的输出函数第一个指针是字符指针,加了"*"取值符

排序里面的trigger变量是懒得再定义一个新变量直接在上面扒了一个下来
希望其他人不要犯这样的错误,卡这个bug卡了3天呐
页: [1]
查看完整版本: 写了个投票系统 运行后半段遇未知bug