2008年下半年软件考试因故推迟了,这未尝不是一件好事,对于那些准备还不够充分的考生来说,现在正是查漏补缺的好时机,本站为您整理了考前练习题,希望对您有所帮助,祝您考出好成绩!
1.合法的数组定义是( )
①int a[]={"string"}
②int a[5]={0,1,2,3,4,5};
③char a={ "string"}
④char a[]={0,1,2,3,4,5};
【解】①错误的原因是整数数组不可以用字符串对其初始化。②错误的原因是,数组初始化时,初始化指定的值的个数多于数组的元素个数。③错误的原因是,能用字符串初始化的只;有字符指针变量,或字符数组。字符率不能对其它类型的变量初始化,包括字符变量。④是正确的,因为字符数组可以用小整数(作为字符的ASCII代码值)对其元素初始化。
2.unsigned fun6( unsigned num)
{ unsigned k=l;
do { k*= num;num/=10;}
while(num) ;
return k;
}
main()
{ unsigned n=26;
printf("%d\n", fun6(n));
}
答案:【解】函数有一个形参num,循环前变量 k置 1,循环中,表达式num是取num的个位,将num的个位值累乘于k中,然后num除以10。循环直至num为0结束,这是逐一求出num十进制表示的各位数字,并累乘于变量k的循环。函数最后返回k。函数fun6的功能是求整数的各位十进数字积。所以程序输出12。
3.以下程序的输出结果是( )
# include
subl(char a,char b) {char c;c=a;a=b;b=c;}
sub2(char *a,char b){ char c;c=*a;*a=b;b=c;}
sub3(char *a,char *b) { char c;c=*a;*a=*b;*b=c;}
main()
{ char a, b;
a=’A’; b=’B’; sub3(&a,&b); putchar(a); putchar(b);
a=’A’;b=’B’ ;Sub2(&a,b);putchar(a); rutchar(b);
a=’A’; b=’B’; sub1(a,b); putchar(a);putchar(b);
}
①BABBAB
②ABBBBA
③ BABABA
④ BAABBA
【解】在上述程序中,函数subl完成两形参值的交换,这个交换不影响实参变量,这是一个没有意义的函数。函数sub2将第二个形参的值置入由第一个指针形参所指的变量中,指针形参所指的变量由调用时的实参提供。函数sub3完成将两个形参所指的变量的值交换。程序调用sub3,使变量a和b的值交换输出BA;调用subZ,使变量b的值传送到a,输出BB;调用subl,变量a和b的值不改变,输出AB。所以程序输出BABBAB。正确解答是①。
3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/