不知道如何解决`#include <stdio.h>

出现问题,无法比较,不知道如何解决


`

#include 
#include
int main()
{
    int a[10];
    int i, j, t;
    printf("shuru");
    scanf_s("%ld", a[10]);
    for (i = 0; i < 10 - 1; i++)
        for (j = 0; j < 10 - i - 1; j++)
            if (a[j] > a[j + 1])
            {
                t = a[j + 1];
                a[j + 1] = a[j];
                a[j] = t;
            }
for (i = 0; i < 10; i++)
    printf("%d ", a[i]);
system("pause");
return 0;
}

基于Monster 组和GPT的调写:

  • scanf_s函数的参数错误。scanf_s函数第一个参数应该是格式控制字符串,第二个参数应该是变量的地址。因此,将 scanf_s("%ld", a[10]) 改为 scanf_s("%d", &a[i])。
  • 数组越界。在声明数组 a 时,数组大小为 10,因此,数组的下标应该从 0 到 9。在输入时,应该使用循环从 0 开始,一直到 9,依次为数组元素赋值。
  • 无法使用 system 函数。system 函数用于执行命令,但是在某些系统上可能无法使用。因此,可以使用 getchar 函数或者让程序直接退出来替代 system 函数。

修改后的代码如下所示:


 
#include <stdio.h>
#include<stdlib.h>

int main()
{
    int a[10];
    int i, j, t;
    printf("请输入10个整数:");
    for (i = 0; i < 10; i++)
        scanf("%d", &a[i]);

    for (i = 0; i < 10 - 1; i++)
        for (j = 0; j < 10 - i - 1; j++)
            if (a[j] > a[j + 1])
            {
                t = a[j + 1];
                a[j + 1] = a[j];
                a[j] = t;
            }
    for (i = 0; i < 10; i++)
        printf("%d ", a[i]);

    getchar(); // 或者直接 return 0;
    return 0;
}

scanf_s("%ld", a[10]);
这纯粹是在瞎写
要循环,scanf_s("%d", &a[i]);

单从语法来讲,程序出现一处语法错误,就是第8行a[10]为int型,输入符号应该是“%d”, 并且在scanf_s中应该使用取址符号&。应该改为

scanf_s("%d", &a[10]);

然后大致看了下逻辑,好像是一个排序算法,那么最开始是不是应该输入10个原始数字,然后再进行排序

for(int i = 0; i < 10; i ++){
    scanf_s("%d", &a[i]);
}
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/651427
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:标准函数库(#include)
  • 除此之外, 这篇博客: C语言#include<stdio.h>什么意思?中的 二、stdio.h是什么 ? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • stdio.h是标准输出/输出头文件。英文全程为standard input/out.head。可以简单理解为在这个文件中包含了一些输入和输出的函数。换句话说,要用到printf()和scanf()这两个打印和输入函数,就必须要有这个文件。