资源描述
第1章 C语言程序设计概述
一、选择题
1.下列关于计算机语言的叙述中,正确的是_______。
A.在计算机语言中,只有机器语言属于低级语言
B.高级语言的源程序可以被计算机直接执行
C.C语言属于高级语言
D.机器语言是与所有机器无关的语言
2.源程序TEST.C经编译产生的目标文件和连接后产生的可执行文件是_______。
A.TEST.BAK和TEST.OBJ B.TEST.OBJ和TEST.EXE
C.TEST.EXE 和TEST.C D.TEST.BAK和TEST.EXE
3.一个C程序的执行是从_______。
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
4.以下叙述正确的是_______。
A.在C程序中,main函数必须位于程序的最前面
B.程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
5.以下叙述不正确的是_______。
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.在C程序中,注释说明只能位于一条语句的后面
D.C程序的基本组成单位是函数
6.一个C语言程序是由_______。
A.一个主程序和若干子程序组成
B.函数组成
C.若干过程组成
D.若干子程序组成
7.关于C语言程序书写规则说法中正确的是_______。
A.程序语句必须占一行 B.不区分大小写
C.每行必须有行号 D.每条语句用分号结束
8.下面关于算法的说法,错误的是_______。
A.算法必须有输出,但不一定有输入
B.算法必须在计算机上用某种语言实现
C.算法必须在有限步执行后能结束
D.算法的每一步骤必须有确切的定义
9.结构化程序设计规定的3种基本控制结构是_______。
A.顺序、选择和转向 B.层次、网状和循环
C.模块、选择和循环 D.顺序、选择和循环
10.结构化程序由三种基本结构组成,三种基本结构组成的算法_______。
A.可以完成任何复杂的任务 B.只能完成部分复杂的任务
C.只能完成符合结构化的任务 D.只能完成一些简单的任务
二、填空题
1.C源程序的基本单位是________,一个C源程序中必须包括一个________。
2.在一个C源程序中,注释部分两侧的分界符分别为________和________。
3.C语言源程序文件的后缀是________;经过编译后,生成文件的后缀是________;经过连接后,生成的文件的后缀是________。
4.结构化程序由________、________、________,3种基本结构组成。
三、编程题
1.编写一个程序,用2个printf()语句分别输出学校名称和自己的姓名。
2.编写一个程序,用1个printf()语句输出学校名称和自己的姓名。
第2章 数据类型及其运算
一、选择题
1.下面四个选项中,均是不合法的用户标识符的选项的是____C___。
A.A p_o do B.float lao _A
C.b-a goto int D._123 temp INT
2.以下选项中可以作为C语言中合法整数的是___C____。
A. 10110B B. 0386 C. 0Xffa D. x2a2
3.以下选项中合法的实型常数是__C_____。
A.5E2.0 B.E-3 C.2E0 D.1.3E
4.以下选项中可作为C语言合法常量的是__A_____。
A.-80 B.-080 C.-8e1.0 D.-80.0e
5.下面四个选项中,均是合法转义字符的选项是 __B___。
A.'\' ' \\' '\n' B.'\'' '\017' '\t'
C.'\018' ' \f' '\xab' D.'\\0' '\101' 'x1f'
6.下面不正确的字符串常量是__A_____。
A.'abc' B."12’12" C."0" D." "
7.以下选项中不属于C语言的类型的是____D___。
A.signed short int B.unsigned long int
C.unsigned int D.long short
8.在C语言中,要求运算数必须是整型的运算符是___D____。
A./ B.++ C.!= D.%
9.以下运算符中优先级最低的是___A____,以下运算符中优先级最高的是__B_____。
A.&& B.<= C.|| D.==
10.若x = 2 , y=3,则x && y的结果是___B____。
A.0 B.1 C.2 D.3
11.若x,i,j和k都是int型变量,则计算表达式x = ( i = 4 , j = 16 , k = 32 )后,x的值为__C_____。
A.4 B.16 C.32 D.52
12.若有定义:int a = 7 ; float x = 2.5 , y = 4.7 ; ,则表达式x + a % 3 * ( int )( x + y ) % 2 / 4的值是__A_____。
A.2.500000 B.2.750000 C.3.500000 D.0.000000
13.若有以下类型说明语句:char w ; int x ; float y ; double z ; ,则表达式w * x + z - y的结果为_D______类型。
A.float B.char C.int D.double
14.已有定义:int x = 3 , y = 4 , z = 5 ; 则表达式!( x + y ) + z – 1 && y + z / 2的值是__D_____。
A.6 B.0 C.2 D.1
15.以下选项中非法的表达式是___D____。
A.0 <= x < 100 B.i = j == 0 C.( char )( 65 + 3 ) D.x + 1 = x + 1
16.设a、b、c、d、m、n均为int型变量,且a = 5、b = 6、c = 7、d = 8、m = 2、n = 2,则逻辑表达式( m = a > b ) && ( n = c > d)运算后,n的值为___C____。
A.0 B.1 C.2 D.3
17.若变量c为char类型,能正确判断出c为小写字母的表达式是___D____。
A.'a' <= c <= 'z' B.( c >= 'a' ) || ( c <= 'z' )
C.( 'a' <= c ) and ( 'z' >= c ) D.( c >= 'a' ) && ( c <= 'z' )
18.若x和y代表整型数,以下表达式中不能正确表示数学关系|x―y|<10的是____C___。
A.abs( x – y ) < 10 B.x – y > -10 && x – y < 10
C.!( x – y ) < -10 || !( y – x ) > 10 D.( x – y ) * ( x – y ) < 100
二、填空题
1.C语言中的标识符只能由三种字符组成,它们是_______,_______和_______。
2.在C语言中(以32位PC机为例),一个char型数据在内存中所占的字节数为_______,一个int型数据在内存中所占的字节数为_______,一个float型数据在内存中所占的字节数为_______,一个double型数据在内存中所占的字节数为_______。
3.有以下定义int m = 5,y = 2;则计算表达式y += y -= m *= y后的y值是_______。
4.若定义:int a = 2,b = 3;float x = 3.5,y = 2.5;则表达式( float )(a + b ) / 2 + ( int ) x % ( int ) y的值是_______。
5.x和n均为int型变量,且x的初值为12,n的初值为5,则计算表达式x %= ( n %= 2 )后x的值为_______。
6.设所有变量均为整型,则表达式( a = 2 , b = 5 , a++ , b++ , a + b )的值为_______。
7.a、b和c均是int型变量,则计算表达式a = ( b = 4 ) + ( c = 2 )后,a值为_______,b值为_______,c值为_______。
8.a是int型变量,且a的初值为6,则计算表达式a += a -= a * a后a的值为_______。
9.设y是int型变量,请写出判断y为奇数的关系表达式_______。
10.若a,b,c均为整型变量,则执行以下语句a = b = c = 0 ; a++ && ++b || c++ ; 后,a的值为_______,b的值为_______,c的值为_______。
三、程序阅读题
1.下面程序的运行结果是__b_____。
#include<stdio.h>
int main( )
{
char m ;
m = 'B' + 32 ;
printf( "%c\n" , m ) ;
return 0 ;
}
2.下面程序的运行结果是__0_____。
#include<stdio.h>
int main( )
{
int x = 3 , y = 5 ;
printf( "%d\n" , x / y ) ;
return 0 ;
}
3.下面程序的运行结果是___0____。
#include<stdio.h>
int main( )
{
int m = 0xabc , n = 0xabc ;
m -= n ;
printf( "%x\n" , m ) ;
return 0 ;
}
4.下面程序的运行结果是__10,2_____。
#include<stdio.h>
int main( )
{
int x = 10 , y = 3 ;
printf( "%d,%d\n" , x++ , --y ) ;
return 0 ;
}
5.下面程序的运行结果是_9,10,9,10______。
#include<stdio.h>
int main( )
{
int i , j ;
i = 8 ;
j=10;
printf( "%d,%d,%d,%d\n" , i , j , ++i , j++ ) ;
return 0 ;
}
6.下面程序的运行结果是____3,1,0,0___。
#include<stdio.h>
int main( )
{
int a = 1 , b = 2 , c = 3 ;
printf( "%d,%d,%d,%d\n" , a = b = c , a = b == c , a == ( b = c ) , a == ( b == c ) ) ;
return 0 ;
}
7.下面程序的运行结果是__3,20,30,1_____。
#include<stdio.h>
int main( )
{
int a = 2 , b=20 , c=30 , d ;
d = ++a <= 10 || b-- >= 20 || c++ ;
printf( "%d,%d,%d,%d\n" , a , b , c , d ) ;
return 0 ;
}
第3章 语句与输入输出
一、选择题
1.设有定义:long x = 123456L ; ,则以下能够正确输出变量x值的语句是_______。
A.printf( "x=%d\n" , x ) ; B.printf( "x=%ld\n" , x ) ;
C.printf( "x=%8dL\n" , x ) ; D.printf( "x=%LD\n" , x ) ;
2.若有以下程序段
int m = 0xabc , n = 0xabc ;
m -= n ;
printf( "%X\n" , m ) ;
执行后输出结果是_______。
A.0X0 B.0x0 C.0 D.0XABC
3.已知char a = '\103' ;则语句printf( "%3d" , a ) ; 执行后的输出结果为_______。
A.67 B.'C' C. 67 D.103
4.已知a、b、c为int类型,执行语句:scanf( "a=%d, b=%d, c=%d" , &a , &b , &c ) ; ,若要使得a为1,b为2,c为3。则以下选项中正确的输入形式是_______。
A. a=1 B.1, 2, 3 C.a=1, b=2, c=3 D.1 2 3
b=2
c=3
5.已知i、j、k为int型变量,若从键盘输入:1,2,3↙,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是_______。
A.scanf( "%2d%2d%2d" , &i , &j , &k ) ; B.scanf( "%d %d %d" , &i , &j , &k ) ;
C.scanf( "%d,%d,%d" , &i , &j , &k ) ; D.scanf( "i=%d,j=%d,k=%d" , &i , &j , &k ) ;
6.x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是_______。
A.INPUT x、y、z;
B.scanf( "%d,%d,%d" , &x , &y , &z ) ;
C.scanf( "%d,%d,%d" , x , y , z ) ;
D.read( "%d,%d,%d" , &x , &y , &z ) ;
7.若有int a ; float b ; scanf( "%d,%f" , &a , &b ) ; 使a、b的值分别为30和5.5,则正确的输入是_______。
A.30 5.5 B.30, 5.5 C.a=30, b=5.5 D.a=30 b=5.5
8.根据以下定义语句和数据的输入方式,scanf语句的正确形式应为_______。
已有定义:float f1 , f2 ;
数据的输入方式:4.52↙
3.5↙
A.scanf( "%f, %f" , &f1 , &f2 ) ;
B.scanf( "%f%f" , &f1 , &f2 ) ;
C.scanf( "%3.2f %2.1f" , &f1 , &f2 ) ;
D.scanf( "%3.2f%2.1f" , &f1, &f2 ) ;
9.以下针对scanf()函数的叙述中,正确的是_______。
A.输入项可以为一实型常量,如scanf( "%f" , 3.5 ) ;
B.只有格式控制,没有输入项,也能进行正确输入,如scanf( "a=%d, b=%d" ) ;
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如:scanf( "%4.2f" , &f ) ;
D.当输入数据时,必须指明变量的地址,如scanf( "%f" , &f ) ;
10.有以下程序
#include<stdio.h>
int main( )
{
char c1 = '1' , c2 = '2' ;
c1 = getchar( ) ; c2 = getchar( ) ;
putchar( c1 ) ; putchar( c2 ) ;
}
当运行时输入a↙后,以下叙述正确的是_______。
A.变量c1被赋予字符a,c2被赋予回车符
B.程序将等待用户输入2个字符
C.变量c1被赋予字符a,c2中仍是原有字符2
D.变量c1被赋予字符a,c2中将无确定值
二、填空题
1.已知float f = 123.467 ; ,则执行语句printf( "%.2f\n" , f ) ; ,输出结果是_______。
2.已知字符'A'的ASCII值为十进制65,变量c为字符型,则执行语句c = 'A' + '6' - '3' ; printf( "%c\n " , c ) ; ,输出结果是_______。
3.scanf()函数在输入数据时默认的分隔符有_______、Tab、空格。
4.已知:int i = 10 , j = 1 ; 则执行语句 printf( "%d,%d" , i++ , ++j ) ; 后,输出结果_______。
三、程序阅读题
1.下面程序的运行结果是__261_____。
#include<stdio.h>
int main( )
{
int m = 177 ;
printf( "%o\n" , m ) ;
return 0 ;
}
2.下面程序的运行结果是___20____。
#include<stdio.h>
int main( )
{
int n = 0 ;
n += ( n = 10 ) ;
printf( "%d\n", n ) ;
return 0 ;
}
3.下面程序的运行结果是_201,10______。
#include<stdio.h>
int main( )
{
int a = 201 , b = 012 ;
printf( "%2d,%2d\n" , a , b ) ;
return 0 ;
}
4.下面程序的运行结果是_y=4630,y= 4630______。
#include<stdio.h>
int main( )
{
int y = 2456 ;
printf( "y=%3o\n" , y ) ;
printf( "y=%8o\n" , y ) ;
return 0 ;
}
5.下面程序的运行结果是__*3.140000,3.142*_____。
#include <stdio.h>
int main( )
{
printf( "*%f,%4.3f*\n" , 3.14 , 3.1415 ) ;
return 0 ;
}
6.下面程序的运行结果是_______。
#include<stdio.h>
int main( )
{
char c = 'x' ;
printf( "c:dec=%d,oct=%o,hex=%x,ASCII=%c\n" , c , c , c , c ) ;
return 0 ;
}
7.下面程序的运行结果是_______。
#include<stdio.h>
int main( )
{
int x = 1 , y = 2 ;
printf( "x=%d y=%d *sum*=%d\n" , x , y , x + y ) ;
printf( "10 squared is : %d\n" , 10 * 10 ) ;
return 0 ;
}
8.下面程序的运行结果是_______。
#include<stdio.h>
int main( )
{
int n = 100 ;
char c ;
float f = 10.0 ;
double x ;
x = f *= n /= ( c = 48 ) ;
printf( "%d %d %3.1f %3.1f\n" , n , c , f , x ) ;
return 0 ;
}
9.下面程序的运行结果是_______。
运行时从键盘输入:25 13 10↙。
#include<stdio.h>
int main( )
{
int x , y , z ;
scanf( "%d%d%d" , &x , &y , &z ) ;
printf( "x+y+z=%d\n" , x + y + z ) ;
return 0 ;
}
10.下面程序的运行结果是_______。
运行时从键盘输入:55 A B↙。
#include <stdio.h>
int main( )
{
int k = 0 ; char c1 = 'a' , c2 = 'b' ;
scanf("%d%c%c" , &k , &c1 , &c2 ) ;
printf( "%d,%c,%c\n" , k , c1 , c2 ) ;
return 0 ;
}
四、编程题
1.编写一个程序,读入一个字母,输出与之对应的ASCII码值。
2.编写一个程序,从键盘输入圆的半径r,圆柱的高h,分别计算出圆周长cl、圆面积cs和圆柱的体积cv,输出计算结果时要求保留小数点后4位。
3.编写一个程序,输入一个三位数,分别求出这个三位数的个位、十位和百位上的数。
第4章 选择结构程序设计
一、选择题
1.if语句的选择条件是_d____。
A.只能用关系表达式 B.只能用关系表达式或逻辑表达式
C.只能用逻辑表达式 D.可以用任何表达式
2.已知int x = 2 , y = -1 , z = 3 ;,执行下面语句后,z的值是____c___。
if( x < y ) if( y < 0 ) z = 1 ; else z++ ;
A.1 B.2 C.3 D.4
3.以下程序段的输出结果是___c____。
int a = 2 , b = 1 , c = 2 ;
if( a < b ) if( b < 0 ) c = 0 ; else c += 1 ;
printf( "%d\n" , c ) ;
A.0 B.1 C.2 D.3
4.当a = 1,b = 3,c = 5,d = 4时,执行下面一段程序后,x的值为__b_____。
if( a < b )
if( c < d ) x = 1 ;
else
if( a < c )
if( b < d ) x = 2 ;
else x = 3 ;
else x = 6 ;
else x = 7 ;
A.1 B.2 C.3 D.6
5.为了避免嵌套的if-else的二义性,C语言规定,else与___b____配对。
A.与最外层的if B.其之前最近的不带else的if
C.其之后最近的if D.与最近的{ }之前的if
6.若有定义:float w ; int a , b ; 则合法的switch语句是__d_____。
A. switch( w ) B. switch( a )
{ {
case 1.0 : printf( "*\n" ) ; case 1 printf( "*\n" ) ;
case 2.0 : printf( "**\n" ) ; case 2 printf( "**\n" ) ;
} }
C. switch( b ) D. switch(a+b);
{ {
case 1 : printf( "*\n" ) ; case 1 : printf( "*\n" ) ;
default : printf( "\n" ) ; case 2 : printf( "**\n" ) ;
case 1 + 2 : printf( "**\n" ) ; default : printf( "\n" ) ;
} }
二、程序阅读题
1.下面程序的运行结果是____10___。
运行时从键盘输入:9↙。
#include<stdio.h>
int main( )
{
int n ;
scanf( "%d" , &n ) ;
if( n++ < 10 ) printf( "%d\n" , n ) ;
else printf( "%d\n" , n-- ) ;
return 0 ;
}
2.下面程序的运行结果是___2,2,2____。
#include<stdio.h>
int main( )
{
int i = 1 , j = 1 , k = 2 ;
if( ( j++ || k++ ) && i++ ) printf( "%d,%d,%d\n" , i , j , k ) ;
return 0 ;
}
3.下面程序的运行结果是___6____。
#include<stdio.h>
int main( )
{
int m = 5 ;
if(m++ > 5) printf( "%d\n" , m ) ;
else printf( "%d\n" , m-- ) ;
return 0 ;
}
4.下面程序的运行结果是__97,b_____。
#include<stdio.h>
int main( )
{
char c1 = 97 ;
if(c1 >= 'a' && c1 <= 'z' )
printf( "%d,%c" , c1 , c1 + 1 ) ;
else
printf( "%c" , c1 ) ;
return 0 ;
}
5.下面程序的运行结果是__c__=_-1__。
#include<stdio.h>
int main( )
{
int a = 1 , b = 2 , c = 3 ;
if( a > b ) c = 1 ;
else
if( a == b ) c = 0 ;
else c = -1 ;
printf( "c=%d" , c ) ;
return 0 ;
}
6.下面程序的运行结果是__8888_____。
运行时从键盘输入:88↙。
#include<stdio.h>
int main( )
{
int a ;
scanf( "%d" , &a ) ;
if( a > 90 ) printf( "%d" , a ) ;
if( a > 80 ) printf( "%d" , a ) ;
if( a > 70 ) printf( "%d" , a ) ;
return 0 ;
}
7.下面程序的运行结果是____20,0___。
#include<stdio.h>
int main( )
{
int x = 10 , y = 20 , t = 0 ;
if( x == y ) t = x ; x = y ; y = t ;
printf( "%d,%d\n" , x , y ) ;
return 0 ;
}
8.下面程序的运行结果是__2,1_____。
#include<stdio.h>
int main( )
{
int x = 1 , a = 0 , b = 0 ;
switch( x )
{
case 0 : b++ ;
case 1 : a++ ;
case 2 : a++ ; b++ ;
}
printf( "%d,%d" , a , b ) ;
return 0 ;
}
9.下面程序的运行结果是_ 1,1
2,2
2,1
-2,2
______。
运行时从键盘输入:1↙。
#include stdio.h>
int main( )
{
int k ;
scanf( "%d" , &k ) ;
switch( k )
{
case 1: printf( "%d,%d\n" , k++ , k ) ;
case 2: printf( "%d,%d\n" , k , k-- ) ;
case 3: printf( "%d,%d\n" , ++k , k ) ;
case 4: printf( "%d,%d\n" , -k , k++ ) ; break ;
default: printf( "full!\n" ) ;
}
return 0 ;
}
10.下面程序的运行结果是__a=1,b=3_____。
#include<stdio.h>
int main( )
{
int x = 1 , y = 1 , a = 0 , b = 0 ;
switch( x )
{
case 1: switch( y )
{
case 0: a++ ;
case 1: b++ ;
case 2: b++ ; break ;
}
case 2: a++ ; b++ ; break ;
case 3: a++ ; b++ ;
}
printf( "a=%d,b=%d\n" , a , b ) ;
return 0 ;
}
三、程序完善题
1.下面程序用于将输入的三个数从小到大排序输出。
#include<stdio.h>
int main( )
{
int a , b , c , x , y ;
scanf( "%d%d%d" , &a , &b , &c ) ;
if(_a>b______) { x = a ; y = b ; }
else { x = b ; y = a ; }
if(___c>x____) x = c ;
else if( y > c ) y = c ;
printf( "%d,%d,%d" , y , a + b + c – x – y , x ) ;
return 0 ;
}
四、编程题
1.编写一个程序,从键盘上输入4个整数,输出其中的最小值。
1.【参考代码】
#include<stdio.h>
int main( )
{
int a, b, c,d,min;
printf("输入4个整数:");
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a < b) min = a;
else min = b;
if(c < min) min=c;
if(d<min) min=d;
printf("%d\n",min);
return 0 ;
}
2.编写一个程序,从键盘输入一个四位整数n,输出它的各位数字之和。例如n=1308,则输出12;n=3204,则输出9。
2.【参考代码】
#include<stdio.h>
int main( )
{
int num,a,b,c,d;
printf("请输入一个四位整数:");
scanf("%d",&num);
a=num/1000;
b=num%1000/100;
c=num%100/10;
d=num%10;
printf("各位数字之和为:%d\n",a+b+c+d);
return 0 ;
}
3.有一函数:
3.【参考代码】
#include<stdio.h>
int main( )
{
int x;
printf("请输入x:");
scanf("%d",&x);
printf("y的值为:");
if(x<0)
printf("%d\n",x);
else if(x<50)
printf("%d\n",3*x-2);
else if(x<100)
printf("%d\n",4*x+1);
else
printf("%d\n",5*x);
return 0 ;
}
编写一个程序,从键盘输入x的值,输出y的值。
4.苹果店有4个等级的苹果,一级5.50元/kg、二级4.30元/kg、三级3.00元/kg、四级2.50元/kg。利用switch语句编写一个程序,输入苹果的等级、数量以及顾客的付款数,显示出苹果的等级、数量、应付款数以及找给顾客的钱数。当输入的苹果的等级、数量以及顾客的付款数不合要求时,通知用户“Data Error!”,结束程序。
4.【参考代码】
#include<stdio.h>
int main( )
{
int dj;
float zl,je,yfk;
printf("请输入等级(1~4): ");
scanf("%d",&dj);
if (dj>4||dj<1)
{
printf("无此等级的苹果!\n");
return 0;
}
printf("请输入重量(公斤): ");
scanf("%f",&zl);
printf("\n");
switch (dj)
{
第5章 循环结构程序设计
一、选择题
1.有以下程序段
int k = 10 ;
while( k = 0 ) k = k - 1 ;
则下面描述中正确的是_______。
A.while循环执行10次 B.循环是无限循环
C.循环体语句一句也不执行 D.循环体语句执行一次
2.有以下程序段
int x = 0 , s = 0 ;
while( !x != 0 ) s += ++x ;
printf( "%d" , s ) ;
则_______。
A.运行程序段输出0 B.运行程序段输出1
C.程序段中的控制表达式是非法的 D.程序段执行无限次
3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
#include<stdio.h>
int main( )
{
int a , b , t ;
scanf( "%d%d" , &a , &b );
while(_______)
{
if(
展开阅读全文