| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 665 人关注过本帖
标题:有思路但实现不了,希望各位指点!
只看楼主 加入收藏
靠谱的白蓝
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:189
注 册:2013-12-11
结帖率:71.43%
收藏
已结贴  问题点数:50 回复次数:9 
有思路但实现不了,希望各位指点!
//题目:全班10个人,每人3门成绩。用swicth语句处理菜单命令,
//从键盘输入一个'A'或'a':输出全班学生各门课的成绩,
//从键盘输入一个'B'或'b':计算并输出每个学生各门课的平均成绩,
//从键盘输入一个'C'或'c':计算并输出各门课的全班平均成绩,
//从键盘输入一个'D'或'd':对全班学生的平均成绩由高到低排序并输出。

#include <stdio.h>
#define N 10
void main()
{
 char ch;
 ch=getchar();
 switch(ch)
 {
 case'a':
 case'A':input();
     break;
     case'b':
 case'B':avrage1();
     break;case'c':
 case'C':avrage();
     break;
     case'd':
 case'D':up();
     break;
 default:putchar("error!")
 }
}
void input()
{
 float score[3],add[10]={0},add1[3]={0};
 int i,j;
 for(i=0;i<N;i++)//人数
 {
   printf("输入第%d个学生3门课程的成绩\n",i+1);
   for(j=0;j<3;j++)//科目
   {
    scanf("%f",&score[j]);
    add[i]+=score[j];//科目成绩累加
    add1[j]+=score[j];//各科目分数累加
   }
 }
}

void average1()
{
 for(i=0;i<N;i++)
   printf("第%d个学生平均成绩:%.1f\n",i+1,add[i]/3);
}
void average()
{
 for(i=0;i<3;i++)
   printf("第%d门课程平均成绩:%.1f\n",i+1,add1[i]/N);
}
void up()
{

}
搜索更多相关主题的帖子: include 键盘 
2014-12-05 00:12
lu3664198
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:185
注 册:2014-11-16
收藏
得分:13 
输入成绩是必须的,不要放进switch语句
应该独立输入,再用switch选择输出

wwwwwww...~~;
本人为大一新生,说的不好不要拍我 ~ ( ̄~ ̄) ;
2014-12-05 08:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:13 
怎样实现不了?

授人以渔,不授人以鱼。
2014-12-05 10:29
comewest
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:74
专家分:335
注 册:2014-12-3
收藏
得分:13 
建议用二维数组int stu[10][3]={0},非常简单。
2014-12-05 10:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
楼主学到Java,又问过C++的问题,到现今返回来说不能解决这种低级问题?ID借了别人吧。

授人以渔,不授人以鱼。
2014-12-05 13:33
comewest
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:74
专家分:335
注 册:2014-12-3
收藏
得分:0 
先来一段自定义函数:
void output(float stu[][3])  //打印全部成绩
{int i,j;
for(i=0;i<N;i++)
    {
    printf("第%d个学生成绩:",i);
    for(j=0;j<3;j++)
        printf("%f\t",stu[i][j]);
    printf("\n");
    }
 }
