搜索
bottom↓
回复: 20

Linux下写的程序,哪里有问题

[复制链接]

出0入0汤圆

发表于 2014-7-6 20:48:11 | 显示全部楼层 |阅读模式
  1. #include <stdio.h>

  2. int fun(int *temp,int i)
  3. {       int num[9];
  4.         while(i--)
  5.         {
  6.                 switch(*temp)
  7.                 {       case 1 :num[0]++;
  8.                         case 2 :num[1]++;
  9.                         case 3 :num[2]++;
  10.                         case 4 :num[3]++;
  11.                         case 5 :num[4]++;
  12.                         case 6 :num[5]++;
  13.                         case 7 :num[6]++;
  14.                         case 8 :num[7]++;
  15.                         case 9 :num[8]++;
  16.                         default:printf("error!");
  17.                 }
  18.         }
  19.         return (num[9]);
  20. }

  21. void main()
  22. {
  23.         int i = 0;
  24.         int temp[100];
  25.         int num[9];
  26.         do
  27.         {
  28.                 scanf("%d",temp+i);
  29.                 i++
  30.         }
  31.         while(temp[i-1]!=0);
  32.         num[9] = fun(temp[],i);
  33.         for(i=0;i<9;i++)
  34.         {
  35.                 printf("%d: %d",i+1,num[i]);
  36.         }
  37. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2014-7-6 20:54:14 | 显示全部楼层
i++没分号

出0入0汤圆

发表于 2014-7-6 20:56:31 | 显示全部楼层
LZ需要一个自动提示错误的编辑器。

出0入0汤圆

发表于 2014-7-6 21:14:48 来自手机 | 显示全部楼层
case没有break,return的num[9]没有赋值。

出0入0汤圆

发表于 2014-7-6 21:25:10 | 显示全部楼层
return (num[8]); 才对

出0入0汤圆

发表于 2014-7-6 21:26:09 | 显示全部楼层
num[8] = fun(temp,i);

出1070入962汤圆

发表于 2014-7-6 21:39:23 | 显示全部楼层
定义的是int num[9],下标从0开始,哪来的num[9] ?

数组下标越界错

出200入657汤圆

发表于 2014-7-7 01:48:09 来自手机 | 显示全部楼层
哈哈哈哈哈哈  笑死了

出200入657汤圆

发表于 2014-7-7 01:49:21 来自手机 | 显示全部楼层
找错大合集啊  我加一个 数组没初始化

出870入263汤圆

发表于 2014-7-7 08:02:00 来自手机 | 显示全部楼层
数组名称只是个标号而已,不可以为整个数组传值的。

出870入263汤圆

发表于 2014-7-7 08:04:05 来自手机 | 显示全部楼层
你这种应用只有通过函数参数把num数组传入函数体,在函数体内填充它,然后退出函数即可

出0入0汤圆

发表于 2014-7-7 08:08:13 来自手机 | 显示全部楼层
mark mark,面试专用题

出0入4汤圆

发表于 2014-7-7 08:27:01 | 显示全部楼层
楼主应该是在自学吧?

出0入0汤圆

发表于 2014-7-7 08:36:33 | 显示全部楼层
本帖最后由 lsx007 于 2014-7-7 08:45 编辑

是在自学,还是面试题呀

出0入0汤圆

发表于 2014-7-7 08:36:48 | 显示全部楼层
本帖最后由 lsx007 于 2014-7-7 08:45 编辑

问题:
1. 数组未初始化   
2. i++缺少分号
3. fun(temp[],i),这里可以传数组的地址,也可以是数组元素的地址,但是传的终究要是地址
4. int  num[9]未初始化
5.  return (num[9]); 越界访问
6.  num[9] = fun(temp[],i); 同样越界

其次,你应该说明这个程序的作用,这个程序是要检测输入数据中 数字0-9的数目么,那就还有逻辑错误了

出0入42汤圆

发表于 2014-7-7 09:27:59 | 显示全部楼层
总的来说, lz对数组的传递存在一些认识误区. 数组是不可以整体拷贝传递的, 通常传递数组首地址(指针). 交给另一方通过指针读写

出0入0汤圆

 楼主| 发表于 2014-7-8 21:47:10 | 显示全部楼层
罗列下你们找到的BUG,然后看看对比看看吧

出0入71汤圆

发表于 2014-7-8 21:58:20 | 显示全部楼层
*** Error 太多,多得编译器自动死机,请重新启动计算机!!

出0入0汤圆

发表于 2014-7-8 23:19:25 | 显示全部楼层
dellric 发表于 2014-7-8 21:58
*** Error 太多,多得编译器自动死机,请重新启动计算机!!

出0入8汤圆

发表于 2014-7-8 23:27:02 | 显示全部楼层
没看出来和Linux有啥关系,这是在展示C语言的坏风格吗?
头像被屏蔽

出0入0汤圆

发表于 2014-7-11 17:55:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 16:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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