| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1296 人关注过本帖
标题:二维数组与指针,其中发现关于scanf和函数返回值得问题,向各位请教!!!
只看楼主 加入收藏
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:14 
二维数组与指针,其中发现关于scanf和函数返回值得问题,向各位请教!!!
问题:
1、输入3个学生的4门成绩(3*4矩阵);
2、计算所有成绩平均分(总分/12);
3、查找第n个学生的成绩,并输出;

程序设计:

第一种,不利用函数返回值,在调用函数中直接输出结果:
程序代码:
#include<stdio.h>

void average(float *p,int n);//计算成绩平均值,并在函数中输出。
void search(float (*p)[4],int n);//查找第n名学生的成绩,并输出。

void main()
{
    float score[3][4],ave;
    int i,j,n;
    printf("The students' scores are:\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
            scanf("%f ",&score[i][j]);
        }
        printf("\n");//此句本想使输入每个学生4四门成绩之后自动换行,但是并没有效果。
    }
    printf("The averange of scores is:\n");
    average(*score,12);
    printf("Search the scores of No.n,please input n:\n");
    scanf("%d",&n);//此句本想等前几句printf输出之后,再输入,可是却要和上句scanf一起输入。
    printf("\n");
    search(score,n);
}

void average(float *p,int n)
{
    float sum=0,ave;
    float *p_end;
    p_end=p+n;
    for(;p<p_end;p++) sum=sum+(*p);
    ave=sum/n;
    printf("%f\n",ave);
}

void search(float (*p)[4],int n)
{
    int i;
    printf("the scores of No.%d is:\n",n);
    for(i=0;i<4;i++) printf("%f",*(*(p+n)+i));
}

程序虽然能执行;
但发现一些问题:
1、本程序中利用中的第一个scanf语句本来的想法是这样的:每输入4个数(也就是一个学生的全部4门成绩),自动换行。结果没有达到效果。程序标红部分。
2、第二个scanf语句,本来想等上面的程序执行完,在输入n,也就是代表查找第几个学生,不过却要和前面的scanf语句一起输入。不知道怎样能达到效果。程序标绿部分。

3、之后又将average函数该为利用返回值,不在函数中利用printf函数,而是返回计算出来的平均值,在主函数中付值给变量,然后再输出,结果输出的结果怎样都是零,不知道哪错鸟???程序如下:

第二种,利用函数返回值:
程序代码:
#include<stdio.h>

int average(float *p,int n);//计算成绩平均值。
void search(float (*p)[4],int n);//查找第n名学生的成绩,并输出。

void main()
{
    float score[3][4],ave;
    int i,j,n;
    printf("The students' scores are:\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
            scanf("%f ",&score[i][j]);
        }
        printf("\n");//此句本想使输入每个学生4四门成绩之后自动换行,但是并没有效果。
    }
    printf("The averange of scores is:\n");
    ave=average(*score,12);//另ave等于函数的返回值。
    printf("%d\n",ave);//输出ave。
    printf("Search the scores of No.n,please input n:\n");
    scanf("%d",&n);//此句本想等前几句printf输出之后,再输入,可是却要和上句scanf一起输入。
    printf("\n");
    search(score,n);
}

int average(float *p,int n)
{
    float sum=0,ave1;
    float *p_end;
    p_end=p+n;
    for(;p<p_end;p++) sum=sum+(*p);
    ave1=sum/n;
    return (ave1);//改为返回平均值,不在函数中输出。
}

void search(float (*p)[4],int n)
{
    int i;
    printf("the scores of No.%d is:\n",n);
    for(i=0;i<4;i++) printf("%f",*(*(p+n)+i));
}


请各位大神帮忙诊断下,看看怎样能解决,是不是我什么地方没搞清楚???谢谢啦!!!

[ 本帖最后由 马也 于 2012-8-10 14:46 编辑 ]
搜索更多相关主题的帖子: search 程序设计 
2012-08-10 14:38
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
额。。。。程序没标上颜色。。。。。好像代码不能标颜色。。。。。不好意思。。。
2012-08-10 14:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
你排版输入画面干什么?

授人以渔,不授人以鱼。
2012-08-10 15:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
问题多了,一言难尽。

授人以渔,不授人以鱼。
2012-08-10 15:10
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 3楼 TonyDeng
您说的是什么?

我是来问问题的~希望能得到帮助~
2012-08-10 15:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你认为我上面的回答没给你帮助就当我放屁咯。

授人以渔,不授人以鱼。
2012-08-10 15:38
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
呵呵。。。。希望其他明白的人看到了能帮忙解答下,我知道程序中可能存在很多问题,没有什么实际经验,很多东西还没有搞明白,不过您的帮助是我很好的学习机会,谢谢了!想问题的问题我在帖子中已经写清楚了,希望各位看一下!
2012-08-10 15:48
ldzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:64
专家分:339
注 册:2012-7-30
收藏
得分:5 
事先申明 这是我百度到的。
用空白符结尾时,scanf会跳过空白符去读下一个字符,所以你必须再输入一个数。这里的空白符包括空格,制表符,换行符,回车符和换页符。所以 scanf("%f ",&score[i][j]);出现这样了的问题。也解释了下面的却要和上句scanf一起输入。
至于输入每个学生4四门成绩之后自动换行不能实现 这就是所谓的行缓冲输入(唯有这个我还比较清楚,
据说是在《C程序设计语言》(K&C)书上有解释,可惜我在用的是C Prime Plus,唉。

2012-08-10 16:42
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 8楼 ldzy
您的意思是只能在一行输入数据,不管用什么方法也不能换行是么???
2012-08-10 18:01
ldzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:64
专家分:339
注 册:2012-7-30
收藏
得分:0 
回复 9楼 马也
可以自己打ENTER换行啊
2012-08-10 18:04
快速回复:二维数组与指针,其中发现关于scanf和函数返回值得问题,向各位请教! ...
数据加载中...
 
   



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

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