| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 364 人关注过本帖
标题:变C++为C
只看楼主 加入收藏
墨本无非
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2012-6-20
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:2 
变C++为C
给定一个班的学生(假定30人)学号(number)、姓名(name)、成绩(score),存入数组(stud)。
    根据学生学号进行排序;
    键盘输入一个学生名字,进行查找。若找到,将其学号、姓名、成绩输出。若没找到,输出“查无此人”;
    求平均成绩,并将全班高于平均成绩的成员输出(学号、姓名、成绩)。
    要求前三项,都是用函数实现。

#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
int const N=3;
void main()
{
    void sort(int *,string[],int*);
    void find(string,int *,string [],int*);
    void average(int *,string [],int *);
    int i;
   int num[N],score[N];
    string name[N],somebody;
    cout<<"Please input data:"<<endl;
    for(i=0;i<N;i++)         //输入N个数据
    {
        cin>>num[i];
     cin>>name[i];
        cin>>score[i];
    }

   sort(num,name,score);
    for(i=0;i<N;i++)
    {
        cout<<num[i]<<setw(7);
        cout<<name[i]<<setw(7);
        cout<<score[i]<<endl;
    }
    cout<<"Please input a name:"<<endl;
    cin>>somebody;
    find(somebody,num,name,score);
   average(num,name,score);
}

void sort(int *nu,string na[],int *sc )//排序
{
    int i,j,num_temp,score_temp;
    string name_temp;

    for(i=0;i<N-1;i++)           
        for(j=i+1;j<N;j++)
        if(nu[i]<nu[j])
        {
            num_temp=nu[i];
            nu[i]=nu[j];
            nu[j]=num_temp;
            score_temp=sc[j];
            sc[j]=sc[i];
            sc[i]=score_temp;
            name_temp=na[i];
            na[i]=na[j];
            na[j]=name_temp;
        }
}

void find(string one,int *num,string name[],int *score)//查找
{
    bool flag=false;
    for(int i=0;i<N;i++)
        if(one==name[i])
        {
        flag=true;
        cout<<num[i]<<setw(7);
        cout<<name[i]<<setw(7);
        cout<<score[i]<<endl;
        }
    if(!flag)
        cout<<"No such people"<<endl;
}
void average(int *num,string name[],int *score)
//求平均值,输出高于平均的
{
    int i,sum=0;
    float ave;
    for(i=0;i<N;i++)
        sum+=score[i];
    ave=(float)sum/N;
    cout<<"Average="<<ave<<endl;
    cout<<"Above the average:"<<endl;
    for(i=0;i<N;i++)
        if(score[i]>ave)
        {
            cout<<num[i]<<setw(7);
            cout<<name[i]<<setw(7);
           cout<<score[i]<<endl;
        }
}

可以依据这个程序改 也可以重新换一套 但最后要的是c语言 最后要能实现题目所要求的功能
搜索更多相关主题的帖子: void 姓名 include number 
2012-06-25 13:58
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
还真的给三十,实心眼的孩子

总有那身价贱的人给作业贴回复完整的代码
2012-06-25 14:26
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:30 
呵呵,我喜欢这样的孩子。
现在我在工作,手机上网中,下班写给你。

验收一下吧。
程序代码:
#include<stdio.h>
#include<string.h>

#define N    30

typedef struct
{
    char name[64];
    int num;
    int score;
}STUDENT;

int cmp_num(const void * a, const void * b)
{
    return ((STUDENT *)a)->num - ((STUDENT *)b)->num;
}

void print_stud(STUDENT a)
{
    printf("%06d %-8s %d\n", a.num, a.name, a.score);
}

void sort_num(STUDENT * s, int n)
{
    STUDENT t;
    int i, j;
    for(i = 0; i < n; i++)
    for(j = i + 1; j < n; j++)
    if(cmp_num(s + i, s + j) > 0)
    {
        t = s[i];
        s[i] = s[j];
        s[j] = t;
    }
}

STUDENT * search(STUDENT * s, int n, char * name)
{
    int i;
    for(i = 0; i < n && strcmp(name, s[i].name); i++);
    return i < n ? s + i : NULL;
}

double average(STUDENT * s, int n)
{
    int c, i;
    for(c = i = 0; i < n; c += s[i++].score);
    return (double)c / n;
}

void print_above_average(STUDENT * s, int n)
{
    double avg;
    int i;
    avg = average(s, n);
    printf("The average is %.2f\n", avg);
    printf("The students above average:\n");
    for(i = 0; i < n; i++)
        if(s[i].score > avg)
            print_stud(s[i]);
}

int main()
{
    STUDENT stud[N], *ts;
    int i;
    char name[64];
   
    printf("Input data:\n");
    for(i = 0; i < N; i++)
    {
        printf("\n[%02d] number:", i + 1);
        scanf("%d", &stud[i].num);
        printf("[%02d] name:", i + 1);
        scanf("%s", &stud[i].name);
        printf("[%02d] score:", i + 1);
        scanf("%d", &stud[i].score);
    }

    printf("\nSort by number:\n");
    sort_num(stud, N);
    for(i = 0; i < N; i++) print_stud(stud[i]);

    printf("\nInput a name for search:");
    scanf("%s", name);
    if((ts = search(stud, N, name)) != NULL)
        print_stud(*ts);
    else
        printf("No such people.\n");

    puts("\n");
    print_above_average(stud, N);

    return 0;
}


[ 本帖最后由 beyondyf 于 2012-6-25 18:16 编辑 ]

重剑无锋,大巧不工
2012-06-25 14:34
快速回复:变C++为C
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.086520 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved