函数 一、判断
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
,如果以下各题叙述正确,则在括号中填入“Y”,否则填入“N” 1、一个函数中有且只能有一个return语句(N) 2、在一个函数中定义的静态局部变量不能被另一函数调用(Y) 3、用数组名作为函数调用时的实参,实际上传递给形参的是数组的全部值(N) 4、在C语言中,主函数可以调用任意一个函数,但是不能使用其他函数中定义的变量(Y) 5、C语言规定,程序中各函数之间既允许嵌套定义也允许嵌套调用(N) 二、选择题 1、若函数的调用形式如下 f((x1,x2,x3),(y1,y2)) 则函数形参的个数是(A) A.2 B.3 C.4 D.5 2、执行下列程序后的输出结果是(C) int a=3,b=4; void fun(int x1,int x2) { printf(“%d,%d”,x1+x2, b); } main() { int a=5,b=6; fun(a,b); } A. 3,4 B. 11,1 C. 11,4 D. 11,6 三、完善程序题 在 A和B两处填入正确内容,使程序完整。 1、以下函数功能是连接两个字符串 void str_cat(char str1[], char str2[],char str[]) { int i, j; for (i=0;str1[i]!=’\0’;i++) str[i]=str1[i]; for(j=0;str2[j]!=’\0’;j++) ____str[i++]=str2[j]____ ____str[i]=’\0’____ } 2、以下函数功能是计算x的y次方 double fun(float x, int y) { int i=1; double z=1; if (y==0) return 1; while(____i<=y____) { z=____z*x____; i++; } return z; } 四、程序阅读题 1、 main() { int x=10; { int x=20; printf(“x=%d”,x); } printf(“x=%d\n”,x); } 运行结果:___x=20, x=10___ 2、 #include “stdio.h” #include “ctype.h” void fun(char s[]) { int i,j; for (i=j=0;s[i];i++) if(isalpha(s[i])) s[j++]=s[i]; s[j]=’\0’; } main() { char str[20]=”How are you!”; fun(str); puts(str); } 运行结果:__Howareyou____ 其中,函数isalpha(ch)的功能是判断ch是否为字母,若是,函数值为1,否则为0 指针 一、判断题,如果以下各题叙述正确,则在括号中填入“Y”,否则填入“N” 1、地址运算符&只能应用于变量和数组元素的运算(Y) 2、只可以通过求地址运算&获得地址值(N) 3、空指针p是指向地址为0的存储单元的指针(N) 4、可以利用指针实现函数返回多个值(Y) 5、如果一个变量的值是一级指针变量的地址,则成这个变量为二级指针变量(Y) 6、二维M*N数组的名字是一个指向N元数组的指针常量(Y) 7、指向函数的指针变量的值是一个函数的入口地址(Y) 8、作为函数形参时,int x[][5]与int(*x)[5]两种写法等价(Y) 二、选择题 1、若有以下语句,则&a[2]-p的值是(A) int a[3],*p=a; A.2 B.3 C.1 D.不确定 2、若有程序段 int b[4], *p, *q; p=&b[1]; q=&b[3]; 则q-p
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示的意义是(B) A. 表达式错误 B. p与q之间的数据个数 C. p占据的字节数 D. p与q之间的字节数 3、若有定义float *p, m;,则以下表达式正确的是(A) A. p=&m B.p=m C. *p=&m D. *p=*m 4、若有定义int b[3][4];,则对数组元素b[2][3]不正确的引用是(D) A. *(b[2]+3) B. *(*(b+2)+3) C. (*(b+2))[3] D. *(b+2)[3] 5、若有定义int m[2][3],(*p)[3]=m;,且0<=i<2,0<=j<3,则以下不正确地引用数组元素m[i][j]的方式是(D) A. *(p[i]+j) B. *(*(p+i)+j) C. (*(p+i))[j] D. *((&p+i)+j) 6、若有定义char d[15], *p=d;则以下正确的赋值语句是(D) A. d[0]="I lova China!"; B. d=" I lova China!"; C. *p=" I lova China!"; D. p=" I lova China!"; 7、若有程序段int **p, *q[5]; p=q;,则以下不正确的叙述是(D) A. 执行语句p=q;后p指向q[0] B. p+3就是q[3]的地址 C. **(p+3)与*q[3]等价 D. q与p都不是指针变量 三、完善程序题 1、将输入的字符串逆序打印出来 #include “string.h” main() { char *str,s[20]; int n; str=___s___ scanf(“%s”,str); n=strlen(str); while(--n>=0) { str = &s[___n___]; printf(“%c”,*str); } } 2、删除字符串的所有前导空格 f1(char *s) { char *t; t=___s___; while(*s==___' '___) s++; while(*t++=*s++); } main() { char *str; gets(str); f1(str); puts(str); } 3、求方阵s中主对角线上元素之和及次对角线上元素之和 #define N 5 main() { int s[N][N], i, j, k=N, sum1=0, sum2=0; for(i=0;i
a;) printf(“%d”,*(- -p)); } 输入: 2 4 6 8 10 12 <回车> 运行结果:__12109642____ 2、 main() { int d[3][3]={{2,4,6},{1,3,5},{7,8,9}}; int i=0, (*p)[3]=d, *q=d[0]; while(i<3) { if(i==1) (*p)[i]=*q+2; else ++p, q++; i++; } for(i=2; i>=0; i--) printf(“%2d”, *(*(d+i)+i)); } 运行结果:__9 6 2____