一、单选 共40题 (共计40分)
第1题 (1.0分) 题号:7098 难度:中 第1章
下列叙述中正确的是
A:一个算法的空间复杂度大,则其时间复杂度也必定大
B:一个算法的空间复杂度大,则其时间复杂度必定小
C:一个算法的时间复杂度大,则其空间复杂度必定小
D:算法的时间复杂度与空间复杂度没有直接关系
答案:D
第2题 (1.0分) 题号:6792 难度:中 第2章
有C语言表达式 2*3+4+15%3 ,关于其执行顺序,以下叙述正确的是
A:先执行2*3得6,再执行6+4得10,再执行15%3得0,最后执行10+0得10
B:先执行2*3得6,再执行15%3得5,最后执行6+4+5得15
C:先执行15%3得0,再执行2*3得6,最后执行6+4+0得10
D:先执行15%3得3,再执行4+3得7,再执行2*3得6,最后执行6+7得13
答案:A
第3题 (1.0分) 题号:6072 难度:较易 第2章
若有定义:int a,b,c; 以下程序段的输出结果是
a=11; b=3; c=0;
printf("%d\n",c=(a/b,a%b));
A:2
B:0
C:3
D:1
答案:A
第4题 (1.0分) 题号:6708 难度:中 第2章
设有定义:double x=2.12;,以下不能完整输出变量x值的语句是
A:printf("x=%5.0f\n",x);
B:printf("x=%f\n",x);
C:printf("x=%lf\n",x);
D:printf("x=%0.5f\n",x);
答案:A
第5题 (1.0分) 题号:7070 难度:较易 第2章
以下选项中合法的标识符是
A:1_ _
B:1月1日
C:1_1
D:_11
答案:D
第6题 (1.0分) 题号:6045 难度:中 第3章
设有定义: double x=5.16894;,则语句 printf("%lf\n ",(int)(x*1000+0.5)/1000.);的输出结果是
A:5.16900
B:5.16800
C:0.00000
D:输出格式说明符与输出项不匹配,产生错误信息
答案:A
第7题 (1.0分) 题号:7165 难度:中 第3章
若有以下程序段
double x=5.16894;
printf("%f\n", (int)(x*1000+0.5)/(double)1000 );
则程序段的输出结果是
A:5.17
B:5.175
C:5.169
D:5.168
答案:C
第8题 (1.0分) 题号:6044 难度:较易 第3章
有以下程序
#include
main( )
{ int x = 0x9;
printf("%c\n", 'A'+x);
}
程序运行后的输出结果是
A:I
B:J
C:K
D:H
答案:B
第9题 (1.0分) 题号:7048 难度:中 第4章
有以下程序
#include
main()
{ int a=1,b=2,c=3,d=0;
if (a==1 && b++==2)
if (b!=2||c--!=3)
printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
}
程序运行后的输出结果是
A:1,3,2
B:1,3,3
C:1,2,3
D:3,2,1
答案:B
第10题 (1.0分) 题号:7106 难度:中 第4章
若有以下程序
#include
main()
{ int a=1,b=2,c=3,d=4, r=0;
if (a!=1) ; else r=1;
if (b==2) r+=2;
else; if (c!=3) r+=3;
else; if (d==4) r+=4;
printf("%d\n", r);
}
则程序的输出结果是
A:10
B:7
C:6
D:3
答案:B
第11题 (1.0分) 题号:6405 难度:易 第4章
若变量已正确定义,在if (W) printf("%d\n" ,k ); 中,以下不可替代W的是( ).
A:a<>b+c
B:ch=getchar()
C:a==b+c
D:a++
答案:A
第12题 (1.0分) 题号:6180 难度:中 第4章
有下列程序
#include
main()
{ int a=0,b=0,c=0;
if (a++ || b++ && ++c)
printf("%d,%d,%d\n", a, b, c);
else
printf("%d,%d,%d\n", a, c, b);
}
程序执行后的输出结果是().
A:1,1,0
B:1,1,1
C:1,0,0
D:1,0,1
答案:D
第13题 (1.0分) 题号:6047 难度:中 第5章
有以下程序
#include
main( )
{ int a=-2, b=2;
for(; ++a && --b;)
;
printf("%d,%d\n", a,b);
}
程序运行后的输出结果是
A:0,1
B:0,0
C:1,-1
D:0,2
答案:A
第14题 (1.0分) 题号:7345 难度:中 第5章
有以下程序
#include
main()
{ int a=-1, b=-1;
while(++a)
++b;
printf("%d,%d\n", a,b);
}
程序的运行结果是
A:0,-1
B:0,0
C:-1,-1
D:结果不确定
答案:A
第15题 (1.0分) 题号:6409 难度:中 第5章
有以下程序
#include
main()
{ int x,a=1,b=1;
while(1)
{ scanf("%d",&x);
if(x>0) { a*=x; break; }
if(x<0) { b*=x; continue; }
printf("%d,%d\n",a,b);
}
}
程序运行时输入:-1 -2 0 1 2 <回车>,则输出结果是( ).
A:1.2
B:2.2
C:-1.1
D:-2.1
答案:A
第16题 (1.0分) 题号:6325 难度:中 第5章
有如下程序
#include
main()
{
int i;
for (i=0; i<5; i++)
putchar('9' - i % 2);
}
程序运行后的输出结果是().
A:98989
B:98765
C:9''8''7''6''5'
D:98989'
答案:A
第17题 (1.0分) 题号:6913 难度:中 第5章
若有定义语句:
char s[10]="1234567\0\0";
则strlen(s)的值是
A:7
B:8
C:9
D:10
答案:A
第18题 (1.0分) 题号:6078 难度:中 第5章
有以下程序
#include
main( )
{ int i;
char c;
scanf("%c", &c);
for (i=0; i<5; i++)
{
if (i > c) continue;
printf("%d,", i);
}
}
执行时输入:0<回车>后,则输出结果是
A:5
B:0,0,0,0,0,
C:0,1,2,3,4,
D:0,1,
答案:C
第19题 (1.0分) 题号:6664 难度:中 第6章
有如下程序
#include
#include
main()
{
printf("%d\n", strlen("0\n011\1"));
}
程序运行后的输出结果是
A:6
B:8
C:9
D:4
答案:A
第20题 (1.0分) 题号:6821 难度:较易 第6章
以下数组定义中错误的是().
A:int x[2][3]={1,2,3,4,5,6};
B:int x[][3]={0};
C:int x[][3]={{1,2,3},{4,5,6}};
D:int x[2][3]={{1,2},{3,4},{5,6}};
答案:D
第21题 (1.0分) 题号:6694 难度:中 第6章
有如下程序
#include
main()
{
char name[10] = {'S', 'T', 'R', 'I', 'N', 'G'};
name[3] = 'E'; name[5] = 0;
printf("%s\n", name);
}
程序运行后的输出结果是
A:STRENG
B:STRIEG
C:STREN
D:STREN0
答案:C
第22题 (1.0分) 题号:7117 难度:较易 第6章
若有以下程序
#include
main()
{ int i,j=0;
char a[]="How are you!";
for (i=0; a[i]; i++)
if (a[i] != ' ') a[j++]=a[i];
a[j]='\0';
printf("%s\n",a);
}
则程序的输出结果是
A:Hay!
B:Howareyou
C:Howareyou!
D:How are you!
答案:C
第23题 (1.0分) 题号:7235 难度:较易 第6章
以下叙述中正确的是
A:字符串常量"str1"的类型是:字符串数据类型
B:有定义语句: char str1[] = "str1"; ,数组str1将包含4个元素
C:下面的语句用赋初值方式来定义字符串,其中,'\0'是必须的
char str1[] = {'s', 't', 'r', '1', '\0'};
D:字符数组的每个元素可存放一个字符,并且最后一个元素必须是'\0'字符
答案:C
第24题 (1.0分) 题号:6088 难度:中 第6章
有以下程序
#include
main( )
{ char w[20], a[5][10]={"abcde", "fghij", "klmno", "pqrst", "uvwxy"};
int i;
for ( i=0; i<5; i++ )
w[i] = a[i][i];
w[5]= '\0';
printf( "%s\n", w );
}
程序运行后的输出结果是
A:ejoty
B:afkpu
C:agmsy
D:eimqu
答案:C
第25题 (1.0分) 题号:6803 难度:中 第7章
有如下程序
#include
int sum_mod(int a, int b)
{
return a + b % 2;
}
main( )
{
int i;
for (i=0; i<5; i++)
printf("%d", sum_mod(i, 4));
printf("\n");
}
程序运行后的输出结果是
A:12345
B:01234
C:45678
D:43210
答案:B
第26题 (1.0分) 题号:6823 难度:中 第7章
有以下程序:
#include
#define N 4
void fun(int a[][N], int b[])
{int i;
for (i=0; i
}
main()
{int x[N][N]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12}, {13,14,15,16}}, y[N], i;
fun (x, y);
for (i=0; i
}
程序运行后的输出结果是().
A:-3,-1,1,3,
B:-12,-3,0,0,
C:0,1,2,3,
D:-3,-3,-3,-3,
答案:A
第27题 (1.0分) 题号:7085 难度:中 第7章
有以下程序
#include
void fun(int *a, int n) /* fun函数的功能是将a所指数组元素从大到小排序 */
{ int t, i, j;
for (i=0; i
for (j=i+1; j
if (a[i]
}
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4, 6);
for (i=0;i<10; i++) printf("%d,", c[i]);
printf("\n");
}
程序的运行结果是
A:1,2,3,4,9,8,7,6,5,0,
B:0,9,8,7,6,5,1,2,3,4,
C:0,9,8,7,6,5,4,3,2,1,
D:1,2,3,4,5,6,7,8,9,0,
答案:A
第28题 (1.0分) 题号:7358 难度:难 第7章
有以下程序
#include
void f(int x[], int n)
{ if ( n> 1)
{ printf("%d,", x[n-1]);
f(x, n-1);
}
else
printf("%d,", x[0]);
}
main()
{ int z[6] = {1,2,3,4,5,6};
f(z,6); printf("\n");
}
程序的运行结果是
A:6,5,4,3,2,1,
B:6,1,
C:2,3,4,5,6,1,
D:1,2,3,4,5,6,
答案:A
第29题 (1.0分) 题号:7184 难度:中 第7章
有以下程序
#include
fun( int a, int b )
{
int static m=0, i=2;
i=i+m+1;
m=i+a+b;
return m;
}
main()
{
int k=4, m=1, p;
p=fun( k, m);
printf("%d,",p);
p=fun( k, m);
printf("%d\n",p);
}
程序运行后的输出结果是
A:8,17
B:7,16
C:8,8
D:7,17
答案:A
第30题 (1.0分) 题号:6534 难度:中 第7章
若有以下程序
#include
int fun (int x)
{ int y;
y = x++;
return y;
}
main()
{ int k;
for(k=0; k<3; k++) { printf ( "%d,", fun(k)+k); k++; }
}
执行后的输出结果是().
A:1,5,
B:0,6,
C:0,4,
D:1,7,
答案:C
第31题 (1.0分) 题号:7024 难度:较易 第8章
若有定义语句:
int a[2][3],*p[3];
则以下语句中正确的是
A:p=a;
B:p[0]=a;
C:p[0]=&a[1][2];
D:p[1]=&a;
答案:C
第32题 (1.0分) 题号:6082 难度:中 第8章
有以下程序
#include
int fun( int *b, int n )
{ int i, r=1;
for( i=0; i<=n; i++ ) r=r*b[i];
return r;
}
main()
{ int x, a[]={2,3,4,5,6,7,8,9 };
x=fun( a,3 );
printf("%d\n", x);
}
程序运行后的输出结果是
A:24
B:720
C:120
D:6
答案:C
第33题 (1.0分) 题号:6635 难度:较难 第8章
若有说明和语句:char str[]="Hello", *p; p=str;,则此时*(p+5)中的值为
A:\0'
B:o'
C:o'的地址
D:不确定的值
答案:A
第34题 (1.0分) 题号:7205 难度:较难 第8章
有以下程序
#include
int fun( char s[] )
{
char *p = s;
while( *p != 0 ) p++;
return ( p-s );
}
main()
{
printf("%d\n", fun("0ABCDEF") );
}
程序运行后的输出结果是
A:1
B:6
C:7
D:0
答案:C
第35题 (1.0分) 题号:7030 难度:中 第8章
下列函数的功能是
void fun(char *a,char *b)
{
while((*b=*a)!='\0')
{ a++; b++;}
}
A:将a所指字符串赋给b所指空间
B:使指针b指向a所指字符串
C:将a所指字符串和b所指字符串进行比较
D:检查a和b所指字符串中是否有'\0'
答案:A
第36题 (1.0分) 题号:6697 难度:中 第8章
有如下程序
#include
int sum(int* array, int len)
{
if (len == 0)
return array[0];
else
return array[0] + sum(array+1, len-1);
}
main()
{
int array[5] = {1,2,3,4,5};
int res = sum(array, 4);
printf("%d\n", res);
}
程序运行后的输出结果是
A:15
B:10
C:8
D:1
答案:A
第37题 (1.0分) 题号:6129 难度:中 第9章
有以下程序
#include
struct tt
{ int x; struct tt *y; } s[2]={ 1,0,2,0};
main( )
{
struct tt *p=s;
p->y=s;
printf("%d",++p->x);
}
程序运行后的输出结果是
A:2
B:0
C:1
D:3
答案:A
第38题 (1.0分) 题号:6479 难度:较难 第9章
设有定义:
typedef struct data1{int x, y;} data2;
typedef struct {float x, y;} data3;
则以下不能作为类型名使用的是( ).
A:data1
B:data2
C:data3
D:struct data1
答案:A
第39题 (1.0分) 题号:6481 难度:易 第9章
以下选项中,不能定义结构体变量std的是
A:struct { int num; char name[12];} PER;
PER std;
B:#define PER struct
PER{ int num; char name[12];}std ;
C:typedef struct { int num; char name[12];} PER;
PER std;
D:struct PER { int num; char name[12];} ;
struct PER std;
答案:A
第40题 (1.0分) 题号:6519 难度:易 第10章
若以"a+"方式打开一个已存在的文件,以下叙述正确的是().
A:文件打开时,原有文件内容不被删除,可以进行添加和读操作
B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可以进行重写和读操作
C:文件打开时,原有文件内容不被删除,位置指针移到文件中间,可以进行重写和读操作
D:文件打开时,原有文件内容被删除,只可进行写操作
答案:A
二、程序填空 共1题 (共计18分)
第1题 (18.0分) 题号:310 难度:中 第1章
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由
短到长进行排序。ss所指字符串数组中共有M个字符串,且串长小于N。
-------------------------------------------------------*/
#include
#include
#define M 5
#define N 20
void fun(char (*ss)[N])
{
int i, j, k, n[M];
char t[N];
for(i=0; i
n[i]=strlen(ss[i]);
for(i=0; i
{
k=i;
/***********SPACE***********/
for(j=【?】; j
/***********SPACE***********/
if(n[k]>n[j]) 【?】;
if(k!=i)
{
strcpy(t,ss[i]);
strcpy(ss[i],ss[k]);
/***********SPACE***********/
strcpy(【?】);
n[k]=n[i];
}
}
}
main()
{
char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};
int i;
printf("\nThe original strings are :\n");
for(i=0; i
printf("%s\n",ss[i]);
printf("\n");
fun(ss);
printf("\nThe result :\n");
for(i=0; i
printf("%s\n",ss[i]);
}
答案:
=======(答案1)=======
i + 1
=======(答案2)=======
k=j
=======(答案3)=======
ss[k],t
三、程序改错 共1题 (共计18分)
第1题 (18.0分) 题号:58 难度:中 第7章
/*-------------------------------------------------------
【程序改错】
---------------------------------------------------------
题目:下列给定程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。
例如:若k=10,则应输出3628800。
-------------------------------------------------------*/
#include
#include
long fun(int k)
{
/***********FOUND***********/
if k>1
return(k*fun(k-1));
return 1;
}
void main()
{
int k=10;
system("CLS");
printf("%d!=%ld\n ",k,fun(k));
}
答案:
=======(答案1)=======
if(k>1)
=========或=========
if(1
四、程序设计 共1题 (共计24分)
第1题 (24.0分) 题号:791 难度:中 第1章
/*---------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
题目:请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子
(不包括1与自身)之和。规定n的值不大于1000。
例如:若主函数从键盘给n输入的值为856,则输出为sum=763。
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入
所编写的若干语句。
--------------------------------------------------------------------*/
#include
#include
int fun(int n)
{
/**********Program**********/
/********** End **********/
}
main()
{
int n,sum;
printf("Input n:");
scanf("%d", &n);
sum=fun(n);
printf("sum=%d\n", sum);
system("pause");
}
答案: int s=0,i;
for(i=2;i<=n-1;i++) /*将n减1累加*/
if(n%i==0)
s+=i;
return s;