无敌铁金刚国语:c语言设计e..

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 20:31:36
?? 11.以下程序运行后的输出结果是 _____ 。
?? main ()
?? { char a[]="Language",b[]="Programe";
?? char *p1,*p2; int k;
?? p1=a; p2=b;
?? for(k=0;k<=7;k++)
?? if(*p1+k)==*(p2+k)) printf("%c",*(p1+k));
?? }
??
谁能说明一下个行的意思
说的越详细越好

char a[]="Language",b[]="Programe";
// 定义字符数组 a[0]="L",a[1]="a",a[2]="n",....,a[7]="e" ;b[]同理
char *p1,*p2; int k
//定义指针 *p1 ,*p2 定义整型变量k;
p1=a; p2=b
//指针p1指向数组a的首地址 即 p1里存放的是 a[0]的物理地址 ; p2同理
for(k=0;k<=7;k++)
//这个循环应该不用说了吧 一共运行k=0~7,共8次循环
if(*p1+k)==*(p2+k)) printf("%c",*(p1+k));
// *p1 为p1指向的地址存放的数据 这里*p1的值为a[0]的值 为"L"
// *p1+k 为p1指向的地址存放的数据+k的值 (当k=3时 *p1+k的值为a[0]+3 为"O"...大写字母"O" )
// p2+k 为p2指向的地址+k (如果k=3 那么p2+k指向b[3] )
// *(p2+k) 为p2所指向地址后的第k个地址的值 (如果k=3 那么*(p2+k)的值为 "g")
// printf("%c",*(p1+k)); 以字符形式输出*(p1+k)的值
这个题目是不是有问题? 最后没有输出 也就是答案为 ""
这题你空着 就能得分

main ()
{ char a[]="Language",b[]="Programe"; //定义两个字符数组a,b并分别赋值为Language和Programe
char *p1,*p2; int k; //定义两个指针p1,p2,整型变量k
?p1=a; p2=b; //把指针p1、p2分别指向数组a、b的首字母
?for(k=0;k<=7;k++) //开启循环,初始条件k=0,循环条件k<=7,循环变量k=k+1
?if(*p1+k)==*(p2+k)) //如果p1的字符以ASCII码形式加上k的值,和p2+k所指向的字符的ASCII码值相等
print f("%c",*(p1+k)); //输出f("%c",p1的字符以ASCII码形式加上k的值)
}

需要注意的是,每个英文字母都对应一个ASCII码,其中A为65,a为97,楼上说得没错,最后一句的确有点问题