写在前面:
大家好,我是 花狗Fdog ,来自内蒙古的一个小城市,目前在泰州读书。
很感谢能有这样一个平台让我能够在这里分享所学所感。
我喜欢编程,喜欢代码,喜欢去做一个程序员。
努力学习,争取多年后,给亲人更好的生活。

文章目录

  • 一、选择题
  • 二、填空题
  • 三、编程题


一、选择题

1.源程序TEST.C经编译产生的目标文件和连接后产生的可执行文件是(B)。
A.TEST.BAK和TEST.OBJ       B.TEST.OBJ和TEST.EXE
C.TEST.EXE 和TEST.C          D.TEST.BAK和TEST.EXE

2.以下选项中合法的实型常数是(C)。
A.5E2.0     B.E-3     C.2E0    D.1.3E

3.字符串“ABC”在内存中占用的字节数是(B)。
A.3     B.4     C.6     D.8

4.在C语言中,要求运算数必须是整型的运算符是(D)。
A./     B.++     C.!=     D.%

5.若有以下类型说明语句:char w ; int x ; float y ; double z ; ,则表达式w * x + z - y的结果为(D)类型。
A.float     B.char     C.int     D.Double

6.若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

7.已知char a = ‘\103’ ;则语句printf( “%3d” , a ) ; 执行后的输出结果为(C)。
A.67     B.‘C’     C. 67     D.103

8.以下针对scanf()函数的叙述中,正确的是(D)。
A.输入项可以为一实型常量,如scanf( “%f” , 3.5 ) ;
B.只有格式控制,没有输入项,也能进行正确输入,如scanf( “a=%d, b=%d” ) ;
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如:scanf( “%4.2f” , &f ) ;
D.当输入数据时,必须指明变量的地址,如scanf( “%f” , &f ) ;

9.设变量a、b和c已正确定义并赋值,则以下符合C语言语法的表达式是(A)。
A.a+=7     B.b+c=a=7     C.a=12.3%4     D.a=a+7=c+b

10.为了避免嵌套的if-else的二义性,C语言规定,else与(B)配对。
A.与最外层的if         B.其之前最近的不带else的if
C.其之后最近的if     D.与最近的{ }之前的if

11.有以下程序段
int k = 10 ;
while( k = 0 ) k = k - 1 ;
则下面描述中正确的是(C)。
A.while循环执行10次               B.循环是无限循环
C.循环体语句一句也不执行     D.循环体语句执行一次

12.C语言中while和do-while循环的主要区别是(A)。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句

13.若 i为整型变量,则以下循环执行次数是(B)。
for( i = 2 ; i == 0 ; ) printf( “%d” , i-- ) ;
A.无限次     B.0次     C.1次     D.2次

14.若希望当a的值为奇数时,表达式的值为真;a的值为偶数时,表达式的值为假则以下不能满足要求的表达式是(C)。
A.a%2== 1     B.!(a%2==0)     C.!(a%2)     D.a%2

15.关于break和continue,以下说法正确的是(B)。
A.break语句只应用在循环体中
B.continue语句只应用在循环体中
C.break是无条件跳转语句,continue不是
D.break和continue语句的跳转范围不够明确,容易产生错误

16.若变量已正确定义,则以下次能正确计算f=n!的程序段是(B)。
A.for(f=0,i=1;i<=n;i++)f*=i;        B.for(f=1,i=1;i<=n;i++)f*=i;
C.for(f=1,i=1;i>1;i–)f*=i;            D.for(f=1,i=1;i>=2;i–)f*=i;

17.在C语言中,引用数组元素时,其数组下标的数据类型不允许是(D)。
A.整型常量                       B.整型表达式
C.整型常量或整型表达式 D.任何类型的表达式

18.以下对二维数组a的正确说明是(C)。
A.int a[3][ ];              B.float a(3)(4);
C.double a[ ][4] ;     D.float a(3,4);

19.以下对数组s的初始化,错误的是(D)。
A.char s[5] = { “abc” } ;        B.char s[5] = { ‘a’ , ‘b’ , ‘c’ } ;
C.char s[5] = “” ;                  D.char s[5] = “abcde” ;

20.设有如下定义,则正确的叙述为(B)。
char x[ ]={“abcdefg”};
char y[ ]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};
A.数组x和数组y等价           B.数组x的长度大于数组y的长度
C.数组x和数组长度相等     D.数组x的长度小于数组y的长度

21.若有定义 int a[ ][3]={{1,2},{3,4}};,则数组a 中的共有(C)个元素。
A.4     B.5     C.6     D.不定

22.下面程序段的运行结果是(C)。

#include<stdio.h>
 int main( )
 {
 int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ;
 for( i = 0 ; i < 3 ; i++ )
 printf( “%2d” , x[i][2-i] ) ;
 return 0 ;
 }


