计算机基础与程序设计历年真题.doc
(02557)计算机基础与程序设计历年真题第一章计算机及程序设计基础知识申明:绝对原创,杜绝盗版,如果想要视屏讲解的可以联系我,我在线时就发给你历年试题【单选题】在计算机中,指令通常是由()A操作码、操作数组成B源操作数、目标操作数组成C反码、补码组成D直接寻址、目的寻址组成【答案】A【解析】该题考查的是指令的组成。教材中没有相关内容。历年试题【单选题】一个完整的计算机系统应该包括()A主机和外设 B主机和操作系统C硬件系统和软件系统 D系统软件和应用软件【答案】C【解析】该题考查的是一个完整的计算机系统的组成。教材(P2)。历年试题【单选题】具有只读功能的内存储器是指()AROMBRAMC硬盘DCD-ROM【答案】A【解析】该题考查的是内存储器的种类及特点。教材(P4)。历年试题I/O设备指的是计算机的()A存储设备B输入和输出设备C控制器D运算器【答案】B【解析】该题考查的是I/O设备的概念。I/O设备指的是计算机的输入和输出设备。历年试题与十进制数49等值的二进制数是( )A. B. C. D.【答案】C【解析】该题考查的是十进制数与二进制数之间的相互转换关系。采用初二取余的方法,可得与十进制数49等值的二进制数是。也可以将选项中的二进制数转换为十进制数来确定正确选项。如选项C,()2=1×251×241×20 =(49)10。历年试题十进制数5在八位的微机内的存储形式是()ABCD【答案】D【解析】本题考查的是带符号数在计算机中的表示方法。在微型计算机中,带符号数一般以补码形式存储,-5原,-5补,所以选项D正确。历年试题编译程序的功能是( )A.修改并建立源程序 B.将源程序翻译成目标程序C.调试程序 D.命令计算机运行可执行程序【答案】B【解析】本题考查的是高级语言程序的执行方法。见上面讲解。历年试题下面基本结构和特性中符合结构化程序设计的要求的有()A选择结构 B循环结构 C顺序结构D各结构之间只有一个入口,至多两个出口E各结构之间只有一个入口,一个出口【答案】ABCE【解析】本题考查的是结构化程序设计思想。见上面讲解。第二章 关于C语言的基本知识历年试题下列关于C语言程序说法正确的是()AC语言程序总是从有定义的函数起顺序执行B在C语言程序中,被调用函数必须在main函数中定义CC语言程序中的main函数必须放在程序的开始部分DC语言程序总是从main函数起开始执行【答案】D【解析】该题考查的C程序的结构。程序的执行总是从主函数开始,并在主函数中结束。主函数和其它函数的位置是任意的。其它函数总是通过函数调用语句被执行。教材(P22-23)。历年试题在Turbo C 2.0中,可激活主菜单的键是( )A.F1 B.F5 C.F9 D.F10【答案】D【解析】本题考查Turbo C 2.0上机步骤。在Turbo C 2.0中,可激活主菜单的键是F10。历年试题在Turbo C 2.0中,若定义char ch;则变量ch在内存中分配的字节数是( )A.1个 B.2个 C.4个 D.8个【答案】A【解析】本题考查C语言数据类型的取值范围。见上表。历年试题C语言中整型常量有几种形式,它们是如何表示的?【答案】整型常量有三种形式:十进制整数:由数字09和正负号表示;八进制整数(在前面0);十六进制整数(在前面0x)。【解析】本题考查C语言整型常量的三种书写形式。见上面讲解。历年试题下面合法的C语言转义字符有( )A.123 B.xab C.D.88 E.n【答案】ABCE【解析】该题考查转义字符的概念。见上表。选项D之所以错误是因为后面的8不属于八进制数。历年试题设有int a=3;表达式a+=a *=a *=a的值是( )A.3B.9C.81D.162【答案】D【解析】该题考查复合赋值运算符的使用。复合赋值运算符的结合方向自由至左。计算a=a*a=3*3=9 后a的值为9;再计算a=a*a=9*9=81后a的值为81;最后计算a=a+a=81+81=162后a的值为162。历年试题设有int x=2,y,z;执行z=y=x-;后变量y的值是( )A.0 B.1 C.2 D.3【答案】C 【解析】本题考查增量运算。执行z=y=x-;的过程是先将x的值2赋给变量y,再将y的值2赋给变量z,最后变量x的值自减1变为1。所以选项C正确。历年真题(2009年7月单选)设有int a=3,b=-4,c=5;表达式(a<b)?a:b&&c<0的值是( )A. 0 B. 1 C. 3 D. 4【答案】A【解析】本题考查C语言关系运算符、逻辑运算符和条件运算符。表达式(a<b)?a:b&&c<0中按照优先级高低顺序逐步求解:先计算b&&c<04&&c<0 1&&c<0 1&&5<0 1&&0 0,然后计算(a<b)?a:0 (3<-4)?3:0 0。历年真题若有int x;float y;下面结果为整型数的表达式有()A(int)(x+y)B(int)x+yC´a´+xDx+(int)yEx*y【答案】ACD 【解析】本题考查数据类型的转换。选项A,x+y的结果为实型数,经强制转换后为整型数。选项B, 执行(int)x后x的值仍然是整数,与y相加后结果为实型数。选项C中´a´的ASCII码的值为整数97,与x相加后结果为整型数。选项D,执行(int)y后结果为整型数,与x相加后结果仍为整型数。选项E,x*y的结果为实型数。第三章 C的基本语句及顺序结构程序设计历年试题下面程序段的输出结果是( ) main() int a=2,b=5;printf(a=d,b=%d,a,b);A.a=2,b=5 B.a=2 ,b=5 C.a=2,b=5 D.a=d,b=d【答案】C【解析】该题考查的printf( )函数的使用。连续两个“%”输出一个“%”;d被后面变量的值依次取代,其他字符原样输出,所以输出结构是a=2,b=5。选项C正确。历年试题若有下列程序段,欲使a=2,b=3,对应正确的数据输入法是(其中<CR>表示回车) ( ) int a,b; scanf(d,d,&a,&b);A.2<CR> B.a=2,b=3<CR>3<CR>C.a=2b=3<CR> D.2,3<CR>【答案】D【解析】该题考查的scanf( )函数的使用。题中“输入格式字符串”的两个“%d”之间有一个“,”,输入数据时必须输入“,”。选项D是正确的输入格式。历年试题若有下列程序段,欲使x=5,y=6,对应正确的输入方法是(其中<CR>表示回车)( )int x,y;scanf(%dd,x,y);A.x=5 y=6<CR>B.x=5,y=6<CR>C.5<CR>D.5,6<CR>6<CR>【答案】C【解析】该题考查的scanf( )函数的使用。题中“输入格式字符串”中除了两个“%d”没有其他字符,输入数据时用一个或多个空格隔开,也可以用<Tab>键或回车键隔开。选项C是正确的输入格式。历年试题写出下面程序的运行结果。main( ) int x=1987,a,b,c,y;a=x100;b=x10010;c=x10010;y=100*c+l0*b+a;printf(c=d,b=o,a=x,y=d,c,b,a,y);【答案】c=7,b=10,a=13,y=799【解析】该题考查的顺序结构程序的分析。题中执行a=x100;后a=19;执行b=x10010;后b=8,执行c=x10010;后c=7;执行y=100*c+l0*b+a;y=799。输出格式中变量c和y按照十进制数输出;变量b按八进制输出;变量a按十六进制输出。第四章 条件语句与选择结构程序设计历年试题若执行下列程序时,从键盘上输入3和4,则输出结果是( ) main() int a,b,s; scanf(dd,a,&b); s=a; if(a<b) s=b; s=s*s; printf(dn,s); A.9 B.16 C.18 D.20【答案】B【解析】该题考查if语句形式一的使用。执行语句s=a;后变量s的值为3;执行语句if(a<b) s=b;由于表达式a<b即3<4成立,变量b的值赋给变量s,则s的值变为4;执行s=s*s;后s的值变为16.所以最后输出的结果是16。选项B正确。历年试题以下程序段所表示的数学函数关系是()y=-1if(x!=0) if(x>0) y=1;else y=0;ABCD【答案】C【解析】该题考查if语句的嵌套。程序段的含义是:当x的值不等于0时,执行内嵌的if语句if(x>0) y=1;else y=0;,即当x的值大于0,y的值为1,否则(x的值小于于0)y的值为0;当x的值等于0时,跳过内嵌if语句执行程序段后面的语句,y的值保留初值-1。可见选项C符合题意。注意程序段中的else是和前面最近的if配对历年试题下列语句中正确的有()Aif(x>y);Bif(x=y)&&(x!=0) x+=y;Cif(x! =y)scanf(“%d”,&x);else scanf(“%d”,&y);Dif(x<y)x+ +;y+ +;Eif(x<y)x+ +;y+ +;else x;y;【答案】ACD【解析】该题考查if语句的形式。选项A是正确的语句,只不过表达式x>y成立时执行的是一条空语句。选项B是不正确的语句,if后面的表达式要用圆括号括起来。选项C是正确的语句。选项D是正确的语句,条件成立时执行后面复合语句。选项E是不正确的语句,if后面的语句要用花括号括起来。历年试题执行下列程序段后,i的结果是( )int i=10;switch(i)case 9:i+=l;break;case 10:i+=l;break;case 11:i+=1;break;default:i+=1;break;A.10B.1lC.12D.13【答案】B【解析】该题考查switch语句的相关程序分析。i的值是10,执行case 10:后面的语句i+=l;,i的值变为11,然后执行break;语句退出switch语句,最后变量i的值变就是11。历年试题下列有关switch语句的说法中正确的有( )A.switch后面的表达式可以为任意类型B.case后的每个常量表达式的值必须互不相同C.若case后面有两个或两个以上的执行语句,必须加花括号D.一个case对应一组执行语句,多个case不可共用同一组执行语句E.default部分可有可无【答案】ABE【解析】该题考查switch语句的语法。switch后面的表达式可以为任意类型,常用的是字符型或整型表达式,所以选项A正确。case后的每个常量表达式的值必须互不相同,所以选项B正确。若case后面有两个或两个以上的执行语句,不需要用加花括号,所以选项C不正确。一个case对应一组执行语句,多个case也可以共用同一组执行语句,所以选项D不正确。default部分可有可无,default部分省略时,若表达式的值和n个常量表达式值均不相同,则该语句什么也不做。第五章 循环语句与循环结构程序设计历年试题下列语句中不能实现循环结构的语句是( )A.if语句 B.while语句 C.dowhile语句 D.for语句【答案】A【解析】该题考查循环语句语法。显然选项A中的语句不能实现循环结构。历年试题以下程序的输出结果是( ) main() int y=10; while(y-); printf("y=d”,y); A.y=-1 B.y=0 C.y=1 D.y=随机值【答案】A【解析】该题考查循环结构程序分析与自增运算。题中循环体是一条空语句,循环条件表达式(y-),先使用y的当前值进行判断,y的值不是0时,执行循环体语句,判断完成后y的值自减1。当y的值为0时,循环条件表达式不成立,在y的值自减1后结束循环。最后输出y的值-1。历年试题写出下面程序的功能及运行结果。 main() int n=1,sum=0; do sum=sum+n; n+=2; while(n<100); printf(sum=dn,sum); 【答案】程序的功能是1到99所有奇数的和程序输出结果:sum=2500【解析】题考查循环结构程序分析。每执行1次循环体,变量sum就将n的当前值进行累加,变量n的值增加2。n的初始值为1,每次循环n的值加2,当n等于101时,循环结束。sum中累加的是1到99所有奇数的和,为2500。历年试题下列关于break、goto、continue语句的说法中正确的是( )A. break语句能够用于循环语句中B. break语句不能用于switch语句中C. goto语句可以用于直接从多层循环中退出D. continue语句可用于跳出循环体E. continue语句不能用于switch语句中【答案】ACE 【解析】该题考查break、goto、continue语句的使用。在循环体中可以用goto语句直接从多层循环中退出;可以用break语句结束本层循环;可以用continue语句结束本次循环。continue语句只用在三条循环语句中,break语句可以用在三条循环语句的循环体中或switch语句中。历年试题请阅读分析下列程序,然后写出程序的循环次数和运行结果。 main(void) int i;for(i=1; i<6; i+ +) if(i%2) printf();continue; printf(*);printf(n); 【答案】程序的循环次数为5 输出结果是:*【解析】该题考查continue语句的使用。continue语句的功能是跳过continue之后的语句,重新判断循环控制条件,决定是否继续循环。题中当i的值从1变到5,控制循环执行5次,当i=6时,结束循环。循环过程中,当i为奇数时,输出“”后执行continue语句,跳过continue之后的语句,重新判断循环控制条件,决定是否继续循环;当i为偶数时,输出“*”后重新判断循环控制条件,决定是否继续循环。程序的输出结果是*。历年试题下列程序段输出的结果是() for(i=1;i<3;i+ +) for(j=1;j<3;j+ +) printf(%d ,i+j);A2 3 3 4B2 3 4C2 3D2 3 4 3 4【答案】A 【解析】该题考查循环嵌套程序分析。外层循环内层循环输出i+ji=1j=12j=23i=2j=13j=24执行程序的输出结果是2 3 3 4。循环程序设计每年都考一个程序设计题,12分历年试题编程求20至100之间素数的累加和并输出该累加和。【答案】#include “math.h”main() int n,i,tag,sum=0; for(n=20;n<=100;n+) tag=0;for(i=2;i<=sqrt(n);i+) if(n%i=0) tag=1;if(tag=0) sum=sum+n; printf(sum=dn,sum); 【解析】该题考查循环嵌套程序设计。程序中的内层循环用来判断n是不是素数,如果n%i=0成立,则n不是素数,就将标识tag置为1,n不在累加到sum中;如果n%i=0一直到内循环结束都不成立,则n不是素数,标识tag为初值0,n累加到sum中。外层循环结束时,sum中的值就是20至100之间素数的累加和。第六章 数组历年试题下列程序的输出结果是( ) main() int a10=l,2,3,4,5,6,7,8,9,10;printf(dn,a2); A.1 B.2 C.3 D.4【答案】C【解析】该题考查一维数组元素的引用。数组的下标从0开始,题中a0的值是1,a1的值是2,a2的值是3,a9的值是10。所以程序的输出结果是3。历年试题阅读分析下面程序后,写出程序的运行结果。#includestdio.hmain ( )int arr10,i,k=0;for(i=0;i<10;i+)arri=i;for(i=1;i<=4;i+)k+=arri+i;printf(%5d,k);【答案】 20【解析】该题考查一维数组的应用。题中第一个for循环为一维数组arr的10个元素进行了赋值,分别是arr0=0, arr1=1, arr2=2, arr3=3, arr4=4, arr9=9。第二个for循环将下标为1、2、3、4的4个数组元素的值及其下标的值进行累加,k=1+1+2+2+3+3+4+4=20。最后输出k的值20,注意输出格式控制%5d的含义是输出的数站5个字符的宽度,数不足5个字符的宽度,则靠右输出,不足部分输出空格。所以程序的输出结果是: 20。历年试题定义如下变量和数组int k;int x33=9,8,7,6,5,4,3,2,l;则执行下面语句for(k=0;k<3;k+)if(k2)printf("5d",xkk);后输出结果是( )A. 3B. 5C. 7D. 9【答案】B 012x0987x1654x2321【解析】该题考查二维数组元素的引用。题中二维数组x初始化后的状态如图所示。for循环一共循环3次,只有当k的值为1时,表达式(k2)的值为1(非0),执行printf("5d",xkk);语句输出x11的值5,输出格式为宽度5,靠右。历年试题编程生成以下A、B两个数组(不得使用输入语句输入数据或对数组初始化),将两数组对应元素相加写入C数组中,最后并排输出A、B、C三个数组。【答案】 main() int A34,B34,C34; int i, j; for (i=0;i<3;i+) for(j=0;j<4;j+) Aij =j+1; Bij =i+2; Cij= Aij+ Bij; for (i=0;i<3;i+) for(j=0;j<4;j+) printf(”%3d”, Aij); printf(” ”); for(j=0;j<4;j+) printf(”%3d”, Bij);printf(” ”); for(j=0;j<4;j+) printf(”%3d”,Cij); printf(”n”); 【解析】该题考查二维数组元素的应用。题中第一个二重for循环,巧妙利用i和j的变化规律为数组A和数组B进行了赋值,同时将两数组对应元素相加写入了C数组中。第二个二重for循环的外循环控制输出三行,内层循环的第一个for循环完成A数组每一行的4个元素的输出,然后输出5个空格使得与B数组隔开;内层循环的第二个for循环完成B数组每一行的4个元素的输出,然后输出5个空格使得与C数组隔开;内层循环的第三个for循环完成C数组每一行的4个元素的输出,然后输出回车换行,为输出三个数组的下一行元素做准备。最后完成了并排输出A、B、C三个数组的任务。历年试题下面各选项中,能正确进行字符串操作的有( )A. char s =a, b, c, d, e, 0;B. char s10;s=abcde;C.char s10;strcpy(s, abcde)D.char s10;getchar(s);E.char s10;gets(s);【答案】ACE【解析】本题考察的是字符数组与字符串处理函数。选项A,由于字符数组s存放的是字符串“abcde”,能进行字符串操作。选项B,不能将一个字符串赋给数组名,语法错误。选项C,将字符串abcde复制到s数组中,能正确进行字符串操作。选项D ,getchar( )是输入单个字符的函数,不能用于一次性输入字符串。选项E,利用gets( )函数输入字符串存入数组s中。历年试题阅读下面的程序并回答问题main( ) char a20=;int i;i=8;printf(sn,ai-3);(1)数组中a10号元素中存储的是什么字符?(2)请写出程序的运行结果。【答案】(1)a10号元素中存储的是0。 (2) 程序的运行结果:67890【解析】该题考查的是字符数组的操作。题中字符数组a初始化后,a0到a9存放的分别是字符1、2、3、4、5、6、7、8、9、0,从a10到a19中存储的都是0。 执行printf(sn,ai-3);输出从&a5开始的字符串“67890”。第七章 函数历年试题下列有关函数的说法中不正确的有( )A.C语言程序总是从首定义的函数起顺序执行B.在C语言程序中,被调用的函数必须在main()函数中定义C.C语言程序中的main()函数必须放在程序开始部分D.C语言程序总是从main()函数开始执行E.定义函数时,参数表中可以没有任何参数【答案】ABC【解析】该题考查函数的定义。见前面讲解历年试题写出下面程序的功能和运行结果。 int fun(int a4) int i,j,k,tem tem=a00; for(i=0;i<3;i+) for(j=0;j<4;j+) if(aij<tem) tem=aij; return(tem); main() int b34=1,3,-5,7,2,4,-6,8,10,20,-30,40;printf(dn,fun(b); 【答案】程序的功能求取二维数组所有元素的最小值。 程序运行结果:-30【解析】该题考查数组名作为函数参数的函数调用。数组名做实参时,由于数组名代表数组首地址,属于地址传递。形参数组a与实参数组b是同一数组,fun(int a4)的功能求取二维数组a中所有元素的最小值。历年试题以下程序的输出结果是( ) ff() int a=l,c=8; static int b=4; if(b= =4) a+=c;b+; else a+=c;b-; printf(a=d,b=dn,a,b); main() ff();ff();A.a=9,b=5 B.a=9,b=4 a=9,b=5 a=9,b=4C.a=9,b=4 D.a=9,b=5a=9,b=5 a=9,b=4【答案】D【解析】该题考查函数调用与变量存储类型。题中主函数第一次调用函数ff(),自动型变量a和c分别被初始化为1和8,静态型变量b被初始化为4,if语句的表达式b= =4成立,执行a+=c;b+;,a的值变为9,b的值变为5,最后输出a=9,b=5。函数第二次调用函数ff(),自动型变量a和c分别被重新初始化为1和8,静态型变量b不在初始化而保留上一次调用结束时的值5,if语句的表达式b= =4不成立成立,执行a+=c;b-;,a的值变为9,b的值变为4,最后输出a=9,b=4。历年试题阅读下列程序并写出运行结果。int fib(int n)static int f0=0,fl=l,i,f;for(i=3;i<=n;i+)f=f0+fl;f0=fl;fl=f;printf("f0=%d,fl=%dn",f0,fl);return(f);void main(void)printf("%dn",fib(3)+fib(3);【答案】f0=1,fl=1 2【解析】该题考查函数调用与变量存储类型。题中主函数求fib(3)+fib(3)表达式的值,第一次调用fib(3),由于形参n得到的值是3,所以for循环值进行1次,执行语句f=f0+fl;f0=fl;fl=f;后f、f0、f1的值分别是1、1、1,然后执行输出语句输出f0=1,fl=1,i的值变为4,最后return返回的值是1。第二次调用fib(3),由于形参n得到的值是3,而i是静态变量保留上一次调用结束时的值4,循环条件不成立,不执行循环体,最后return返回的变量f值是上一次调用结束时的值1。最后主函数中输出fib(3)+fib(3)的值2。第八章 指 针历年试题若有说明:int *p1,*p2,m=5,n;以下进行赋值的语句中合理的是()Ap1=m; B&p2=n;Cpl=&m;p2=p1; D*p1=&m;【答案】C【解析】本题考查指针变量的赋值。指针变量中存放的是地址,可以将一个相应变量的地址赋给该指针变量,同样类型的指针变量可以相互赋值。选项A显然是错误的;选项B中&p2的含义是存放指针变量p2的地址,显然赋值语句是错误的。选项C将整型变量m的地址赋给整型变量指针p1,是合理的;将指针变量p1的值赋给同类指针变量p2,是合理的,所以选项C是正确的。选项D中赋值号左边是指针变量p1所指的整型变量,右边是整型变量的地址,是错误的赋值语句。历年试题写出下面程序的功能以及程序的运行结果。swap(int.*p1,int*p2)int p;p=*pl;*p1=*p2;*p2=p;main( ) int a=5,b=7,*ptrl,*ptr2;ptrl=a;ptr2=b;swap(ptrl,ptr2);printf(*ptrl=d,*ptr2=dn,*ptrl,*ptr2);printf(a=d,b=%dn,a,b);【答案】*ptrl=7,*ptr2=5 a=7,b=5【解析】本题考查是指针作为函数参数的运用。函数调用过程如图ab57ptr1ptr2p1p2main()调用swap() 调用swap()结束时:main()swap()调用swap()开始时ab75ptr2p1p2ptr1历年试题 以下选项中,对指针变量p的正确操作是( )A.int a5,*p;p=a B.int a5,*p;p=a;C.int a5;int *p=a5; D.int a5;int *p,p2=a;*p=*p2;【答案】B【解析】本题考查指向一维数组的指针变量。a是数组名,代表数组首地址,选项A中p=a是错误操作;选项C中,a5是一个非法的数组元素,p是指针变量,为期赋的值只能是地址,选项C是错误操作。选项D中p2是普通整型变量,p2=a是不正确的语句,*p2运算也是非法的。历年试题 (2008年4月程序分析) 请阅读分析下列程序,然后写出程序的运行结果。 void main(void) int a =1,2,3,4,5,6,*p;p=a;p+ +;*(p+3)+=2;printf(%dn,*p);printf(%dn,*(p+3); 【答案】2 7【解析】本题考查指向一维数组的指针变量的使用。指针变量p开始指向元素a0,执行p+ +; p开始指向元素a1。语句*(p+3)+=2;相当于a4=a4+2;,这样元素a4的值变为7。最后输出*p即a1的值2和a4的值7。注意输出格式正确1分。历年试题设有语句int a410,*p=*a;则下列表达式中不是地址表达式的是()A.&a12B.a3C.*(p+1*10+2)D.p+1*10+2【答案】C【解析】该题考查二维数组的指针变量。题中定义语句中的*p=*a相当于*p=a0,p+1相当于&a01,p+1*10+2相当于&a12,可见选项D是地址表达式,选项C是元素a12。选项A显然是地址表达式,选项B中a3是&a30。历年试题设p1和p2是指向同一个字符串的指针变量,且c为字符型变量,则以下不能正确执行的赋值语句是( )A.c=*p1+*p2; B.p2=*p1;C.p1=p2; D.c=*p1*(*p2);【答案】B【解析】该题考查指向字符串的指针变量的运算。选项A是将p1和p2所指字符串的首字符相加(字符的ASCII码值相加)的和赋给变量C;选项D是将p1和p2所指字符串的首字符相乘(字符的ASCII码值相乘)的积赋给变量C;这两条语句都能正确执行。选项是将p1与p2的值相乘的积赋给p2,由于p1与p2是地址,不能进行乘法运算,所以不能正确执行。选项C将p2的值赋给p1,p1和p2是同种类型的指针变量,可以相互赋值。历年试题阅读下面程序,分析cat函数的功能并写出程序的运行结果。#includestdio.hvoid cat(char s,char t)while(s) s+;while( s+= t+)!=0);main( )char sl80=computer,s280=Pentium_;cat(s2,s1);printf(% sn,s2);【答案】cat函数的功能将指针t所指字符串连接到s所指字符串的尾部。程序的运行结果:Pentium_ computer 【解析】该题考查的是指向字符串的指针变量。利用cat(s2,s1);调用cat(char s,char t)后,s指向字符串s2,t指向字符串s1,执行语句while(s) s+;将指针s所指字符串s2的结束标志处。执行while( s+= t+)!=0);将t所指字符串s1连接到s所指字符串s2的尾部。最后数组s2中存放的是连接后的字符串。历年试题阅读分析下面程序并写出运行结果。main()char *a=Pascal,C Language,dBase,Cobol;int j;for(j=3;j>=0;j-)printf(%sn,aj);【答案】CoboldBaseC LanguagePascal【解析】该题考查指向指针数组。指针数组a的四个元素分别指向四个字符串,for循环执行四次,依次将这四个a3、a2、a1 a0指针所指的字符串输出。第九章 结构体和共用体历年试题下列关于结构体类型的定义正确的有( )A.struct riverB.struct riverC.struct int branch; int branch; int branch;char name20; char name20; char name20; D.structE.struct river int branch; int branch;char name20; char name20; struct river * next;【答案】AE