#include<stdio.h>
#include<stdlib.h>
#define N 100
void Init(int arr[], int n);
void Sort_bul(int arr[], int n);
void Sort_sel(int arr[], int n);
void Output(int arr[], int n);
main()
{
int i;
int n;
int arr[N];
Init(arr,N);
Output(arr, N);
printf("请选择排序方式:1.选择排法 2.冒泡排序法");
scanf("%d", &n);
if (n == 1)
{
Sort_sel(arr,N);
Output(arr,N);
}
if(n==2)
{
Sort_bul(arr,N);
Output(arr,N);
}
return 0;
}
//赋值数组
void Init(int arr[], int n)
{
int i;
int n;
for (int i = 0;i < n;i++)
{
arr[i] = rand() % 100; //取模运算,限定随机数范围
}
}
//冒泡排序
void Sort_bul(int arr[], int n)
{
int i;
int j;
int temp;
int n;
//外层循环:总排序轮数=元素个数-1
for (i = 0;i < n- 1;i++)
{
//内层循环:每轮对比次数=元素个数-当前轮数-1
for (j = 0;j < n - i;j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//选择排序
void Sort_sel(int arr[], int n)
{
int i;
int j;
int temp;
int n;
//外层循环:总排序轮数=元素个数-1
for (i = 0;i <n - 1;i++)
{
//内层循环:每轮对比次数=元素个数-1
for (j = 0;j < n - i;j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//输出语句
void Output(int arr[], int n)
{
int i;
int n;
for (int i = 0;i < n;i++)
{
printf("%5d", arr[i]);
if ((i + 1) % 20 == 0) //二十个一组
{
printf("\n");
}
}
}
问题出在哪呢?
你每个函数在函数入参定义了int n,然后函数内部又定义了int n,将函数内部定义的int n注释掉就没问题了。
(1)函数的n重定义,去掉函数里的int n就行
(2)两个排序算法都有错误,已经改正
正确代码:
#include<stdio.h>
#include<stdlib.h>
#define N 100
void Init(int arr[], int n);
void Sort_bul(int arr[], int n);
void Sort_sel(int arr[], int n);
void Output(int arr[], int n);
main()
{
int i;
int n;
int arr[N];
Init(arr, N);
Output(arr, N);
printf("请选择排序方式:1.选择排法 2.冒泡排序法");
scanf("%d", &n);
if (n == 1)
{
Sort_sel(arr, N);
Output(arr, N);
}
if (n == 2)
{
Sort_bul(arr, N);
Output(arr, N);
}
return 0;
}
//赋值数组
void Init(int arr[], int n)
{
int i;
for (int i = 0; i < n; i++)
{
arr[i] = rand() % 100; //取模运算,限定随机数范围
}
}
//冒泡排序
void Sort_bul(int arr[], int n)
{
int i;
int j;
int temp;
//外层循环:总排序轮数=元素个数-1
for (i = 0; i < n - 1; i++)
{
//内层循环:每轮对比次数=元素个数-当前轮数-1
for (j = 0; j < n -1- i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//选择排序
void Sort_sel(int arr[], int n)
{
int i;
int j;
int temp;
//外层循环:总排序轮数=元素个数-1
for (i = 0; i < n - 1; i++)
{
//内层循环:每轮对比次数=元素个数-1
for (j = i+1; j < n; j++)
{
if (arr[i] > arr[j])
{
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}
//输出语句
void Output(int arr[], int n)
{
int i;
for (int i = 0; i < n; i++)
{
printf("%5d", arr[i]);
if ((i + 1) % 20 == 0) //二十个一组
{
printf("\n");
}
}
}
输出:
说你分号;附近有错,找一下报错行号附近的;分号相关代码逐步排查
int i, for (int i
#include<stdio.h>
#include<stdlib.h>
#define N 100
void Init(int arr[], int n);
void Sort_bul(int arr[], int n);
void Sort_sel(int arr[], int n);
void Output(int arr[], int n);
main(){
int n;
int arr[N]={0};
Init(arr,N);
Output(arr, N);
printf("请选择排序方式:1.选择排法 2.冒泡排序法\n");
scanf("%d", &n);
if (n == 1)
{
Sort_sel(arr,N);
Output(arr,N);
system("pause");
}
if(n == 2)
{
Sort_bul(arr,N);
Output(arr,N);
system("pause");
}
return 0;
}
//赋值数组
void Init(int arr[], int n){
int i = 0;
for(;i < n;i++){
arr[i] = rand() % 100; //取模运算,限定随机数范围
}
}
//冒泡排序
void Sort_bul(int* arr, int n)
{
int i;
int j;
//外层循环:总排序轮数=元素个数-1
for (i = 0;i < n- 1;i++)
{
//内层循环:每轮对比次数=元素个数-当前轮数-1
for (j = 0;j < n - i-1;j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//选择排序
void Sort_sel(int* arr, int n)
{
int i;
int j;
//外层循环:总排序轮数=元素个数-1
for (i = 0;i <n - 1;i++)
{
int temp=arr[n-1];
int index=n-1;
for(j=i;j<n-1;j++){
if (temp >= arr[j]){
temp = arr[j];
index=j;
}
}
temp=arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
}
//输出语句
void Output(int arr[], int n){//可不需传递n,直接使用N
int i=0;
for (;i < n;i++){
printf("%5d", arr[i]);
if ((i + 1) % 20 == 0) //二十个一组
{
printf("\n");
}
}
}
应该有行号提醒吧,这明显是语法错误
每个函数里传参有int n了不用再定义了
#include<stdio.h>
#include<stdlib.h>
#define N 100
void Init(int arr[], int n);
void Sort_bul(int arr[], int n);
void Sort_sel(int arr[], int n);
void Output(int arr[], int n);
main()
{
int i;
int n;
int arr[N];
Init(arr,N);
Output(arr, N);
printf("请选择排序方式:1.选择排法 2.冒泡排序法");
scanf("%d", &n);
if (n == 1)
{
Sort_sel(arr,N);
Output(arr,N);
}
if(n==2)
{
Sort_bul(arr,N);
Output(arr,N);
}
return 0;
}
//赋值数组
void Init(int arr[], int n)
{
int i;
int n;
for (int i = 0;i < n;i++)
{
arr[i] = rand() % 100; //取模运算,限定随机数范围
}
}
//冒泡排序
void Sort_bul(int arr[], int n)
{
int i;
int j;
int temp;
int n;
//外层循环:总排序轮数=元素个数-1
for (i = 0;i < n- 1;i++)
{
//内层循环:每轮对比次数=元素个数-当前轮数-1
for (j = 0;j < n - i;j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//选择排序
void Sort_sel(int arr[], int n)
{
int i;
int j;
int temp;
int n;
//外层循环:总排序轮数=元素个数-1
for (i = 0;i <n - 1;i++)
{
//内层循环:每轮对比次数=元素个数-1
for (j = 0;j < n - i;j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//输出语句
void Output(int arr[], int n)
{
int i;
int n;
for (int i = 0;i < n;i++)
{
printf("%5d", arr[i]);
if ((i + 1) % 20 == 0) //二十个一组
{
printf("\n");
}
}
}
你发的都有;,如果没有也会报错提示哈
重装vs2010