白小彦 发表于 2023-5-16 22:06:43

求助

c语言小白,不明白为什么会运算超时而且答案不太对
#include<stdio.h>
void main()
{
int a={1,4,6,9,13,16,19,28,40,100};
int i,k,index,temp,x;
scanf("%d",&x);
a=x;
for(k=0;k<11;k++)
    k=a;
for(i=k+1;i<11;i++)
{ if(a<a)
    index=i;
}
   temp=a;
   a=a;
   a=temp;
for(i=0;i<11;i++)
    printf("%4d",a);
}
   


isdkz 发表于 2023-5-16 22:07:41

你的代码中有几个问题:

1. 在第7行,你将数组a的第 11 个元素赋值为输入的x ,但是数组a的大小只有 10,因此这样会导致数组越界,出现不可预期的错误。

2. 在第8行,你将k赋值为a ,但是这个语句没有任何作用,因为在后面的循环中, k的值会被重新赋值。

3. 在第11行,你没有给变量index赋初值,这样会导致程序出现不可预期的错误。

4. 在第12行,你应该使用大于号( > )而不是小于号( < ),否则会导致程序出现错误。

5. 在第15-17行,你交换了a和a的值,但是实际上应该交换a和a[ i]的值。

下面是修改后的代码:

#include <stdio.h>

int main() {
    int a = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
    int i, k, index = 0, temp, x;
    scanf("%d", &x);
    a = x;
    for (k = 0; k < 10; k++) {
      if (a < a) {
            index = k;
      }
    }
    temp = a;
    a = a;
    a = temp;
    for (i = 0; i < 10; i++) {
      printf("%4d", a[ i]);
    }
    return 0;
}


这个程序的功能是:输入一个整数x ,将其插入到已经排好序的数组a中,并且输出排好序后的数组。

歌者文明清理员 发表于 2023-5-16 22:56:35

题目放上来

fishhh 发表于 2023-5-17 09:54:01

for(k=0;k<11;k++)
    k=a;
你第一个for循环结束后k = 10了
后面当然不执行
页: [1]
查看完整版本: 求助