定义一个结构体,有两个成员变量,一个整型的n,一个字符型的c,利用结构体类型声明一个具有5个元素的数组,并随机初始化,根据成员变量n进行从小到大排序,然后输出。
#include <stdio.h>
#include <stdlib.h>
struct {
int n;
char c;
}myStr[5];
int main(int argc, const char * argv[]) {
int i;
for (i = 0; i < 5; i++) { // 随机赋值
myStr[i].n = rand() % 10;
myStr[i].c = (rand() % ('z' - 'a')) + 'a';
// scanf("%d%c",&myStr[i].n,&myStr[i].c);
}
int j,k;
for (k = 5; k >= 0; k--) { // 总体排序
for(j = 0; j < k - 1; j++){
int tempN;
char tempC;
if (myStr[j].n > myStr[j+1].n) { //
tempN = myStr[j].n;
tempC = myStr[j].c;
myStr[j] = myStr[j + 1];
myStr[j + 1].n = tempN;
myStr[j + 1].c = tempC;
}else if((myStr[j].n == myStr[j + 1].n) && (myStr[j].c > myStr[j + 1].c)){ // 如果数字相同 对字母排序
tempC = myStr[j].c;
myStr[j].c = myStr[j + 1].c;
myStr[j + 1].c = tempC;
}
}
}
int m;
for (m = 0; m < 5; m++) {
printf("%d%c ",myStr[m].n,myStr[m].c);
}
return 0;
}
欢迎和各位朋友交流探讨 本人邮箱:cw_028@163.com