黑马程序员技术交流社区

标题: 一觉醒来,解决了一个利用do while给数组赋值的问题... [打印本页]

作者: cuin    时间: 2015-6-27 10:17
标题: 一觉醒来,解决了一个利用do while给数组赋值的问题...
本帖最后由 cuin 于 2015-6-27 10:19 编辑

昨天做练习,写出的程序怎么也打不到效果,总是提前结束,一觉醒来忽然灵光一闪,解决了:L,原来我在while里面写的是while (number!=0),但是在do里面执行了++之后,number实际代表了最后一次输入的下一位,也就是一个垃圾数。所以执行不出正确结果!希望大家也引以为戒,下面是改正后的代码



  1. #include <stdio.h>

  2. int main(int argc, const char * argv[]) {
  3.     int number[]={};
  4.     int i=0;
  5.     printf("请输入一串数字,并以0结尾\n");
  6.     do{
  7.         scanf("%d",&number[i]);
  8.         i++;
  9.         //如果定义时候未赋初值,数组里面会存储一些垃圾数,垃圾数里面包含了0
  10.         //如果最后输入的数字为0,才结束循环,由于上一步执行了++操作,所以判断条件变成了i-1
  11.     }while (number[i-1]!=0);
  12.     //输出数组中的值
  13.     for(int j=0;j<i;j++){
  14.     printf("number[%d]=%d\n",j,number[j]);
  15.     }
  16.     return 0;
  17. }
复制代码

作者: timehzy    时间: 2015-6-27 10:26
赞一个,上厕所、睡觉都是解bug的必备技能
作者: 小小羊    时间: 2015-6-27 21:22
是啊,这个要很好利用
作者: 张国繁    时间: 2015-6-27 22:34
学习了!这样也可以啊
作者: 马贺飞    时间: 2015-6-29 00:15
梦里竟然都在学习
作者: zhanghao2744491    时间: 2015-6-29 03:42
那你就天天睡觉就可以了啊
作者: 赵云18235802528    时间: 2015-6-29 07:46
赞一个,赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2