⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 14-5.txt

📁 c primer 部分习题答案
💻 TXT
字号:
#include <stdio.h>
#include <string.h>
#define LEN 14
#define CSIZE 4
#define SCORES 3
struct name {
    char first[LEN];
    char last[LEN];
};
struct student {
    struct name person;
    float grade[SCORES];
    float ave;
};
void get_grade(struct student ar[], int dem);
void find_aves(struct student ar[], int dem);
void show_class(const struct student ar[], int dem);
void show_ave(const struct student ar[], int dem); 
 
int main(void)
{
    struct student class[CSIZE] ={
        { "Flip", "Snide"},
        { "Clare", "Voyans"},
        { "Bingo", "Higgs"},
        { "Fawn", "Hunter"}
    };
 
    get_grade(class, CSIZE);
    find_aves(class, CSIZE);
    show_class(class, CSIZE);
    show_ave(class, CSIZE);
    return 0;
}
 
void get_grade(struct student ar[], int dem)
{
    int i,j;
    for (i = 0; i < dem; i++)
    {
        printf ("Please enter %d grade for %s %s:\n", SCORES,
            ar[i].person.first, ar[i].person.last);
        for (j = 0; j < SCORES; j++)
        {
            while (scanf("%f", &ar[i].grade[j]) != 1)
            {
                scanf("%*s");
                puts("Please use numeric input.");
            }
        }
    }
}
 
void find_aves(struct student ar[], int dem)
{
    int i, j;
    float sum;
    
    for (i = 0; i < dem; i++)
    {
        for (sum = 0, j = 0; j < SCORES; j++)
            sum += ar[i].grade[j];
        ar[i].ave = sum / SCORES;
    }
}
 
void show_class(const struct student ar[], int dem)
{
    int i, j;
    char wholename[2*LEN];
    
    for (i = 0; i < dem; i++)
    {
        strcpy(wholename, ar[i].person.first);
         strcat(wholename, " ");
         strcat(wholename, ar[i].person.last);
          printf("%27s: ", wholename);
          for (j = 0; j < SCORES; j++)
            printf("%6.1f ", ar[i].grade[j]);
        printf(" Average = %5.2f\n", ar[i].ave);
    }
}
 
void show_ave (const struct student ar[], int dem)
{
    int i, j;
    float total;
 
    printf("\n%27s: ", "QUIZ AVERAGES");
    for (j = 0; j < SCORES; j++)
    {
        for (total = 0, i = 0; i < dem; i++)
            total += ar[i].grade[j];
        printf("%6.2f ", total / dem);
    }
    putchar('\n');
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -