| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1890 人关注过本帖
标题:小弟初来乍到,接触C语言实在太少,很多不懂,希望有大神指导
只看楼主 加入收藏
yis
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-1-2
收藏
 问题点数:0 回复次数:5 
小弟初来乍到,接触C语言实在太少,很多不懂,希望有大神指导
编写一C语言程序,能够实现以下全部功能:
1.将5名学生的数据(如下表格)从键盘输入
2.对各学生数据按成绩高低顺序排序,姓名顺序和学号也随之调整。
3.在原数据的基础上,增加一个新学生的数据(学号:6,姓名:wu,成绩:81) ,要求不改变原从高到底的排序,且学号、姓名、成绩一一对应。
搜索更多相关主题的帖子: C语言 学生 数据 成绩 姓名 
2020-01-02 20:57
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
那就从“helloworld”开始啊。别做伸手党。
2020-01-02 22:05
yis
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-1-2
收藏
得分:0 
回复 2楼 八画小子
写出来了,就是有点问题啊
2020-01-02 22:06
yis
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-1-2
收藏
得分:0 
回复 2楼 八画小子
来这儿问就是伸手党?那你来做什么
#include<stdio.h>
#define N 5
#define M 6
#pragma warning(disable:4996)
struct Student            
{    int num;            
    char name[20];        
    float score;        
};

int main()
{    void f();
    void input(struct Student stu[]);
    struct Student stu[N],*p=stu;
    int j,i,k,x;   
    struct Student t;
    input(p);
    printf("从高到底排序为:\n");
    for(i=0;i<N-1;i++)
        {k=i;
            for(j=i+1;j<N;j++)
                if(stu[j].score>stu[k].score)
            k=j;
         t=stu[k];stu[k]=stu[i];stu[i]=t;
        }
    for(i=0;i<N;i++)
        printf("%6d %8s %6.2f\n",stu[i].num,stu[i].name,stu[i].score);
            printf("\n");
        
printf("再输入一个新学生的信息:学号、姓名、成绩。\n");
scanf("%d %s %f",&stu[i].num,stu[i].name,&stu[i].score);
printf("增加后从高到底排序为:\n");
    for(i=0;i<M-1;i++)
        {k=i;
            for(j=i+1;j<M;j++)
                if(stu[j].score>stu[k].score)
            k=j;
         t=stu[k];stu[k]=stu[i];stu[i]=t;
        }
    for(i=0;i<M;i++)
        printf("%6d %8s %6.2f\n",stu[i].num,stu[i].name,stu[i].score);
            printf("\n");

printf("\n 请输入查找的学生的学号:");
scanf("%d",&x);
    for(i=0;i<N+1;i++)
    {        
        if(stu[i].num==x)
            printf("学号:%d\t姓名:%s\t成绩:%6.2f",stu[i].num,stu[i].name,stu[i].score);                    
    }        
    printf("\n");
    return 0;
}

void input(struct Student stu[])            
{
    int i;
    printf("请输入各学生的信息:学号、姓名、成绩。\n");
    for(i=0;i<N;i++)
    {
        scanf("%d %s %f",&stu[i].num,stu[i].name,&stu[i].score);   
    }
}
 26 分钟前
        
21/1页1
快速回复:小弟初来乍到,接触C语言实在太少,很多不懂,希望有大神指导

选择文件

 
2020-01-02 22:08
柒贰伍玖
Rank: 2
等 级:论坛游民
威 望:1
帖 子:4
专家分:27
注 册:2019-12-28
收藏
得分:0 
int main()
{    void f();
    void input(struct Student stu[]);
    ……
    ……
}

我看现在好多人都这么申明函数,不知道是不是C标准改了,还是教材改了, 还是怎样
我习惯了先声明 ,后使用,且申明和定义不嵌套

void f();
void input(struct Student stu[]);

int main()
{   
  ……
}

void f()
{
    ……
}

void input(struct Student stu[])
{
    ……
}


    for(i=0;i<N;i++)
        printf("%6d %8s %6.2f\n",stu[i].num,stu[i].name,stu[i].score);
    printf("\n");

    printf("再输入一个新学生的信息:学号、姓名、成绩。\n");
    scanf("%d %s %f",&stu[i].num,stu[i].name,&stu[i].score);

这里退出循环的时候 i = 5, 你scanf再去访问数组的时候 编程stu[5],越界了,如果要对数组扩容的话 要调用内存分配函数
2020-01-03 10:00
yis
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-1-2
收藏
得分:0 
我们没学过那个,看了看实在不能理解?
2020-01-03 20:28
快速回复:小弟初来乍到,接触C语言实在太少,很多不懂,希望有大神指导
数据加载中...
 
   



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

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