二级C语言-7-2
(总分73.5, 做题时间90分钟)
一、选择题
1.
设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是 。
∙A. b%(c%4)
∙B. b%(c-a%5)
∙C. b%a-a%5
∙D. (b%a)-(a%4)
A B C D
分值: 1
答案:D
[解析] 选项D)括号内的运算分别是b%a=11%6=5和a%c=6%4=2,最后得到5-2=3。
2.
算法的时间复杂度是指
∙A. 执行算法程序所需要的时间
∙B. 算法程序的长度
∙C. 算法执行过程中所需要的基本运算次数
∙D. 算法程序中的指令条数
A B C D
分值: 1
答案:C
[解析] 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。
3.
以下程序的运行结果为
#include"stdio.h"
main()
{ int m,n;
for(m=0,n=10;m<n;m+=3,n--);
printf("%d,%d\n",m,n);}
#include"stdio.h"
main()
{ int m,n;
for(m=0,n=10;m<n;m+=3,n--);
printf("%d,%d\n",m,n);}
∙A. 6,7
∙B. 7,6
∙C. 9,7
∙D. 7,9
A B C D
分值: 1
答案:C
[解析] for后一对括号中的表达式可以是任意有效的C语言表达式。该题目的循环体部分为空语句,循环控制条件为m<n,每一次m增3,n减1,每当循环体执行结束时,循环控制变量m,n就会分别被增3和减1。
4.
负责数据库中查询操作的数据库语言是______。
∙A.数据定义语言
∙B.数据管理语言
∙C.数据操纵语言
∙D.数据控制语言
A B C D
分值: 1
答案:C
[解析] 数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的
定义与检查以及并发控制、故障恢复等功能。
5.
下列选项中,不是一个算法的基本特征的是 。
∙A. 完整性
∙B. 可行性
∙C. 有穷性
∙D. 拥有足够的情报
A B C D
分值: 2
答案:A
[解析] 作为一个算法,一般应该具有下列4个特征:①可行性,即考虑到实际的条件能够达到一个满意的结果:②确定性,算法中的第一个步骤都必须是有明确定义的:③有穷性,一个算法必须在有限的时间内做完;④拥有足够的情报。
6.
c语言编写递归函数若有定义“int a=10,b=9,c=8;”,顺序执行下列语句后,变量b中的值是______。
c=(a-=(b-5));c=a% 11)+(b=3);
c=(a-=(b-5));c=a% 11)+(b=3);
∙A. 2
∙B. 3
∙C. 4
∙D. 5
A B C D
分值: 1
答案:B
7.
以下函数按每珩8个输出数组中的数据
void fun( iht*w, int n)
{ inti;
for(i=0;i<n,i++)
{ ______
printf("%d",w[i]);
}
printf("\n");
}
下划线处应填入的语句是______。
void fun( iht*w, int n)
{ inti;
for(i=0;i<n,i++)
{ ______
printf("%d",w[i]);
}
printf("\n");
}
下划线处应填入的语句是______。
∙A. if(i/8=0)printf("\n);
∙B. if(i/8=0)continue;
∙C. if(i%8=0)printf("\n");
∙D. if(i%8=0)continue;
A B C D
分值: 2
答案:C
[解析] 本题主要考查输出换行的问题,要求每行8个输出,因此,下划线处应填的语句是if(i%8=0)printf("\n");选项A相当于空—行,前七个数每输出—个数换行,从第八个数以后不换行输出剩下的数。选项B相当于前八个数不输出,从第九个数开始不换行输出剩下的数。选项D相当于不换行从数组中的第二个数开始输出,凡是i对8取模为0的数,均不输出。所以选项C是正确的。
8.
有以下等程序
#include <string. h>
void f(char *s, char *t)
{ char k;
k=*s; *s=*t; *t=k;
s++; t--;
if(*s) f(s, t);
}
main ()
{ char stt[10] ="abcdefg", *p;
p=str+strlen (str)/2+1;
f (p,p-2);
print f ( "%s\n", str);
}
#include <string. h>
void f(char *s, char *t)
{ char k;
k=*s; *s=*t; *t=k;
s++; t--;
if(*s) f(s, t);
}
main ()
{ char stt[10] ="abcdefg", *p;
p=str+strlen (str)/2+1;
f (p,p-2);
print f ( "%s\n", str);
}
∙A. abcdefg
∙B. gfedcba
∙C. gbcdefa
∙D. abedcfg
A B C D
分值: 1
答案:B
[解析] 本题考查的是递归函数。在一个函数中直接或间接地调用了自身,则称此函数为递归函数。本题定义的函数f()就是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动一位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串
结束标志,则递归调用自身。主函数中首先定义了一个字符数组sTR[10]="abcdefg",然后定义了一个字符指针 p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置.然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的3tr[2]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。
9.
下列程序的输出结果是
#include"stdio.h"
#define N3
#define M3
void fun(int a[M][N])
{ printf("%d\n",*(a[1]+2));}
main()
{ int a[M][N];
#include"stdio.h"
#define N3
#define M3
void fun(int a[M][N])
{ printf("%d\n",*(a[1]+2));}
main()
{ int a[M][N];
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=i+j-(i-j);
fun(a);}
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=i+j-(i-j);
fun(a);}
∙A. 3
∙B. 4
∙C. 5
∙D. 6
A B C D
分值: 2
答案:B
[解析] 若有以下定义:int a[3][4],i,j;且当 0<=i<3,0<=j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:
a[a][j],*(a[i]+j),*(*(a+i)+j),(*(a+i)[j],*(&a [0][0]+4*i+j)”。
10.
下列叙述中错误的是
∙A. 在程序中凡是以“#”开始的语句行都是预处理命令行
∙B. 预处理命令行的最后不能以分号表示结束
∙C. #define MAX是合法的宏定义命令行
∙D. C程序对预处理命令行的处理是在程序执行的过程中进行的
A B C D
分值: 2
答案:D
[解析] C语言中的预处理命令以符号#开头,这些命令是在程序执行前,即编译时进行处理的。
11.
以下叙述中正确的是______。
∙A. 预处理命令行必须位于C源程序的起始位置
∙B. 在C语言中,预处理命令行都以"#"开头
∙C. 每个C程序必须在开头包含预处理命令行:#include<stdio.h>
∙D. C语言的预处理不能实现宏定义和条件编译的功能
A B C D
分值: 1
答案:B
评析:选项B正确,原因是这部分语句与C程序其他部分的语句是有区别的,所以在每个预处理语句之前都有一个"#"符号以示区别。C提供三种预处理语句:(1) 宏替换,(2) 文件包含,(3) 条件编译。如果—个文件中要引用另外一个文件时才需要在开头包含预处理命令行:#include<stdio.h>。
12.
可以在C语言中用做用户标识符的是______。
∙A. void define WORD
∙B. as_b3 _123 If
∙C. for -abc cas
∙D. 2c Do SIG
A B C D
分值: 1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论