二级C语言选择题专项强化真题试卷49
选择题
1.有以下程序:
#include<stdio.h>
int fun(int x,int y)
{
if(x==y)return(x);
else return((x+y)/2);
}
main()
{
int a=4,b=5,c=6;
printf(\\(B)
A. 3
B. 6
C. 8
D. 12
解析:fun的功能是求两数的平均数,并且参数和结果都为整型。题中是用一个函数作为另一个函数的参数,所以应该先做里面嵌套的函数即fun(b,c),值为5。fun(2*a,fun(b,c))即为计算fun(2*4,5),所以结果为(5+8)/2=6。
2.有以下程序:
#include<stdio.h>
typedef struct{int b,p;}A;
void f(A c)/*注意:c是结构变量名*/
{ int j;
c.b+=1;c.p+=2;
}
main()
{
int i;
A a={1,2};f(a);
printf(\\(B)
A. 2 4
B. 1 2
C. 1 4
D. 2 3
解析:考查结构体变量作为函数实参整体传递,也是一种值传参,形参的变化不能影响到实参,所以调用函数f(a)对a中的数据没有影响,输出结果为12,答案选B。
3.有以下程序:
#include
main()
{
int a=0,b=1;
if(++a==b++)
printf(\\(C)
A. 1a=0,b=1
B. 0a=1,b=2
C. 1a=1,b=2
D. 0a=0,b=2
解析:运算符“++”放在变量后面时,表示先执行其他操作,再将变量加1;运算符“++”放在变量前面时,表示将变量加1后再参与其他操作。因此if(++a==b++)为真,输出1,再输出a,b,故程序运行后的结果是:1a=1,b=2。因此答案为C选项。
4.设有定义:
int a;float b;
执行
scanf(\\(A)
A. 87和6.0
B. 876和543.0
C. 87和543.0
D. 76和543.0
解析:在格式字符前加入一个整数可以指定输入数据所占的宽度.所以赋值时会将87赋给int型变量a,把6.0赋给int型float型变量b。
5.有以下程序:
#include
main()
{ char a,b,c,d;
scarf(\\(A)
A. 12
B. 12
3
C. 1234
D. 12
34
解析:scanf()函数从标准输入输出中读入两个字符’1’、’2’分别赋给变量a、b,遇到回车自动结束,但回车符已经存入缓冲区,函数getchar()将从中接受了回车符,故c被赋值为回车符,第二个getchar()读入字符’3’,因此a=’1’,b=’2’,c=,d=’3’。故答案为A选项。
6.有以下定义语句,编译时会出现编译错误的是( )。(D)
A. char a=’\x2d’;
B. char a=’\n’;
C. char a=’a’;
D. char a=\\
解析:D选项中将字符串常量“aa”赋给字符变量a是错误的。
7.有以下程序
#include
main()
{
int password;
char*p,old_str[10]=\\(A)
A. #y#k#p#f
B. #wi#nd#
C. xj#oe
D. #2222#
解析:首先定义了一个指针p指向数组的首地址,在while语句中,执行功能是如果当前指针指向地址单元内字符不等于空字符’\0’,则输出’#’和指针对应地址元素的值在ASCII码加2后变换的字符常量,因此,答案为A选项。
8.有以下程序:
#include<stdio.h>
void fun(char*c){
while(*c){
if(*c>=’a’&&*c<=’z’)
*c=*c=-(’a’-’A’)。
c++;
}
}
main( )
{
char s[81];
gets(s);
fun(s);
puts(s);
}
当执行程序时从键盘上输入Hello Beijing<回车>,则程序运行后的输出结果是( )。(C)
A. hello beijing
B. Hello Beijing
C. HELLO BEllING
D. hELLO Beijing
解析:主程序读取整个字符串存于s中,调用fun函数,字符指针c指向数组s。函数fun的功能是把指针c所指向的字符数组中的所有小写字符转换为大写。gets函数可以把空格作为字符串的一部分输入,以回车作为输入结束。如果*c为小写字符,则*c=*c-32(转大写)。因此C选项正确。
9.有以下程序:
#include<stdio.h>
#define SUB(a)(a)-(a)
main( )
{int a=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf(\\(C)
A. 0
B. -12
C. -20
D. 10
解析:本题考查宏定义,宏定义只是做简单的替换,所以本题中SuB(a+b)*c=(a+b)-(a+b)*c=-20,所以答案为C选项。
10.下列叙述中正确的是( )。(D)
A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 循环队列中元素的个数是由队头指针和队尾指针共同决定的
解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A)错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B)与C)错误。
11.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。(D)
A. 学生成绩管理系统
B. ERP系统
C. 办公自动化系统
D. LINIX系统
解析:系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为
本文档预览:3600字符,共8602字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载