鱼C论坛

 找回密码
 立即注册
查看: 1132|回复: 2

[已解决]学校作业,求助

[复制链接]
发表于 2020-12-20 16:56:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
根据要求编写程序P266.C的指定部分:
  程序P266.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序(在指定的位置添加代码或将__________换成代码)——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
  程序的功能是:分3次调用自定义函数实现从键盘为数组arr1、arr2、arr3分别读入6、8、12个数并计算每一组数的和及其中大于70的数的个数,然后分别输出每一数组尾部元素的值及所有元素的和、大于70的数的个数。编程可用素材:printf("请输入%2d个数: "…。
  程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。

请输入 6个数: 1    2.1  3    79 5.3  6.2
请输入 8个数: 81.3 22   33.7 44 55   66   77.9 88.1
请输入12个数: 21   83.5 25   27 29.3 91.2 33   35   37 39.6 51.7 53

arr1[ 5]= 6.2, sum(arr1)= 96.6, cnt(arr1)=1
arr2[ 7]=88.1, sum(arr2)=468.0, cnt(arr2)=3
arr3[11]=53.0, sum(arr3)=526.3, cnt(arr3)=2

以下为下载后得到的程序:
#include <stdio.h>

/* userCode(<80字符): 自定义函数之原型声明 */
______________________________

int main(void)
{
        float arr1[6], arr2[8], arr3[12], sumA, sumB, sumC;
        int gt70A, gt70B, gt70C;
       
        ______________________________  /* userCode(<80字符): 调用函数读 6个数到arr1中,并计算和及>70的个数 */
        ______________________________  /* userCode(<80字符): 调用函数读 8个数到arr2中,并计算和及>70的个数 */
        ______________________________  /* userCode(<80字符): 调用函数读12个数到arr3中,并计算和及>70的个数 */

        printf("\narr1[ 5]=%4.1f, sum(arr1)=%5.1f, cnt(arr1)=%d",   arr1[5],  sumA, gt70A);
        printf("\narr2[ 7]=%4.1f, sum(arr2)=%5.1f, cnt(arr2)=%d",   arr2[7],  sumB, gt70B);
        printf("\narr3[11]=%4.1f, sum(arr3)=%5.1f, cnt(arr3)=%d\n", arr3[11], sumC, gt70C);
       
        return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */

下面都是我写的程序:#include <stdio.h>

/* userCode(<80字符): 自定义函数之原型声明 */
float f1(float *ss, int nn, int *ggt);

int main(void)
{
        float arr1[6], arr2[8], arr3[12], sumA, sumB, sumC;
        int gt70A, gt70B, gt70C;
       
        sumA = f1(arr1, 6, &gt70A);  /* userCode(<80字符): 调用函数读 6个数到arr1中,并计算和及>70的个数 */
        sumB = f1(arr2, 8, &gt70B);  /* userCode(<80字符): 调用函数读 8个数到arr2中,并计算和及>70的个数 */
        sumC = f1(arr3, 12, &gt70C);  /* userCode(<80字符): 调用函数读12个数到arr3中,并计算和及>70的个数 */

        printf("\narr1[ 5]=%4.1f, sum(arr1)=%5.1f, cnt(arr1)=%d",   arr1[5],  sumA, gt70A);
        printf("\narr2[ 7]=%4.1f, sum(arr2)=%5.1f, cnt(arr2)=%d",   arr2[7],  sumB, gt70B);
        printf("\narr3[11]=%4.1f, sum(arr3)=%5.1f, cnt(arr3)=%d\n", arr3[11], sumC, gt70C);
       
        return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
float f1(float *ss, int nn, int *ggt)
{
        int i;
        float yy=0;
        *ggt = 0;
        printf("请输入%2d个数: ", nn);
        for (i=0; i<nn; i++)
        {
                scanf ("%4.1f", &ss[i]);
                yy = yy + ss[i];
                if(ss[i]>70)
                {
                        *ggt++;
                }
        }
       
        return yy;
}
下面是运行结果:
请输入 6个数: 1    2.1  3    79 5.3  6.2
请输入 8个数: 请输入12个数:
arr1[ 5]=-107374176.0, sum(arr1)=-644245056.0, cnt(arr1)=0
arr2[ 7]=-107374176.0, sum(arr2)=-858993408.0, cnt(arr2)=0
arr3[11]=-107374176.0, sum(arr3)=-1288490240.0, cnt(arr3)=0
Press any key to continue
我输完第一行的六个数按下回车就这样了,求解答
最佳答案
2020-12-20 17:45:05
本帖最后由 jackz007 于 2020-12-20 18:03 编辑

       这两句要改
                scanf ("%4.1f", &ss[i]);
. . . . . .
                        *ggt++;
       改为
                scanf ("%f", &ss[i]);
. . . . . .
                        (*ggt)++;

        下面是帮楼主修改的函数代码,谨供楼主参考
float f1(float *ss, int nn, int * ggt)
{
        int i                             ;
        float r                           ;
        printf("请输入 %2d 个数:" , nn)  ;
        for(r = * ggt = i = 0 ; i < nn ; i ++) {
                scanf("%f" , & ss[i])     ;
                r += ss[i]                ;
                if(ss[i] > 70) (* ggt) ++ ;
        }
        return r                          ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-20 16:59:12 | 显示全部楼层
        sumA = f1(arr1, 6, &gt70A);  /* userCode(<80字符): 调用函数读 6个数到arr1中,并计算和及>70的个数 */
        sumB = f1(arr2, 8, &gt70B);  /* userCode(<80字符): 调用函数读 8个数到arr2中,并计算和及>70的个数 */
        sumC = f1(arr3, 12, &gt70C);  /* userCode(<80字符): 调用函数读12个数到arr3中,并计算和及>70的个数 */

这些是什么东东?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-20 17:45:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-12-20 18:03 编辑

       这两句要改
                scanf ("%4.1f", &ss[i]);
. . . . . .
                        *ggt++;
       改为
                scanf ("%f", &ss[i]);
. . . . . .
                        (*ggt)++;

        下面是帮楼主修改的函数代码,谨供楼主参考
float f1(float *ss, int nn, int * ggt)
{
        int i                             ;
        float r                           ;
        printf("请输入 %2d 个数:" , nn)  ;
        for(r = * ggt = i = 0 ; i < nn ; i ++) {
                scanf("%f" , & ss[i])     ;
                r += ss[i]                ;
                if(ss[i] > 70) (* ggt) ++ ;
        }
        return r                          ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 10:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表