一、单选 ??共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 ??<stdio.h>
main( )
{ ?int ?x = 0x9;
???printf("%c\n", 'A'+x);
}
程序运行后的输出结果是
A:I
B:J
C:K
D:H
答案:B
第9题 (1.0分) ???????题号:7048 ???????难度:中 ???????第4章
有以下程序
#include <stdio.h>
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 <stdio.h>
????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 ?<stdio.h>
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 ??<stdio.h>
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 <stdio.h>
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 ???<stdio.h>
????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 ?<stdio.h>
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 ??<stdio.h>
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 <stdio.h>
#include <string.h>
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 <stdio.h>
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 <stdio.h>
?????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 ?<stdio.h>
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 ?<stdio.h>
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 ?<stdio.h>
#define ??N ???4
void ?fun(int ?a[][N], int ?b[])
{int ?i;
?for (i=0; i<N; i++) ??b[i] = a[i][i] - a[i][N-1-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<N; i++) ??printf("%d,", y[i]); ???printf("\n");
}
程序运行后的输出结果是().
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 <stdio.h>
?????void ?fun(int ?*a, int ?n) /* fun函数的功能是将a所指数组元素从大到小排序 */
?????{ ?int ??t, i, j;
????????for (i=0; i<n-1;i++)
??????????for (j=i+1; j<n; j++)
????????????if (a[i]<a[j]) ?{ ?t=a[i]; a[i]=a[j]; a[j]=t; ??}
?????}
?????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 <stdio.h>
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 <stdio.h>
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 ?<stdio.h>
????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 ?<stdio.h>
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 <stdio.h>
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 <stdio.h>
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 ??<stdio.h>
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 ???<stdio.h>
#include ???<string.h>
#define ???M ???5
#define ???N ???20
void fun(char ?(*ss)[N])
{ ?
????????int ?i, j, k, n[M]; ????
????????char ?t[N];
????????for(i=0; i<M; i++)
????????????????n[i]=strlen(ss[i]);
????????for(i=0; i<M-1; i++)
????????{
????????????????k=i;
/***********SPACE***********/
????????????????for(j=【?】; j<M; 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<M; i++)
????????????????printf("%s\n",ss[i]);
????????printf("\n");
????????fun(ss);
????????printf("\nThe result :\n");
????????for(i=0; i<M; 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 ?<conio.h>
#include ?<stdio.h>
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<k)
四、程序设计 ??共1题 (共计24分)
第1题 (24.0分) ???????题号:791 ???????难度:中 ???????第1章
/*---------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
题目:请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子
??????(不包括1与自身)之和。规定n的值不大于1000。
例如:若主函数从键盘给n输入的值为856,则输出为sum=763。
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入
??????所编写的若干语句。
--------------------------------------------------------------------*/
#include ?<stdio.h>
#include<stdlib.h>
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;