#include <stdio.h> #include <string.h> int main() { int str[100]={0},str1[100]={0},n,i,k,j=0,f=0; scanf("%d",&n); getchar(); k=n-1; for(i=0;i<n;i++) { scanf("%d",&str[i]); } for(i=0;i<n;i++) { if(str[i]%2==1||str[i]/1==1) { str1[j]=str[i]; j++; } else { str1[k-f]=str[i]; f++; } } for ( i = 0; i < n; i++) printf("%d ",str1[i]); }
时间: 2024-01-28 11:05:00 浏览: 54
这段代码的功能是将输入的数组中所有奇数和1放在数组的前面,所有偶数放在数组的后面,并输出新的数组。这段代码的问题在于:
1. 第一行代码的格式不正确,应该将多个头文件放在同一行,并且每个头文件之间用空格隔开。
2. 在第9行代码中,使用了getchar()函数,但是没有对它的返回值进行处理,这可能会导致一些问题。
3. 在第10行代码中,将k赋值为n-1,但是并没有用到这个变量。
4. 在第14行代码中,判断奇数的条件使用了除法,应该使用取模运算符。
5. 在第19行代码中,输出的循环次数应该是n,而不是100。
下面是修改后的代码:
```
#include <stdio.h>
#include <string.h>
int main() {
int str[100] = {0}, str1[100] = {0}, n, i, j = 0, f = 0;
scanf("%d", &n);
for(i = 0; i < n; i++) {
scanf("%d", &str[i]);
}
for(i = 0; i < n; i++) {
if(str[i] % 2 == 1 || str[i] == 1) {
str1[j] = str[i];
j++;
} else {
str1[n - f - 1] = str[i];
f++;
}
}
for(i = 0; i < n; i++) {
printf("%d ", str1[i]);
}
return 0;
}
```
希望这能够帮到你!
阅读全文