A.1 5 9     B.1 4 7     C.3 5 7     D.3 6 9

23.判断字符串s1是否大于字符串s2,应当使用(D)。
A.if( s1>s2 )                    B.if( strcmp( s1 , s2 ) )
C.if( strcpy( s1 , s2 ) )     D.if( strcmp( s1 , s2 )>0 )

若一个函数没有返回值,那么该函数的类型是(D)。
A.int     B.char     C.float     D.void

25.以下说法不正确的是(B)。
A.实参可以是常量、变量或表达式
B.形参可以是常量、变量或表达式
C.形参可以为任意类型
D.形参应与其对应的实参类型一致

26.C语言规定,函数返回值的类型是由(D)。
A.return语句中的表达式类型所决定
B.调用该函数时的主调函数类型所决定
C.调用该函数时系统临时决定
D.在定义该函数所指定的函数类型所决定

27.凡在函数中未指定存储类型的局部变量,其隐含的存储类型为(A)。
A.自动( auto )            B.静态( static )
C.外部( extern )        D.寄存器(register)

28.若有说明:int *p , n ; 以不正确的程序段是(C)。
A.scanf( “%d” , &n ) ;        B. scanf( “%d” , &n ) ;
                        *p = n ;                                 p = &n ;
C.         p = &n ;                D.    p = &n ;
      scanf( “%d”, &p ) ;                 scanf( “%d” , p ) ;

29.若有定义:int a[5] ; 则a数组中首元素的地址可以表示为(C)。
A.&a     B.a + 1     C.a     D.&a[1]

30.设有以下定义和语句
int a[3][2] = {1 , 2 , 3 , 4 , 5} , p[3] ;
p[0] = a[1] ;
( p[0] + 1 )所代表的数组元素是(C)。
A.a[0][1] B.a[1][0] C.a[1][1] D.a[1][2]

二、填空题

1.结构化程序由_顺序_、分支、_循环_3种基本结构组成。

2.设所有变量均为整型,则表达式( a = 2 , b = 5 , a++ , b++ , a + b )的值为_9_。

3.a是int型变量,且a的初值为6,则计算表达式a += a -= a * a后a的值为_-60_。

4.设y是int型变量,请写出判断y为奇数的关系表达式_y%2==1_。

5.下面程序的运行结果是_10, 2_。

#include<stdio.h>
 int main( )
 {
 int x = 10 , y = 3 ;
 printf( “%d,%d\n” , x++ , --y ) ;
 }

6.下面程序的运行结果是_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 ) ;
 }

7.下面程序的运行结果是_20_。

#include<stdio.h>
 int main( )
 {
 int n = 0 ;
 n += ( n = 10 ) ;
 printf( “%d\n”, n ) ;
 }

8.下面程序的运行结果是_6_。

#include<stdio.h>
 int main( )
 {
 int m = 5 ;
 if(m++ > 5) printf( “%d\n” , m ) ;
 else printf( “%d\n” , m-- ) ;
 }

9.下面程序的运行结果是_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 ) ;
 }

10.下面程序的运行结果是_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 ) ;
 }

11.下面程序的运行结果是_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 ) ;
 }

12.下面程序的运行结果是_A2C4E6_。

#include<stdio.h>
 int main( )
 {
 char c1 , c2 ;
 int a ;
 c1 = ‘1’ ;
 c2 = ‘A’ ;
 for( a = 0 ; a < 6 ; a++ )
 {
 if( a % 2 )
 putchar( c1 + a ) ;
 else
 putchar( c2 + a ) ;
 }
 }

13.下面程序的运行结果是_4_。

#include<stdio.h>
 int main( )
 {
 int i ,x[10] = {2 , 3 , 0 , 3 , 0 , 2 , 3 , 2 , 1 , 3} ,y[4] = {0} ;
 for( i = 0 ; i < 10 ; i++ )
 y[x[i]]++ ;
 printf( “%d\n” , y[3] ) ;
 }

14.下面程序的运行结果是_mo_。

#include<stdio.h>
 int main( )
 {
 char a[ ]= “morning” , t ;
 int i , j = 0 ;
 for( i = 1 ; i < 7 ; i++ )
 if( a[j] < a[i] )
 j = i ;
 t = a[j] ; r
 a[j] = a[7] ;g
 a[7] = a[j] ;r
 puts( a ) ;
 }

15.下面程序的运行结果是_4_。
#include<stdio.h>

int main( )
 {
 int a = 1 , b ;
 for( b = 1 ; b <= 10 ; b++ )
 {
 if( a >= 8 )
 break ;
 if( a % 2 == 1 )1 2 3
 {
 a += 5 ;
 continue ;
 }
 a = a - 3 ;
 }
 printf( “%d\n” , b ) ;
 return 0 ;
 }

16.下面程序的运行结果是_a=1,b=2_。

