关于C语言的问题

请进行详细解题说明:1、有定义:intn=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是(D)A.p=1;B.*q=2;C.q=p;D.*p=5;2、若有... 请进行详细解题说明:

1、有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是(D)
A.p=1; B.*q=2; C.q=p; D.*p=5;

2、若有说明:int n=2,*p=&n,*q=p;,则一下其非法的赋值语句是(D)
A.p=q; B.*p=*q; C.n=*q; D.p=n;

3、有以下程序:
void fun(char *a, char *b)
{ a=b; (*a)++;}
main()
( char c1='A',c2='a',*p1,*p2;
p1=&c1; p2=&c2; fun(p1,p2);
printf("%c%c\n",c1,c2);
}
程序运行后的输出结果是(A)
A. Ab B. aa C. Aa D. Bb

4、以下程序运行后的输出结果是___1_1_1_1___
main()
{ int i,n[]=(0,0,0,0,0);
for(i=1;i<=4;i++)
{ n[i]=n[i-1]*2;
printf("%d",n[i]+q);
}
}

5、有如下程序:
#include<stdio.h>
main()
{ FILE *fp1;
fp1=fopen("f1.txt","w");
fprintf(fp1,"abc");
fclose(fp1);
}
若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为(C)
A.goodabc B.abcd C.abc D.abcgood
展开
 我来答
鷹弈
2010-09-18 · TA获得超过5194个赞
知道大有可为答主
回答量:1257
采纳率:0%
帮助的人:595万
展开全部
1、有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是(D)
A.p=1; B.*q=2; C.q=p; D.*p=5;
解:*p为一级指针,其中p为指针的地址,**q为二级指针,其中*q为指针的地址,只能给变量或指针变量赋值,不能给地址赋值,所谓地址,就是由ACS码构成,简单的说,就是每个人都有一个名字(地址)一样,目的是要区分每个人(地址中存储的值)。

2、若有说明:int n=2,*p=&n,*q=p;,则一下其非法的赋值语句是(D)
A.p=q; B.*p=*q; C.n=*q; D.p=n;
解:同上。
3、有以下程序:
void fun(char *a, char *b)
{ a=b; (*a)++;}
main()
( char c1='A',c2='a',*p1,*p2;
p1=&c1; p2=&c2; fun(p1,p2);
printf("%c%c\n",c1,c2);
}
程序运行后的输出结果是(A)
A. Ab B. aa C. Aa D. Bb
解:这是指针传值(地址传值),实参传给形参,其实就是p1(实参地址)与a(形参地址)共用一个地址,p2与b共用一个地址,a=b并没有改变地址a中保存的‘A’,而是让*a指向地址b,进而改变或控制地址b中存放的值,所以c1=‘A’不变,而(*a)++,就是字符‘a'的ASC码加1,也就是字符‘b'那么地址b中的值就变成了字符‘b'。
4、以下程序运行后的输出结果是___1_1_1_1___
main()
{ int i,n[]=(0,0,0,0,0);
for(i=1;i<=4;i++)
{ n[i]=n[i-1]*2;
printf("%d",n[i]+q);
}
}
解:上面的q等于1吧,
当i=1;n[1]+q=n[0]*2+1=0*2+1=1;
i=2;n[2]+q=n[1]*2+1=0*2+1=1;
i=3;n[3]+q=n[2]*2+1=1;
i=4;n[4]+q=1;
5、有如下程序:
#include<stdio.h>
main()
{ FILE *fp1;
fp1=fopen("f1.txt","w");
fprintf(fp1,"abc");
fclose(fp1);
}
若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为(C)
A.goodabc B.abcd C.abc D.abcgood
解:简单的说就是以“w(写生成)”打开的文件,文件内的原始数据将被删除。这东西不是一两句就能解释清楚。

同学,你的C要好好加油啊,这都是些很基本的问题。
yangyangsun126
2010-09-16
知道答主
回答量:35
采纳率:0%
帮助的人:0
展开全部
1. *p表示指针所指向的变量。因此可以可以直接赋值。
对于A,P表示指针,不能直接对一个指针赋值一个变量值。
对于B,*q表示指针同A
对于C,两者类型不同,一个二级指针一个一级指针,不能直接赋值。
2。P表示指针 *P表示指针指向的值,不能直接对指针赋变量值。
3。对于x而言,函数没有地方改它的值因此结果为为原来的值A,
函数的功能把y地址传给a,并且把值加1,因此a+1=b;
4.n[i]=n[i-1]*2不管怎么操作数组中的数全是0因此输出其实是q值。
5.fopen("f1.txt","w")的时候如果文件不存在那么就会创建文件,如果文件存在就会把内容清空。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-09-18
展开全部
int n=0;其中n是整型数据,*p=&n,其中p是指向整型数据的指针变量,而**q=&p;其中q是二次指针所以选择D
第三题,p1,p2是分别指向c1和c2的指针变量,然后调用fun函数,a=b,含义是p1和p2都指向了c2,(*a)++是将c2加一
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luirougan55
2010-09-16
知道答主
回答量:32
采纳率:0%
帮助的人:17.9万
展开全部
http://zhidao.baidu.com/question/163579292.html
1 2题其实就看他们相互之间类型相不相同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式