二级C语言选择题专项强化真题试卷53
选择题
1.软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。下面各项中属于应用软件的是( )。(C)
A. 编译程序
B. 操作系统
C. 教务管理系统
D. 汇编程序
解析:系统软件主要包括:
①操作系统软件;
②各种语言的解释程序和编译程序;
③各种服务性程序;
④各种数据库管理系统。
操作系统、编译程序与汇编程序属于系统软件,编译程序与汇编程序也称为支撑软件,而教务管理系统属于应用软件。
2.有以下程序:
#include<stdio.h>
main()
{
FILE*f:
f=fopen(\\(C)
A. helloabc
B. abelo
C. abc
D. abchello
解析:fopen(\\
3.有以下程序:
#include<stdio.h>
main()
{
int a,b;
for(a=0;a<3;a++)
{
scanf(\\(A)
A. 2 3 3 4 5 6
B. 2 3 4
C. 2 2 3 4 4 4
D. 2 3 4 3 4 4
解析:本题是一个循环结构嵌套选择结构,按照外层循环,内层选择一步一步处理即可。重点注意地是,switch语句中并没有出现break语句,所以内层循环是不会跳出的。
4.下列数据结构中,属于非线性结构的是( )。(C)
A. 循环队列
B. 带链队列
C. 二叉树
D. 带链栈
解析:线性结构的特点:
①有且只有一-个根结点;
②每一个结点最多有一个前驱,也最多有一个后继。
不满足线性结构条件的称为非线性结构,二叉树的非叶子结点最多可以用两个后继,属于非线性结构。
5.函数fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是( )。(D)
A. fread
B. fscanf
C. fgets
D. getc
解析:flgets读取一个长度为(n一1)的字符串;fread按照指定的长度读取数据项;对应二进制的打开方式;fscanf按指定格式读,对应文本打开方式;gete从指定的文件读入一个字符,即从fp所指向的文件中读入一个字符赋给ch。因此答案为D选项。
6.有以下程序(strcat函数用于连接两个字符串):
#include<stdio.h>
#include<string.h>
main( )
{
char a[20]=\\(C)
A. IJK
B. ABCDE\0FG\0UK
C. ABCDIJK
D. EFGIJK
解析:字符数组a中包含两个‘\0’,遇到第一个‘\0’时就表示字符串a结束。字符串处理函数strcat(字符数组a,字符数组b),功能是连接两个字符数组中的字符串,把字符串b连接到a的后面,结果放在字符数组a中。连接时将字符串a后的‘\0’取消,只在新串最后保留一个‘\0’。本题相当于将“ABCD”和“IJK”连接。因此C选项正确。
7.以下叙述正确的是( )。(C)
A. 有些算法不能用3种基本结构来表达
B. C语言程序不编译也能直接运行
C. 结构化程序的3种基本结构是循环结构、选择结构、顺序结构 .
D. 如果C语言程序实现的算法很简单,则计算机不进行任何代码转换就能执行程序
解析:算法的3种基本结构可以表达任何算法,只是不同的实现复杂度不相同,因此A选项错误。C语言是编译型语言,程序必须先编译、链接才能运行,因此B选项错误。C语言是高级程序语言,计算机不能识别除了机器语言以外的任何语言,因此C程序代码转换为机器语言才能在计算机上运行,因此选项D错误。答案为C选项。
8.有以下程序:
#include
main()
{ int i,j,m=1;
for(i=1;i<3;i++)
{for(j:3;j>0;j- -)
{if(i*j>3)break;
m *=i*j;
}
}
printf(\\(C)
A. m=4
B. m=2
C. m=6
D. m=5
解析:第一次外循环i的值为1,第一次内循环j的值为3,不满足条件执行m*=i*j,即m的值为3;第二次j的值为2,不满足条件执行m*=i*j,即m的值为6;第三次j的值为1,不满足条件执行m*=i*j,即m的值仍为6。第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循环。
9.有以下程序:
#include<stdio.h>
main( )
{
int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
for(i=0;i<3;i++)
for(k=i+l;k<4;k++)
if(a[i][i]<a[k][k])
{t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}
for(i=0;i<4;i++)
printf(\\(C)
A. 1,1,2,6,
B. 6,2,1,1,
C. 6,4,3,2,
D. 2,3,4,6,
解析:首先对二维数组进行赋值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值为1、4、…、6、1。通过for嵌套循环语句和if条件语句,对二维数组对角线元素进行由大到小的排序操作,程序最后通过for语句输出二维数组第l行的4个元素。因此C选项正确。
10.有以下程序:
#include
main()
{ int a=1,b=1;
for(;a一一;)
b一一;
printf(\\(A)
A. 一1,0
B. 0,0
C. 一1,一1
D. 1,1
解析:题干中语句for(;a一一;)的执行过程是,先判断表达式a一一是否为0,因为运算符“一一”在变量的后面,表示先进行其他操作,再让变量a减1,即判断a!=0成立,则进入循环,然后a减1,起始a=1不等于0,满足条件进入for循环,然后a自减1为0,b自减1为0,继续循环;再跳回for语句时,a!=0不成立,不会进入循环,但是a也要自减1为一1,循环结束;故最后输出a=一1,b=0,因此答案为A选项。
11.以下数组定义中错误的是( )。
D
解析:D)选项中x[2][3]定义的是一个两行三列的二维数组,而在给数组元素赋值时却赋成了三行,所以错误。
12.有以下程序I
本文档预览:3600字符,共8654字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载