C语言题目

23.以下程序的输出结果是_________。#include<stdio.h>voidfun(intx){if(x/2>0)fun(x/2);printf("%d",x... 23.以下程序的输出结果是_________。
#include <stdio.h>
void fun(int x)
{
if(x/2>0)
fun(x/2);
printf("%d ",x);
}
main()
{
fun(3);
printf("\n");
} 正确答案:1 3
24.以下定义语句中正确的是 :B
A)int a=b=0 ; B)char a=65+1,b='b'; C)float a=1,*b=&a,*c=&b ; D)double a=0.0;b=1.1;
25.设有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是:D
A)p=1; B)*q=2; C)q=p; D)*p=5;
26.有以下程序
#include <stdio.h>
main()
{
int n,*p=NULL;
*p=&n;
printf("Input n: "); scanf("%d",&p);
printf("output n: "); printf("%d\n",p);
}
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是:A
A)int n,*p=NULL; B)*p=&n;C)scanf("%d",&p)D)printf("%d\n",p);
27.以下程序的功能是:利用指针指向3个整型变量,并通过指针运算找出3个数中的最大值,输出到屏幕上,请填空:
main()
{
int x,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;
py=&y;
pz=&z;
pmax=&max;
__________________
if(*pmax<*py)
*pmax=*py;
if(*pmax<*pz)
*pmax=*pz;
printf("max=%d\n",max);
} 正确答案:*pmax=x;
28.void f( int y, int *x)
{ y=y+*x; *x=*x+y;}
main( )
{ int x=2,y=4;
f(y,&x);
printf("%d %d\n",x,y);
}
执行后输出的结果是____。 正确答案:8 4
29.以下程序的输出结果是__________。
#include
void swap(int *a,int *b)
{
int *t;
t=a; a=b; b=t;
}
main()
{
int i=3, j=5, *p=&i, *q=&j;
swap(p,q);
printf("%d %d\n",*p,*q);
} 正确答案:3 5
30.有以下程序段:
Int j; float y; char name[50];
Scanf(“%2d%f%s”,&j,&y,name);
当执行上述程序段,从键盘上输入55566 777abc后,y的值为:答案: 7777.0
31.若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是:D
A. a[2][!1] B.a[2][3] C. a[0][3] D. a[1>2][!1]
只知道B C是错的
展开
 我来答
god19891120
推荐于2016-08-21 · TA获得超过122个赞
知道答主
回答量:78
采纳率:0%
帮助的人:56.6万
展开全部
对于23题:涉及到函数调用以及嵌套的知识。程序时这样的,从main函数开始,执行fun(3),进行函数调用,对于3,3/2=1大于0,条件为真,{执行下面的语句fun(x/2); 即为fun(1),而对于fun(1),又要进行调用,执行if(x/2>0),1/2=0,条件为假 ,执行printf("%d ",x);就输出1,}看见大括号了么?他们之间是在执行 fun(3)中时执行的语句fun(1)部分,程序继续执行,执行语句
printf("%d ",x);输出3. 再执行printf("\n");结束。

对于24题:A选项,这是连续赋值,我们应当特别注意,在定义(变量初始化时),连续赋值是不合法的。而在其他情况下是可以的。C选项,*c=&b 错误。c是指向指针的指针,即二级指针。应该为
**c=&b 。对于D选项,中间的分号改为逗号。

对于25题:我们应该明白这几点:P表示地址;*p表示内容,*p=2表示把2赋值给*p,a=*p表示把*p里面存储的内容给a,z注意a必须是定义好的变量。因此,D选项正确。对于A选项,1是常量,不是地址,就错了。对于B选项q是二级指针,*q村返回的应该是地址。对于C选项,q=p,左右两边加*,即*q=*p,*p又等于0,则*q=0,显然错了。因为*q只能被赋值地址。

对于26题:对于B选项应该为p=&n;p只能被赋值地址,应当注意,当定义的时候,应该为int *p=&n;对于C选项,scanf("%d",&p);后面的应该是地址,而&p表示的是p指向的数据,而非地址。改为p就行。对于D选项: printf("%d\n",p);后面的应该是变量名。p是地址,而*p就相当于变量名,应改为这个。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式