A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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. }
复制代码

6 个回复

倒序浏览
赞一个,上厕所、睡觉都是解bug的必备技能
回复 使用道具 举报
是啊,这个要很好利用
回复 使用道具 举报
学习了!这样也可以啊
回复 使用道具 举报
梦里竟然都在学习
回复 使用道具 举报
那你就天天睡觉就可以了啊
回复 使用道具 举报
赵云18235802528 来自手机 中级黑马 2015-6-29 07:46:16
7#
赞一个,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马