第一章 C语言概述

第一章单元测验

1、一个C程序可能出现的错误有
    A、语法错误
    B、逻辑错误
    C、运行错误
    D、以上都包括

2、C程序中一般可以包含几个函数
    A、只有1个
    B、必须多于2个
    C、0个
    D、至少1个

3、C语言属于程序设计语言的哪个类别
    A、高级语言
    B、汇编语言
    C、机器语言
    D、面向对象语言

4、以下关于C语言描述错误的是
    A、一个C程序总是从main函数开始执行
    B、一个C程序可以包含多个main函数
    C、每个语句的最后必须有一个分号
    D、C语言的注释符是以"/*"开始并以"*/"结束

5、在调试过程中,逻辑错误是指
    A、所书写的语句,不符合C的语法
    B、在exe文件的执行过程中,产生运行异常
    C、程序的运行结果不符合题目要求
    D、在从obj生成exe文件的过程中,如果函数名书写错误,可能产生的错误

第二章 数据类型与表达式

第二章单元测试

1、类型修饰符unsigned不能修饰
    A、char
    B、int
    C、long int
    D、float

2、16位的二进制数可以表示的整数的范围是
    A、[-32768,32767]
    B、[-32767,32768]
    C、[-32768,32768]
    D、[-32767,32767]

3、C语言中的实型数据包括
    A、int和float
    B、float和double
    C、int和double
    D、float和char

4、以下不合法的字符常量是
    A、'2'
    B、'ab'
    C、'A'
    D、'\n'

5、在以下各组标识符中,均是合法的C语言标识符是
    A、abc,A_4d,_student,xyz_abc
    B、auto,12-a,a_b,ab5.x
    C、A_4d,_student,xyz_abc,if
    D、abc,a_b,union,scan

6、在C语言中,要求参加运算的数必须是整数的运算符是
    A、/
    B、*
    C、%
    D、++

7、若有定义:char a;int b;float c;double d; 则表达式a*b+d-c值的类型为
    A、float
    B、double
    C、char
    D、int

8、设有定义:int a=7;float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是
    A、2.75
    B、3.5
    C、0.0
    D、2.5

9、若有定义:double x=1,y; 执行语句y=x+3/2;,则y的值是
    A、1
    B、2
    C、2.0
    D、2.5

10、设int a=1,b=2;以下选项中不正确的语句是
    A、a*3=3
    B、a/=1
    C、a+=3
    D、a=a+b

第三章 基本程序结构

第三章单元测试

1、算法描述可以有多种表达方法,下面( )方法不可以描述算法
    A、N-S图
    B、自然语言
    C、伪代码
    D、机器语言

2、执行以下程序后k的值是( )int i,j=10,k=0; for(i=0;i<=j;i++) { k=i+j; j--; }
    A、8
    B、9
    C、10
    D、11

3、设int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为( )
    A、0
    B、1
    C、2
    D、3

4、表示y在(-∞,3]和[23,+∞)范围内为真的表达式为( )
    A、(y<=3)&&(y>=23)
    B、(y<=3)||(y>=23)
    C、(y<3)&&(y>23)
    D、(y<3)||(y>23)

5、已知int x=10,y=20,z=30; 则执行以下语句后x、y、z的值是( )if(x>y) z=x; x=y; y=z;
    A、x=10,y=20,z=30
    B、x=20,y=30,z=30
    C、x=20,y=30,z=10
    D、x=20,y=30,z=20

6、设有声明语句:int a=1,b=0; 则执行以下语句后输出结果为( ) switch(a) { case 1: switch(b) { case 0:printf("**0**");break; case 1:printf("**1**");break; } case 2:printf("**2**");break; }
    A、**0**
    B、**0****2**
    C、**0****1****2**
    D、有语法错误

7、设有以下程序,若要使程序的输出值为2,则应该从键盘给n输入的值是( )void main() { int s=0,a=1,n; scanf("%d",&n); do { s=s+1; a=a-2; }while(a!=n); printf("%d ",s); }
    A、0
    B、-1
    C、-3
    D、-5

8、for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是( )
    A、9
    B、8
    C、3
    D、2

9、以下程序段的输出结果是( )int x=5; if(x--<5) printf("%d",x); else printf("%d",x++);
    A、6
    B、5
    C、4
    D、3

10、对下面程序段,描述正确的是( )for(t=1;t<=100;t++) { scanf("%d",&x); if(x<0) continue; printf("%d ",x); }
    A、最多允许输出100个非负整数
    B、printf函数永远也不执行
    C、当x>=0时,什么也不输出
    D、当x<0时,整个循环结束

