| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 486 人关注过本帖
标题:新手求助,关于格式输入问题?
只看楼主 加入收藏
mxl800
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-4-22
结帖率:100%
收藏
 问题点数:0 回复次数:2 
新手求助,关于格式输入问题?
#include <stdio.h>

void avsco(float *psco,float *pave);
void avcour5(char *pcou,float *psco);
void fali2(char *pcou,int *pnum,float *psco,float *pave);
void excellence(char *pcou,int *pnum,float *psco,float *pave);

void main()
{
    //数组num用于存放每位学生的学号
    int i,j,*pnum,num[4];
    //数组aver存放每位学生的平均分,二维数组score用于存放学生成绩
    float score[4][5],aver[4],*psco,*pave;
    //数组course存放5门课程的名称
    char course[5][10],*pcou;

    printf("请按行输入5门功课的名称:\n");
    pcou=course[0];           //指针变量pcou用来存放数组course的首地址
                              //从首地址开始,每十个字节存放一个课程的名称
    for(i=0;i<5;i++)
        scanf("%s",pcou+10*i);        //以空格为间隔输入五门课程的名称

    printf("请按下面的格式输入4个学生的学号和各科成绩:\n");
    printf("学号");
    for(i=0;i<5;i++)
        printf(",%s",pcou+10*i);        //输出各门课程的名称
    printf("\n");
    psco=&score[0][0];             //指针psco指向数组score中的第一个元素
                                   //即指向第一个学生第一门课程的成绩
    pnum=&num[0];
    for(i=0;i<4;i++)
    {
        scanf("%d",pnum+i);         //输入学号
        for(j=0;j<5;j++)
            scanf(",%f",psco+5*i+j);        //以逗号为间隔输入学生成绩
    }

    pave=&aver[0];                   //将数组aver的首地址赋给指针pave
    printf("\n\n");                 //空行
    avsco(psco,pave);
     avcour5(pcou,psco);
    printf("\n\n");                //空行
    fali2(pcou,pnum,psco,pave);
    printf("\n\n");                //空行

    excellence(pcou,pnum,psco,pave);
}

void avsco(float *psco,float *pave)       //求每个学生的平均成绩
{
    int i,j;
    float sum,average;
    for(i=0;i<4;i++)           //i代表学生的序号,表示第i个学生
    {
        sum=0.0;
        for(j=0;j<5;j++)       //j代表课程的序号,表示第j门课程
            sum=sum+(*(psco+5*i+j));          //累计每个学生的各科成绩
        average=sum/5;                 //计算第i个学生的平均成绩
        *(pave+i)=average;
    }
}

void avcour5(char *pcou,float *psco)          //求第五门课程的平均成绩
{
    int i;
    float sum,average5;
    sum=0.0;
    for(i=0;i<4;i++)
        sum=sum+(*(psco+5*i+4));             //累计每个学生第五门课的得分
    average5=sum/4;                         //计算第五门课程的平均成绩
    printf("第5门课程%s的平均成绩为%5.2f.\n",pcou,average5);
}

void fali2(char *pcou,int *pnum,float *psco,float *pave)
{
    int i,j,k,label;
    printf("      =====两门以上课程不及格的学生=====      \n");
    printf("  学号  ");
    for(i=0;i<4;i++)
    {
        label=0;
        for(j=0;j<5;j++)
            if(*(psco+5*i+j)<0.0)
                label++;                   //计算第i个学生不及格课程的门数
        if(label>=2)
        {
            printf("%-8d",*(pnum+i));           //输出学号
            //输出符合条件学生的各科成绩
            for(k=0;k<5;k++)
                printf("  %-8.2f",*(psco+5*i+k));
            //输出符合条件学生的平均分
            printf("  %8.2f\n",*(pave+i));
        }
    }
}

//程序结构和上一个子函数fali2类似
void excellence(char *pcou,int *pnum,float *psco,float *pave)
{
    int i,j,k,label;
    printf("      =====成绩优秀学生=====\n");
    printf("  学号  ");
    for(i=0;i<5;i++)
        printf("  %-8s",pcou+10*i);
    printf("  平均分\n");
    for(i=0;i<4;i++)
    {
        label=0;
        for(j=0;j<5;j++)
            if(*(psco+5*i+j)>=85.0)
                label++;
        if((label>=5)||(*(pnum+i)>=90))
        {
            printf("%-8d",*(pnum+i));
            for(k=0;k<5;k++)
                printf("  %-8.2f",*(psco+5*i+k));
            printf("  %-8.2f\n",*(pave+i));
        }
    }
}

为何当课程名称输入为英文时,程序运行就正确,课程名称输入为中文,程序运行就不对!当输入课程名称为中文时
    for(i=0;i<4;i++)
    {
        scanf("%d",pnum+i);         //输入学号
        for(j=0;j<5;j++)
            scanf(",%f",psco+5*i+j);        //以逗号为间隔输入学生成绩
    }
该段代码只运行第一次的输入学号,后面的输入成绩及其他学号均未输入程序就走入下段代码了。
在VC++6.0和C FREE 3.5中均有此问题!
为什么?
请高手帮忙看看!
谢谢!
搜索更多相关主题的帖子: 格式 输入 
2008-05-11 16:17
mxl800
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-4-22
收藏
得分:0 
没人帮我吗?
2008-05-11 16:24
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
把第二个scanf后面的“,”去掉试试。
2008-05-11 22:15
快速回复:新手求助,关于格式输入问题?
数据加载中...
 
   



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

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