#include<stdio.h>
 int main( )
 {
 void f( int x , int y ) ;
 int a = 1 , b = 2 ;
 f( a , b ) ;
 printf( “a=%d,b=%d\n” , a , b ) ;
 }
 void f( int x , int y )
 {
 x = 100 ;
 y = 200 ;
 }

17.下面程序的运行结果是_7 8 9_。

#include<stdio.h>
 int main( )
 {
 int f( int a ) ;
 int a = 2 , i ;
 for( i = 0 ; i < 3 ; i++ )
 printf( “%4d” , f( a ) ) ;
 }
 int f( int a )
 {
 int b = 0 ;
 static int c = 3 ;
 b++ ;
 c++ ;
 return ( a + b + c ) ;
 }

18.下面程序的运行结果是_gae_。

#include<stdio.h>
 int main( )
 {
 char a[ ] = “Language” , b[ ] = “Programe” ;
 char *p1 , *p2 ;
 int k ;
 p1 = a ;
 p2 = b ;
 for( k = 0 ; k <= 7 ; k++ )
 if( *( p1 + k ) == *( p2 + k ) )
 printf("%c" , *( p1 + k ) ) ;
 }

19.下面程序的运行结果是_7,8,8_。

#include<stdio.h>
 int *f( int *x , int *y )
 {
 if( *x + 5 < *y ) return x ;
 else return y ;
 }
 int main( )
 {
 int a = 7 , b = 8 , *p , *q , *r ;
 p = &a ; q = &b ;
 r = f( p , q ) ;
 printf( “%d, %d, %d\n” , *p , *q , *r ) ;
 }

20.下面程序的运行结果是_3 1 4 2_。

#include<stdio.h>
 void fun( int *a , int *b )
 {
 printf( “%d %d\n” , *a , *b ) ;
 *a = 2 ; *b = 4 ;
 }
 int main( )
 {
 int x = 1 , y = 3 ;
 fun( &y , &x ) ;
 printf( “%d %d\n” , x , y ) ;
 }
三、编程题

1.编写一个程序,读入一个字母,输出与之对应的ASCII码值。

#include<stdio.h>
 int main()
 {
 char ch;
 printf(“输入一个字符:\n”);
 scanf("%c", &ch);
 printf(“对应的ASCII为%d”, ch);
 return 0;
 }

2.编写一个程序,读入一个大写字母,输出与之对应的小写字母及小写字母的ASCII码。

#include<stdio.h>
 int main()
 {
 char ch;
 printf(“输入一个大写字母:\n”);
 scanf("%c", &ch);
 printf(“对应的小写字母为%c,ASCII码为%d”, ch+32,ch+32);
 return 0;
 }

3.请编程输出如下图形:

*
 ***
 *****
 *******
 #include<stdio.h>
 int main()
 {
 for (int i = 1; i <= 4; i++)
 {
 for ( int j = 1; j <= 4 - i; j++)
 {
 printf(" “);
 }
 for ( int k = 1; k <= 2 * i - 1; k++)
 {
 printf(”*");
 }
 printf("\n");
 }
 return 0;
 }

3.编写一个程序,计算6╳6的矩阵的主对角线之和。

int main()
 {
 int a[6][6] = { { 1,2,3,4,5,6 },
 { 7,8,9,10,11,12},
 { 13,14,15,16,17,18},
 {19,20,21,22,23,24},
 {25,26,27,28,29,30},
 {31,32,33,34,35,36} };
 int sum = 0;
 for (int i = 0; i < 6; i++)
 {
 sum += a[i][i];
 }
 printf("%d",sum);
 return 0;
 }


4.编程打印杨辉三角形的前10行10列的值。

#include<stdio.h>
 int main()
 {
 int a[10][10];
 int i, j;
 for (i = 0; i < 10; i++)
 {
 a[i][0] = 1;
 a[i][i] = 1;
 }
 for (i = 2; i < 10; i++)
 {
 for (j = 1; j < i; j++)
 {
 a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
 }
 }
 for (i = 0; i < 10; i++)
 {
 for (j = 0; j <= i; j++)
 printf("%d “, a[i][j]);
 printf(”\n");
 }
 return 0;
 }

5.编写函数sum求1到n的和,通过调用该函数,求出100以内能使函数值等于n2-1的所有正整数。

#include<stdio.h>
 void sum();
 int main()
 {
 sum();
 return 0;
 }
 void sum()
 {
 int Sn = 0;
 int i = 1;
 while (Sn <= 100)
 {
 Sn += i;
 printf("%d nn-1=%d\n", Sn, ii - 1);
 if (i*i - 1 == Sn)
 {
 printf("%d\n", Sn);
 }
 i++;
 }
 }

如有错误,欢迎指出批评,欢迎讨论。
每文一句:走得最慢的人,只要他不丧失目标,也比漫无目的地徘徊的人走得快。