第三章在线练习

1、顺序结构习题:求三个数的平均值

2、顺序结构习题:求两点之间的距离

3、顺序结构习题:摄氏温度转换为华氏温度和绝对温度

4、循环结构习题:输入两个整数,输出它们的最大公约数

5、选择结构习题:奇偶数判断

6、选择结构习题:求三个数的最大值

7、选择结构习题:百分值转换成其相应的等级

8、选择结构习题:三个数排序

9、选择结构习题:分段函数

10、循环结构习题:公式求π值

11、循环结构习题:输入10个整数 ,输出所有负数并求其和。

12、循环结构习题:输出同构数

13、循环结构习题:求一个分数序列的值。

14、循环结构习题:求2+22+222+....+22222的值

15、循环结构习题:大小写字母转换

16、循环结构习题:任意输入n个数,输出最大和最小值及其对应的序列号

17、循环结构习题:打印“完数”

第四章 函数

第四章单元测试

1、包含标准库函数scanf声明的头文件是( )
    A、stdio.h
    B、stdlib.h
    C、math.h
    D、time.h

2、以下关于函数的叙述中正确的是( )
    A、C语言程序将从源程序中第一个函数开始执行
    B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
    C、main可作为用户标识符,用以定义任意一个函数
    D、C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束

3、以下关于函数的叙述中不正确的是( )
    A、在C语言程序中,被调用的函数必须在main函数中定义
    B、C程序是函数的集合,包括标准库函数和用户自定义函数
    C、在C语言程序中,函数的定义不能嵌套
    D、在C语言程序中,函数的调用可以嵌套

4、以下不正确的说法是( )
    A、在不同函数中可以使用相同名字的变量
    B、形式参数是局部变量
    C、在函数内定义的变量只在本函数范围内可以使用
    D、在主函数内定义的变量可在其余函数中通用

5、以下正确的函数定义是( )
    A、double fun(int x,int y) { z=x+y; return z; }
    B、fun(int x,y) { int z; return z; }
    C、fun(x,y){ int x,y; double z; z=x+y; return z; }
    D、double fun(int x,int y) { double z; z=x+y; return z; }

6、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )
    A、地址传递
    B、单向值传递
    C、由实参传给形参,再由形参传回实参
    D、由用户指定传递方式

7、下列程序的运行结果是( ) #include <stdio.h> void fun(); int main() { int a=10; fun(); printf("%5d",a); return 0; } void fun() { int a=20; printf("%5d",a); }
    A、10 10
    B、20 10
    C、20 20
    D、10 20

8、下列程序的运行结果是( ) #include <stdio.h> void fun(); int a=5; int main() { int a=10; fun(); printf("%5d",a); return 0; } void fun() { a=a+5; printf("%5d",a); }
    A、10 10
    B、5 10
    C、10 5
    D、5 5

9、以下正确的描述是( )
    A、函数的定义可以嵌套,但函数的调用不可以嵌套
    B、函数的定义不可以嵌套,但函数的调用可以嵌套
    C、函数的定义和函数的调用均不可嵌套
    D、函数的定义和函数的调用均可以嵌套

10、下列程序的运行结果是( ) #include <stdio.h> int fun1(int x); void fun2(); int x=5; int main() { int x=1; x=fun1(x); printf("%d",x); return 0; } int fun1(int x) { x++; fun2(); return x; } void fun2() { x++; }
    A、2
    B、6
    C、7
    D、5

第四章在线练习

1、函数习题(1):输出水仙花数

2、函数习题(2):输入年月日,输出是本年第几天

3、函数习题(3):函数实现求最大公约数和最小公倍数

4、函数习题(4):递归方法完成Fibonacci数列前n项

5、函数习题(5):判断一个数是否是回文数

6、函数习题(6):递归完成x的n次方的计算

7、函数习题(7):递归方法求n阶勒让德多项式的值

8、函数习题(8):分解一个整数的所有素数因子

9、函数习题(9):递归方法求计算x-x2+x3-x4+…+(-1)n-1xn值

第五章 数组

第五章单元测试

1、C语言中,由固定数目的同类型的变量按一定顺序排列而构成的是( )。
    A、队列
    B、链表
    C、结构体
    D、数组

2、当数据已知的情况下,可以在定义数组时,对数组进行初始化,但不可( )。
    A、对全部元素赋初值
    B、对部分元素赋初值
    C、对数组元素赋同一初值
    D、在方括号中写入变量表达式

3、数组元素下标可从( )开始。
    A、1
    B、0
    C、任意自然数
    D、用户指定

