国家二级(C语言)机试模拟试卷518
选择题
1.有以下程序:
#include<stdio.h>
main()
{int k=5,n=0;
do
{switch(k)
{case1:case3:n+=1;k–;break;
default:n=0;k–;
ease2:case4:n+=2;k–;break;
}
printf(\\(C)
A. 02356
B. 0235
C. 235
D. 2356
解析:k的值为5,逐个对case语句进行匹配,均不匹配,执行default下的语句n=0;k–。再执行case2:cased:后面的语句n+=2;k–;。执行break语句跳出switch判断,打印n的值,即2。经过第一次循环后,k的值为3,然后进行k>0&&n<5条件判断为真。第二次执行循环体,执行case3:后面的语句n+=1;k–;。再执行break语句跳出循环,此时打印n的值3,此时k的值为2。第三次执行循环体k的值为2,满足条件,执行case2:cased:后面的语句n+=2;k–;。执行break语句跳出循环体,打印n的值5。此时n不满足条件k>0&&n<5,所以结束循环。整个程序的打印结果为235。
2.下面程序的运行结果是( )。
#include
main()
{int i;
for(i=1;i<=5;i++)
{ if(i%2)printf(\\(A)
A. *#*#*
B. #*#*#*
C. *#*#
D. #*#*
解析:分析程序可知,程序循环5次,然后利用if语句决定每次循环时输出的字符。当i为奇数时,i%2=1,if(i%2)为真,输出“*”’;当i为偶数时,i%2=0,if(i%2)为假,执行else语句,输出“#”,所以当i取1、3、5值时输出“*”,当i取2、4值时输出“#”。
3.有以下程序:
#include<stdio.h>
#include<string.h>
struct A
{int a;char b[10];double c;};
void f(struct A*t);
main()
{struct A a={1001,\\(B)
A. 1001,zhangDa,1098.0
B. 1002,ChangRong,1202.0
C. 1001,ChangRong,1098.0
D. 1002,zhangDa,1202.0
解析:本题主要考查是的函数调用时参数之间的传递问题。在C语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参变化。
4.下列关于二叉树的叙述中,正确的是( )。(B)
A. 叶子结点总是比度为2的结点少一个
B. 叶子结点总是比度为2的结点多一个
C. 叶子结点数是度为2的结点数的两倍
D. 度为2的结点数是度为1的结点数的两倍
解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个。所以选择B。
5.下面不能作为结构化方法软件需求分析工具的是( )。(A)
A. 系统结构图
B. 数据字典(DD)
C. 数据流程图(DFD图)
D. 判定表
解析:结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。
6.软件测试的目的是( )。(D)
A. 评估软件可靠性
B. 发现并改正程序中的错误
C. 改正程序中的错误
D. 发现程序中的错误
解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。
7.下列选项中,不能作为合法常量的是( )。(B)
A. 1.234e04
B. 1.234e0.4
C. 1.234e+4
D. 1.234e0
解析:用指数形式表示的实型常量需注意两点:①e或E后面的指数必须是整数:②指数必须是不超过数据表示范围的正负整数,并且在e或E前必须有数字。
8.以下程序的运行结果是( )。
#include
main()
{int a=3,b=4,c=8,d=4,m=1,n=3;
printf(\\(A)
A. 0
B. 1
C. 2
D. 3
解析:逻辑与(&&)运算符的功能是:当“&&”运算符两边的运算对象均为1时,整个表达式的值为1,否则为0。因为a=3<b=4,即m=0,所以整个表达式的值为0。
9.有以下程序:
#include<stdio.h>
main()
{int a1,a2;char c1,c2;
scanf(\\(D)
A. 12B. 12
C. 12,a,34,h<CR>
D. 12a34h<CR>
解析:存输入多个数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。所以应按选项D的顺序输入数据。
10.有以下程序:
#include<stdio.h>
#include<string.h>
main()
{
chara[]=\\(A)
A. 4 5 3 4
B. 4 3 2 1
C. 4 5 3 3
D. 4 5 1 3
解析:对于字符数组a,含有4个元素,所以strlen为4,而sizeof包括最后隐藏的\0,故sizeof有5个。对于字符串b,strlen为3,关键是sizeof,这里的sizeof不再是指数组的长度,因为b是一个地址值,整型数据,所以占用了4个字节。
11.有以下程序(注:字符a的ASCII码值为97) :
#include <stdio.h>
main()
{ char *s ={ \\(A)
A. 789
B. abc
C. 7890
D. 979899
解析:\\t因为小写字符a,b,c的ASCII的值分别为97,98,99,而在do while循环语句中,每次对字符的ASCII的值取余数并输出,所以分别输出7,8,9。
12.有以下程序(其中的strstr()函数头部格式为:char*strstr(char•*p1,ch
本文档预览:3600字符,共15688字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载