修改优化这段代码#include <stdio.h> #include <stdlib.h> int main() { int n; scanf("%d",&n); int a[n],c[n]; for(int i=0;i<n;i++){ scanf("%d",&a[i]); c[i]=-1; } int b; scanf("%d",&b); for(int i=0;i<n;i++){ if(a[i]==b){ c[i]=i; } } for(int i=0;i<n;i++){ if(c[i]==b || i==n-1){ printf("%d",c[i]+1); break; } } return 0; }
时间: 2024-01-08 12:03:18 浏览: 116
# include <stdio.h>
这段代码可以进行以下修改和优化:
1. 数组 c 可以不用开 n 个空间,只需要在找到第一个符合条件的元素后即可跳出循环并输出该元素的下标,不需要再遍历整个数组 c。
2. 可以在输入 n 的同时动态申请数组 a 的空间,这样可以避免在数组长度较大时出现数组过大的问题。
3. 可以加入简单的输入检查,防止输入的 n 和 b 超出数组下标范围。
修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, b;
scanf("%d", &n);
if (n <= 0) {
printf("Invalid input!");
return 0;
}
int *a = (int*)malloc(n * sizeof(int));
int c = -1;
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &b);
if (b < a[0] || b > a[n-1]) {
printf("Not found!");
return 0;
}
for (int i = 0; i < n; i++) {
if (a[i] == b) {
c = i;
break;
}
}
if (c == -1) {
printf("Not found!");
} else {
printf("%d", c + 1);
}
free(a);
return 0;
}
```
修改后的代码:
1. 删除了数组 c 的定义和初始化,改用变量 c 记录符合条件的元素下标。
2. 动态申请了数组 a 的空间,并加入了输入检查,防止输入非正整数的 n。
3. 加入了输入检查,防止输入不在数组下标范围内的 b。
4. 只遍历了一次数组 a,找到符合条件的元素即可跳出循环。
5. 加入了输出提示信息,方便调试和用户使用。
阅读全文