这个程序容易出现的错误#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 10 void sort(int s[],int n) { int i,j,k,t; for(i=0;i<n-1;i++) //用于选择排序的外循环 { k=i; //假设最小元素的位置 for(j=i+1;j<n ;j++) //用于选择排序的内循环,找出未经排序的数据中最小的一个 { if(s[j]<s[k])//假设不成立 { k=j; } } if(k!=i) { t = s[i]; s[i] = s[k]; s[k] = t; }把当前最小值交换到数组适当位置 } } int main() { int i,a[N]; srand((unsigned)time(NULL)); printf(“随机产生 N 个整数:\n”); for(i=0;i<N;i++) { a[i]=rand() % 100;//随机产生 1-100 的整数 printf(“%3d”,a[i]); } printf(“\n”); sort(a,N); //调用选择排序 sort 函数 printf(“排序后的 N 个整数: \n”); for(i=0;i<N;i++) printf(“%3d”,a[i]);返回 0;}
时间: 2024-02-05 21:14:18 浏览: 159
这段代码存在以下几个错误:
1. 函数名为 `sort` ,但是函数定义中的括号中的字母为中文符号“()”,应该改为英文符号“()”。
2. 变量 `i` 和 `j` 在函数内部没有被初始化,应该在循环前进行初始化。
3. 在 `if` 语句中,判断条件应该为 `s[j] < s[k]` 而不是 `s[j] < s[i]`。
4. 最后一个 `printf` 语句缺少换行符 `\n`。
修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
void sort(int s[], int n) {
int i, j, k, t;
for (i = 0; i < n - 1; i++) {
k = i;
for (j = i + 1; j < n ; j++) {
if (s[j] < s[k]) {
k = j;
}
}
if (k != i) {
t = s[i];
s[i] = s[k];
s[k] = t;
}
}
}
int main() {
int i, a[N];
srand((unsigned) time(NULL));
printf("随机产生 N 个整数:\n");
for (i = 0; i < N; i++) {
a[i] = rand() % 100;
printf("%3d", a[i]);
}
printf("\n");
sort(a, N);
printf("排序后的 N 个整数:\n");
for (i = 0; i < N; i++) {
printf("%3d", a[i]);
}
printf("\n");
return 0;
}
```
阅读全文