4、冒泡排序中,若有n个数,第一趟最多需要比较( )次。
    A、n
    B、n-1
    C、2n
    D、2(n-1)

5、利用冒泡排序得到升序排列,每一趟中从前到后遍历数组,将相邻两个数作比较,如果前面的数小于后面的数,则( )。
    A、交换两个数的位置
    B、将当前数据后移
    C、将当前数据前移
    D、不做操作

6、若不允许函数修改数组元素,则可以用( )限定符作为数组参数的前缀,这样数组元素就成为函数中的常量。
    A、const
    B、include
    C、define
    D、fix

7、在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( )。
    A、4
    B、1
    C、2
    D、5

8、若给出以下定义: char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为( )。
    A、数组x和数组y等价
    B、数组x和数组y的长度相同
    C、数组x的长度大于数组y的长度
    D、数组x的长度小于数组y的长度

9、函数调用语句为: int a[10],maxnum; … maxnum=max(a); 函数定义首部应为( )。
    A、int max(int b)
    B、int max(int b[])
    C、int max(int a)
    D、double max(int b[])

10、若有定义:int b[3][4]=;则下述正确的是( )。
    A、此定义语句不正确
    B、没有元素可得初值0
    C、数组b中各元素均为0
    D、数组b中各元素可得初值但值不一定为0

第五章在线练习

1、数组习题:求矩阵中最大元素值,并与同行对角线元素交换

2、数组习题:将2个升序数组合并为一个升序数组

3、数组习题:完成十进制数转成为二进制数

4、数组习题:输出Fibonacci数列的前n项

5、数组习题:数组元素前移

6、数组习题:有序数组中插入若干数,仍保持有序

7、数组习题:电文加密

第六章 结构体与共用体

第六章单元测试

1、若定义结构体类型变量student,以下各项对结构体变量成员引用错误的是()。 struct stud_type { int num; char name[10]; int age; float score; }student;
    A、student.num=10002;
    B、student.name="高远";
    C、student.age=19;
    D、student.score=90;

2、以下选项中不能正确把cl定义成结构体变量的是( )。
    A、typedef struct { int red; int green; int blue; } COLOR; COLOR cl;
    B、struct color cl { int red; int green; int blue; };
    C、struct color { int red; int green; int blue; }cl;
    D、struct { int red; int green; int blue; }c1;

3、结构体变量整体作函数参数时,以下说法正确的是( )。
    A、实参结构体变量和形参结构体变量的类型应当一致
    B、结构体变量整体不能做实参
    C、结构体变量整体不能做形参
    D、以上说法都不对

4、已知字符'0'的ASCII码为十六进制的30H,下面程序的输出是( )。 void main() { union { unsigned char c; unsigned int i[4]; } z; z.i[0]=0x39; z.i[1]=0x36; printf("%c\n",z.c); }
    A、6
    B、9
    C、0
    D、3

5、在下面的叙述中,不正确的是( )。
    A、枚举变量只能取对应枚举类型的枚举常量表中的元素
    B、可以在定义枚举类型时对枚举常量进行指定表示的值
    C、枚举常量表中的元素有先后次序,可以进行比较
    D、枚举常量的值可以是整数或字符串

第六章在线练习

1、结构体习题:输入n名学生学号、姓名、三门课成绩,计算平均分,输出排行榜

2、枚举型习题:输入整数输出其对应的颜色

3、共用体习题:统计单位n名职工计算机水平考试成绩

第七章 指针

第七章单元测试

1、系统根据( )为变量分配内存单元。
    A、类型
    B、数据
    C、大小
    D、名称

2、程序编译后,对变量的访问通过( )来进行的。
    A、地址
    B、变量名
    C、函数
    D、文件

3、int a[5]={ 10,20,30,40,50 }, *p=a; printf("%d\n",*p+1); 结果是( )。
    A、10
    B、11
    C、20
    D、21

4、若int *p[4],则p的含义是( )。
    A、整型变量
    B、指针数组
    C、指向整型的指针
    D、指向一维分数组的指针

5、请正确的填充语句:void main( int argc, char ( ))。
    A、argv
    B、argv[ ]
    C、*argv[ ]
    D、**argv[ ]

6、定义p为指向函数的指针变量,应该采用( )方式。
    A、int p( int x );
    B、int p ( int *x );
    C、int *p ( int *x);
    D、int (*p)( int x );

7、获取指针变量所指向的值时所用的运算符是( )。
    A、*
    B、%
    C、&
    D、!

8、int a[10], *p;则让p指向数组的首地址的语句是( )。
    A、p=a[0];
    B、p=&a[0];
    C、a=p;
    D、*p=a;

