冒泡排序
/*
冒泡排序
*/
#include <stdio.h>
void sort(int * p, int len)
{
int i, j;
int t;
for(i=0; i<len-1; ++i)//比较最大值的次数
{
for(j=0; j<len-1-i; ++j) //比较时的个数
{
if(p[j] > p[j+1])//>升序;<降序
{
t = p[j];
p[j] = p[j+1];
p[j+1] = t;
}
}
}
}
int main(void)
{
int i;
int a[5]={5, -2, 0, 6, 3};
sort(a, 5);//交换
for(i=0; i<5; ++i)
printf("%d\n", a[i]);
return 0;
}
/*
输出结果:
-2
0
3
5
6
Press any key to continue
*/
学生管理系统
#include <stdio.h>
#include <malloc.h>
struct xinxi{
char name[100];
int age;
float score;
};
void Input(struct xinxi * p, int len);
void sort(struct xinxi * p, int len);
void Output(struct xinxi * p, int len);
int main(void)
{
int len;
struct xinxi * pxx; //用于存储学生信息
printf("请输入学生个数:\n");
scanf("%d", &len);
pxx =(struct xinxi *)malloc(len * sizeof(struct xinxi));
Input(pxx, len);//输入学生信息
sort(pxx, len);
printf("\n\n");
Output(pxx, len);
return 0;
}
void Input(struct xinxi * p, int len)
{
int i;
for(i=0; i<len; ++i)
{
printf("请输入第%d个学生的信息:\n", i+1);
printf("age = ");
scanf("%d", &p[i].age);
printf("name = ");
scanf("%s", p[i].name);
printf("score = ");
scanf("%f", &p[i].score);
}
}
void sort(struct xinxi * p, int len)
{
int i,j;
struct xinxi t;
for(i=0; i<len-1; ++i)
{
for(j=0; j<len-1-i; ++j)
{
if(p[j].score > p[j+1].score)
{
t = p[j];
p[j] = p[j+1];
p[j+1] = t;
}
}
}
}
void Output(struct xinxi * p, int len)
{
int i;
for(i=0; i<len; ++i)
{
printf("第%d名的学生信息:\n", i+1);
printf("age = %d\n", p[i].age);
printf("name = %s\n", p[i].name);
printf("score = %f\n", p[i].score);
}
printf("\n");
}
/*
输出结果:
score = 5
请输入第2个学生的信息:
age = 3
name = 3
score = 3
请输入第3个学生的信息:
age = 4
name = 4
score = 4
第1名的学生信息:
age = 3
name = 3
score = 3.000000
第2名的学生信息:
age = 4
name = 4
score = 4.000000
第3名的学生信息:
age = 5
name = 5
score = 5.000000
Press any key to continue
*/
枚举
举例
enum Weekday
{
Monday, Tuesday, ……,(中间省略)Sunday
};
int main(void)
{
enum Weekday day = Monday;
printf(“%d”, day); // 输出值为6
return 0;
}
枚举的定义类似于结构体。枚举内的取值相当于从0到N排序,类似于数组a[0]到a[n].