几个关于C语言的习题

1.说明语句char*s="98\\11\\04\n",以下说法正确的是:()A.字符串中有9个字符B.字符串在内存中占据5个字节C.字符串包含7个字符D.字符串包含3个... 1.说明语句char *s="98\\11\\04\n",以下说法正确的是:()
A.字符串中有9个字符 B.字符串在内存中占据5个字节
C.字符串包含7个字符 D.字符串包含3个字符

如何判断字符串中字符的个数???
不是在读到 \0 就结束了吗??

2.下列能正确进行字符串赋值操作语句的是()
A.char s[6]={'A','B','C','D','E'}; B.char s[6];scanf("%s",s[]);
C.char *s[6];s="ABCDE" D.char *s;scanf("%s",s);

B和D错在哪里?
在B中s是数组名,代表数组首地址,为什么不对?
在D中s是一个指针,代表一个地址,所以我认为是正确的?

3.有以下程序:
#include<stdio.h>
viod f(int v,int w)
{
int t;
t=v;v=w;w=t;
}
void main()
{
int x=1,y=3,z=2;
if(x>y) f(x,y);
else if(y>z) f(y,z);
else f(x,z);
printf("%d,%d,%d\n",x,y,z);
}
输出后结果为()
A.1,2,3 B.3,1,2 C.1,3,2 D.2,3,1

该题的f函数是用来交换两个数字的,在main函数中 y>z成立,故执行一次 f(y,z)
使y=2,z=3,x没有发生变化,故应该选A ,但是给出的答案不为A ????

4.有以下程序
#include<stdio.h>
void swap1(int c[])
{
int tl
t=c[0];c[0]=c[1];c[1]=t;
}
void swap2(int c0,int c1)
{
int t;
t=c0;c0=c1;c1=t;
}
void main()
{
int a[2]={3,5},b[2]={3,5};
swap1(a);
swap2(b[0],b[1]);
printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
}
答案和原因??
5.
#include<stdio.h>
struct STU{
char name[10];
int num;
};
void f1(struct STU c)
{
struct STU b={"LiSiGuo",2042};
c=b;
}
void f2(struct STU *c)
{
struct STU b={"SunDan",2044};
*c=b;
}
void main()
{
struct STU a={"YangSan",2041};
struct STU B={"WangYan",2043};
f1(a);f2(&b);
printf("%d %d\n",a.num,b.num);
}
执行后输出的结果为()
A.2041 2044 B.2041 2043 C.2042 2044 D.2042 2043

答案和原因???
希望得到准确和详细的回答!谢谢
展开
 我来答
karen_08
2009-01-01 · TA获得超过483个赞
知道答主
回答量:325
采纳率:0%
帮助的人:162万
展开全部
1、(A )\\是一个字符'\',其他的就是每个字一个字符。(读到\0就结束是在scanf输入的情况下结束 )

2、(A) B和D都错了,是因为字符串的输入格式不对,在c语言里字符串的输入不能用scanf直接输入

3、(C) 函数f没有返回值,因此原来的x,y,z都还是原来的初值1,3,2

4、(5 3 3 5) 原因:swap1的调用,给定的是a数组的首地址,因此是直接改动了a数组里的数值。swap2的调用,用的是b【0】和b【1】的数值,不是直接在b数组上改动,而是将两个数值分别赋值给swap2中的 c0 和c1,而且没有返回值,因此不改动b数组的数值

5、(A) 原因:仍是返回值问题,f1函数没有返回值,所以输出为原值2041,f2函数形参是指针由指针指向b,输出为2044
百度网友a0622aeba
2009-01-01 · TA获得超过1703个赞
知道小有建树答主
回答量:1145
采纳率:0%
帮助的人:1591万
展开全部
偶晕,咋没人做呢,都嫌麻烦啊????我来抛砖引玉。。。
字符串的字符个数就查呗,注意转义字符就可以了,那个\\是一个字符'\',这一题你没抄错的话是9个字符

s[]是错误用法,用到的地方也就只有定义的时候或者作形参的时候吧,D中s还没让它指向哪儿呢

选C,这就是形参和实参的关系问题了,在这儿是值传递,函数中的变量和实参不一个地址的,所以xyz的值一直没变

5 3 3 5和上面是一个问题,第一个函数传递的是地址,其中的操作也是在外面的a[2]数组上进行的

选A,你还是看看书吧。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式