下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <stdio.h>define SIZE 20fun (doub

题目

下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。

请改正函数fun()中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include <stdio.h>

define SIZE 20

fun (double *s, double *w)

{ int k, i; double sum;

for(k=2, i=0; i<SIZE; i++)

{s [i]=k; k+=2;}

sum=0.0;

for(k=0, i=0; i<SIZE;i++)

{sum+=s[i];

/*************found**************/

if(i+1%5==0)

{w[k]=sum/5; Sum=0; k++;}

}

return k;

}

main()

{ double a[SIZE],b[SIZE/5];

int i, k;

k=fun(a/b);

printf ("The original data:\n");

for(i=0;i<SIZE;i++)

{

if(i%5==0)printf("\n");

printf("%4.0f"/a[i]);

}

printf{"\n\nThe result:\n");

for(i=0; i<k; i++) printf("%6.2f",b[i]);

printf("\n\n");

}


相似考题
更多“下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对 ”相关问题
  • 第1题:

    函数fun的功能是:将s所指字符串中下标为偶数同时ASCIl值为奇数的字符删除,S所指串中剩余的字符形成的新串放在t所指的数组中。

    例如,若s所指字符串中的内容为“ABCDEFGl2345”,其中字符C的ASCIl码值为奇数,在数组中的下标为偶数,因此必须删除;而字符l的ASCIl码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDFl2345”。

    注意:部分源程序给出如下。

    请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

    试题程序:


    正确答案:

  • 第2题:

    下列给定程序中,函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a [0][2] .....中,把偶数从数组中删除,奇数个数通过函数值返回。 例如:若a所指数组中的数据最初排列为:9、1、4,2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、 3、5、7,返回值为5。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序在文件BLANKl.C中。 不得增行或删行,也不得更改程序的结构!


    正确答案:
    【考点分析】
    本题考查:if语句条件表达式;自增/自减运算符;函数返回值。
    【解题思路】
    填空1:根据题目要求,需要进行奇偶数的判定,可以通过if条件语句来判断数组元素是否是奇数,如果元素不能被2整除,则为奇数,所以填人if(a[i]%2==1)。
    填空2:将为奇数的元素重新存放到数组的前面,同时下标增1。
    填空3:函数返回值需要返回数组中奇数的个数,因此返回变量j。
    【解题宝典】
    奇数和偶数的判定方法,通过if条件语句完成,对2求余运算,结果为0是偶数,结果为1是奇数。
    自增1、自减1运算符:自增l运算符记为”++”,其功能是使变量的值自增l。自减1运算符记为”一一”,其功能是使变量值自减1。自增1、自减1运算符均为单目运算,都具有右结合性。有以下几种形式:

  • 第3题:

    定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。


    main() {int a[30],b[6], sum=0,k,j=0; for(k=0;k<30;k++) a[k]=(k+1)*2; for(k=0;k<30;k++) if(k%5= =0) {b[j]=sum/5;j++; sum=0; } else sum=sum+a[k]; for(j=0;j<6;j++) printf(“%4d”,b[j]); }

  • 第4题:

    下列给定程序中,函数proc()的功能是:按顺序给str所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若str所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,str所指数组有17个元素,则只对前15个元素进行处理,不对最后的2个元素求平均值。 程序执行结果为Theoriginaldata: 246810 1214161820 2224262830 3224 Theresult: 6.0016.0026.00 请修改函数proc()中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:


    正确答案:
    错误:if(i+1%5==0)
    正确:if((i+1)%5==0)
    【解析】按题目中要求,对每5个元素求平均值。每取到5个元素的标志为(i+1)对5取余为0,而表达式“i+1%5”表示的含义为变量i加上1对5取余,因此,应改为“if((i+1)%5==0)”。

  • 第5题:

    【简答题】定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。


    main() {int a[30],b[6], sum=0,k,j=0; for(k=0;k<30;k++) a[k]=(k+1)*2; for(k=0;k<30;k++) if(k%5= =0) {b[j]=sum/5;j++; sum=0; } else sum=sum+a[k]; for(j=0;j<6;j++) printf(“%4d”,b[j]); }