几个关于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
答案和原因???
希望得到准确和详细的回答!谢谢 展开
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
答案和原因???
希望得到准确和详细的回答!谢谢 展开
2个回答
展开全部
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
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
展开全部
偶晕,咋没人做呢,都嫌麻烦啊????我来抛砖引玉。。。
字符串的字符个数就查呗,注意转义字符就可以了,那个\\是一个字符'\',这一题你没抄错的话是9个字符
s[]是错误用法,用到的地方也就只有定义的时候或者作形参的时候吧,D中s还没让它指向哪儿呢
选C,这就是形参和实参的关系问题了,在这儿是值传递,函数中的变量和实参不一个地址的,所以xyz的值一直没变
5 3 3 5和上面是一个问题,第一个函数传递的是地址,其中的操作也是在外面的a[2]数组上进行的
选A,你还是看看书吧。。。。
字符串的字符个数就查呗,注意转义字符就可以了,那个\\是一个字符'\',这一题你没抄错的话是9个字符
s[]是错误用法,用到的地方也就只有定义的时候或者作形参的时候吧,D中s还没让它指向哪儿呢
选C,这就是形参和实参的关系问题了,在这儿是值传递,函数中的变量和实参不一个地址的,所以xyz的值一直没变
5 3 3 5和上面是一个问题,第一个函数传递的是地址,其中的操作也是在外面的a[2]数组上进行的
选A,你还是看看书吧。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询