本帖最后由 cuin 于 2015-6-27 10:19 编辑
昨天做练习,写出的程序怎么也打不到效果,总是提前结束,一觉醒来忽然灵光一闪,解决了:L,原来我在while里面写的是while (number!=0),但是在do里面执行了++之后,number实际代表了最后一次输入的下一位,也就是一个垃圾数。所以执行不出正确结果!希望大家也引以为戒,下面是改正后的代码
- #include <stdio.h>
- int main(int argc, const char * argv[]) {
- int number[]={};
- int i=0;
- printf("请输入一串数字,并以0结尾\n");
- do{
- scanf("%d",&number[i]);
- i++;
- //如果定义时候未赋初值,数组里面会存储一些垃圾数,垃圾数里面包含了0
- //如果最后输入的数字为0,才结束循环,由于上一步执行了++操作,所以判断条件变成了i-1
- }while (number[i-1]!=0);
- //输出数组中的值
- for(int j=0;j<i;j++){
- printf("number[%d]=%d\n",j,number[j]);
- }
- return 0;
- }
复制代码 |
|