VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 291|回复: 15

[求助] 输入一组数据放入数组里,然后我再输出这个数组得值,却得不到我输入的那组数据,why?

[复制链接]
57_avatar_middle
在线会员 发表于 2019-9-23 11:07:03 | 显示全部楼层 |阅读模式
3驿站币
#include <stdio.h>


int main()
{
        int a[10];
        int i, j;
        printf("Input 10 number:\n");
        for (i = 0; i < 10; i++)
        {
                scanf("%d", &a[i]);
        }
        printf("\n");
        for (j = 0; j < 10; j++)
        {
                printf("%5.3d ", a[i]);
        }
        return 0;
}
运行后结果是这样的
Input 10 number:
0
1
2
3
4
5
6
7
8
9

-858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460
E:\VS2017\Project6\Debug\Project6.exe (进程 12368)已退出,返回代码为: 0。
按任意键关闭此窗口...
(编译器是VS2017)求问怎么回事?

评分

参与人数 1驿站币 +1 收起 理由
08_avatar_small SummerGull + 1 请保持代码风格 看着很舒服。

查看全部评分





上一篇:新建的win32出现错误
下一篇:Qt不能再当前代码也表示字符问题
58_avatar_middle
online_vip 发表于 2019-9-23 19:45:37 | 显示全部楼层
  1. #include <stdio.h>


  2. int main()
  3. {
  4.         int a[10];
  5.         int i, j;
  6.      
  7.         for (i = 0; i < 10; i++)
  8.         {
  9.                 scanf("%d",&a[i]);
  10.         }

  11.         for (j = 0; j < 10; j++)
  12.         {
  13.                 printf("%d ", a[j]);    // a[j]
  14.         }
  15.         return 0;
  16. }
复制代码


为什么错误,就不用过多解释了吧,i是在第一个for中赋值的,for结束时,i的值就被清空。

点评

i值不是没有清空 是10 但是超过数组大小了 崩溃了  发表于 2019-9-23 20:25

评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
08_avatar_small SummerGull + 1 + 1 楼主看这里推荐最佳 6#的简洁

查看全部评分

58_avatar_middle
online_vip 发表于 2019-9-23 19:46:53 | 显示全部楼层
大家没有及时答,主要是希望楼主自己先想想,在解决问题的过程中,也会有收获。
08_avatar_middle
在线会员 发表于 2019-9-23 20:03:56 | 显示全部楼层
敏敏 发表于 2019-9-23 19:45
为什么错误,就不用过多解释了吧,i是在第一个for中赋值的,for结束时,i的值就被清空。

为啥你的代码 这么的格式化。我都是挤到一块的
58_avatar_middle
online_vip 发表于 2019-9-23 20:14:14 | 显示全部楼层
SummerGull 发表于 2019-9-23 20:03
为啥你的代码 这么的格式化。我都是挤到一块的

不知道,我是复制他的代码改的。
00_avatar_middle
在线会员 发表于 2019-9-23 20:17:56 | 显示全部楼层
输出的时候把  i改为 j

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small 敏敏 + 2 + 2 言简意赅

查看全部评分

08_avatar_middle
在线会员 发表于 2019-9-23 20:19:50 | 显示全部楼层
本帖最后由 SummerGull 于 2019-9-23 20:23 编辑
敏敏 发表于 2019-9-23 19:45
为什么错误,就不用过多解释了吧,i是在第一个for中赋值的,for结束时,i的值就被清空。


他的想法是
  1. a[i]
复制代码
可能直接复制 或者思路一下子 不清楚了。这里明显的错误 是细节问题。 大致思路没有问题。其实用一个  i  变量就可以了 这里的j变量可以说是多余的。
  1. #include <stdio.h>


  2. int main()
  3. {
  4.         int a[10];
  5.         int i;
  6.         printf("Input 10 number:\n");
  7.         for (i = 0; i < 10; i++)
  8.         {
  9.                 scanf("%d", &a[i]);
  10.         }
  11.         printf("\n");
  12.         for (i = 0; i < 10; i++)
  13.         {
  14.                 printf("%5.3d ", a[i]);
  15.         }
  16.         return 0;
  17. }
复制代码

输入一组数据放入数组里,然后我再输出这个数组得值,却得不到我输入的那组数据,why?

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small 敏敏 + 2 + 2 很给力!

查看全部评分

08_avatar_middle
在线会员 发表于 2019-9-23 20:30:16 | 显示全部楼层
i值没有被。i变量是在 Mian函数作用啊 return之前 是 有效的 最后输出是有 数据的是 超出数组了
应该是这 10个数据吧
输入一组数据放入数组里,然后我再输出这个数组得值,却得不到我输入的那组数据,why? @敏敏

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small 敏敏 + 2 + 2 很给力!

查看全部评分

58_avatar_middle
online_vip 发表于 2019-9-23 20:30:41 | 显示全部楼层
SummerGull 发表于 2019-9-23 20:19
他的想法是 可能直接复制 或者思路一下子 不清楚了。这里明显的错误 是细节问题。 大致思路没有问题。 ...

谢谢提醒,哦对,他i在上面定义的。

点评

谢谢了  发表于 2019-9-24 08:41
84_avatar_middle
在线会员 发表于 2019-9-23 21:08:39 | 显示全部楼层
7楼告诉你答案了,你第一个for结束时,i=10,第二个循环j了,那么输出的第一个就是a[10],超出数组了。给你个建议,如果后续需要输出前边的循环,最好循环变量不要换字符

点评

嗯,还是不够细心  发表于 2019-9-24 08:43
84_avatar_middle
在线会员 发表于 2019-9-24 12:17:19 | 显示全部楼层
如果用同一个的话,只要把里边的需要用到的代码改下就行,还可以少申请一个参数,少占运行,如果以后你写程序特别大,运行个循环给个参数,程序不结束参数不释放,最后会很卡,这只是一种方法,尽量保证数据的重复性和可用性

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small 敏敏 + 2 + 2 谢谢,也帮助了我。

查看全部评分

26_avatar_middle
在线会员 发表于 2019-10-9 22:40:09 | 显示全部楼层
printf("%5.3d ", a[i]);改为printf("%5.3d ", a[j]);试试
26_avatar_middle
在线会员 发表于 2019-10-9 22:41:54 | 显示全部楼层
printf("%5.3d ", a[i]);把a[i]改为a[j],试试。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-10-19 18:56

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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