2012年软考程序员考前练习试题及答案解析(六)
05-18
0

二、程序分析

1.main()

{ char str[]="1234567";

int i;

for(j=0;i<7;i十=3)

printf("%s ",str+i);

【解析】分析份循环语句可知,控制变量 i的值只能依次等于0、3、6。再分析输出语句中的输出格式,这是字符串格式,要求输出表达式是存放字符串的首地址。而输出表达式是“str+i”。我们针对i不同值来-一分析:i=0,str+0就是str,其中存放的字符串是“1234567”,所以第1行上的输出就是:1234567。当 i=3时,str+3,代表了数组元素str[3]的地址,从这儿开始的字符率串是“4567”,所以第2行输出的是:4567。同样道理,i=6时, str+6是元素str[6]的地址,从该地址存放的字符率是"7",所以第3行输出的是:7。

【参考答案】 1234567

4567

7

2.struct a{ char name[10];

int age;

}aa[3]={{"abc",20},{"def",21},{"ghi",22}};

main()

{ struct a *paa=aa;

printf("%c%c%c",(*(paa+1)).name[0]

(*paa++).name[1]

(*(paa+1)).name[2]);

【解析】本程序并不复杂,关键在于如何使用指向结构型数组的指针变量来引用该数组元素,以及如何引用结构型成员是数组的数组元素。

首先看结构型a及对应数组aa的定义和赋予的初值。

结构型a共有两个成员,一个是字符型数组name,另一个是整型age。

结构型数组aa有3个元素,所赋予的初值如下:

aa[0].name="abc" aa[0].age=20

aa[1].name="def" aa[1].age=21

aa[2].name="ghi" aa[2].age=22

主函数中的第1个语句是定义结构型指针变量paa,并且使它指向结构型数组aa的首地址。注意,此后的*paa就是aa[0],*(paa+i)就是aa[i]。

现在可以分析输出语句了。输出格式是3个字符格式,按照printf()函数的规定,表达式表中表达式计算顺序是自右向左进行的,下面依次讨论这3个字符格式对应的输出表达式。

第3个输出表达式是“(*(paa十1)).name[2]",其中的“*(paa+1)”代表“aa[1]”,所以该表达式就是“aa[1].name[2]”,对应的字符是'f'。

第 2个输出表达式是"(*paa++).name[1]”,其中“*ppa++”的“*”和“++”是同级运算符,结合性是自右向左的,所以“++”先计算,由于是后缀,所以要先计算“*paa”,它代表“aa[0]”,所以该表达式就是“aa[0].name[1]”,对应的字符是'b'。注意,最后要对paa进行“++”运算,使其指向aa[1]。

第 1个输出表达式是“(*(paa+1)).name[0]”,注意现在的paa以及指向aa[1]了,所以其中的“*(paa+1)”代表“aa[2]”,所以该表达式就是“aa[2].name[0]”,对应的字符是'g'。

现在可以得出结论:程序的输出是 3个字符:gbf

【参考答案】gbf

相关内容

热门资讯

2012年软考网络管理员磁盘与... 2012年软考网络管理员磁盘与文件系统管理习题及答案
2014年计算机软考(数据库系... 2014年计算机软考(数据库系统工程师)考前冲刺试题4
2014年计算机软考(信息系统... 2014年计算机软考(信息系统项目管理师)考试备考试题七
2014年计算机软考(电子商务... 2014年计算机软考(电子商务设计师)考试备考试题6
2014年计算机软考(数据库系... 2014年计算机软考(数据库系统工程师)考前冲刺试题1
2014年计算机软考(数据库系... 2014年计算机软考(数据库系统工程师)考前冲刺试题2
2014年计算机软考(信息系统... 2014年计算机软考(信息系统项目管理师)考试备考试题一
2014年计算机软考(信息系统... 2014年计算机软考(信息系统项目管理师)考试备考试题六
2012年计算机软件水平考试网... 2012年计算机软件水平考试网络管理员考前冲刺试题(1)
2014年计算机软考(电子商务... 2014年计算机软考(电子商务设计师)考试备考试题3