| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1506 人关注过本帖
标题:该怎么使用结构体完成这个问题。。没有学习链表
只看楼主 加入收藏
瘦不了噜er
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:30
专家分:135
注 册:2016-6-14
结帖率:91.67%
收藏
已结贴  问题点数:10 回复次数:2 
该怎么使用结构体完成这个问题。。没有学习链表
1. 定义一个结构体数组,编写函数 input( )实现从键盘输入表 1 中数据给数组。
 2. 编写计算函数 calculate(),给每个同学的总分和平均分填上数据。
 3. 编写查询函数 seek(),通过键盘输入一个姓名,查询该同学的各种数据;若此同学不存 在,则输出“NO FIND”。如:输入“Marry”,则输出 1003 号同学各项数据;输入“Machael”, 则输出“No find”。
4. (选做)编写按总分排序程序 sort(),根据每位学生的总分降序排列。






程序代码:
    

#include <stdio.h>
#include <conio.h>

struct Line {
    long num;
    char name[20];
    char sex[2];
    int age;
    struct Grade{
        int Math;
        int Computer;
        int Chemistry;
        int English;}gra;    
};

void calculate(struct Line L[],int n);

void input(struct Line L[],int n);
void output(struct Line L[],int n);

void main(){

    struct Line score[5];
    input(score,5);
    output(score,5);
    getch();
}



