计算机类二级C
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(5)
43 题含答案C
1单选题1 / 43
下列叙述中正确的是( )。
查看答案
D. 在C程序中,求余算符“%”两边的类型相同时才能进行运算
2单选题2 / 43
软件生命周期中,花费最多的阶段是( )。
查看答案
D. 软件维护
3单选题3 / 43
假定X和Y为double型,则表达式x=2,y=x+3/2的值是( )。
查看答案
D. 3.000000
4单选题4 / 43
有如下程序:
main()
{ int x=1,a=0,b=0;
switch(x)
{
case 0:b++;
case 1:a++;
case 2:a++.b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是( )。
查看答案
A. a=2,b=1
5单选题5 / 43
设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是( )。
查看答案
D. !((x<Y)&&!Z||1)
6单选题6 / 43
有下列程序:
main()
{ char s[]="abcde";
s+=2:
printf("%d\n",s[0]);
}
执行后的结果是( )。
查看答案
D. 程序出错
7单选题7 / 43
设有以下定义
union data
{int d1;float d2;)demo;
则下面叙述中错误的是( )。
查看答案
D. 若给demo.d1赋99后,demo.d2中的值是99.0
8单选题8 / 43
要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,下列正确的程序段是( )。
查看答案
A. while((ch—getchar())!='N')printf("%c",ch);
9单选题9 / 43
下列选项中非法的字符常量是( )。
查看答案
B. '\039'
10单选题10 / 43
在位运算中,操作数每左移两位,其结果相当于( )。
查看答案
D. 操作数乘以4
11单选题11 / 43
关于结构化程序设计原则和方法的描述错误的是( )。
查看答案
C. 不允许使用GOTO语句
12单选题12 / 43
设有定义的语句:“char c1=92,c2=92;”,则以下表达式中的值为零的是( )。
查看答案
A. c1^c2
13单选题13 / 43
下列程序的输出结果是( )。
main()
{ int i=1,j=2,k=3;
if(i++==1&&(++j==3==||k++==
3))
printf("%d%d%d\n",i,j,k);
}
查看答案
D. 2 3 3
14单选题14 / 43
有以下函数:
char fun(char*p)
{return P;}
该函数的返回值是( )。
查看答案
A. 无确切的值
15单选题15 / 43
在一个C语言源程序文件中所定义的全局变量,其作用域为( )。
查看答案
D. 由具体定义位置和extern说明来决定范围
16单选题16 / 43
算法分析的目的是( )。
查看答案
D. 分析算法的效率以求改进
17单选题17 / 43
当输入为"hello?"时,下面程序的执行结果是( )。
#include
main()
{ char c;
c=getchar();
while(c!='?')
{ putehar(e);break;
}
}
查看答案
A. Rvfsu
18单选题18 / 43
有以下程序:
void f(int x,int y)
{ int t;
if(x
}
main()
{ int a=4,b=3,c=5;
f(a,b);f(a,c);f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
执行后输出结果是( )。
查看答案
D. 4,3,5
19单选题19 / 43
下列选项中不是字符常量的是( )。
查看答案
D. "\0"
20单选题20 / 43
下列叙述中正确的是( )。
查看答案
C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
21单选题21 / 43
有以下程序.
#include
main()
{ char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第l列开始)
123<回车>
45678<回车>
则输出结果是( )。
查看答案
D. 1245
22单选题22 / 43
s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s;则以下选项中正确的是( )。
查看答案
D. if(stremp(s1,s2)>O)S;
23单选题23 / 43
下列程序执行后的输出结果是( )。
main()
{ char x=0xFFFF;printf("%d\n",x--);}
查看答案
C. 1
24单选题24 / 43
以下能正确定义一维数组的选项是( )。
查看答案
B. char a[]={0,1,2,3,4,5);
25单选题25 / 43
合法的main()函数命令参数形式是( )。
查看答案
C. main(int argc,char*argv)
26单选题26 / 43
下列程序的输出结果是( )。
#include
main()
{ struct st
{ int y,x,z;
};
union
{ long i;
int j;
char k;
}un;
printf("%d,%d\n",sizeof(struct st),sizeof(un))
}
查看答案
B. 6,4
27单选题27 / 43
有下列程序:
main()
{ int k=5,n=0;
while(k>0)
{switch(k)
{dcfault:break;
case 1:n=n+k;
case 2:
case 3:n+=k;
}
k--;
}
printf("%d\n".n);
}
程序运行后的输出结果足( )。
查看答案
D. 7
28单选题28 / 43
有以下程序
#include
int fun(char s[])
{int n=0;
while(*s<='9'&&*s>='0'){n=10*n+*s-'o';s++;)
return(n);
}
main()
{char s[10]={'6','1','*','4','*','9','*',' 0','*');
printf("%d",fun(s));
}
程序运行的结果是( )。
查看答案
C. 61
29单选题29 / 43
利用fseek函数可实现的操作是( )。
查看答案
B. 改变文件的位置指针
30单选题30 / 43
下列字符串是标识符的是( )。
查看答案
A. aa
31单选题31 / 43
以下关于long、int和short类型数据占用内存大小的叙述中正确的是( ),
查看答案
D. 由C语言编译系统决定
32单选题32 / 43
设a、b、c、d、m、n均为int型变量,且a=5、b=6、c= 7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n—c> d)运算后,n的值是( )n
查看答案
C. 2
33单选题33 / 43
有以下程序:
int fun(int n)
{ if(n==l)return l;
else return(n+fun(n一1)):
}
main()
{ int x;
scanf("%d",&x);x=fun(x);printf("%d\n",
x):
}
执行程序时,给变量X输入10,程序的输出结果是( )。
查看答案
A. 55
34单选题34 / 43
下列程序的输出结果是( )。
#include
void p(int*x)
{ printf("%d¨,++*x);
}
void main( )
{ int y=3;
p(&y);
}
查看答案
B. 4
35单选题35 / 43
下列程序的输出结果是( )。
char*point(char*pt):
main()
{ char b[4]={'a','c','s','f'),*pt=b;
pt=point(pt);
printf("%c\n",*pt);
}
point(char*p)
{ p+=3;
return p;
}
查看答案
C. f
36单选题36 / 43
结构化程序设计主要强调的是( )。
查看答案
D. 程序的易读性
37单选题37 / 43
有下列程序:
main()
{ char p[]={'a','h','c'},q[]="a";
printf("%d%d\n".sizeof(P),sizeof(q));
}
程序运行后的输出结果是( )。
查看答案
C. 3 4
38单选题38 / 43
语句“printf("akbre"\'hi\'y\\\bou\n")”;的输出结果是( )。
查看答案
C. re 'hi'you
39单选题39 / 43
已知二叉树后序遍历序列是dabeC,中序遍历序列是debaC,它的前序遍历序列是( )。
查看答案
D. Cedba
40单选题40 / 43
有以下程序
#include
struct tt
(int x;struct tt*y;)*P;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{ int i;
p=a;
for(i=l;i<=2;i++){printf("%d,",p->x);P =p->y;}
}
程序的运行结果是( )。
查看答案
D. 20,15,
41主观题41 / 43
请补充main()函数,亥函数的功能是求方程ax2+bx+ e=0的两个实数根。方程的系数a、b、C从键盘输入,如果判别式(disc=b*b-4*a*c)小于0,则要求重新输入a、b、c的值。
例如,当a=1,b=2,c=1时,方程的两个根分别是:x1 =-1.00,x2=-1.00。
注意:部分源程序给出如下。
请勿改动函数中的其他任何内容,仅在横线上填入所编写的若干表达式或语旬。
试题程序:
#include
#include
void main()
{
double a,b,c,x1,x2,disc;
do
{
printf("Input a,b,C:");
scanf("%1f,%1f,%1f”,&a,&b,&C);
disc=b*b一4*a*C:
if(disc<0)
printf("disc=%1f\n Input again!\n",disc);
}
while(【1】);
printf("****1he result****\n");
x1=(-b+【2】 (disc))/(2*a);
x2=(-b-【3】(disc))/(2*a);
printf("\nx1=%6.21f\nx2=%6.21f\n",x1,x2);
}
查看答案
【1】disc<0或O>disc【2】sqrt【3】sqrt
42主观题42 / 43
已知一个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc ()的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n=20时,程序的输出结果应为42762.000000。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动maiil()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
double proc(int n)
{
double sum,s0,s1,s2,s;
int k;
sum=1.0;
if(n<=2)
sum=0.0;
s0=0.0;
s1=0.0;
s2=1.0;
//****found****
for(k=4;k<N;K++)
}
{
s=s0+s1+s2;
sum+=S:
s0=s1;
s1=s2;
//****found****
s2=s;
return sum;
}
void main()
{
int n;
system("CLS");
printf("Input N=");
scanf("%d",&n J;
printf("%f\n",proc(n));
}
查看答案
(1)错误:for(k=4;k<n;k++)
正确:for(k=4;k<=11;k++)
(2)错误:s2=S;
正确:s2=s;)
43主观题43 / 43
请编一个函数void proc(int ttEM][N],int pp[N]),tt 指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#define M 3
#define N 4
void proc(int ttrM3rN]。int pp[N])
{
}
void main()
{
int str[M][N]={ {34,56,84,78},
{23,84,93,12),
{28,38,39,93}};
int p[N],i,j,k;
system("CLS");
printf("The riginal data is:\n");
for(i=0;i<M;I++)
{
for(j=0;j<N;J++)
printf("%6d",str[i][j]);
printf("\n");
}
proc(str,p);
printf("\nThe result is:\n");for(k=0:k<M;K++)
printf("%4d",p[k]);
printf("n");}
查看答案
void proc(int tt[M][N],int pp[N])
、int i,j,max;
for(i=0;i<M;i++)//i控制行的下标
{
max=tt[i][c]; //max存放每行中最大的数
for(j=0;j<N;j++)
if(tt[i][j]>max)
max=tt[i][j];
pp[i]=max;//把大的数放到PP数组中,经过i来控制pp数组的下标
}
}