void averagem(float stu[][3] ,float avem[])  //每个学生的平均分
{int i,j;
for(i=0;i<N;i++)
for(j=0;j<3;j++)
       avem[i] +=stu[i][j]/3;      
   
}
void averagek(float stu[][3],float avek[])   //每门课程的平均分
{int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<N;j++)
    avek[i] +=stu[j][i]/N;

}
}
2014-12-05 13:51
comewest
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:74
专家分:335
注 册:2014-12-3
收藏
得分:0 
主函数来了。。。
#include <stdio.h>
#define N 10
void averagem(float stu[][3],float avem[]);
void averagek(float stu[][3],float avek[]);
void output(float stu[][3]);
void main()
{
char ch;
float stu[N][3];
float avem[N]={0};
float avek[3]={0};
int i,j;
for(i=0;i<N;i++)// 输入全部的成绩
{
printf("输入第%d个学生3门课程的成绩\n",i+1);
for(j=0;j<3;j++)//
    scanf("%f",&stu[i][j]);
}
do{
printf("请输入你的选择:\na:打印成绩表\nb:求每人平均分\nc:求课程平均分\n");
ch=getchar();
switch(ch)
{
case'a':
case'A': output(stu); break;
case'b':
case'B': averagem(stu,avem);
         for(i=0; i<N; i++)
             printf("%f\t",avem[i]);
         printf("\n");
         break;
case'c':
case'C':averagek(stu,avek);
        for(j=0; j<3; j++)
             printf("%f\t",avek[j]);
         printf("\n");break;
default:  if(ch!='q') break;
}
}while(ch!='q'); //按q键退出
}
2014-12-05 14:06
comewest
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:74
专家分:335
注 册:2014-12-3
收藏
得分:0 
按d键排序,也用一个自定义函数,对数组avem[N]进行排序,排序的例子书上都有,把数组(地址)作为函数的参数处理就行了。
2014-12-05 14:12
靠谱的白蓝
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:189
注 册:2013-12-11
收藏
得分:0 
回复 4 楼 comewest
我。。。。
2014-12-05 21:08
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:13 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int i, j;
char ch;
struct {
    double sco[3];
    double sum;
    double avg;
} class[10] = {
    {{0, 0, 0}, 0, 0},
    {{0, 0, 0}, 0, 0},
    {{0, 0, 0}, 0, 0},
    {{0, 0, 0}, 0, 0},
    {{0, 0, 0}, 0, 0},
    {{0, 0, 0}, 0, 0},
    {{0, 0, 0}, 0, 0},
    {{0, 0, 0}, 0, 0},
    {{0, 0, 0}, 0, 0},
    {{0, 0, 0}, 0, 0}
};

int comp(const void *a, const void*b)
{
    return *(int*)b - *(int*)a;
}

void print_stu_sco(void) {
    for(i = 0; i < 10; i++) {
        for(j = 0; j < 3; j++) {
            printf("%.1lf\t", class[i].sco[j]);
        }
        printf("\n");
    }
}

void print_stu_avg(void) {
    for(i = 0; i < 10; i++) {
        printf("%.1lf\t", class[i].avg);
    }
    printf("\n");
}

void print_class_avg(void) {
    double class_sum0=0, class_sum1=0, class_sum2=0;
    for(i = 0; i < 10; i++) {
        class_sum0 = class_sum0 + class[i].sco[0];
        class_sum1 = class_sum1 + class[i].sco[1];
        class_sum2 = class_sum2 + class[i].sco[2];
    }
    printf("%.1lf\t%.1lf\t%.1lf\n", class_sum0 / 10, class_sum1 / 10, class_sum2 / 10);
    printf("\n");
}

void sort_stu_avg(void) {
    double avg_sort[10];
    for(i = 0; i < 10; i++) {
        avg_sort[i] = class[i].avg;
    }
    qsort(avg_sort, 10, sizeof(double), comp);
    for(i = 0; i < 10; i++) {
        printf("%.1lf\t", avg_sort[i]);
    }
    printf("\n");
}

int main(void) {
    srand((unsigned int)time(NULL));
    for(i = 0; i < 10; i++) {
        for(j = 0; j < 3; j++) {
            /*不嫌烦你就挨个填
            scanf("%lf", &(class[i].sco[j]));
            */
            class[i].sco[j]=1 + (100.0 * rand() / (RAND_MAX + 1.0));
            class[i].sum = class[i].sum + class[i].sco[j];
            class[i].avg = (class[i].sum) / j;
        }
    }
    printf("\n");
    scanf("%c", &ch);
    switch(ch) {
        case'a':
        case'A':
            print_stu_sco();
            break;
        case'b':
        case'B':
            print_stu_avg();
            break;
        case'c':
        case'C':
            print_class_avg();
            break;
        case'd':
        case'D':
            sort_stu_avg();
            break;
        default:
            puts("error!");
    }
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2014-12-05 23:55
快速回复:有思路但实现不了,希望各位指点!
数据加载中...
 
   



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

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