c语言655

来源:百度知道 编辑:UC知道 时间:2024/06/14 05:51:51
19. 以下程序的输出结果是
main( )
{ char *p1,*p2,str[50]="ABCDEFG";
p1="abcd"; p2="efgh";
strcpy(str+1,p2+1); strcpy(str+3,p1+3);
printf("%s",str);
}(3分)
A、 B、 C、 D、 F、
A、 AfghdEFG   
B、Abfhd    
C、Afghd   
D、Afgd
F、 

 
20. 若有以下定义和语句:
double r=99, *p=&r;
*p=r;
则以下正确的叙述是 
(3分)
A、 B、 C、 D、 F、
A、以下两处的*p含义相同,都说明给指针变量p赋值
B、在"double r=99, *p=&r;"中,把r的地址赋值给了p所指的存储单元
C、语句"*p=r;"把变量r的值赋给指针变量p
D、语句"*p=r;"取变量r的值放回r中

Q1:

strcpy(str+1,p2+1);

的意思是将从p2的第二个字符开始复制到str第二个字符(含)以后的空间里面

理解了这一句,我想下面的语句你应该没问题了吧

Q2:

double r=99, *p=&r;
*p=r;
------------
A、以下两处的*p含义相同,都说明给指针变量p赋值

//两意义是不同的,double *p定义一个double * 类型的变量,而
//*p=&r;以后指针p指向变量r,即*p与r是等价的,此时*p=99;所以两者不同

B、在"double r=99, *p=&r;"中,把r的地址赋值给了p所指的存储单元
//正确

C、语句"*p=r;"把变量r的值赋给指针变量p
//说法错误
//指针变量的值是指针(即,地址)
//此句的意思是:r=r; 在例中没多大意义

D、语句"*p=r;"取变量r的值放回r中
//好像是对的。。。。

19:可以这样运行:
#include "stdio.h"
#include "string.h"
void main( )
{
char *p1,*p2,str[50]="ABCDEFG";
p1="abcd"; p2="efgh";
strcpy(str+1,p2+1); strcpy(str+3,p1+3);
printf("%s",str);
}
结果D
20:B