一、单选 ??共40题 (共计40分)
第1题 (1.0分) ???????题号:6014 ???????难度:易 ???????第1章
关于程序设计基本概念,以下叙述错误的是
A:计算机可以直接执行由任意高级语言编写的程序
B:高级语言都有与之对应的编译程序或解释程序
C:用于任何一种计算机高级语言都可以把算法转换为程序
D:结构化算法可以解决任何复杂的问题
答案:A
第2题 (1.0分) ???????题号:6985 ???????难度:较易 ???????第2章
已知字符'A'的ASCII代码值是65,字符变量c1的值是'A',c2的值是'D'.则执行语句
????printf("%d,%d", c1, c2-2 );
的输出结果是
A:65,68
B:A,68
C:A,B
D:65,66
答案:D
第3题 (1.0分) ???????题号:7312 ???????难度:中 ???????第2章
以下叙述中错误的是
A:数值型常量有正值和负值的区分
B:常量可以用一个符号名来代表
C:定义符号常量必须用类型名来设定常量的类型
D:常量是在程序运行过程中值不能被改变的量
答案:C
第4题 (1.0分) ???????题号:7285 ???????难度:较易 ???????第2章
有以下程序
????#include <stdio.h>
????main()
????{
????????char ?c1='A', c2='Y'; ????
????????printf( "%d, %d\n", c1,c2 );
????}
程序的输出结果是
A:输出格式不合法,输出出错信息
B:65,89
C:65,90
D:A,Y
答案:B
第5题 (1.0分) ???????题号:6286 ???????难度:难 ???????第2章
有下列程序
#include <stdio.h>
main( )
{ ?int x=3, y=5, z1, z2;
???z1 = y^x^y; ??z2 = x^y^x;
???printf("%d,%d\n", z1, z2);
}
程序执行后的输出结果是().
A:7,7
B:5,3
C:8,8
D:3,5
答案:D
第6题 (1.0分) ???????题号:6591 ???????难度:易 ???????第3章
以下程序段中的变量已定义为int类型
sum = pad = 5; ?pAd = sum++, pAd++, ++pAd;
??????printf( "%d\n", pad );
程序段的输出结果是
A:6
B:4
C:5
D:7
答案:C
第7题 (1.0分) ???????题号:6643 ???????难度:较易 ???????第3章
有以下程序
#include <stdio.h>
main()
{ ?int ?a=3 ,b=3;
???printf("%d \n",a&b);
}
程序运行后的输出结果是
A:6
B:1
C:0
D:3
答案:D
第8题 (1.0分) ???????题号:6407 ???????难度:中 ???????第3章
若有以下程序
????#include ?<stdio.h>
????main()
????{ ?char ?a='5', ?b;
???????a++;
???????printf("%d,%d\n", a-'5'+255, b=a- '5');
????}
执行后的输出结果是( ).
A:256,1
B:1,256
C:255,1
D:256,0
答案:A
第9题 (1.0分) ???????题号:6871 ???????难度:中 ???????第4章
若变量已正确定义,在if (W) printf("%d\n" ,k ); 中,以下不可替代W的是().
A:a<>b+c
B:ch=getchar()
C:a==b+c
D:a++
答案:A
第10题 (1.0分) ???????题号:7254 ???????难度:中 ???????第4章
以下叙述中正确的是
A:if语句只能嵌套一层
B:if子句和else子句中可以是任意的合法的C语句
C:不能在else子句中再嵌套if语句
D:改变if-else语句的缩进格式,会改变程序的执行流程
答案:B
第11题 (1.0分) ???????题号:7077 ???????难度:中 ???????第4章
有以下程序
????#include <stdio.h>
????main()
????{ ?int ??x=1,y=2,z=3;
???????if(x>y)
???????if(y<z) ?printf("%d",++z);
???????else ????printf("%d",++y);
???????printf("%d\n", x++ );
????}
程序的运行结果是
A:1
B:41
C:2
D:331
答案:A
第12题 (1.0分) ???????题号:6651 ???????难度:中 ???????第4章
有如下程序
#include <stdio.h>
main()
{
????int a = 0, b = 1;
????if (a++ && b++)
????????printf("T");
????else
????????printf("F");
????printf("a=%d,b=%d\n", a, b);
}
程序运行后的输出结果是
A:Ta=1,b=2
B:Fa=0,b=2
C:Fa=1,b=1
D:Ta=0,b=1
答案:C
第13题 (1.0分) ???????题号:6237 ???????难度:中 ???????第5章
有以下程序段 ????????????????
????char ?c1,c2;
????for(c1='0',c2='9'; c1<c2; c1++,c2--)
????????printf("%c%c",c1,c2);
程序段的执行结果是().
A:0123456789
B:0918273645
C:0123498765
D:9876543210
答案:B
第14题 (1.0分) ???????题号:6327 ???????难度:中 ???????第5章
有下列程序
#include ?<stdio.h>
main()
{ ?int a = 6, i;
???for (i=1; i<=3; i++)
???{ ?if (a<5) break;
??????if (a%2) { ?a += 2; continue; }
????a = a + 4;
???}
???printf("%d,%d", i, a);
}
程序执行后的输出结果是().
A:4,9
B:3,18
C:4,18
D:4,2
答案:C
第15题 (1.0分) ???????题号:6816 ???????难度:中 ???????第5章
以下程序段中的变量已正确定义:
for( i=0; i<4; i++,i++ )
for( k=1; k<3; k++ ); printf("*" );
程序段的输出结果是().
A:**
B:****
C:*
D:********
答案:C
第16题 (1.0分) ???????题号:6235 ???????难度:中 ???????第5章
有下列程序
#include ?<stdio.h>
main( )
{ ?int a=-2, b=2;
???for(; a++ , b--;)
??????printf("%d,%d,", a, b);
}
程序执行后的输出结果是().
A:-1,1,-1,0,
B:-1,1,0,1,
C:-1,1,
D:-1,1,0,0,
答案:D
第17题 (1.0分) ???????题号:6408 ???????难度:较易 ???????第5章
有以下程序
????#include ?<stdio.h>
????main( )
????{ ?int ?a=7, b=0;
???????do { ?b += a; ?a -=1; ?} while ( a-- ) ;
???????printf( "%d,%d\n", b, a );
????}
执行后的输出结果是( ).
A:28,0
B:28,1
C:16,0
D:16,-1
答案:D
第18题 (1.0分) ???????题号:6766 ???????难度:中 ???????第5章
有以下程序
#include <stdio.h>
main( )
{ ??int a,b;
????for (a=0; a<3; a++) ?
????{ ?scanf("%d", &b);
???????switch(b)
???????{ ?default: printf("%d,", ++b);
??????????case 1: printf("%d,", ++b);
??????????case 2: printf("%d,", ++b);
???????}
????}
}
执行时输入:1 2 3<回车>,则输出结果是
A:2,2,3,4,4,4,
B:2,3,4,
C:2,3,3,4,5,6,
D:2,3,4,3,4,4,
答案:C
第19题 (1.0分) ???????题号:6852 ???????难度:中 ???????第6章
有以下程序:
#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
答案:B
第20题 (1.0分) ???????题号:6024 ???????难度:较难 ???????第6章
有以下程序
#include <stdio.h>
main( )
{ ?char w[20], a[5][10] = {"abcdef", "ghijkl", "mnopq", "rstuv", "wxyz"};
???int i, j;
???for (i=0; i<5; i++)
???{ ??j = 0;
???????while (a[i][j] != '\0') j++;
???????w[i] = a[i][j-2];
???}
???w[5] = '\0';
???puts(w);
}
程序运行后的输出结果是
A:agmrw
B:ekpuy
C:djotx
D:flqvz
答案:B
第21题 (1.0分) ???????题号:6419 ???????难度:较难 ???????第6章
有以下程序
#include ??<stdio.h>
#include ??<string.h>
main( )
{ ?int ?i, len;
???char ?b[]="Welcome you to Beijing!";
???len = strlen(b);
???for ( i=0; i<len; i++ )
??????if ( b[i] == ' ' )
??????{ ??strcpy(b, b+i+1);
??????????i=0;
??????}
???printf( "%s\n", b );
}
程序运行后的输出结果是( ).
A:Beijing!
B:to Beijing!
C:Welcome you to Beijing!
D:you to Beijing!
答案:A
第22题 (1.0分) ???????题号:6060 ???????难度:较难 ???????第6章
有以下程序
#include ??<stdio.h>
#include ??<string.h>
main( )
{ ?int ?i, len;
???char ?b[]="Welcome you to Beijing!";
???len = strlen(b);
???for ( i=0; i<len; i++ )
??????if ( b[i] == ' ' )
??????{ ??strcpy(b, b+i+1);
??????????i=0;
??????}
???printf( "%s\n", b );
}
程序运行后的输出结果是
A:Beijing!
B:to Beijing!
C:Welcome you to Beijing!
D:you to Beijing!
答案:A
第23题 (1.0分) ???????题号:7231 ???????难度:较易 ???????第6章
以下叙述中正确的是
A:一条语句只能定义一个数组
B:每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
C:数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D:在引用数组元素时,下标表达式可以使用浮点数
答案:B
第24题 (1.0分) ???????题号:6439 ???????难度:较难 ???????第6章
有以下程序
????#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:0
答案:B
第25题 (1.0分) ???????题号:7116 ???????难度:中 ???????第7章
若有以下程序
?????#include <stdio.h>
?????void fun(int ?a[ ], int ?n)
?????{ ?int ?t,i,j;
????????for (i=1; i<n; i+=2)
??????????for (j=i+2; j<n; j+=2)
????????????if (a[i] > a[j]) ?{ t=a[i]; a[i]=a[j];a[j]=t;}
?????}
?????main()
?????{ ?int ?c[10]={10,9,8,7,6,5,4,3,2,1},i;
????????fun(c, 10);
????????for (i=0;i<10; i++) ??printf("%d,", c[i]);
????????printf("\n");
?????}
则程序的输出结果是
A:1,10,3,8,5,6,7,4,9,2,
B:10,9,8,7,6,5,4,3,2,1,
C:2,9,4,7,6,5,8,3,10,1,
D:10,1,8,3,6,5,4,7,2,9,
答案:D
第26题 (1.0分) ???????题号:7065 ???????难度:中 ???????第7章
以下叙述中错误的是
A:C程序对预处理命令行的处理是在程序执行的过程中进行的
B:预处理命令行的最后不能以分号表示结束
C:#define ?MAX ?是合法的宏定义命令行
D:在程序中凡是以"#"开始的语句行都是预处理命令行
答案:A
第27题 (1.0分) ???????题号:6410 ???????难度:中 ???????第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
第28题 (1.0分) ???????题号:7354 ???????难度:较难 ???????第7章
有以下程序
#include <stdio.h>
void fun(int a[ ], int n)
{ ?int ?i,j=0,k=n-1, b[10];
???for (i=0; i<n/2; i++)
???{ ??b[i] =a[j];
???????b[k]=a[j+1];
???????j+=2; k--;
???}
???for (i=0; i<n; i++)
???????a[i] = b[i];
}
main()
{ ?int ?c[10]={10,9,8,7,6,5,4,3,2,1},i;
???fun(c, 10);
???for (i=0;i<10; i++)
??????printf("%d,", c[i]);
???printf("\n");
}
程序的运行结果是
A:10,8,6,4,2,1,3,5,7,9,
B:10,9,8,7,6,5,4,3,2,1,
C:1,2,3,4,5,6,7,8,9,10,
D:1,3,5,7,9,10,8,6,4,2,
答案:A
第29题 (1.0分) ???????题号:6366 ???????难度:中 ???????第7章
有以下程序
#include ??<stdio.h>
void fun(int ?n)
{ ?static int ?x[3]={1,2,3};
???int ?k;
???for( k=0; k<3; k++ ) x[k] += x[k]-n;
???for( k=0; k<3; k++ ) printf("%d,",x[k]);
}
main()
{ ??fun(0); ?fun(1); ??}
程序运行后的输出结果是
A:1,2,3,0,1,2,
B:2,4,6,1,3,5,
C:2,4,6,3,7,11,
D:2,4,6,4,8,12,
答案:C
第30题 (1.0分) ???????题号:5970 ???????难度:难 ???????第7章
有如下程序
#include <stdio.h>
void convert(char ?ch)
{
????if (ch < 'X') convert(ch+1);
????printf("%c", ch);
}
main( )
{
????convert('W'); ???
????printf("\n");
}
程序运行后的输出结果是
A:YZ
B:VW ?
C:XY ?
D:XW ??
答案:D
第31题 (1.0分) ???????题号:6090 ???????难度:较难 ???????第8章
有以下程序
#include ?<stdio.h>
#include ?<string.h>
void ?fun( char *s, int m1, int m2 )
{ ?char ?t, *p;
???p=s + m1; ?s= s+m2;
???while( s<p )
???{ ?t=*s; ?*s=*p; ?*p=t;
??????s++; ??p--;
???}
}
main()
{ ??char ?ss[10]="012345678";
????int ?n=6;
????fun( ss,0,n-1 );
????fun( ss,9,n );
????fun( ss,0,9 );
????printf("%s\n", ss );
}
程序运行后的输出结果是
A:012345
B:876543210
C:876543
D:012345678
答案:A
第32题 (1.0分) ???????题号:6788 ???????难度:中 ???????第8章
有以下程序
#include <stdio.h>
main()
{ ??char s[10] = "verygood", *ps = s;
????ps = "too"; ?
????s[4] = '\0';
????puts(ps);
}
程序的运行结果是
A:too
B:verygood
C:very
D:good
答案:A
第33题 (1.0分) ???????题号:6097 ???????难度:较难 ???????第8章
有以下程序
#include ?<stdio.h>
#include ?<stdlib.h>
void ?fun( double ?*p1, double ?*p2, double ?*s )
{ ??
????s=( double* )calloc( 1,sizeof(double) );
????*s = *p1 + *p2;
}
main()
{ ??
????double ?a[2]={1.1,2.2 }, b[2]={ 10.0,20.0 }, *q=NULL;
????fun( a,b,q );
????printf("%5.2f \n", *q ?);
}
程序运行后的结果是
A:有运行错误
B:输出11.10
C:输出12.10
D:输出21.10
答案:A
第34题 (1.0分) ???????题号:6378 ???????难度:难 ???????第8章
有以下程序
#include ?<stdio.h>
int * ?f(int ?*s)
{ ?s[1] +=6;
???*s=7;
???s+=2;
???return ?s;
}
main( )
{ ?int ?a[5]={1,2,3,4,5}, *p=a; ?
???p= f(p); ?
???printf( "%d,%d,%d\n", a[0], a[1], *p );
}
程序运行后的输出结果是
A:9,8,9
B:7,8,7
C:7,8,3
D:1,2,1
答案:C
第35题 (1.0分) ???????题号:6251 ???????难度:中 ???????第8章
有下列程序
#include ?<stdio.h>
#include ?<string.h>
main( )
{ ?char a[5][10]={"China", "beijing", "very", "welcome", ?"you"};
???char *p[5];
???int i, len;
???for(i=0;i<5;i++)
???{ ?p[i]=*(a+i);
??????len = strlen(p[i]);
??????printf("%s", p[i] + len - 1);
??????printf("%c", *(p[i] + len - 1));
???}
}
程序执行后的输出结果是().
A:yywwvvbbCC
B:CCbbvvwwyy
C:uueeyyggaa
D:aaggyyeeuu
答案:D
第36题 (1.0分) ???????题号:6750 ???????难度:中 ???????第8章
有以下程序
????#include <stdio.h>
????main()
????{ ?char s[10]="verygood", *ps=s;
???????ps+=4;
???????ps="nice";
???????puts(s);
????}
程序的运行结果是
A:nice
B:verynice
C:nicegood
D:verygood
答案:D
第37题 (1.0分) ???????题号:6830 ???????难度:中 ???????第9章
下面结构体的定义语句中,错误的是().
A:struct ?ord ?{int ?x;int ?y;int ?z;} struct ?ord ?a;
B:struct ?ord ?{int ?x;int ?y;int ?z;}; struct ?ord ?a;
C:struct ?ord ?{int ?x;int ?y;int ?z;} a;
D:struct ?{int ?x;int ?y;int ?z;} ?a;
答案:A
第38题 (1.0分) ???????题号:7361 ???????难度:难 ???????第9章
有以下程序
#include <stdio.h>
typedef struct stu {
???????????????char ?name[10];
???????????????char ?gender;
???????????????int ?score;
} STU;
void f(STU *a, STU *b)
{ ?b = a;
???printf("%s,%c,%d,", b->name, b->gender, b->score);
}
main()
{ ?STU a={"Zhao", 'm', 290}, b={"Qian", 'f', 350};
???f(&a,&b);
???printf("%s,%c,%d\n", b.name, b.gender, b.score);
}
程序的运行结果是
A:Zhao,m,290,Qian,f,350
B:Qian,f,350,Zhao,m,290
C:Qian,f,350,Qian,f,350
D:Zhao,m,290,Zhao,m,290
答案:A
第39题 (1.0分) ???????题号:6584 ???????难度:中 ???????第9章
有以下程序
#include <stdio.h>
typedef struct stu {
????????????????char ?name[10];
????????????????char ?gender;
????????????????int ?score;
??????????????} STU;
void f(STU ?*a, STU ?*b)
{ ?*b = *a;
???printf("%s,%c,%d,", b->name, b->gender, b->score);
}
main()
{ ?STU ?a={"Zhao", 'm', 290}, b={"Qian", 'f', 350};
???f(&a,&b);
???printf("%s,%c,%d\n", b.name, b.gender, b.score);
}
程序的运行结果是
A:Zhao,m,290,Zhao,m,290
B:Zhao,m,290,Qian,f,350
C:Qian,f,350,Qian,f,350
D:Qian,f,350,Zhao,m,290
答案:A
第40题 (1.0分) ???????题号:7215 ???????难度:易 ???????第10章
有以下程序
?????#include <stdio.h>
?????main()
?????{ ?int ?i=1;
????????i = i^i;
????????printf("%d\n", i ?);
?????}
程序运行后的输出结果是
A:1
B:-1
C:0
D:7
答案:C
二、程序填空 ??共1题 (共计18分)
第1题 (18.0分) ???????题号:489 ???????难度:中 ???????第7章
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:在数组内指定位置i插入元素x
-------------------------------------------------------*/
#include<stdio.h>
void main()
{ ?int a[11],i,j,x;
???for(i=0;i<10;i++)
?????scanf("%d",&a[i]);
???scanf("%d%d",&i,&x);
/***********SPACE***********/
???for(j=9; ?【?】 ?;j--)
/***********SPACE***********/
???????【?】 ;
???a[i]=x;
???for(i=0;i<11;i++)
????printf("%d",a[i]); ?}
答案:
=======(答案1)=======
j>=i
=========或=========
j>i-1
=========或=========
i<=j
=========或=========
i-1<j
=========或=========
j>i
=========或=========
i<j
=======(答案2)=======
a[j+1]=a[j]
=========或=========
a[1+j]=a[j]
三、程序改错 ??共1题 (共计18分)
第1题 (18.0分) ???????题号:281 ???????难度:中 ???????第2章
/*------------------------------------------------------ ???
【程序改错】
--------------------------------------------------------
功能:输入两个双精度数,函数返回它们的平方和的平方根值。
例如:输入:22.936 和 14.121,输出为:y = 26.934415。
------------------------------------------------------*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
/**********FOUND**********/
?double fun (double *a, *b)
{
??double c;
??/**********FOUND**********/
??c = sqr(a*a + b*b);
??/**********FOUND**********/
??return *c;
}
main ( )
{
??double a, b, y;
??printf ( "Enter a, b : ");
??scanf ("%lf%lf", &a, &b );
??y = fun (&a, &b);
??printf ("y = %f \n", y );
}
答案:
=======(答案1)=======
double fun (double *a, double *b)
=======(答案2)=======
c = sqrt(*a * *a + *b * *b);
=========或=========
c = sqrt((*a) *( *a) + (*b) *( *b));
=========或=========
c = sqrt(*b * *b + *a * *a);
=========或=========
c = sqrt((*b) *( *b) + (*a) *( *a));
=======(答案3)=======
return c;
=========或=========
return (c);
四、程序设计 ??共1题 (共计24分)
第1题 (24.0分) ???????题号:693 ???????难度:易 ???????第1章
/*--------------------------------------------------------------------
【程序设计】
----------------------------------------------------------------------
题目:功能:实现两个整数的交换
例如:给a和b分别输入:60和65,输出为:a=65 b=60
---------------------------------------------------------------------*/
#include<stdio.h>
#include<conio.h>
void fun(int *a,int *b)
{
????/**********Program**********/
????/********** ?End ?**********/
}
int main()
{
????int a,b;
????printf("Enter a,b:");
????scanf("%d%d",&a,&b);
????fun(&a,&b);
????printf("a=%d b=%d\n",a,b);
????return 0;
}
答案: int t;
?t=*a;*a=*b;*b=t;