鱼C论坛

 找回密码
 立即注册
查看: 2949|回复: 4

C视频54用指针变量编的投票系统求解释

[复制链接]
发表于 2011-10-2 15:16:38 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ZPCG 于 2011-10-3 01:19 编辑
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define NUM 3
  4. #define k 4

  5. struct toupiao
  6. {
  7. char *name;
  8. int num;
  9. }person[k] = {"小甲鱼", 0, "苍井空", 0, "松岛枫", 0, "莫大大", 0};

  10. void main()
  11. {
  12. struct toupiao *pt;
  13. pt = person;
  14. char input[10];
  15. int i, j, m = 0, n = 0, max = 0;
  16. printf("\t\t\t欢迎进入良好公民评选投票系统\n\n");
  17. printf("\t\t候选人有:");
  18. for(j = 0; j < k; j++)
  19. {
  20. printf("%s ", (*(pt+j)).name);
  21. }
  22. printf("\n\n");
  23. for(i = 0; i < NUM; i++)
  24. {
  25. printf("第 %2d 位投票,请写下支持的候选人名字 ", i+1);
  26. scanf("%s", input);
  27. for(j = 0; j < k; j++)
  28. {

  29. if(strcmp((*(pt+j)).name, input) == 0)
  30. n = ++(*(pt+j)).num;
  31. if(max < n)
  32. {
  33. max = n;
  34. m = j;
  35. }
  36. }
  37. }
  38. for(j = 0; j < k; j++)
  39. {
  40. printf("%s 同学得票数为: %d\n", (*(pt+j)).name, (*(pt+j)).num);
  41. }
  42. printf("本次投票活动的胜利者为:%s 共%d票\n", (*(pt+m)).name, max);
  43. }
复制代码

编译通不过有8个错误,这8个错误没法理解啊,求解释!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-2 15:58:07 | 显示全部楼层
本帖最后由 Y.H 于 2011-10-2 16:02 编辑
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define NUM 3 //多几次投票吧,三次决定不了哦。
  4. #define k 4
  5. struct toupiao
  6. {
  7.         char *name;
  8.         int num;
  9. }person[4] = {{"小甲鱼", 0}, {"苍井空", 0}, {"**", 0}, {"江泽明", 0}};       // maoyeye, jiangzeming 被和谐.


  10. void main()
  11. {
  12.         struct toupiao *pt;        
  13.         char input[10];
  14.         int i, j, m = 0, n = 0, max = 0;
  15.         pt = person;        //这里修改了一下,就是把复制调下来了,放在前面复制,导致上面的没有声明。
  16.         printf("\t\t\t欢迎进入良好公民评选投票系统\n\n");
  17.         printf("\t\t候选人有:");
  18.         for(j = 0; j < k; j++)
  19.         {
  20.                 printf("%s ", (*(pt+j)).name);
  21.         }
  22.         printf("\n\n");
  23.         for(i = 0; i < NUM; i++)
  24.         {
  25.                 printf("第 %2d 位投票,请写下支持的候选人名字 ", i+1);
  26.                 scanf ("%s", input);
  27.                 for(j = 0; j < k; j++)
  28.                 {
  29.                         
  30.                         if(strcmp((*(pt+j)).name, input) == 0)
  31.                         {
  32.                                 n = ++(*(pt+j)).num;
  33.                         }
  34.                         if(max < n)
  35.                         {
  36.                                 max = n;
  37.                                 m = j;
  38.                         }
  39.                 }
  40.         }
  41.         for(j = 0; j < k; j++)
  42.         {
  43.                 printf("%s 同学得票数为: %d\n", (*(pt+j)).name, (*(pt+j)).num);
  44.         }
  45.         printf("本次投票活动的胜利者为:%s 共%d票\n", (*(pt+m)).name, max);
  46. }
  47. //另外好像没修改什么地方了.
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-2 18:16:19 | 显示全部楼层

再度亲你我看是非常有必要的!
根据你的回答但还有问题没解决:
       就是键入第一个候选人后,敲回车没反应,也就是输入第二个候选人的提示没出来,停住了,我调试了几次,仍没解决;
     还有,为什么把 pt = person;放在前面会导致i  j等等的没声明呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-2 19:14:41 | 显示全部楼层
本帖最后由 Y.H 于 2011-10-2 19:17 编辑

不会啊,我试了。。。。

QQ截图20111002185419.jpg


大概因为,声明变量与赋值操作的前后顺序吧,

要么在声明的时候就初始化了,

不然可能就是 在单独复制后,在声明别的变量可能出错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-3 01:08:53 | 显示全部楼层
真是太谢谢了,估计你被亲上瘾了,不要急,明天还有其它题目的,请明天注意论坛新贴!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-19 19:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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