c语言问题 1.编写一个程序,完成以下功能: (1)输入10个学生的单科成绩(0-100之间) (2

c语言问题
1.编写一个程序,完成以下功能:
(1)输入10个学生的单科成绩(0-100之间)
(2)从小到大排序
(3)输入一个成绩x(0-100之间),在已经排序的学生成绩中进行查找。若存在,在主函数中输出其所处的位置,否则,将x插入适当的位置,新形成的数列仍然按照从小到大排序
要求:函数input实现数据输入,函数sort实现排序,函数search实现查找,函数insert实现插入,函数display实现数据输出

#include <stdio.h>
void sort(int c[], int n)
{
int i, j, buf;
for(i = 0; i < n; i++){
for(j = i + 1; j < n; j++){
if(c[i] > c[j]){
buf = c[i];
c[i] = c[j];
c[j] = buf;
}
}
}
}

void display(int c[], int n)
{
int i;
printf("output: ");
for(i = 0; i < n; i++){
printf("%4d", c[i]);
}
printf("\n\n");
}

int search(int c[], int n, int b)
{
int i;
for(i = 0; i < n; i++){
if(c[i] == b)
return (i+1);
}
return 0;
}
int insert(int c[], int n, int b)
{
int i, j, buf;
if(b > c[n-1]){
c[n] = b;
return 0;
}

for(i = 0; i < n; i++){
if(b < c[i]){
buf = c[i];
c[i] = b;
break;
}
}

for(j = n; j > i+1; j-- ){
c[j]= c[j-1];
}
c[j] = buf;
return 0;
}

int main()
{
int i, b, s, c[100];
printf("input:\n");
for(i = 0; i < 10; i++){
scanf("%d", &c[i]);

}
sort(c, i);
display(c, i);

while(1){
scanf("%d", &b);
if(b < 0 || b > 100){
break;
}else if((s = search(c, i, b))){
printf("site:%d\n", s);
}else{
insert(c, i, b);
display(c, ++i);
}
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-11
标准的排序问题。还是要自己做。不要总依靠别人,这样是学不好的。这个题目不是很难,多想想,相信你一定会成的..

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网