【问题标题】:Can you please tell why doesn't this C program works as expected?你能告诉我为什么这个 C 程序不能按预期工作吗?
【发布时间】:2013-07-19 13:20:08
【问题描述】:
#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
5
4
但我得到的输出为
2
请帮助

【问题讨论】:

  • 不清楚你在什么环境下编程,但至少你可以使用一些printf进行简单的调试(输出你刚刚读到的scanf看看是不是你期望)。
  • 如果 t 和 n 等于 1 意味着循环只会执行一次。
  • 像这样使用 --> 运算符:while(t --> 0)
  • @chux 啊好吧,没意识到(反正我从来不用scanf

标签: c io scanf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    更仔细地阅读您的代码。 在您输入之后:

    t= 1
    k= 3
    n= 1
    

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

    height[0] = 2
    

    5和4省略,

    然后打印 2。

    k 没有使用...

    【讨论】:

      【解决方案3】:
      #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&lt;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;
      }
      

      【讨论】:

      • 所以基本上根据您要扫描的值的数量来更改 n 的值。
      【解决方案4】:

      像这样改变你的代码:

      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 ?这是没有意义的。

      【讨论】:

        猜你喜欢
        • 2015-09-12
        • 1970-01-01
        • 1970-01-01
        • 2016-04-24
        • 1970-01-01
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        相关资源
        最近更新 更多