void input(struct Line L[],int n){

int i;
for(i=0;i<n;i++){
printf("\n请输入第%d个同学的学号:\n",i+1);
scanf("%d",&L[i].num);
printf("\n请输入第%d个同学的姓名:\n",i+1);
scanf("%s",&L[i].name);
printf("\n请输入第%d个同学的性别:\n",i+1);
scanf("%s",&L[i].sex);
printf("\n请输入第%d个同学的年龄:\n",i+1);
scanf("%d",&L[i].age);
printf("\n请输入第%d个同学的高数成绩:\n",i+1);
scanf("%d",&L[i].gra.Math);
printf("\n请输入第%d个同学的计算机成绩:\n",i+1);
scanf("%d",&L[i].);
printf("\n请输入第%d个同学的物理成绩:\n",i+1);
scanf("%d",&L[i].gra.Chemistry);
printf("\n请输入第%d个同学的英语成绩:\n",i+1);
scanf("%d",&L[i].gra.English);


}


void calculate(struct Line L[],int n){
int i
float *total[5]={NULL};
float *average[5]={NULL};
for(i=0;i<n;i++)
total[i]=L[i].gra.Math+L[i].[i].gra.Chemistry+L[i].gra.English;
average[i]=total[i]/4; 
printf("输出第%d个同学的总成绩:%f",i+1,total[i]);
printf("输出第%d个同学的平均成绩:%f",i+1,average[i]);
}




void output(struct Line L[],int n){

int i;
for(i=0;i<n;i++){
printf("学号:%d\n",L[i].num);
printf("姓名:%s\n",L[i].name);
printf("性别:%s\n",L[i].sex);
printf("年龄:%d\n",L[i].age);
printf("高数成绩:%d\n",L[i].gra.Math);
printf("计算机成绩:%d\n",L[i].);
printf("物理成绩:%d\n",L[i].gra.Chemistry);
printf("英语成绩:%d\n",L[i].gra.English);
printf("总成绩:%f\n",total[i]);
printf("平均成绩:%f\n",average[i]);



}





该怎么使用结构体完成这个问题。。没有学习链表

。。。不好意思 学的太烂了
搜索更多相关主题的帖子: 键盘 结构体 color 姓名 
2016-06-21 09:38
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct Line {
    long num;
    char name[20];
    char sex[2];
    int age;
    struct Grade {
        int Math;
        int Computer;
        int Chemistry;
        int English;
    }gra;
    int total;
    float average;
};

void calculate(struct Line L[], int n);

void input(struct Line L[], int n);
void output(struct Line L[], int n);
void seek(struct Line L[], int n);
void sort(struct Line L[], int n);
void main() {

    struct Line score[5];
    input(score, 5);
    calculate(score, 5);
    output(score, 5);
    sort(score, 5);
    printf("排序后:\n");    
    output(score, 5);
    seek(score, 5);
    _getch();
}

void seek(struct Line L[], int n)
{
    char name[20];
    int i;
    printf("\n请输入查找的同学的姓名:\n");
    scanf("%s", name);
    for (i = 0; i < n; i++)
    {
        if (strcmp(name, L[i].name) == 0)
        {
            printf("学号:%d\n", L[i].num);
            printf("姓名:%s\n", L[i].name);
            printf("性别:%s\n", L[i].sex);
            printf("年龄:%d\n", L[i].age);
            printf("高数成绩:%d\n", L[i].gra.Math);
            printf("计算机成绩:%d\n", L[i].);
            printf("物理成绩:%d\n", L[i].gra.Chemistry);
            printf("英语成绩:%d\n", L[i].gra.English);
            printf("总成绩:%d\n", L[i].total);
            printf("平均成绩:%f\n", L[i].average);
            break;
        }
    }
    if (i == n)
    {
        printf("No find\n");
    }
}

void sort(struct Line L[], int n)
{
    struct Line score = {0};
    int i,j;
    for (i = 0; i < n - 1; i++) 
    {
        for (j = 0; j < n - 1; j++)
        {
            if (L[j].total < L[j + 1].total)
            {
                memcpy(&score, &L[j],sizeof(struct Line));
                memcpy(&L[j], &L[j+1], sizeof(struct Line));
                memcpy(&L[j+1], &score, sizeof(struct Line));
            }
        }
    }
}

void input(struct Line L[], int n)
{

    int i;
    for (i = 0; i < n; i++) {
        printf("\n请输入第%d个同学的学号:\n", i + 1);
        scanf("%d", &L[i].num);
        printf("\n请输入第%d个同学的姓名:\n", i + 1);
        scanf("%s", L[i].name);
        printf("\n请输入第%d个同学的性别:\n", i + 1);
        scanf("%s", L[i].sex);
        printf("\n请输入第%d个同学的年龄:\n", i + 1);
        scanf("%d", &L[i].age);
        printf("\n请输入第%d个同学的高数成绩:\n", i + 1);
        scanf("%d", &L[i].gra.Math);
        printf("\n请输入第%d个同学的计算机成绩:\n", i + 1);
        scanf("%d", &L[i].);
        printf("\n请输入第%d个同学的物理成绩:\n", i + 1);
        scanf("%d", &L[i].gra.Chemistry);
        printf("\n请输入第%d个同学的英语成绩:\n", i + 1);
        scanf("%d", &L[i].gra.English);


    }
}

    void calculate(struct Line L[], int n) 
    {
        int i;
            //float total[5] = { 0 };
        //float average[5] = { 0 };
        for (i = 0; i < n; i++)
        {
            L[i].total = L[i].gra.Math + L[i]. + L[i].gra.Chemistry + L[i].gra.English;
            L[i].average = (float)L[i].total / 4;
            printf("输出第%d个同学的总成绩:%d\n", i + 1, L[i].total);
            printf("输出第%d个同学的平均成绩:%f\n", i + 1, L[i].average);
        }
    }




    void output(struct Line L[], int n) {

        int i;
        for (i = 0; i < n; i++) {
            printf("学号:%d\n", L[i].num);
            printf("姓名:%s\n", L[i].name);
            printf("性别:%s\n", L[i].sex);
            printf("年龄:%d\n", L[i].age);
            printf("高数成绩:%d\n", L[i].gra.Math);
            printf("计算机成绩:%d\n", L[i].);
            printf("物理成绩:%d\n", L[i].gra.Chemistry);
            printf("英语成绩:%d\n", L[i].gra.English);
            printf("总成绩:%d\n", L[i].total);
            printf("平均成绩:%f\n", L[i].average);

        }

    }
2016-06-21 10:26
瘦不了噜er
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:30
专家分:135
注 册:2016-6-14
收藏
得分:0 
回复 2楼 grmmylbs
程序代码:
     void calculate(struct Line L[], int n) 
     {
         int i;
             //float total[5] = { 0 };
         //float average[5] = { 0 };
        for (i = 0; i < n; i++)
         {
             L[i].total = L[i].gra.Math + L[i]. + L[i].gra.Chemistry + L[i].gra.English;
             L[i].average = (float)L[i].total / 4;
             printf("输出第%d个同学的总成绩:%d\n", i + 1, L[i].total);
             printf("输出第%d个同学的平均成绩:%f\n", i + 1, L[i].average);
         }
     }



这里的这两句   
 //float total[5] = { 0 };
//float average[5] = { 0 };
是什么意思,需要写上吗?


2016-06-21 14:53
快速回复:该怎么使用结构体完成这个问题。。没有学习链表
数据加载中...
 
   



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

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