二级C语言分类模拟题516
(总分51,考试时间90分钟)
选择题
1. 下列程序的输出结果是______。
#include<stdio.h>
main()
{int a[2][3]={{1, 2, 3}, {4, 5, 6}}, (*p)[3], i; p=a;
for(i=0; i<3; i++)
{ if(i<2)
p[1][i]=p[1][i]-1;
else
p[1][i]=1;
}
printf("%d\n", a[0][1]+a[1][1]+a[1][2]);
}
A. 8        B. 7
C. 12        D. 9
2. 以下叙述中正确的是______。
A. 使用break语句可以使流程跳出switch语句体
B. break语句不能用于提前结束for语句的本层循环
C. continue语句使得整个循环终止
D. 在for语句中,continue与break的效果是一样的,可以互换
3. 有以下程序:
#include<stdio.h>
void fun(int*s, int n1, int n2)
{ int i, j, t;
i=n1; j=n2;
while (i<j)
{ t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; i++; j--; }
}
main()
{ int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, i, *p=a;
fun(p, 0, 3); fun(p, 4, 9); fun(p, 0, 9);
for(i=0; i<10; i++) printf("%d", *(a+i));
程序的输出结果是
A. 0987654321        B. 4321098765
C. 5678901234        D. 0987651234
4. 以下叙述中正确的是______。
A. 只要适当地修改代码,就可以将do-while与while相互转换
B. 对于"for(表达式1;表达式2;表达式3)循环体"首先要计算表达式2的值,以便决定是否开始循环
C. 对于"for(表达式1;表达式2;表达式3)循环体",只在个别情况下才能转换成while语句
D. 如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句
5. 有以下程序:
# include <stdio.h>
main()
{ char a="H";
a=(a>="A"&&a<="Z")?(a-"A"+"a"):a;
printf("%c\n",a);
}
程序运行后的输出结果是______。
A. .A        B. .a
C. .H        D. .h
6. 以下定义数组的语句中错误的是______。
A. int num[]={1,2,3,4,5,6};
B. int num[][3]={{1,2},3,4,5,6};
C. int num[2][4]={{1,2},{3,4},{5,6}};
D. int num[][4]={1,2,3,4,5,6};
7. 设有某函数的说明为:
int*func(int a[10],int n);
则下列叙述中,正确的是______。
A. 形参a对应的实参只能是数组名
B. 说明中的a[10]写成a[]或*a效果完全一样
C. func的函数体中不能对a进行移动指针(如a++)的操作
D. 只有指向10个整数内存单元的指针,才能作为实参传给a
8. 有以下程序:
#include <stdio.h>
#define N 5
#define M N+1
#define f(x) (x*M)
main( )
{int i1,i2;
i1=f(2);
i2=f(1+1);
printf("%d%d\n",i1,i2);
}
程序的运行结果是______。
A. 12 7        B. 12 12
C. 11 11        D. 11 7
9. 有以下程序
#include<stdio.h>
main()
{int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)t+=b[i][b[j][i]];
printf("%d\n",t);
}
程序运行后的输出结果是______。
A. 3        B. 4
C. 1        D. 9
10. 循环控制语句“while(!scanf("%d",&i))getchar( );”执行的情况是 ( )
A. 循环输入字符,遇文件结束符EOF退出        B. 循环条件有错,不能执行
C. 若输入数据i有错,暂停等待处理        D. 键入i值后,回车退出循环
11. 下列叙述中正确的是______。
A. 栈是“先进先出”的线性表
B. 队列是“先进后出”的线性表
C. 循环队列是非线性结构
D. 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
12. 下列叙述中正确的是______。
A. 空字符串不占用内存,其内存空间大小是0
B. 两个连续的单引号(")是合法的字符常量
C. 可以对字符串进行关系运算
D. 两个连续的双引号(" ")是合法的字符串常量
13. 以下叙述中正确的是______。
A. 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
B. 一条语句只能定义一个数组
C. 每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
D. 在引用数组元素时,下标表达式可以使用浮点数
14. 以下叙述中正确的是______。
A. 在C语言程序中,main函数必须放在其他函数的最前面
B. 每个后缀为.C的C语言源程序都可以单独进行编译
C. 在C语言程序中,只有main函数才可单独进行编译
D. 每个后缀为.C的C语言源程序都应该包含一个main函数
15. 以下程序的输出结果是______。
int x=1;
fun(int p)
{ int x=4;
x+=p++;
printf函数属于
printf("%d",x);
}
main()
{ int a=3;
fun(a) ; x+=a++;
printf("%d\n",x);
}
A. 8 4        B. 4 5
C. 7 4        D. 9 5
16. 某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是______。
A. 10        B. 8
C. 6        D. 4
17. 若有定义:
float x=1.5;
int a=1, b=3, c=2;
则正确的switch语句是______。
A. switch(a+b){ case 1:printf("*\n");case c:printf("**\n");}
B. switch((int)x);{case 1:printf("*\n");case 2:printf("**\n");}
C. switch(x){case 1.0:printf("*\n");case 2.0:printf("**\n");}
D. switch(a+b){case 1:printf("*\n");case 2+1:printf("**\n");}
18. 有以下程序
#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("%d,%d\n",a.b,a.p);
}
程序运行后的输出结果是______。
A. 2,4        B. 1,2
C. 1,4        D. 2,3
19. 有以下程序:
#include <stdio.h>
struct link {
int data;
struct link* next;
};
main()
{ struct link *h,a,b;
h=&a;a.data==&b;b.data=20;
}
程序运行时不能输出10,20的语句是______。
A. printf("%d,%d\n",h->data);
B. printf("%d,%d\n",a.data,(%a.next).data);
C. printf("%d,%d\n",h->data,(*a.next).data);
D. printf("%d,%d\n",a.->data);
20. 有以下程序
#include
main()
{ int a=0,b=0;
/*给a赋值a=10;
b=20;给b赋值*/
printf("a+b=%d\n",a+b);/*输出计算结果*/
}
程序运行后的输出结果是______。
A. a+b=0        B. a+b=30
C. a+b=10        D. 出错
21. 若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是______。
A. i=(a+k)<=(i+k);        B. i=a%11;
C. a=a++,i++        D. i=!a;
22. 表达式(int)((double)9/2)-9%2的值是______。
A. 0        B. 3
C. 4        D. 5
23. 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是______。
A. 1        B. 0
C. 2        D. 不知道a的值,不能确定
24. 已知字符A的ASCII代码值是65,字符变量c1的值是A,c2的值是D。则执行语句printf("%d,%d",c1,c2-2);的输出结果是______。
A. A,68        B. 65,66
C. A,B        D. 65,68
25. 有以下程序
#include<stdio.h>
#define S(x)4*(x)*x+1
main()
{ int k=5,j=2;
printf("%d\n",S(k+j));
程序运行后的输出结果是______。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。