26.设char ch,str[4],*strp;,则下列赋值语句正确的是( )。 |
A)ch="CBA"; B)str="CBA"; C)strp="CBA"; D)*strp="CBA"; |
27.下列程序片段的输出结果是( )。 printf("%d\n",strlen("ATS\n0l2\2\\")); |
A)l1 B)10 C)9 D)8 |
28.下列程序的运行结果是( )。 main() {int a=4,y; y=fn(a,++a); printf(“%d”,y);} int fn(x,c) {int b; if(x<c)b=1; else if(x==c)b=0; else b=-1 ; return(b); } |
A)4 B)-1 C)1 D)0 |
29.下面程序的运行结果是( )。 #include "stdio.h" #include "string.h" fun(char *w,int n) { char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;} } main() { char *p; p="1234567"; fun(p,strlen(p)); puts(p); } |
A)7654321 B)1714171 C)1711717 D)7177171 |
30.函数f定义如下,执行语句“m=f(5);”后,m的值应为( )。 int f(int k) { if(k==0||k==1) return 1; else return f(k-1)+f(k-2); } |
A)3 B)8 C)5 D)13 |
31.对于以下递归函数f,调用f (3)的返回值是( )。 int f(int x) { return ((x<=0)? x: f(x-1)+f(x-2)); } |
A)-1 B)0 C)1 D)-2 |
32.以下程序的输出结果是( )。 #include "stdio.h" void fun(int *p) { int a=10; p=&a; ++a; } void main() { int a=5; fun(&a); printf("%d\n",a); } |
A)5 B)6 C)10 D)11 |
33.如果要限制一个变量只能被本程序文件使用,必须通过( )来实现。 |
A)静态内部变量 B)外部变量声明 C)静态外部变量 D)局部变量声明 |
34.函数f定义如下,执行语句“sum=f(4)+f(2);”后,sum的值应为( )。 int f(int m) { static int i=0; int s=0; for(;i<=m;i++) s+=i; return s; } |
A)13 B)16 C)10 D)8 |
35.以下程序的输出结果是( )。 #include <stdio.h> #define H1 5 #define H2 H1+1 #define H3 H2*H2/2 void main() { int s=0,k=H3; while(k--)s++; printf("%d\n",s); } |
A)18 B)19 C)10 D)宏定义有错,不能编译 |
36.在说明 const char *ptr; 中,ptr是( )。 |
A)指向字符常量的指针 B)指向字符的常量指针 C)指向字符串常量的指针 D)指向字符串的常量指针 |
10道编程解答题求助?
- 提问者网友:火车头
- 2021-04-19 12:55
- 五星知识达人网友:风格不统一
- 2021-04-19 13:18
26题中,选C
A项ch表示的是单个字符,把字符串赋给它是错的,
B项str是数组名,代表数组首地址,是个常量,不可把串直接付给它,
C项是正确的表示方法,
D项*strp表示一个元素,同样不可将串赋值给它,
27题中,选C
ATS\n0l2\2\\ ——————A ,T ,S ,\n 各表示一个字符,\2表示一个八进制数,为一个字符,\\表示一个反斜杠字符,0 ,l ,2各表示一个字符,所以总共9个字符;
28题中,选C
main函数中调用fn(a,++a)既是调用fn(4,5),4<5,故返回b值为1,
29题中,选A
while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}函数体功能是判别s1,s2大小,strlen(p)传递给n等于7,把实参p传递给w,既是s1=p,s2=w+n-1=p+6,即s2=7,所以,由给出的条件表达式s1<s2可以实现一一交换功能,所以最后p按逆序输出,7654321;
30题中,选B
当k=5时,调用函数f(5), 这里是个递归调用,f(5)=f(4)+f(3); 而f(4)=f(3)+f(2) ;f(3)=f(2)+f(1);
f(2)=f(1)+f(0);当k等于1或0时,函数返回1,所以
f(5)=f(4)+f(3)=f(3)+f(2)+f(3)=2(f(2)+f(1))+f(2)=3f(2)+2f(1)=3(f(1)+f(0))+2f(1)=8;答案为8,
31题中,选D
同上,递归调用,x=3时,函数先返回 f(3-1)+f(3-2)继续调用, f(2-1)+f(2-2)+ f(1-1)+
f(1-2)=f(1-1)+f(1-2)+f(2-2)+ f(1-1)+f(1-2)=0+(-1)+0+0+(-1)=-2;故选D;
32题中,选C
函数是地址传递,形参改变影响实参的值,而p=&a;在 ++a;之前,所以先把10地址传给了p,故,实参a也变为10,故选C;
33题中,选A
要限制一个变量只能被本程序文件使用须通过设置静态内部变量来实现。所以选A;
34题中,选C
第一次执行完f(4)后,for循环过后得到i=4,s递加等于10,由于i为静态变量,保留上次操作的值,所以i值仍为4,第二个f(2)中,for循环条件4<=2不成立,故不执行,所以只执行前一个循环,所以,
sum的值应为10;
35题中,选C
由k=H3=H2*H2/2=H1+1*H1+1/2=5+1*5+1/2=10;而while(k--)s++;中,循环执行了10次,故s值自增到10,故选C
36题中,选C
const char *ptr中,ptr是一个指向字符串常量的指针,所以选C.
所以,答案依次为,CCCAB--------DCACCC
- 1楼网友:撞了怀
- 2021-04-19 15:47
C C D (D) B D A( D) A C (C)
带()的三个是我不太确定的,别的应该都是对的
- 2楼网友:慢性怪人
- 2021-04-19 14:52
- 3楼网友:人類模型
- 2021-04-19 14:11