关于#c语言#的问题:编译完之后不输入直接结束运行了把遍历的循环删除之后就能成功输入这个循环有什么问题吗#include <stdio.h>

编译完之后不输入直接结束运行了
把遍历的循环删除之后就能成功输入
这个循环有什么问题吗

#include 
#include 

int main()
{
     int r,y,g;
     int n;
     int k[n],t[n];
     int sum=0;
     scanf("%d %d %d",&r,&y,&g);//输入红黄绿灯时间
     scanf("%d",&n);//经过路口和红绿灯次数
      int i;
     for(i=0;iscanf("%d",&k[i]);//4种情况
        scanf("%d",&t[i]);//所需时间
     }
      for(i=0;i// 遍历
        if(k[i]==0){
            sum+=t[i];
        }
        if(k[i]==1){
            if(t[i]>r){
                sum+=0;
            }
            else{
                sum+=t[i];
            }
        }
        if(k[i]==2){
            if(t[i]>y){
                sum+=0;
            }
            else{
                sum+=t[i]+r;
            }
        }
        if(k[i]==3){
           sum+=0;
        }

        else{
            sum+=0;
        }

     }

     printf("%d",sum);
     return 0;

}

  • 把数组的定义放到 scanf输入n 的下面
scanf("%d",&n);//经过路口和红绿灯次数
int k[n],t[n];

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/380062
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言为什么只需要包含stdio.h就能使用里面声明的函数?
  • 除此之外, 这篇博客: c语言标准库详解(二):stdio.h之格式化输出中的 其他函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    int vprintf(const char *format, va_list arg) 
    int vfprintf(FILE *stream, const char *format, va_list arg) 
    int vsprintf(char *s, const char *format, va_list arg) 

    vprintf、vfprintf、vsprintf 这 3 个函数分别与对应的 printf 函数等价,但它们用 arg 代替了可变参数表。arg 由宏 va_start 初始化,也可能由 va_arg 调用初始化。详细信息之后对<stdarg.h>头文件的讨论会涉及。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^