计算机二级

若有以下程序#include <stdio.h>void f(int n);main(){ void f(int n); f(5);}void f(int n){ printf("%d\n",n); }则以下叙述中不正确的是A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB.若在主函数前对函数f进行说明,则在主函数和其他函数中都可以正确调用函数fC.对于以上程序,编译时系统会提示出错信息:对f函数重复说明D.函数f无返回值,所以,可用void将其类型定义为无返回值型

题目

若有以下程序#include <stdio.h>void f(int n);main(){ void f(int n); f(5);}void f(int n){ printf("%d\n",n); }则以下叙述中不正确的是A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB.若在主函数前对函数f进行说明,则在主函数和其他函数中都可以正确调用函数fC.对于以上程序,编译时系统会提示出错信息:对f函数重复说明D.函数f无返回值,所以,可用void将其类型定义为无返回值型

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

第1题:

有以下程序includevoid f(int *p,int *q);main(){ int m=1,n=2,*r=&m;f(r, &n

有以下程序 #include<stdio.h> void f(int *p,int *q); main() { int m=1,n=2,*r=&m; f(r, &n); printf("%d,%d",m,n); } void f(int*p,int*q) {p=p+1; *q=*q+1;) 程序运行后的输出结果是______。

A.1,3

B.2,3

C.1,4

D.1,2


正确答案:A
解析:本题主要考查函数实参和形参之间的传递,C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只能由实参传绐形参,而不能由形参传回来给实参。f(r&n)把n的地址传递给q,通过地址传递的函数可以有返回值,因此,n的值为q的返回值3,又因为p是形参变量没有返回值,所以m的值没有改变,因此,选项A是正确的。

第2题:

若有以下程序includevoidf(intn);main() (voidf(intn); f(5); }void f(intn) {printf(

若有以下程序 #include <stdio.h> void f(int n); main() ( void f(int n); f(5); } void f(int n) { printf("%d\n",n); } 则以下叙述中不正确的是

A.若只在主函数中对函数f进行说明,则只能在土函数中正确调用函数f

B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正碗调用函数f

C.对于以上程序,编译时系统会提示出错信息:提示对f函数重复况明

D.函数f无返回值,所以可用void将其类型定义为无值型


正确答案:C
解析:本题考核的知识点是函数说明的方法。若一个函数定义在主调函数之后,其返回值不是int或char型,则必须对之进行函数说明。可在函数外说明也可以在函数内说明,在函数外说明,在其后的所有函数均可调用该函数,若在函数内说明,则只能在本函数内调用该函数。函数只能定义一次,但函数说明可以出现多次,因此选项C是错误的。所以,4个选项中C为所选。

第3题:

*((int *)pval)/=2; //我想问一下,这个语法怎么理解,太复杂了 具体代码如下。

#include "stdio.h"void half(void *pval,char type);main(){ int i=20; long l=100000; float ff=12.456; double d=123.044444; printf("%d\n",i); printf("%ld\n",l); printf("%f\n",ff); printf("%lf\n",d); half(&i,'i'); half(&l,'l'); half(&ff,'ff'); half(&d,'d'); printf("\n%d",i); printf("\n%ld",l); printf("\n%f",ff); printf("\n%lf",d); return 0; }void half(void *pval,char type){ switch(type) { case 'i': { *((int *)pval)/=2; //我想问一下,这个语法怎么理解,太复杂了 break; } case 'l': { *((long *)pval)/=2; break; } case 'ff': { *((float *)pval)/=2; break; } case 'd': { *((double *)pval)/=2; break; } } }


*((int *)pval)/=2; 一步步讲解: 1,(int*)pval 是把pval指针强制类型转化成 int*,这时pval可看作是个指向int的指针。为了方便说明我们可以int *p = (int*)pval;以后就可以用p代替(int*)pval了。 2,*(p) /=2;也就是 *p /= 2; 这里括号可以去掉了。 /=类似+=、*=, *p /=2;就是 *p = *p/2;

第4题:

有以下程序:includeiht fun(iht n,int*p){int f1,f2;if(n==1||,n==2)*p=1;else{fun(n-

有以下程序: #include<stdio.h> iht fun(iht n,int*p) { int f1,f2; if(n==1||,n==2)*p=1; else { fun(n-1,&f1);fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf("%d\n",s); } 程序的运行结果是______。

A.2

B.3

C.4

D.5


正确答案:A
解析: 本题考查的重点是理解递归函数。fun()为递归函数,递归结束条件时n为1或2,从而fun(3,&s)得fun(2,&s)+fun(1,&s)=1+1=2,因此选项A是正确的。

第5题:

有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。

A.int类型

B.float类型

C.void类型

D.函数无类型说明,定义有错


正确答案:A
本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

第6题:

有以下程序include<stdio.h>int*f(int*p,int*q);main( ){int m=1,n=2,*r=&m;r=f(r,&am

有以下程序

include<stdio.h>

int*f(int*p,int*q);

main( )

{int m=1,n=2,*r=&m;

r=f(r,&n);printf(”%d\n”,*r);

}

int-f(int*P,int*q)

(return(*p>*q)?p:q;)

程序运行后的输出结果是______。


正确答案:2
2 解析:函数f的返回值的类型是int*,作用是返回两个int*型指针所指变量中值大的那个指针的。本题中定义了一个int*型指针r并置初值&m,即指针r指向m。r=f(r,&n),由于m的值小于n值,所以f函数返回值为&n,所以输出为2,即n值。

第7题:

若有以下程序includevoid f(int n);main(){ void f(int n);f(5);}void f(int n){print

若有以下程序 #include<stdio.h> void f(int n); main() { void f(int n); f(5); } void f(int n) {printf(“%d\n”,n);} 则以下叙述中不正确的是

A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B.若在主函数前对函数f进行说明,则在主函数和其后的其他的其他函数中都可以正确调用函数f

C.对于以上程序,编译时系统会提示出错信息;提示对f函数重复说明

D.函数f无返回值,所以可用void将其类型定义为无值型


正确答案:C
解析:若一个函数定义在主调函数之后,其返回值不是int或char型,则必须对之进行函数说明。可在函数外说明也可以在函数内说明,在函数外说明,在其后的所有函数均可调用该函数,若在函数内说明,则只能在本函数内调用该函数。函数只能定义一次,但函数说明可以出现多次。

第8题:

若有以下程序:includevoid f(int n);main(){void f(int n); f(5);}void f(int n){prin

若有以下程序: #include<stdio.h> void f(int n); main() { void f(int n); f(5); } void f(int n) { printf("%d\n",n);}则以下叙述中不正确的是( )。

A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f

C.对于以上程序,编译时系统会提示出错信息:对f函数重复说明

D.函数f无返回值,所以可用void将其类型定义为无返回值型


正确答案:C
解析:f函数没有重复说明,在main函数中是对f函数声明,在main函数外则是对f函数的定义。

第9题:

有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。A.int类型SX

有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。

A.int类型

B.float类型

C.void类型

D.函数无类型说明,定义有错


正确答案:A
本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

第10题:

以下程序的输出结果是 int a[3][3]={1,2,3,4,5,6,7,8,9,},*p; int main(void) { p=(int*)malloc(sizeof(int)); f(p,a); printf("%d n",*p); return 0; } f(int *s, int p[][3]) { *s=p[1][1]; }

A.1

B.4

C.7

D.5


B函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从0开始,每个元素都自加1。