c语言程序设计基础

李四同学在本学期学习英语,数学等功课共7门,请编写程序实现如下功能:

1、从键盘输入学生的7门成绩

2、7门代表个例,请程序具有普适性,比如适用于20门功课

3、必须采用数组,而不是多个变量的方法

4、采用双重for循环的方式实现学生科目从高分到低分的排序
(请使用dev c++编写谢谢)

#include<stdio.h>

int main()
{
    double Marks[1024];
    int k = 0;
    while(scanf("%lf", &Marks[k]) != EOF)
        k++;
    int i, j;
    for(i = 0; i < k; i++)
    {
        for(j = 0; i + j < k - 1; j++)
        {
            if(Marks[j] > Marks[j + 1])
            {
                double temp = Marks[j];
                Marks[j] = Marks[j + 1];
                Marks[j + 1] = temp;
            }
        }
    }
    for(i = 0; i < k; i++)
        printf("%.2lf ", Marks[i]);
    return 0;
}

 //这个可以适合最多1024门课。

比如你要输入三门课成绩:

65 23 56

ctrl + z

就可以了

追问

这个可以执行但是输入以后没反应...能不能printf加入中文,感觉这样更好理解~输入的时候好知道输入的是哪个~

追答

65 23 56
^Z
这样输入,输出结果就是这样了。
23.00 56.00 65.00

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-14
#include <iostream>
using namespace std;
int main()
{
int k;k=7;
//cout<<"please enter the number of class:";scanf("%d",k);//课程数量大于七,请输出 前方双斜杠
cout<<"please enter seven class result:";
float result[k];
for(int i=0;i<k;i++)
{
scanf("%f",&result[i]);
}
for(int i=0;i<k;i++)
{
for(int j=0;j<k-i;j++)
{
if(result[j]<result[j+1])
{
swap(result[j],result[j+1]);
}
}
}
cout<<"sequence result is:\n";
for(int i=0;i<k;i++)
{
printf(" %.2f",result[i]);
}
system("pause");
}追问

不能用...

追答

什么意思?不能运行还是?

第2个回答  2013-12-14
#include<iostream>
using namespace std;
struct subjectscore
{
char subject[10];
int score;
};

int main()
{
int n;
bool flag;
subjectscore temp;
cout<<"请输入共有多少门课:";
cin>>n;
cout<<endl;
subjectscore *s=new subjectscore [n];
cout<<"请逐个输入科目和成绩:"<<endl;
for(int i=0;i<n;i++)
{
cin>>s[i].subject>>s[i].score;
}
for(int i=0;i<n-1;i++)
{
flag=false;
for(int j=0;j<n-1-i;j++)
if(s[j].score<s[j+1].score)
{
temp.score=s[j+1].score;
strcpy(temp.subject,s[j+1].subject);
s[j+1].score=s[j].score;
strcpy(s[j+1].subject,s[j].subject);
s[j].score=temp.score;
strcpy(s[j].subject,temp.subject);
flag=true;
}
if(!flag) break;
}
for(int i=0;i<n;i++)
{
cout<<s[i].subject<<":"<<s[i].score<<endl;
}
system("pause");
return 0;
}
相似回答