小题目练习
2017-01-30 10:29
260 查看
设score数组中存储8名同学的C语言成绩,字符串数组name中存储同学们的姓名。这两个数组中,每名同学的姓名与成绩的下标要始终保持一致(例如name[i]和score[i]表示同一位同学(下标为i)的姓名和C语言成绩,否则会张冠李戴)。
(1)输出按成绩排序后的同学的名单;
(2)输出按同学姓名排序后的成绩单(排序对象是字符串)。
#include<stdio.h>
#include<string.h>
#define num 8
int main()
{
int i,j;
double t;
char p[10];
char name[num][10]= {"zhao","qian","sun","li","zhou","wu","zheng","wang"};
double score[num]= {79,84,65,89,60,92,78,56};
//(1)按成绩排序并输出结果
for(i=0;i<num-1;i++)
for(j=0;j<num-1-i;j++)
if(score[j]<score[j+1])
{
t=score[j+1];
score[j+1]=score[j];
score[j]=t;
strcpy(p,name[j+1]);
strcpy(name[j+1],name[j]);
strcpy(name[j],p);
}
printf("按成绩排序后的结果是:\n");
for(i=0; i<num; i++)
printf("%s\t%.1f\n", name[i], score[i]);
//(2)按姓名排序并输出结果
for(i=0;i<num-1;i++)
for(j=0;j<num-1-i;j++)
if(strcmp(name[j],name[j+1])==1)
{
strcpy(p,name[j+1]);
strcpy(name[j+1],name[j]);
strcpy(name[j],p);
t=score[j+1];
score[j+1]=score[j];
score[j]=t;
}
printf("按成绩排序后的结果是:\n");
for(i=0; i<num; i++)
printf("%s\t%.1f\n", name[i], score[i]);
return 0;
}编写心得:
1、此题排序采用的冒泡排序,
2、p为char类型数组指针,name为二维数组名,name[j]也可看成一维数组名,与p的类型一致,所以p[]作为中间变量,将字符串的地址复制给p;
3、对于姓名的比较,采用strcmp函数 if(strcmp(name[j],name[j+1])==1);
(1)输出按成绩排序后的同学的名单;
(2)输出按同学姓名排序后的成绩单(排序对象是字符串)。
#include<stdio.h>
#include<string.h>
#define num 8
int main()
{
int i,j;
double t;
char p[10];
char name[num][10]= {"zhao","qian","sun","li","zhou","wu","zheng","wang"};
double score[num]= {79,84,65,89,60,92,78,56};
//(1)按成绩排序并输出结果
for(i=0;i<num-1;i++)
for(j=0;j<num-1-i;j++)
if(score[j]<score[j+1])
{
t=score[j+1];
score[j+1]=score[j];
score[j]=t;
strcpy(p,name[j+1]);
strcpy(name[j+1],name[j]);
strcpy(name[j],p);
}
printf("按成绩排序后的结果是:\n");
for(i=0; i<num; i++)
printf("%s\t%.1f\n", name[i], score[i]);
//(2)按姓名排序并输出结果
for(i=0;i<num-1;i++)
for(j=0;j<num-1-i;j++)
if(strcmp(name[j],name[j+1])==1)
{
strcpy(p,name[j+1]);
strcpy(name[j+1],name[j]);
strcpy(name[j],p);
t=score[j+1];
score[j+1]=score[j];
score[j]=t;
}
printf("按成绩排序后的结果是:\n");
for(i=0; i<num; i++)
printf("%s\t%.1f\n", name[i], score[i]);
return 0;
}编写心得:
1、此题排序采用的冒泡排序,
2、p为char类型数组指针,name为二维数组名,name[j]也可看成一维数组名,与p的类型一致,所以p[]作为中间变量,将字符串的地址复制给p;
3、对于姓名的比较,采用strcmp函数 if(strcmp(name[j],name[j+1])==1);
相关文章推荐
- leetcode_middle_6_442. Find All Duplicates in an Array
- MapReduce学习小结(二)
- SQL中的关联更新和关联删除
- LeetCode Valid Perfect Square
- centos关机与重启命令详解
- HDU 5963 朋友/podru 4000 ga (找规律+map&pair基本用法)
- docker study --- runc
- LeetCode_136. Single Number
- 43. Multiply Strings
- 递归程序复杂度计算->主定理
- POJ 2187 Beauty Contest [凸包 旋转卡壳]
- HDU 3045 Picnic Cows
- (树)判断二叉树是否为BST
- SQLite事务与自增深度分析
- PAT_A 1015. Reversible Primes (20)
- Android 屏幕录制命令adb screenrecord
- Android 获取GPS速度
- Android 使用SVG动画
- SQL Server事务、隔离级别详解(二十九)
- 在ListView中增加HeaderView和FootView