为什么最后的printf不执行捏,看不到结果

img


为什么最后的printf不执行捏,看不到结果


#include<stdio.h>
int main(){
    int hang,lie,arr[hang][lie];
    scanf("%d %d",&hang,&lie);
    for(int i = 0;i < hang;i++){
        for(int j = 0;j < lie;j++){
            scanf("%d",&arr[i][j]); 
        }
    }
    int max[3] = {0};
    for(int i = 0;i < hang;i++){
        for(int j = 0;j < lie;j++){
            if(arr[i][j] > max){
                max[0] = arr[i][j];
                max[1] = i;
                max[2] = j;
            }
        }
    }
    printf("%d %d",max[1],max[2]);
    return 0;
}

return value 很大的数,中间执行异常了
arr[i][j]>max 异常,max是数组,要使用下标访问其中一个值

arr数组定义这里有问题,数组定义不能是hang和lie这样的位置参数~将这里改成arr[100][100]试下!

从代码可以看出,你的printf语句在return 0;之后,所以main函数执行结束后不会执行printf语句,导致看不到打印结果。
可以把printf语句移到return 0;之前,这样main函数执行结束前会先执行printf语句,打印出结果。
修改后的代码:
c
#include<stdio.h>

int main(){

int hang,lie,arr[hang][lie];

scanf("%d %d",&hang,&lie);

for(int i = 0;i < hang;i++){

    for(int j = 0;j < lie;j++){

        scanf("%d",&arr[i][j]);  

    }

}

int max[3] = {0};

for(int i = 0;i < hang;i++){

    for(int j = 0;j < lie;j++){

        if(arr[i][j] > max){

            max[0] = arr[i][j];       

            max[1] = i;

            max[2] = j;

        }    

    }

} 

printf("%d %d",max[1],max[2]);

return 0;

}
这样就可以在main函数结束前打印出结果了。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7684826
  • 你也可以参考下这篇文章:关于printf中执行与输出的一些简单测试
  • 除此之外, 这篇博客: printf 详解 - 你所不知道的printf用法中的 ①常规输出 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里我们只需要先创建一个整形变量int num1 = 10; 和一个浮点型变量double num2;

    输出格式释义
    printf("%d", num1);%d是以十进制的方式进行输出。
    printf("%o", num1);%o是以八进制的方式进行输出。
    printf("%x", num1);%x是以十六进制的方式进行输出。
    printf("%u", num1);%u是将符号位默认为数值方式进行输出。
    printf("%f", num2);%f是以浮点数的方式进行输出。

  • 您还可以看一下 邵发老师的《C语言/C++学习指南》语法篇(从入门到精通)课程中的 使用printf输出小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析:

    根据参考资料中的说明,printf函数输出字符需要引用头文件,并使用正确的输出格式,可以是直接输出字符串、输出字符串变量,或者使用标准输出格式输出字符串。因此,无法输出printf结果的问题极有可能与这些因素有关。

    解决方案:

    1. 确认是否包含头文件。

    printf函数需要使用头文件中的定义,如果未包含该头文件则会无法使用printf函数输出结果。因此,在程序中需要确保包含该头文件。

    示例代码:

    #include <stdio.h>
    
    int main() {
        printf("Hello world!");
    }
    
    1. 使用正确的输出格式。

    printf函数有多种输出格式,包括直接输出字符串、输出字符串变量,以及标准输出格式输出字符串等。在使用printf函数输出结果时,需要根据具体情况选择正确的输出格式。如果使用了错误的输出格式,可能会导致输出不正确或无法输出结果。

    示例代码:

    #include <stdio.h>
    
    int main() {
        char str[] = "hello world!";
        printf("%s", str);  // 标准输出格式
    }
    
    1. 确认程序执行到了printf语句。

    如果程序执行到printf语句之前就出现了问题,那么就无法输出printf的结果。因此,需要确定程序是否执行到了printf语句,如果程序没有执行到printf语句,就需要查找程序中其他可能导致程序无法执行到printf语句的问题。

    示例代码:

    #include <stdio.h>
    
    int main() {
        printf("Hello");
        printf("world!");  // 确认程序能够执行到该语句
    }
    
    1. 检查程序输出窗口是否打开。

    如果程序的输出窗口未打开,则无法看到printf函数输出的结果。因此,需要确保程序的输出窗口已经打开。

    示例代码:

    #include <stdio.h>
    
    void openConsoleWindow() {
        SetConsoleTitle(L"Hello world!");  // 打开控制台窗口并设置标题
    }
    
    int main() {
        openConsoleWindow();
        printf("Hello world!");  // 确认程序输出窗口已打开
    }
    
    1. 查看输出结果的位置。

    在程序输出结果时,需要选择合适的位置进行输出。如果输出结果的位置不正确,就可能会导致无法看到输出结果。因此,需要确认输出结果的位置是否正确。在不同的编程环境下,输出结果的位置也可能不同,需要根据具体情况进行调整。

    示例代码:

    #include <stdio.h>
    
    int main() {
        printf("Hello world!\n");  // 输出到屏幕
        FILE *fp = fopen("output.txt", "w");  // 输出到文件
        fprintf(fp, "Hello world!");
        fclose(fp);
    }
    

    综上所述,无法输出printf结果的问题可能与包含头文件、输出格式、程序执行位置、输出窗口等多种因素有关。在解决该问题时,需要对这些因素进行逐一排除,确定问题出在哪里,并进行针对性的调整。