您现在的位置是:首页 > 学无止境 > C语言网站首页C语言 C语言复习题
C语言复习题
- C语言
- 2018-06-01
简介适用于C语言程序设计(第三版)的期末复习题,里面大部分基础训练题,希望对学C语言的你有所帮助字数
2620
1.以下叙述不正确的是( D )
A.一个C源程序可有一个或多个函数组成.
B.一个C源程序必须包含一个main函数.
C.C程序的基本组成单位是语句.
D.在C程序中,注释说明只能位于一条语句的后面.
2.下面正确的定义语句是( D )
A.int a[1][4]={1,2,3,4,5};
B.double y[][3]= 0;
C.long b[2][3]={{1},{1,2},{1,2,3}};
D.float x[][3]={{1},{2},{3}};
3.设有程序段
int k=3;
while(k)
k=k-1;
则下面描述中正确的是( A )
A.while循环执行3次.
B.循环是无限循环.
C.循环体语句一次也不执行.
D.循环体语句执行一次.
4.C语言规定,简单变量做实参时,它和对应形参之间的数据传达方式是( B )
A.地址传递.
B.单向值传递.
C.由实参传给形参再有形参传回给实参.
D.由用户指定传递方式.
5.C语言规定,函数返回值的类型是由( D )
A.return语句中的表达式类型所决定.
B.调用该函数时的主调函数类型所定决.
C.调用该函数是系统时决定.
D.在定义该函数时所指定的函数类型所决定.
6.若用数组名作为函数调用的实参传递给形参的是( A )
A.数组的首地址.
B.数组第一个元素的值.
C.数组中全部元素的值.
D.数组元素的个数.
7.下面不是C语言合法标识符的是( D )
A.fine5
B.flag
C._score
D.&i
8.下面不正确的字符串常量是( A )
A.'file'
B."12'12"
C."0"
D."while"
9.以下关于long、int和short类型数据占用内存大小的叙述中正确的是( D )
A.均占4个字节
B.根据数据的大小来决定所占内存的字节数
C.由用户自己定义
D.由C语言编译系统决定
10.以下正确的字符串常量是( D )
A."\ \ \"
B.'abc'
C.Olympic Games
D.""
11.设有说明语句:char a=’\72’;则变量a( A )
A.包含1个字符
B.包含2个字符
C.包含3个字符
D.说明不合法
12.若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )
A.a:=b+1
B.a=b=c+2
C.int 18.5%3
D.a=a+7=c+b
13.C语言中运算对象必须是整型的运算符是( A )
A.%=
B./
C.=
D.<=
14.若有以下定义语句:int a[]={1,2,3,4,5,6,7,8,9,10}; 则值为5的表达式是( C )
A.a[5]
B.a[a[4]]
C.a[a[3]]
D.a[a[5]]
15.有以下定义语句:float a[11]={0,1,2,3,4,5,6,7,8,9,10};则以下叙述中错误的是( D )
A.a数组在内存中占44个字节
B.a数组的最后一个元素为a[10]
C.a数组的第一个元素为a[0]
D.不能正确赋值
16.变量的指针,其含义是指该变量的( B )
A.值
B.地址
C.名
D.一个标志
17.x为奇数时值为“真”,x为偶数时值为“假”的表达式是( C )
A.!(x%2==1)
B.x%2==0
C.x%2
D.!(x%2)
18.以下while循环中,循环体执行的次数是( C ) k=1;
while (--k)
k=10;
A.10次
B.无限次
C.一次也不执行
D.1次
19.以下选项中不合法的标识符是( C )
A. print
B.FOR
C.&a
D._00
20.以下定义语句中错误的是( A )
A.int a=b=0;
B.char A=65+1,b='b';
C.float a=1,*b=&a,*c=&b;
D.double a=0.0,b=1.1;
21.变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( A )
A.++x,y=x--
B.x+1=y
C.x=x+10=x+y
D.double(x)/10
22.设有定义:int a; float b;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876 543.0<回车>,a和b的值分别是( B )
A. 876和543.000000
B. 87和6.000000
C. 87和543.000000
D. 76和543.000000
23.若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10}; 则对a数组元素正确的引用是( D )
A. a[10]
B.a[a[3]-5]
C.a[a[9]]
D.a[a[4]+4]
24.有以下程序段
x=0;
while (!x!=0)
x++;
其中x为整型变量,以下选项中叙述正确的是( B )
A.退出while循环后,x的值为0
B.退出while循环后,x的值为1
C.while的控制表达式是非法的
D.while循环执行无限次
25.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( B )
A.k=*ptr1+*ptr2
B.ptr2=k
C.ptr1=ptr2
D.k=*ptr1*(*ptr2)
26.设有 int x=11; 则表达式 (x++ * 1/3) 的值是( A )
A.3
B.4
C.11
D.12
27.若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1;则执行后,c3中的值是( A )
A.0
B.0.5
C.1
D.2
28.下列数组的定义和初始化正确的是:( C )
A.int a[5]=(1,2,3,4,5)
B.int a{5}=[1,2,3,4,5]
C.int a[5]={1,2,3,4,5}
D.Int a(5)=[1,2,3,4,5]
29.下列关于数组的说法不正确的是:( D )
A.数组一旦被定义,就不能再改变它的大小
B.定义数组时可以用变量定义数组的大小
C.定义数组时可以用宏常量定义数组的大小
D.定义数组时可以用const常量定义数组的大小
30.int *pa=&a,下列说法不正确的是:( D )
A.pa是一个指针变量
B.pa指向整形变量a
C.pa的值为变量a的地址
D.pa的值为变量a的值
31.int *pa=&a,则*pa的值为:( A )
A.变量a的值
B.变量a的地址
C.非法值
D.不确定
32.关于指针变量的说法,下列不正确的是:( B )
A.指针变量与变量占用相同的内存单元
B.指针变量无需定义,可以直接使用
C.指针变量不占用内存单元
D.指针变量的内容只能是地址,不能是数据
33.关于C语言字符串的说法,下列正确的是:( D )
A.可以直接用str关键字定义一个字符串
B.字符串要用字符型数组来实现
C.可以向函数传递字符串
D.函数可以返回一个字符串指针
34.C语言中字符串的结束字符是( A )
A.'\0'
B.'\n'
C.'\c'
D.'\end'
35.下列关于C语言控制语句的说法,正确的是: ( C )
A.While 和do....while语句不可以相互转换
B.for语句不能转换为goto语句
C.嵌套函数也能实现循环功能
D.在循环嵌套中,一句break语句可以跳出所有的循环体
36.swith....case语句中,switch关键字后面的表达式可以是:( A )
A.char型或int 型
B.float型或int型
C.char型或float型
D.int型或double型
二.编程题
1.求主次对角线之和。
解题思路:for循环,主角线x,y相等,次角线x+y=c。
2.计算实际字符个数。
解题思路:用头文件为string.h 里面的函数strlen()来求实际字符个数,用sizeof就错了!
3.写一个函数MaxCommonFactor(),利用欧几里德算法(也称辗转相除法)计算两个正整数的最大公约数。
解题思路:辗转相除法,用最大的数除以最小的数,商作为除数,然后在用最小的数来做被除数。do-while里面的条件为商不为0,返回值为被除数。
4.已知abc+cba=1333,其中a、b、c均为一位数,例如:617+716=1333, 518+815=1333, 试编程求出符合这一规律的a、b、c,并输出结果。
解题思路:遇见这类问题,一看就是需要用for循环来做,a、c百位不能为0!
5.定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。
解题思路:用if来判断,两两大于第三边。
6.从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。
解题思路:for循环,用数组来存那10个整数。
7.写出将一个字符串(只包含数字)转换为整数的函数int toInt(char *strNumbers)(假定不会超出整数的表示范围),并在一个简单的程序中测试这个函数。
解题思路:传递的是指针,历到’\0’结束,然后用应该counter来记数,需要用到pow()函数。
8.输入某班学生某门课的成绩(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数。
解题思路:数组,if
9.三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配?
解题思路:for循环,用一个counter来计数
10.利用人工方式比较分数大小的最常见的方法是:对分数进行通分后比较分子的大小。请编程模拟手工比较两个分数的大小。首先输入两个分数分子分母的值,例如"11/13,17/19",比较分数大小后输出相应的提示信息。例如,第一个分数11/13小于第二个分数17/19,则输出"11/13<17/19"。
解题思路:可以尝试转为浮点计算
11.自定义一函数,逆序依次取出一字符串中所有小写字母,形成新的字符串。在主函数输入字符串输出新的字符串。如原来的字符串为“WRab67Yhg,c”,则新的字符串为“cghba”。
解题思路:数组,然后倒叙判断字符
12.求s=a+aa+数据库复习+数据库复习a+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
解题思路:1变成11为1*10+1 11变111为11*10+1 111变1111为111*10+1
13.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
解题思路:字符判断
转载:
感谢您对莫愁个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源莫愁个人博客 https://www.mochoublog.com/study/25.html”。
- C语言
- 2018-06-01
1.以下叙述不正确的是( D )
A.一个C源程序可有一个或多个函数组成.
B.一个C源程序必须包含一个main函数.
C.C程序的基本组成单位是语句.
D.在C程序中,注释说明只能位于一条语句的后面.
2.下面正确的定义语句是( D )
A.int a[1][4]={1,2,3,4,5};
B.double y[][3]= 0;
C.long b[2][3]={{1},{1,2},{1,2,3}};
D.float x[][3]={{1},{2},{3}};
3.设有程序段
int k=3;
while(k)
k=k-1;
则下面描述中正确的是( A )
A.while循环执行3次.
B.循环是无限循环.
C.循环体语句一次也不执行.
D.循环体语句执行一次.
4.C语言规定,简单变量做实参时,它和对应形参之间的数据传达方式是( B )
A.地址传递.
B.单向值传递.
C.由实参传给形参再有形参传回给实参.
D.由用户指定传递方式.
5.C语言规定,函数返回值的类型是由( D )
A.return语句中的表达式类型所决定.
B.调用该函数时的主调函数类型所定决.
C.调用该函数是系统时决定.
D.在定义该函数时所指定的函数类型所决定.
6.若用数组名作为函数调用的实参传递给形参的是( A )
A.数组的首地址.
B.数组第一个元素的值.
C.数组中全部元素的值.
D.数组元素的个数.
7.下面不是C语言合法标识符的是( D )
A.fine5
B.flag
C._score
D.&i
8.下面不正确的字符串常量是( A )
A.'file'
B."12'12"
C."0"
D."while"
9.以下关于long、int和short类型数据占用内存大小的叙述中正确的是( D )
A.均占4个字节
B.根据数据的大小来决定所占内存的字节数
C.由用户自己定义
D.由C语言编译系统决定
10.以下正确的字符串常量是( D )
A."\ \ \"
B.'abc'
C.Olympic Games
D.""
11.设有说明语句:char a=’\72’;则变量a( A )
A.包含1个字符
B.包含2个字符
C.包含3个字符
D.说明不合法
12.若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )
A.a:=b+1
B.a=b=c+2
C.int 18.5%3
D.a=a+7=c+b
13.C语言中运算对象必须是整型的运算符是( A )
A.%=
B./
C.=
D.<=
14.若有以下定义语句:int a[]={1,2,3,4,5,6,7,8,9,10}; 则值为5的表达式是( C )
A.a[5]
B.a[a[4]]
C.a[a[3]]
D.a[a[5]]
15.有以下定义语句:float a[11]={0,1,2,3,4,5,6,7,8,9,10};则以下叙述中错误的是( D )
A.a数组在内存中占44个字节
B.a数组的最后一个元素为a[10]
C.a数组的第一个元素为a[0]
D.不能正确赋值
16.变量的指针,其含义是指该变量的( B )
A.值
B.地址
C.名
D.一个标志
17.x为奇数时值为“真”,x为偶数时值为“假”的表达式是( C )
A.!(x%2==1)
B.x%2==0
C.x%2
D.!(x%2)
18.以下while循环中,循环体执行的次数是( C ) k=1;
while (--k)
k=10;
A.10次
B.无限次
C.一次也不执行
D.1次
19.以下选项中不合法的标识符是( C )
A. print
B.FOR
C.&a
D._00
20.以下定义语句中错误的是( A )
A.int a=b=0;
B.char A=65+1,b='b';
C.float a=1,*b=&a,*c=&b;
D.double a=0.0,b=1.1;
21.变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( A )
A.++x,y=x--
B.x+1=y
C.x=x+10=x+y
D.double(x)/10
22.设有定义:int a; float b;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876 543.0<回车>,a和b的值分别是( B )
A. 876和543.000000
B. 87和6.000000
C. 87和543.000000
D. 76和543.000000
23.若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10}; 则对a数组元素正确的引用是( D )
A. a[10]
B.a[a[3]-5]
C.a[a[9]]
D.a[a[4]+4]
24.有以下程序段
x=0;
while (!x!=0)
x++;
其中x为整型变量,以下选项中叙述正确的是( B )
A.退出while循环后,x的值为0
B.退出while循环后,x的值为1
C.while的控制表达式是非法的
D.while循环执行无限次
25.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( B )
A.k=*ptr1+*ptr2
B.ptr2=k
C.ptr1=ptr2
D.k=*ptr1*(*ptr2)
26.设有 int x=11; 则表达式 (x++ * 1/3) 的值是( A )
A.3
B.4
C.11
D.12
27.若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1;则执行后,c3中的值是( A )
A.0
B.0.5
C.1
D.2
28.下列数组的定义和初始化正确的是:( C )
A.int a[5]=(1,2,3,4,5)
B.int a{5}=[1,2,3,4,5]
C.int a[5]={1,2,3,4,5}
D.Int a(5)=[1,2,3,4,5]
29.下列关于数组的说法不正确的是:( D )
A.数组一旦被定义,就不能再改变它的大小
B.定义数组时可以用变量定义数组的大小
C.定义数组时可以用宏常量定义数组的大小
D.定义数组时可以用const常量定义数组的大小
30.int *pa=&a,下列说法不正确的是:( D )
A.pa是一个指针变量
B.pa指向整形变量a
C.pa的值为变量a的地址
D.pa的值为变量a的值
31.int *pa=&a,则*pa的值为:( A )
A.变量a的值
B.变量a的地址
C.非法值
D.不确定
32.关于指针变量的说法,下列不正确的是:( B )
A.指针变量与变量占用相同的内存单元
B.指针变量无需定义,可以直接使用
C.指针变量不占用内存单元
D.指针变量的内容只能是地址,不能是数据
33.关于C语言字符串的说法,下列正确的是:( D )
A.可以直接用str关键字定义一个字符串
B.字符串要用字符型数组来实现
C.可以向函数传递字符串
D.函数可以返回一个字符串指针
34.C语言中字符串的结束字符是( A )
A.'\0'
B.'\n'
C.'\c'
D.'\end'
35.下列关于C语言控制语句的说法,正确的是: ( C )
A.While 和do....while语句不可以相互转换
B.for语句不能转换为goto语句
C.嵌套函数也能实现循环功能
D.在循环嵌套中,一句break语句可以跳出所有的循环体
36.swith....case语句中,switch关键字后面的表达式可以是:( A )
A.char型或int 型
B.float型或int型
C.char型或float型
D.int型或double型
二.编程题
1.求主次对角线之和。
解题思路:for循环,主角线x,y相等,次角线x+y=c。
2.计算实际字符个数。
解题思路:用头文件为string.h 里面的函数strlen()来求实际字符个数,用sizeof就错了!
3.写一个函数MaxCommonFactor(),利用欧几里德算法(也称辗转相除法)计算两个正整数的最大公约数。
解题思路:辗转相除法,用最大的数除以最小的数,商作为除数,然后在用最小的数来做被除数。do-while里面的条件为商不为0,返回值为被除数。
4.已知abc+cba=1333,其中a、b、c均为一位数,例如:617+716=1333, 518+815=1333, 试编程求出符合这一规律的a、b、c,并输出结果。
解题思路:遇见这类问题,一看就是需要用for循环来做,a、c百位不能为0!
5.定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。
解题思路:用if来判断,两两大于第三边。
6.从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。
解题思路:for循环,用数组来存那10个整数。
7.写出将一个字符串(只包含数字)转换为整数的函数int toInt(char *strNumbers)(假定不会超出整数的表示范围),并在一个简单的程序中测试这个函数。
解题思路:传递的是指针,历到’\0’结束,然后用应该counter来记数,需要用到pow()函数。
8.输入某班学生某门课的成绩(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数。
解题思路:数组,if
9.三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配?
解题思路:for循环,用一个counter来计数
10.利用人工方式比较分数大小的最常见的方法是:对分数进行通分后比较分子的大小。请编程模拟手工比较两个分数的大小。首先输入两个分数分子分母的值,例如"11/13,17/19",比较分数大小后输出相应的提示信息。例如,第一个分数11/13小于第二个分数17/19,则输出"11/13<17/19"。
解题思路:可以尝试转为浮点计算
11.自定义一函数,逆序依次取出一字符串中所有小写字母,形成新的字符串。在主函数输入字符串输出新的字符串。如原来的字符串为“WRab67Yhg,c”,则新的字符串为“cghba”。
解题思路:数组,然后倒叙判断字符
12.求s=a+aa+数据库复习+数据库复习a+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
解题思路:1变成11为1*10+1 11变111为11*10+1 111变1111为111*10+1
13.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
解题思路:字符判断
转载: 感谢您对莫愁个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源莫愁个人博客 https://www.mochoublog.com/study/25.html”。
下一篇:五子棋源文件分享