概述
C语言 选择排序(这里是由大到小排序):
#include<stdio.h>
#include<stdlib.h>
void SelectSort(int a[],int n){
int i,j,k,t;
for(i=0;i<n-1;i++){
// n个元素需要进行(n-1)趟比较
for(j=i+1;j<n;j++){
//先使k记录排序范围内的第一个元素的位置
k=i;
//找出最大元素的位置,由k记录
if(a[j]>a[k])
k=j;
//如果排序范围的第一个元素(即第i个)不是最大元素
if(k!=i){
//则将最大的元素与第i个元素对调
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
}
int main(){
int i,n;
int *b;
printf("input a number:n");
scanf("%d",&n);
b=(int*)malloc(n*sizeof(int));
printf("input n numbers:n");
for(i=0;i<n;i++){
scanf("%d",&b[i]);
}
printf("original data:n");
for(i=0;i<n;i++){
printf("%4d",b[i]);
}
SelectSort(b,n);
printf("n");
printf("sorted data:n");
for(i=0;i<n;i++){
printf("%4d",b[i]);
}
return 0;
}
注意:C语言中定义一个由 n 个数组成的数组(即数组元素个数未知),不可使用以下方法定义:
int n;
scanf("%d",&n);
int num[n];
而应使用如下方法:
//定义
int n,i;
int *num;
scanf("%d", &n);
num = (int *)malloc(n * sizeof(int));
//输入
for (i = 0; i < n; i++)
{
scanf("%d", &num[i]);
}
定义一个长度未知的多维数组用如下方法:
int **node;
int col,row,i,j;
scanf("%d", &col);
scanf("%d", &row);
node = (int **)malloc(col * sizeof(int *));
for (i = 0; i < n - 1; i++)
{
node[i] = malloc(sizeof(int) * row);
for(j = 0; j < row; j++){
scanf("%d", &node[i][j]);
}
}
记得添加 #include<stdlib.h> 头文件。malloc( )包含在这个头文件中。
需要注意一点,C语言中没有专门用于存储字符串的变量类型,字符串都被存储在char类型的数组中,因此,定义某个字符串时,应使用语句char str[100]="xxx"的形式。
#include<stdio.h>
#include<string.h>
int main(){
char s[]="abcde f";
int len;
printf("%sn",s);
//计算字符串s的长度,用strlen()函数
len=strlen(s);
printf("length:%d",len);
return 0;
}
#include<stdio.h>
#include<string.h>
int main(){
char str[100]={0};
//也可以写成"0"或{'0'}或{“0”}
int len;
gets(str);
len=strlen(str);
printf("length:%dn",len);
return 0;
}
getchar( ),putchar( )函数分别为得到一个字符,输出一个字符;gets( )函数从标准输入读入一行数据,遇到换行符就返回,它会把换行符替换成空字符 '