9、数组名是表示数组首地址的( )。
    A、常量
    B、变量名
    C、结构体
    D、别名

10、int a[3][5], *p; p=a[0]; 则p++后的值代表了( )。
    A、第一个元素的首地址
    B、第二行的首地址
    C、第一个元素的值
    D、第一行第二个元素的首地址

第七章在线练习

1、指针习题:升序排序

2、指针习题:编写字符串连接函数strcat()

3、指针习题:编写测字符串长度函数strlen()

4、指针习题:猴子选大王

第八章 文件

第八章单元测试

1、将文件分为ASCII码文件和二进制码文件两种,是从文件的( )来区分的。
    A、读写方式
    B、存盘方式
    C、编码方式
    D、打开方式

2、文本文件在磁盘存放时,每个字符对应一个字节,用来存放( )码。
    A、二进制
    B、ASCII
    C、字符
    D、数字

3、文件操作流程中的最后一个步骤是( )文件。
    A、打开
    B、读取
    C、存储
    D、关闭

4、文件的变量类型名是( )。
    A、char
    B、int
    C、file
    D、FILE

5、在fopen函数中,“rb”表示为输入打开一个( )文件。
    A、文本
    B、二进制
    C、头文件
    D、目标文件

C语言程序设计期末测试

C语言程序设计期末测试

1、一个C程序可能出现的错误有()
    A、语法错误
    B、逻辑错误
    C、运行错误
    D、以上都包括

2、C语言源程序文件后缀为( )
    A、.EXE
    B、.OBJ
    C、.C
    D、.ASM

3、C语言中基本的数据类型不包括( )
    A、int
    B、long
    C、float
    D、char

4、C语言中符号常量定义的关键字是( )
    A、int
    B、const
    C、include
    D、define

5、设有定义:int a=7;float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是( )
    A、2.75
    B、3.5
    C、2.5
    D、0.0

6、以下选项中非法的表达式是( )
    A、0<=x<100
    B、i=j==0
    C、(char)(x<100)
    D、x+1=x+1

7、若变量a为int类型,且其值为3,则执行表达式a+=a-=a*a后,a的值是( )
    A、-3
    B、9
    C、-12
    D、6

8、函数putchar()可以向终端输出一个( )
    A、字符串
    B、字符或字符型变量的值
    C、整型变量的值
    D、实型变量的值

9、下列运算符中,优先级从高到低依次为( )
    A、&& ! ||
    B、|| && !
    C、&& || !
    D、! && ||

10、设int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为( )
    A、0
    B、1
    C、2
    D、3

11、以下程序段的输出结果是( ) int x=1,a=0,b=0; switch(x) {case 0:b++; case 1:a++; case 2:a++;b++;} printf("a=%d,b=%d\n",a,b);
    A、a=2,b=1
    B、a=1,b=1
    C、a=1,b=0
    D、a=2,b=2

12、以下程序段的输出结果是( ) int k,n; for(k=1;k<=5;k++) { n=k*k; if(n<10) continue; else printf("%d ",n); }
    A、1 4 9
    B、1 4 9 16 25
    C、16 25
    D、因循环终止,没有任何输出结果

13、以下正确的函数原型声明是( )
    A、double fun(int x , int y)
    B、double fun(int x ; int y)
    C、double fun(int x , int y);
    D、double fun(int x,y)

14、以下不正确的说法是,C语言规定( )
    A、实参可以是常量、变量或表达式
    B、形参可以是常量、变量或表达式
    C、实参可以是任意类型
    D、实参应与其对应的形参类型一致

15、以下不正确的说法是( )
    A、在不同函数中可以使用相同名字的变量
    B、形式参数是局部变量
    C、在函数内定义的变量只在本函数范围内有定义
    D、在主函数内定义的变量可在其余函数中通用

16、下列程序的运行结果是: #include <stdio.h> int x1=30,x2=40; void sub(int x,int y) { x1=x;x=y;y=x1;} int main() { int x3=10,x4=20; sub(x3,x4); sub(x2,x1); printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2); return 0; }
    A、10,20,40,40
    B、10,20,30,40
    C、10,20,40,30
    D、20,10,30,40

17、下列程序的运行结果是( ) #include<stdio.h> void fun(int x); int main() { fun(7); printf(""); return 0; } void fun(int x) { if(x/2>1) fun(x/2); printf("%2d",x); }
    A、3 5
    B、2 7
    C、3 7
    D、2 5

18、以下数组定义中,( )是错误的
    A、int a[7];
    B、#define N 5 long b[N];
    C、char c[5];
    D、int n,d[n];

