inverse(char str[ ]) {char t; int i, j;
for(i=0, j=strlen(str); i str[i]=str[j-1]; str[j-1]=t; } } main( ) {char str[100]; scanf(“%s”, str); inverse(str); printf(“%s\\n”, str); } 如果输入an anple,该程序的输出结果是( )。 A) an anple B) elpna na C) an D) na 18.在下列叙述中,正确的一条是( )。 A) puts和gets函数只能输入或输出一个字符串 B) 在C语言中,函数可以递归调用或递归定义 C) 用scanf函数输入数据时可以规定精度,例如scanf(“%7.2f”,&a); D) 外部变量只限于本文件中使用 19.以下程序的输出结果是( )。 power(int x, int n) {int p; if(n>0) p=power(x, n-1)*x; else p=1; return (p); } main( ) {int x=2, n=3; printf(“%d\\n”, power(x, n)); } A) 5 B) 6 C) 8 D) 9 20.在C语言的函数中( )。 A) 必须有形参 B) 形参必须是变量名 C) 可以有也可以没有形参 D) 数组名不能作形参 21.当输入a1b2c3d4e时,以下程序的输出结果为( )。 #include {char str[40]; printf(“请输入含有四个数字字符的字符串:\\n”); scanf(“%s”,str); insert(str); } insert(char str[ ]) {int i; for(i=strlen(str);i>0;i--) {str[2*i]=str[i]; str[2*i-1]= ? ?; } printf(“\\n结果是:%s”, str); } A) a 1 b 2 c 3 d 4 e B) 1 2 3 4 C) a 1 b 2 D) 因输入错误,程序出错 22.在下列叙述中,错误的一条是( )。 A) 主函数main中定义的变量在整个文件或程序中有效 B) 不同函数中,可以使用相同名字的变量 C) 函数中的形式参数是局部变量 D) 在一个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效 23.以下程序的输出结果是( )。 #include for(i=0; i<2; i++) as ( ); } as( ) {int lv=0; static int sv=0; printf(“lv=%d, sv=%d”, lv, sv); lv++; sv++; } A) lv=0,sv=0,lv=0,sv=1 B) lv=0,sv=0,lv=1,sv=1 C) lv=0,sv=0,lv=0,sv=0 D) lv=0,sv=1,lv=0,sv=1 24.在下列叙述中,错误的一条是( )。 A) 全局变量存放在静态存储区中,在程序开始执行时就给全局变量分配存储区,程序执行完才释放 B) 在有参函数中,形参在整个程序一开始执行时便分配内存单元 C) 用数组名作函数实参和形参时,应在主调函数和被调用函数中分别定义数组 D) 在同一个源文件中,全局变量与局部变量同名时,在局部变量的作用范围内,全局变量不起作用 25.在下列语句中,不正确的是( )。 A) c=2*max(a,b); B) m=max(a,max(b,c)); C) printf(“%d”,max(a,b)); D) int max(int x,int max(int y,int z)); 26.若输入1.5、2.5,以下程序的输出结果为( )。 main( ) {int max(float x, float y); float a, b; int c; scanf(“%f, %f” , &a, &b); c=max(a, b); printf(“%d”, c); } max(float x, float y) {float z; z=x>y ? x : y; return(z); } A) 1 B) 2.5 C) 2 27.下列程序结构中,正确的是( )。 A) main() {float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); ? } int add(float x,float y) { ? } B) main() {float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); ? } float add(float x,float y) { ? } C) float add(); main() {float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); ? } float add(float x,float y) { ? } D) float add(float x,float y) { ? } main() D) 3 {float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); ? } 28.在下列叙述中,错误的一条是( )。 A) scanf函数可以用来输入任何类型的多个数据 B) 数组名作函数参数时,也采用“值传递”方式 C) 如果形参发生改变,不会改变主调函数的实参值 D) 函数的实参与形参的类型应一致 29.以下程序的输出结果是( )。 main() {int i=1,j=3; printf(“%d”,i++); {int i=0; i+=j*2; printf(“%d,%d”,i,j); } printf(“%d,%d\\n”,i,j); } A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 1,7,3,2,3 30.C语言中形参的缺省存储类别是( )。 A) 自动(auto) B) 静态(static) C) 寄存器(register) D) 外部(extern) 31.设有如下函数: ggg(float x) {printf(“\\n%d”, x*x);} 则函数的类型为( )。 A) 与参数x的类型相同 B) void C) int D) 无法确定 32.C语言规定,程序中各函数之间( ) A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用 33.下面程序的输出结果是( )。 main() {int i=2,p; p=f(i,i+1); printf(“%d”,p); } int f(int a,int b) {int c; D)