改错#include <stdio.h> int main(void) { int a[5]; int i,k,n,f=0; for(i=0;i<=4;i++) scanf("%d",&a[i]); scanf("%d",&n); for(i=0;i<10;i++) /************found************/ if(___(1)___) { f=1; /************found************/ ___(2)___; } if(f) printf("%d is No. %d\n", n,k); else printf(" %d not found !\n",n); return 0; }
时间: 2023-07-18 22:42:46 浏览: 97
修改后的代码如下:
```c
#include <stdio.h>
int main(void) {
int a[5];
int i,k,n,f=0;
for(i=0;i<=4;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<5;i++) { // 修改1:循环次数应为数组长度5
if(a[i] == n) { // 修改2:判断条件应为a[i] == n
f=1;
k = i + 1; // 修改3:记录下标应为i+1
}
}
if(f)
printf("%d is No. %d\n", n,k);
else
printf("%d not found !\n",n);
return 0;
}
```
修改说明:
1. 修改循环次数为数组长度5;
2. 修改if语句中的判断条件为a[i] == n,判断当前元素是否等于n;
3. 记录下标应为i+1,因为提示的是第几个数,而数组下标从0开始。
相关问题
程序改错 题目:以下程序求100-200之内的素数。 #include <stdio.h> #include <math.h> void sushu(int m) { int k; int i: for(i=2;i<=k;i++) if(i>=k+1) printf("%4d",m); } void main(void) { int m; for(m=101;m<=200;m++) ; }
以下是已改正的程序:
```c
#include <stdio.h>
#include <math.h>
void sushu(int m) {
int k = sqrt(m); // 计算m的平方根
int i;
for(i = 2; i <= k; i++) {
if(m % i == 0) {
return; // 如果能整除,说明不是素数,直接返回
}
}
printf("%4d", m); // 如果无法整除,说明是素数,输出
}
int main(void) {
int m;
for(m = 101; m <= 200; m++) {
sushu(m);
}
return 0;
}
```
主要修改如下:
1. 在 `sushu` 函数中,需要计算输入数 `m` 的平方根,以便后面判断是否为素数。
2. 在 `sushu` 函数中,需要在遍历过程中判断是否能被整除,如果能被整除则说明不是素数,直接返回即可。
3. 在 `main` 函数中,需要调用 `sushu` 函数,并且需要将 `void` 修改为 `int`,并且在函数末尾返回 `0`。
对这段代码进行改错#include <conio.h> #include <stdio.h> #include <stdlib.h> #define N 20 /**********FOUND**********/ void fun( int a, int n ) { int i, j, k, t ; for ( j = 0; j < n-1; j++) { k = j; for ( i = j + 1; i < n ; i++ ) /**********FOUND**********/ if ( a [i] < a[k] ) k = i; t = a[j] ; a[j] = a[k]; a[k] = t; } }
有两处错误需要进行改正:
1. 第一个错误是参数a应该是一个指针类型,而不是一个整型变量。因为如果传递的是一个整型变量,函数内部无法通过指针访问数组元素。因此需要将参数a修改为int a[]或者int *a。
2. 第二个错误是函数定义时缺少了返回值类型,应该将void fun修改为void。
修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 20
void fun(int a[], int n) {
int i, j, k, t;
for (j = 0; j < n-1; j++) {
k = j;
for (i = j + 1; i < n; i++) {
if (a[i] < a[k]) {
k = i;
}
}
t = a[j];
a[j] = a[k];
a[k] = t;
}
}
int main() {
int a[N], i;
for (i = 0; i < N; i++) {
a[i] = rand() % 100;
printf("%d ", a[i]);
}
printf("\n");
fun(a, N);
for (i = 0; i < N; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
阅读全文