| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3448 人关注过本帖
标题:使用数组输出时运行结果不是想要的,不明白哪里出错
只看楼主 加入收藏
小嘉学代码
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-4-13
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
使用数组输出时运行结果不是想要的,不明白哪里出错
代码如下
程序代码:
#include
#include 

int main()
{
    void input(int num[], char name[][10]);
    int a[10];
    char b[10][10];
    input(a, b);
    int j;
    for (j=0; j<10; j++);
    {
        printf("num is %d, name is %s", a[j], b[j]);
       

       

    }
       

}

void input(int num[], char name[][10])
{
    int i;
    for (i=0; i<10; i++)
    {
        printf("please input num:");
        scanf("%d", &num[i]);
        fflush(stdin);
        printf("please input name:");   

        gets(name[i]);
       

    }
}
我想输入编号跟名字然后用printf输出,但运行之后结果却不是想象的那样,会不会是二维数组不能那样用?
搜索更多相关主题的帖子: include 
2016-04-13 21:51
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:2 
fflush(stdin);  /*这是未定义行为*/

如果你想清空缓冲区,可以这样
char c;
while((c=getchar())!='\n')
  ;


未佩好剑,转身便已是江湖
2016-04-13 21:56
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
贴你的输出结果

https://zh.
2016-04-13 21:56
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:2 
回复 2楼 alice_usnet
char c;
是多余的
直接
while(getchar() != '\n')
    ;

就可以了

https://zh.
2016-04-13 21:57
小嘉学代码
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-4-13
收藏
得分:0 
回复 3楼 lin5161678
图片附件: 游客没有浏览图片的权限,请 登录注册

就是这样的
2016-04-13 23:41
小嘉学代码
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-4-13
收藏
得分:0 
回复 2楼 alice_usnet
我测试过不是那个的问题,我之前没用那个也不行,就是运行之后不行,3楼我发了运行结果
2016-04-13 23:44
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
#include<stdio.h>
int main()
{
    void input(int num[], char name[][10]);
    int j;
    int a[10];
    char b[10][10];           
    input(a,b);
    for(j=0;j<10;j++)
    {
        printf("num is %d,name is %s\n",a[j],b[j]);
    }

}
void input(int num[], char name[][10])
{
        int i;
        for (i=0;i<10;i++)
    {
        printf("please input num[%d]=",i);
        scanf("%d", &num[i]);
        fflush(stdin);
        printf("please input name:");  
        gets(name[i]);
    }
   
}
你看看是不是你想要的输出
改过了

[此贴子已经被作者于2016-4-14 01:47编辑过]

2016-04-13 23:46
小嘉学代码
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-4-13
收藏
得分:0 
回复 7楼 linlulu001
你那个代码好像是错的,运行不了
2016-04-13 23:59
zhitongze
Rank: 1
等 级:新手上路
帖 子:24
专家分:6
注 册:2016-4-6
收藏
得分:0 
默默的冒个泡

假如生活给了你一棍子,那么你要小心点,它随时可能会再给你一榔头!
2016-04-14 07:20
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:3 
main函数的for后面多了个分号,导致for语句为空,输出了a[10],b[10].
fflush(stdin)标准是明确说明是未定义行为的,为什么还那么多人用,难道使用库函数前都不查查手册或上网查一下吗?有的人可能觉得一些编译器支持,比如微软,就可以完全不用担心了。有没有想过有一天你的代码也会在别的编译器上编译,在别的平台上运行呢,使用不遵循标准的东西注定是不可移植的。或许只有当出现重大软件事故才会明白当初坚决摒弃标准所不容的东西是多么明智的选择。

未佩好剑,转身便已是江湖
2016-04-14 09:07
快速回复:使用数组输出时运行结果不是想要的,不明白哪里出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033055 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved