重庆自考网 > 复习指导 > 2015年自考“高级语言程序设计”习题答案详解(28)
2014
10-30

2015年自考“高级语言程序设计”习题答案详解(28)

2015年自考“高级语言程序设计”习题答案详解(28)

7.设有以下定义和语句,则*(*(p+2)+l)的值为__________.
int a[3][2]={10,20,30,40,50,60},(*p)[2];
p= a;
「解」上述代码定义3行2列的二维数组a ,定义指向两个元素的一维数组指针p,并让p指向二维数组a的首行。则代码*(*(p+2)+l)中的p+2指向二维数组a的第2行a[2],*(p+2)指向a[2][o],*(p+2)+l指向a[2][l],*(*(p+2)+l)是引用a[2][l],其值是60.
8.以下程序的功能是从键盘上输入若干个字符(以回车符作为结束)组成一个字符串存入一个字符数组,然后输出该字符数组中的字符串。请填空。
# include
# include
main()
{ char str[81],*sptr;
int i;
for(i=0;i 80;i++)
{ str=getchar();if(str==‘\n’) break;}
str=____________;
sptr=str;
while(* sptr) putchar(* sptr______________);
}
「解」从键盘输入字符行,通过循环逐一输入字符,当发现输入字符是换行符时,结束循环。为了使输入的字符列变成字符串,必须在输入字符列之后,原存储换行符的元素改为存储字符串的结束标记符,需用代码 str=‘’ ,所以在第一框填入代码‘’。当要将存于字符数组str中的字符串通过循环逐一输出字符串的字符时,可以用字符指针sptr,让sptr遍历整个字符串,每次循环时,输出sptr所指字符,并让sptr增1,即可用代码*sptr++实现,所以在第二框填入代码++.
5.3 程序分析题
1.阅读下列程序,写出程序的输出结果。
main()
{char *a[6]={“AB”,“CD”,“EF”,“GH”,U“,”KL“};
int i;
for(i=0;i 4;i++) printf(“%s”, a);
printf(“\n”);
}
「解」程序定义了有六个元素的字符指针数组a ,数组a 的各元素指向字符率常量。
程序的for循环遍历了a的前四个元素,用字符率输出格式,输出指针数组a前四个元素所指的字符串。所以程序输出: ABCDEFGH.
2.阅读下列程序,写出程序的主要功能。
main()
{ int i,a[l0],*p= a[9] ;
for(i=0;i 10;i++) scanf(“%d”, d);
for(; p =a; p——) printf(“%d\n”,*p) ;
}
「解」程序定义了有10个元素的整型数组a,另定义指针变量p,并让它指向a的最后一个元素a[9].执行代码的第一个循环是顺序输人数组a的10个元素。第二个循环利用指针p逆序遍历数组a,将数组a的各元素逆序输出。所以程序的功能是输入10个整数,并逆序输出这10个整数。

最后编辑:
作者:重庆自考网