C语言程序设计

单选题以下程序的主函数中调用了在其前面定义的函数fun: #include … main() {double a[15],k;k=fun(a);… } 则以下选项中错误的fun函数首部是(  )。A double fun(double a[15])B double fun(double*a)C double fun(double a[])D double fun(double a)

题目
单选题
以下程序的主函数中调用了在其前面定义的函数fun: #include  … main() {  double a[15],k;  k=fun(a);  … } 则以下选项中错误的fun函数首部是(  )。
A

double fun(double a[15])

B

double fun(double*a)

C

double fun(double a[])

D

double fun(double a)

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列给定的程序中,函数fun()的功能是:求输入的两个数中较小的数。

例如:输入5 10,结果为min is 5。

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

[试题源程序]

include <stdio.h>

include <conio.h>

int fun(int x, (1) ;

int z;

z=x<y (2) x:y;

return(z);

}

main()

int a, b, c;

scanf("%d, %d\n", (3) );

c=fun(a, b);

printf("min is%d:, c);

}


正确答案:[1] int y [2] ? [3] &a&b
[1] int y [2] ? [3] &a,&b 解析:填空1:根据题目的意思,这里应该是子函数的参数声明部分。C语言规定,在函数的形参中不允许出现int x,y之类的语句,必须指定每一个参数的类型,所以不能直接写y。
填空2:根据题目的意思,此处是使用三目运算符“?”比较两个数的大小,使用规则是:如果运算符前面的表达式中哪个变量成立,则整个式子就取运算符后面的这个变量。
填空3:由算法可以看出,此处是输入变量a和b的值,因为使用了scanf函数,所以应该使用符号“&”,注意两个变量之间的“,”不能省略。

第2题:

下列给定程序中,函数fun()的功能是计算并输出high以内的素数之和。high由主函数传给fun()函数。若high的值为 100,则函数的值为1060。

请改正程序中的错误,使它能得到正确结果。

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

试题程序:

include <conio.h>

include <stdio.h>

include <math.h>

int fun(int high)

{

int sum=0,n=0,j,yes;

while(high>=2)

{

yes=1;

for(j=2;j<=high/2;j++)

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

ifhigh%j==0

{

yes=0;

break;

}

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

if(yes==0)

{

sum+=high;

n++;

}

high--;

}

return sum;

}

main()

{

clrscr();

printf("%d\n",fun(100));

}


正确答案:(1)错误:ifhigh%j=0 正确:if(high%j==0) (2) 错误:if(yes==0) 正确:if(yes)
(1)错误:ifhigh%j=0 正确:if(high%j==0) (2) 错误:if(yes==0) 正确:if(yes) 解析:错误1:if语句的两侧要加括号。错误2:yes为1时,说明被判断的数为素数,要加入总和。

第3题:

编写函数fun(),它的功能是:计算和输出下列级数的和。

S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))

例如,当n=10时,函数值为0.909091。

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

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

试题程序;

include<conio.h>

include<stdio.h>

double fun(int n)

{

}

main ( )

{

clrscr();

printf("%f\n",fun(10));

}