19、执行下面程序,输出结果是( ) #include <stdio.h> void main() { int i; int x[3][3]={9,8,7,6,5,4,3,2,1}; for (i=0;i<3;i++) printf("%d ",x[i][2-i]); }
    A、9 5 1
    B、7 4 1
    C、7 5 3
    D、9 6 3

20、执行下面程序,输出结果是( ) #include <stdio.h> void main() { int i,j,k=0,a[3][3]={1,2,3,4,5,6}; for(i=0;i<3;i++) for(j=i;j<3;j++) k+=a[i][j]; printf("%d",k); }
    A、21
    B、19
    C、17
    D、18

21、执行下面程序,输出结果是( ) #include <stdio.h> void main() { int i,a[10]={0,1,2,3,4,5,6,7,8,9}; for(i=1;i<9;i++) a[i]=a[i-1]+a[i+1]; printf("%d%d",a[5],a[7]); }
    A、1014
    B、2035
    C、812
    D、2744

22、设有 char str[ ]="Shanghai"; 则执行printf("%d\n", strlen(strcpy(str,"Shanxi")));后的输出结果为( )
    A、14
    B、ShanghaiShanxi
    C、6
    D、Shanxi

23、若有定义和语句:char s[10]=”abcd”; printf(“%s\n”,s); 则结果是(以下u代表空格)( )
    A、输出abcd
    B、输出a
    C、输出abcduuuuuu
    D、编译不通过

24、C语言结构体类型变量在程序运行期间()
    A、在内存中仅仅开辟一个存放结构体变量地址的单元
    B、所有的成员一直驻留在内存中
    C、只有第一个成员驻留在内存中
    D、部分成员驻留在内存中

25、根据下面的定义,能打印出字母P的语句是( ) struct person { char name[9]; int age;}; struct person classes[10]={"John",17, "Paul",19,"Mary",18, "Adam",16};
    A、printf("%c\n",classes[2].name);
    B、printf("%c\n",classes[2].name[1]);
    C、printf("%c\n",classes[1].name[0]);
    D、printf("%c\n",classes[1].name[1]);

26、设有以下语句 typedef struct S { int g; char h;} T;则下面叙述中正确的是( )
    A、可以用S定义结构体变量
    B、可以用T定义结构体变量
    C、S是struct类型的变量
    D、T是struct S类型的变量

27、有以下程序: union pw { int i; char ch[2]; }a; void main() { a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); }程序的输出结果是 ( )
    A、13
    B、14
    C、208
    D、209

28、若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是( )
    A、a , point , *&a
    B、&*a , &a , *point
    C、*&point , *point , &a
    D、&a , &*point , point

29、若定义 int a[5],*p=a; ,则对a数组元素值的正确引用是().
    A、*&a[5]
    B、a+2
    C、*(p+5)
    D、*(a+2)

30、对二维数组int a[3][4]来说,第i行第j列的元素值可以用( )来表示
    A、*(a+i)+j
    B、a[i]+j
    C、*(*(a+i)+j)
    D、&a[i][j]

31、int a[5]={ 10,20,30,40,50 }, *p=&a[2]; printf("%d\n",*p+1);结果是( )
    A、10
    B、31
    C、20
    D、21

32、程序段char *s="abcde"; s+=2;printf("%s",s); 的运行结果是( )
    A、cde
    B、c
    C、bcde
    D、abcde

33、在C语言中,下面对文件的叙述正确的是 ()。
    A、用“r+”方式打开的文件只能从文件读数据
    B、用“r”方式打开的文件只能向文件写数据
    C、用“w”方式打开的文件只能用于向文件写数据,且该文件可以不存在
    D、用“w+”方式打开的文件只能用于向文件写数据,且该文件可以不存在

34、文件操作流程中的最后一个步骤是( )文件
    A、打开
    B、读取
    C、关闭
    D、存储

35、将键盘读入的学生信息,写入文件保存,正确的形式是()。
    A、printf(fp,"%8s%5d%8.2f\n",stu.name,stu.num,stu.score);
    B、printf("%8s%5d%8.2f\n",stu.name,stu.num,stu.score,fp);
    C、fprintf("%8s%5d%8.2f\n",stu.name,stu.num,stu.score,fp);
    D、fprintf(fp,"%8s%5d%8.2f\n",stu.name,stu.num,stu.score);

36、有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为3,c的值2,正确的数据输入方式是( )
    A、1 3 2
    B、1,3,2
    C、a=1 b=3 c=2
    D、a=1,b=3,c=2

C语言程序设计期末考试(在线编程测试部分)

1、选择结构习题:求三个数的最大值