QQ登录

只需一步,快速开始

搜索
查看: 98|回复: 4

[已解决]在用for循环给一维数组赋值的时候遇见个挺有意思的小问题 希望大家能帮我看看

[复制链接]
最佳答案
0 
累计签到:3 天
连续签到:2 天
发表于 2017-10-11 22:13:49 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
当时完整的代码如下                              现在把遇见问题的一段单独拿出来看
                                                             for(s=0;s<10;s++)
#include<stdio.h>                                     scanf("%d",&x[s]);
void change(int *a,int n)                    问题是我想让输入一个数后按回车时光标不会到下一行
{                                                          例如 输入10个数:1234567890
        int *p,m,*i,*j,t;                            而不是  输入10个数:1
        m=(n-1)/2;                                                                  2......
        i=a;                                               所以我把代码改了下  就是scanf("%d\n"&x[s]);
        j=a-1+n;                               这时候 就出现了这样的情况
        p=a+m;                                       输入10个数:12
        for(;i<=p;i++,j--){                                             3
                t=*i;                                                           4.....
                *i=*j;                              想知道这是为什么,还有如果我想实现原来的目的应该怎么做呢?
                *j=t;                                
        }
}
int main()
{
        int x[10],s;
        printf("输入10个数:");
        for(s=0;s<10;s++){
          scanf("%d",&x[s]);
}
        change(x,10);
        for(s=0;s<10;s++)
          printf("%d",x[s]);
}
最佳答案
2017-10-12 15:07:49
本帖最后由 BngThea 于 2017-10-12 15:10 编辑

scanf函数会在屏幕打印时换行,所以可以改为
  1. for(s=0;s<10;s++)
  2. {
  3.     scanf("%d",&x[s]);
  4.     getchar();
  5. }
复制代码


但是即便如此,也不能实现连续输入1234567890,因为没有分隔符,系统认为它是一个数,而不是分开看,所以每个数字之间还是需要空格或tab来分隔

如果你一定要达到目的,只能将数组改为char类型,然后用atoi函数将其转换为int也行
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
147 
累计签到:109 天
连续签到:56 天
发表于 2017-10-11 22:16:29 | 显示全部楼层
本帖最后由 丶忘却的年少o 于 2017-10-11 22:19 编辑

就按照原来的代码,输入一个数字用一个tab键或者空格
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
3 
累计签到:16 天
连续签到:1 天
发表于 2017-10-12 09:04:39 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
29 
累计签到:127 天
连续签到:28 天
发表于 2017-10-12 15:07:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 BngThea 于 2017-10-12 15:10 编辑

scanf函数会在屏幕打印时换行,所以可以改为
  1. for(s=0;s<10;s++)
  2. {
  3.     scanf("%d",&x[s]);
  4.     getchar();
  5. }
复制代码


但是即便如此,也不能实现连续输入1234567890,因为没有分隔符,系统认为它是一个数,而不是分开看,所以每个数字之间还是需要空格或tab来分隔

如果你一定要达到目的,只能将数组改为char类型,然后用atoi函数将其转换为int也行
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:3 天
连续签到:2 天
 楼主| 发表于 2017-10-13 09:33:38 | 显示全部楼层
BngThea 发表于 2017-10-12 15:07
scanf函数会在屏幕打印时换行,所以可以改为

谢谢你  很详细呢  多谢多谢
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-10-22 03:36 Powered by Discuz! X2.5 Theme by dreambred

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