正确答案:double fun(int n) { int i; double s=0.0; for (i=l; i<=n; i++) s=s+l.0/(i* (i+l)); /*求级数的和*/ return s; }
double fun(int n) { int i; double s=0.0; for (i=l; i<=n; i++) s=s+l.0/(i* (i+l)); /*求级数的和*/ return s; } 解析:解决数学序列的问题,我们的思路依然是“数学先行”,即先看清楚题目的数学逻辑,然后再根据C语言来“翻译”出来。本题中,每一项的值都是n*(n+1)的倒数。当输入n时,从1开始循环,注意,此处for(i=1;i

第4题:

请编写函数fun(),它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,输入字符1,则输出3。

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

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

试题程序:

include<coio.h>

include<stdio.h>

define M 81

int fun(char *ss,char c)

{

}

main()

{ char a[M],ch;

clrscr();

printf("\nPlease enter a string:");

gets(a);

printf("\nPlease enter a char:");

ch=getchar();

printf("\nThe number of the char is:%d \n",fun(a,ch));

}


正确答案:int fun(char *sschar c) { int i=0; for (;*ss!='\0';ss++) if(*ss==c) i++; /*求出ss所指字符串中指定字符的个数*/ return i; }
int fun(char *ss,char c) { int i=0; for (;*ss!='\0';ss++) if(*ss==c) i++; /*求出ss所指字符串中指定字符的个数*/ return i; } 解析:从字符串ss中找出子字符串的方法是:从第1个字符开始,对字符串进行遍历:若ss串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串的结尾,则跳出循环;若“串的字符和c串的字符不对应相同,则继续对,s串的下一个字符进行处理。本程序是采用逐一比较的方式找出出现的次数。循环的作用是在串中从左到右逐一走动,if()的作用是进行判断是否相同,若与c相同则表示又出现一次.

第5题:

请编写函数fun(),该函数的功能是:计算n门课程的平均分,计算结果作为函数值返回。

例如x有5门课程的成绩是90.5,72,80,61.5,55,则函数的值为71.80。

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

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

试题程序:

include <stdio.h>

float fun (float *a, int n)

{

}

main ()

{

float score[30]=(90.5,72,80,61.5,55},

aver;

aver=fun(score, 5);

printf("\nAverage score is: %5.2f

\n",aver);

}


正确答案:float fun (float *a int n) { float av=0.0; int i; for(i=0;i av=av+a[i]; /*求分数的总和*/ return (av/n); /*返回平均值*/ }
float fun (float *a, int n) { float av=0.0; int i; for(i=0;i av=av+a[i]; /*求分数的总和*/ return (av/n); /*返回平均值*/ } 解析:我们先按数学的思路来计算平均分:总分除以人数即可得到平均分,其实用C语言的指针来实现该问题,也不难。当指针变量指向一个数组时,用该指针变量引用数组元素时,引用方式与数组的引用方式相同。如本题中a指向了score,所以通过a引用score中的元素时可以用下标法,也可以用指针运算法,a[i]和*(a+i)具有相同的作用。下标运算实际上是从当前地址开始往后取出地址中的第几个元素,当前地址下标为0。例如:若有int cc[10],*P=cc+5;,即p指向了cc的第5号元素,则p[0]的作用是取出从当前地址(即p所指地址)开始的第0号元素,它与cc[5]相同:p[3]的作用是取出从当前地址(即p所指地址)开始往后的第3号元素,它与cc[8]相同:p[-2]的作用是取出从当前地址开始往前的第2号元素,它与cc[3]相同,但不提倡使用“负”的F标。

第6题:

国家二级(C语言)机试模拟试卷104

下列给定的程序中,函数fun()的功能是:求输入的两个数中较小的数。

 例如:输入5 10,结果为rain is 5。

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

 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

 [试题源程序]

 #include  <stdio.h>

 #include  <conio.h>

 int fun(int x, (1) )

 {

 int z;

 z=x<y (2) x:y;

 return(z);

 }

 main()

 {

 int a, b, c;

 scanf("%d, %d\n", (3) );

 c=fun(a, b);

 printf("min is %d", c);

 }


答案:(1)y,z;(2)?(3)&a, &b

第7题:

请补充fun函数,该函数的功能是:判断一个年份是否为闰年。

例如,1900年不是闰年,2004是闰年。

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

[试题源程序]

include<stdio.h>

include<conio.h>

int fun(int n)

{

int fiag=0;

if(n%4==0)

{

if( (1) )

fiag=1;

}

if( (2) )flag=1;

return (3) ;

}

void main()

{

int year;

clrscr();

printf("Input the year:");

scanf("%d", &year);

if(fun(year))

printf("%d is a leap year.\n", year);

else

printf("%d is not a leap year.\n", year);

}


正确答案:[1] n%100 !=0 [2] n%400==0 [3] flag
[1] n%100 !=0 [2] n%400==0 [3] flag 解析:题的关键是要知道闰年的定义,如果年份能被4整除但不能被100整除,或者能被400整除,这两种情况满足之一都是闰年。
填空1:显然此处属于第一种情况,能被4整除但不能被100整除。所以这里应该填n%100!=0,只有满足这个条件,flag才能被赋值1。
填空2:此处属于第二种情况,能被400整除,所以应该填n%400==0。
填空3:从程序中可以知道,当满足以上两种情况之一时,flag就被赋值1,显然flag属于标志单元。再看主函数中对fun()函数的调用,显然需要返回的值不是真就是假,即函数fun()中标志单元flag的内容。

第8题:

编写函数fun(),它的功能是;根据以下公式求p的值,结果由函数值带回。m与n为两个正数且要求m>n。

P=m!/n!(m-n)!),例如:m=12,n=8时,运行结果为495.000000。

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

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

试题程序:

include <conio.h>

include <stdio.h>

float fun (int m, int n)

{

}

main()

{

clrscr() ;

printf ("p=%f\n", fun (12,8) ) ;

}


正确答案:float fun (int m int n) { int i; double p=1.0; for(i=1;i=m;i++) p=p*i; /*求m!*/ for(i=1;i=n;i++) p=p/i; /*求m!/n!*/ for(i=1;i=m-n;i++) p=p/i; /*求m!/(n!(m-n)!)*/ return p; }
float fun (int m, int n) { int i; double p=1.0; for(i=1;i=m;i++) p=p*i; /*求m!*/ for(i=1;i=n;i++) p=p/i; /*求m!/n!*/ for(i=1;i=m-n;i++) p=p/i; /*求m!/(n!(m-n)!)*/ return p; } 解析:本题中,欲求P的值,需要先求m,n,m-n的阶乘值,可用循环语句实现。注意阶乘值应当是double类型,若定义x,y,z为整型变量,则p=x/(y*z)中的除法为整数除法。

第9题:

请补充函数fun(),函数fun()的功能是求7的阶乘。

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

long fun(int n)

{

if(【 】)

return(n*fun(【 】);

else if(【 】)

return 1;

}

main()

{

int k=7;

printf("%d!=%ld\n", k, fun(k));

}


正确答案:n>1 n-1 n==1
n>1 n-1 n==1 解析:第一空:求阶乘时采用递归的算法,n>1和n==1这两种情况的处理方法不同,需要分开考虑。第二空:阶乘的算法是,当n>1时,n!=n*(n-1)!,即fun(n)=n*fun(n-1)。第三空:n==1是递归的终止条件,因为1!=1,所以当n=1时,返回1。

第10题:

编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。例如:n为1000时,函数值应为s=153.909064。

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

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

试题程序:

include <conio.h>

include <math.h>

include <stdio.h>

double fun(int n)

{

}

main()

{

clrscr();

printf("s=%f\n", fun(1000));

}


正确答案:double fun(int n) {double s=0.0; int i; for(i=0; in;i++) /*从0~n中找到既能被3整除同时又能被7整除的数并将这些数求和*/ if (i%3==0&&i%7==0) s=s+i; s=sqrt (s); /*对s求平方根*/ return s; }
double fun(int n) {double s=0.0; int i; for(i=0; in;i++) /*从0~n中找到既能被3整除同时又能被7整除的数,并将这些数求和*/ if (i%3==0&&i%7==0) s=s+i; s=sqrt (s); /*对s求平方根*/ return s; } 解析:本题的解题思路是逐个取得从0~n之间的所有数,对每次取得的数进行条件判断,条件是既能被3整除同时又能被7整除,注意:这两个条件要求同时成立,因此用到了“&及,’运算符。满足条什,该数就被累加到s中去,所有符合条件的数找完后,用sqd()函数(包含于头文件math.h>中)对s求平方根。

更多相关问题