你能告诉我为什么这个C程序没有按预期工作吗?

时间:2013-07-19 13:20:09

标签: c io scanf

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int t,k,n,i;
    int height[20000];
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&k,&n);
        for(i = 0; i < n; i++) scanf("%d",&height[i]);
        for(i = 0; i < n; i++) printf("%d\n",height[i]);
    }
    return 0;

}

输入:
 1
 3 1
2 5 4
 我期待输出为2 2 5 4,但我得到的输出为2 2请帮助

4 个答案:

答案 0 :(得分:2)

在您的输入中,您将t设置为1,将k设置为3,将 n设置为1 。所以你的for之后只执行一个循环。 “5”和“4”甚至没有从输入中扫描。

答案 1 :(得分:0)

仔细阅读您的代码。 输入后:

t= 1
k= 3
n= 1

然后你在n = 1上进行循环,所以它读取一个整数:

height[0] = 2

5和4被省略,

然后打印2。

k未使用...

答案 2 :(得分:0)

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int t,k,n,i;
    int height[20000];
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d %d",&k,&n);
        printf("value of k is %d\nvalue of n is %d\n",k,n);

根据您的输入N是1

for(i = 0; i < n; i++) 
   scanf("%d",&height[i]);

**i<n condition is wrong here it wont let more than 1 value to get scanned for n=1**

   for(i = 0; i < n; i++) 
       printf("%d\n",height[i]);
}
            return 0;
}

答案 3 :(得分:0)

改变你的代码:

while(t--)
    {
        scanf("%d%d",&k,&n);
        for(i = 0; i < k; i++) scanf("%d",&height[i]);
        for(i = 0; i < k; i++) printf("%d\n",height[i]);
    }

它将按预期工作。 顺便说一句,为什么你只使用n但得到k和n?没有道理。