C语言练习题
- 格式:doc
- 大小:135.50 KB
- 文档页数:20
练习一1、把十进制数56,-74转化为对应的二进制数,并分别写出它们的8位原码和补码。
2、什么是浮点数?计算机内部是如何存储浮点数的?3、什么是ASCII码?ASCII码编码方案有何特点?试述常用字符的大致编码顺序。
4、什么是汉字的机内码?在计算机的内存中如何区分机内码与ASCII码?5、试述计算机内部采用二进制工作的原因,以及计算机的工作原理。
6、试述程序设计的概念,以及程序设计的基本过程。
7、什么是算法?算法有哪些特性和描述方法?算法与程序的关系如何?8、什么是高级语言?有哪些主要的高级语言?9、什么是标识符和关键字?它们分别有什么作用?10、标识符是如何构成的?使用标识符时应注意哪些问题?11、下列字符序列中,哪些可以构成合法的标识符?signed a-1 x_y_1 $use π0x56 sum num# _1234 age12、试述C程序的基本结构。
13、试述C程序上机的全过程,并解释这过程中产生的各类错误的含义。
练习二1、C语言的基本数据类型有哪些?数据类型对数据的表示和运算有什么约束?2、什么是常量?数值常量和符号常量有何区别?使用符号常量有什么好处?3、什么是变量?变量的名字、地址、值、类型有什么关系?4、如何定义变量?C语言中为什么规定变量必须先定义,后使用?5、常量也有数据类型,请问如何区分整型常量和实型常量的数据类型?6、字符常量与字符串常量的表示形式有何区别?'a'和"a"有什么不同?7、字符串常量"\\\34ab\n"中有多少个字符?8、下列表达式计算时,哪些地方会发生类型转换?从什么类型转换到什么类型?表达式计算的结果是什么类型?值多少?(1) 2.5+2*7%2/4 (2) 4*(2L+6.5)-12(3) 10/(5*3) (4) 2*10.0/(5*3)9、设有变量定义:float x=2.7,y=4.5; int a=8; 求表达式y+a%5*(int)(x+y)/2%4 的值。
c 语言基础练习题及答案一、单项选择题1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为_c_A 、”.c” B、“ .obj ” C、“ .exe” D 、“ .bas”2. 以下选项中不正确的整型常量是_c ______ 。
A、12L B 、-10 c、1,900 D、123U3. 表达式___c___ 的值是0。
A、3%5B、3/5.0 c、3/5 D、3<54. 表达式!(x>0||y>0) 等价于__D___ 。
A 、!x>0||!y>0B 、!(x>0)||!(y>0) c 、!x>0&&!y>0 D 、!(x>0)&&!(y>0)5. 若变量已正确定义并赋值,表达式__D ____ 不符合c 语言语法。
A、4&&3 B 、+a c、a=b=5 D 、int(3. 1 4)6. 若变量已正确定义,执行语句scanf(%d%d%d ,&k1,&k2,&k3) ;时,___BA 、2030,40 B、20 30 40 c、20, 30 40 D 、20, 30,407. 执行语句printf( ” __D ____ ” , 2); 将得到出错信息。
A、%dB、%o c、%x D 、%f8. 设变量定义为"int s[ ]=hello\nworld\n; ”则数组s中有—B __________ 个元素。
A、12B、13 c、14 D、159. 设变量定义为“ int a[2]={1,3}, *p=&a[0]+1; ” 则*p 的值是___B_。
A、2B、3 c、4 D、&a[0]+110. 若变量已正确定义并赋值,表达式-k++ 等价于__A________ 。
A、-(k++) B 、(-k)++ c、-(k+1) D、-(++k)11. 在c 语言程序中,在函数内部定义的变量称为__D ____ 。
一单项选择题【1】1.( A )是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从 C 开始执行。
A) 程序中第一条可执行语句 B) 程序中第一个函数C) 程序中的main函数 D) 包含文件中的第一个函数3、以下说法中正确的是( C )。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是( B )。
A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。
C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是( B )。
A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是( C )。
A) %x B) a+b C) a123 D) 123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。
A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D )。
《C语言》练习题及答案解析一.选择题1.下列字符序列中,不可用作C语言标识符的是(B)。
A.abc123 B.no.1 C._123_ D._ok2.一个C语言源程序是由(B)。
A.一个主程序和若干子程序组成B.一个或多个函数组成C.若干过程组成D.若干子程序组成3. 正确的C语言标识符是(A )。
A._buy_2 B.2_buy C.?_buy D.buy?4.已知字母A的ASCII码为十进制数65,且S为字符型,则执行语句S=’A’+’6’-’3’;后,S中的值为(A)。
A.’D’B.68 C.不确定的值D.’C’5.下列说法中,错误的是(A)。
A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外C.主函数只能调用用户函数或系统函数,用户函数可以相互调用D.程序是由若干个函数组成的,但是必须有且仅有一个主函数6.有如下程序段,从键盘输入数据的正确形式应是(B)。
(注:└┘代表空格)float x,y,z;scanf(“x=%d,y=%d,z=%d”,&a,&y,&z);A.123 B.x=1,y=2,z=3C.1,2,3 D.x=1└┘ y=2└┘ z=37.在C语言中,char型数据在内存中的存储形式是(D)。
A.补码B.反码C.原码D.ASCII码8. 下列符号中,不属于转义字符的是(B )。
A.\\ B.\0xAA C.\t D.\09. 不属于C语言关键字的是(D)。
A.int B.break C.while D.character10. 以下说法中正确的是(C)。
A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main( )函数中定义C.C语言程序总是从main( )函数开始执行D.C语言程序中的main( )函数必须放在程序的开始部分11. C语言程序的基本单位是(C)。
1、编程题1.输入2个整数,求两数的平方和并输出。
#include <stdio.h>int main(void){ intt a ,b,s;printf("please input a,b:\n");scanf("%d%d”,&a,&b);s=a*a+b*b;printf("the result is %d\n",s);return 0;}2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。
#include <stdio.h>#define PI 3.14int main(void){ double r ,area , girth;printf("please input r:\n");scanf("%lf",&r);if (r>=0){ area =PI*r*r;girth =2*PI*r ;printf("the area is %.2f\n", area);printf("the girth is %.2f\n", girth);}elseprintf("Input error!\n");return 0;}3、已知函数y=f(x),编程实现输入一个x值,输出y值。
2x+1 (x<0)y= 0 (x=0)2x-1 (x>0)#include <stdio.h>void main(){ int x,y;scanf(“%d”,&x);if(x<0) y=2*x+1;else if(x>0) y=2*x-1;else y=0;printf(“%d”,y);}4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。
一、单项选择题一、基本概念1. C语言程序是由 C 构成的。
A)一些可执行语言 B)main函数 C)函数 D)包含文件中的第一个函数2.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程3.C语言程序从 C开始执行。
A) 程序中第一条可执行语句 B) 程序中第一个函数C) 程序中的main函数 D) 包含文件中的第一个函数4.C语言程序从main()函数开始执行,所以这个函数要写在_D___。
A) 程序文件的开始 B) 程序文件的最后C) 它所调用的函数的前面 D) 程序文件的任何位置5、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分6. 下列方法中错误的是(D)。
A.主函数可以分为两个部分:主函数说明部分和主函数体。
B.主函数可以调用任何非主函数的其它函数。
C.任何非主函数可以调用其它任何非主函数。
D.程序可以从任何非主函数开始执行。
7.下列关于C语言的说法错误的是( B )。
A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。
C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行8. 系统默认的C语言源程序扩展名为.C,需经过 C 之后,生成.exe文件,才能运行。A) 编辑、编译 B )编辑、连接 C) 编译、连接 D) 编辑、改错二、数据类型、运算符与表达式1. 不是C语言提供的合法关键字是(B)。
A.switchB.cherC.caseD.default4.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.int t5. 下列C语言用户标识符中合法的是( B )。
A、*yB、sumC、intD、%5f6. 下面四个选项中,合法的标识符是:(D)A. autoB. defineC. 6aD. c7.下列C语言用户标识符中合法的是( B)。
综合强化练习一一、选择题(每题1分,共40分)1、以下叙述正确的是( )A)C语言总是从第一个定义的函数开始执行B)在C程序中,要调用的函数必须在main函数中定义C)C程序的执行总是从main函数开始执行的D)C程序中的main函数必须放在程序的开始部分2、下列合法的用户标识符为( )A)_4sum B) static C) 1max D) #dtotal3、ch为字符型变量,则下面赋值语句正确的为( )。
A)ch="ABC" B) ch="A" C) ch= a D) ch=674、C语言中整形常量有哪几种形式( )A) 十进制、八进制、十六进制B) 二进制、十进制、八进制、十六进制C) 二进制、八进制、十六进制D) 二进制、十进制5、字符串" China "在内存中占用的字节数是( )A) 1 B) 2 C) 5 D) 66、int x,y; x=7/2;y=7/2.0;则x的值为( )A) 3.500000 3D)3 37、下面程序int x=0x2B; printf("%d",x);的输出结果为( )A) 2B B) 0x2B C) 43 D) 448、实型常量用指数形式表示,下列哪一项不是合法的( )A)C)356e39、设有语句int a=3;则执行了语句a-= a+=a*a;后变量a的值是( )A)0 B)3 C) -9 D) -310、下列字符中,错误的转义字符是( )A)'\085' B) '\\' C) '\0' D) '\n '11、下面程序的输出结果是( )int a=2;if(a=5) a=a+2;printf("%d ",a);A) 2 B) 4 C) 5 D)712、下列程序段的循环次数是( )int k=0;while(k= =0) printf("%d",k);k--; printf ("\n");A) 无限次B) 0 次C) 1次D)2次13、下列说法正确的是( )A) 在循环体中可以用break语句结束本次循环B) 在循环体中可以用continue语句结束本次循环C) break语句仅能使用在switch结构中D) 可以使用continue语句跳出switch结构14、以下正确的函数形式是()。
一、选择题(每题 1 分,共20 分)1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。
A、循环B、递归C、转移D、嵌套2.下列标识符中,合法的是_______ 。
A) unsigned B) 5ab C) INT# D)_num23.若float x ;x = 10/4 ;x的值是。
A、B、2.0 C、3 D、24.表达式!x 等价于。
A、x==0B、x==1C、x != 0D、x != 15.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。
A、算术运算、赋值运算、关系运算B、关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算6.能将高级语言编写的源程序转换为目标程序的是。
A、链接程序B、解释程序C、编译程序D、编辑程序7.下列语句定义pf为指向float类型变量f的指针,是正确的。
A、float f, *pf = f;B、float f, *pf = &f;C、float *pf = &f, f;D、float f, pf = f;8.一个C程序的执行是从。
A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束9.能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。
A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B、(x>=1)||(x<=10)||(x>=200)||(x<=210)C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210)D、(x>=1)||(x<=10)&&(x>=200)||(x<=210)10.对两个数组a和b进行如下初始化char a[]=“ABC DEF”;char b[]={ ‘A’,’B’,’C’,’D’,’E’,’F’};则以下叙述正确的是。
一、单项选择题1.以下有4组用户标识符,其中合法的一组是()。
A) for B) 4d C) f2_G3 D) WORD-sub2.以下选项中合法的字符常量是()。
A) "B" B) '\t' C) 68 D) D3.假定x和y为double型,则表达式x=2, y=x+1/2的值是()。
A) 2.500000 B) 2 C) 2.000000 D) 3.0000004.若变量已正确定义并赋值,下面符合C语言语法的表达式是()。
A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b5.C语言中运算对象必须是整型的运算符是()。
A) %= B) / C) = D) <=6.若变量已正确定义并赋值,下面符合C语言语法的表达式是()。
A)a = 9+b = 5+c B)a = 9+b; c = a+9; C)a=12.5%3 D)a = (9+b, c++)7.若有以下程序段,则执行后,c3的值是()。
int c1=1, c2=2, c3;c3=1.0/c2*c1;A) 0 B) 0.5 C) 1 D) 28.设x、y均为整型变量,且x=10 y=3,则语句printf("%d, %d\n",--x, y++) ; 的输出结果是()。
A)9, 4 B)9, 3 C)10, 4 D)10, 39.若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=12,c=a-b)后num的值为()。
A)-8 B)4 C)12 D)810.若有说明语句:char *str="\t\‟c\\Language\n" ; ,则指针str所指字符串的长度为()。
A)13 B)15 C)17 D)该语句不正确11.以下对结构体类型变量rcard 的定义中不正确的是()。
A) #define REC struct card B) struct cardREC { int id; float sala; { int id; float sala; };}rcard; struct card rcard;C) struct card D) struct{ int id; float sala; }; { int id; float sala; } rcard;card rcard;12.设ch是char类型变量,其值是'A',则以下表达式的值是()。
ch = (ch>=‟A‟&& ch<=‟Z‟) ? (ch+32) : chA)Z B)A C)a D)z13.在一个源程序文件中定义的全局变量的作用域为()。
A)本文件的全部范围B)主函数及其所调用的函数C)离定义该变量的位置最近的函数D)从定义该变量的位置开始至本文件结束14.若有定义:char a[20], b[20]; ,以下能为a、b正确进行赋值的语句是()。
A)gets(a, b) ; B)gets(a) ; gets(b) ;C)getchar(a) ; getchar(b); D)scanf(“%s%s” , a[ ] , b[ ] ) ;15.若有说明语句:int a[2][3], m, n; 且0≤m≤1,0≤n≤2,则以下对数组元素的正确引用形式是()。
A)a[m]+n B)(a+m)[n] C)*(a+m)+n D)*(*(a+m)+n)16.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);17.在C语言中,二维数组元素在内存中的存放规则是:()。
A)所有元素都连续存放,并按行存放B)所有元素都连续存放,并按列存放C)同一行元素连续存放D)同一列元素连续存放18.若有定义:int c[5], *p=c; ,则以下对c数组元素地址的正确引用是()。
A)p+5 B)c++ C)&c+1 D)&c[0]19.t为int类型,进人下面的循环之前,t的值为0while (t=-8){ ……}则以下叙述中正确的是()。
A) 循环控制表达式的值为0 B) 循环控制表达式的值为1C) 循环控制表达式不合法D) 以上说法都不对20.若有说明语句:int x1=3, x2=0, x3=0; ,以下程序段()。
if(x1=x2+x3) printf("* * * *");else printf("# # # #");A)输出* * * * B)输出# # # # C)存在语法错误D)无输出结果21.若用fopen函数创建一个新的二进制文件,要求文件既能读也能写,则应选用的文件方式字符串是()。
A)"wb+" B)"w+" C)"rb+" D)"r+"22.设x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是()。
printf("%d,%d\n", --x, y++);A) 10,4 B) 9,3 C) 9,2 D) 10,223.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。
A) 地址传递B) 单向值传递C) 由实参传给形参,再由形参传回实参D) 传递方式由用户指定24.以下对一维数组a的正确说明是()。
A)char a(10); B)int a[ ]; C)int k=5, a[k]; D)char a[ ]={'1','a','%'}; 25.若执行fopen函数时发生错误,则函数的返回值是()。
A)随机数B)1 C)NULL D)EOF26.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是()。
A) i=*p; B) *p=j; C) i=&j; D) i=**p;27.以下定义语句中,错误的是()。
A) int a[]={1,2}; B) char *a[3]; C) char s[10]="test"; D) int n=5, a[n]; 28.当定义一个结构体变量rcard时,系统分配给它的内存是()。
A)结构体中第一个成员所需的内存容量B)结构体中最后一个成员所需的内存容量C)结构体成员中占内存量最大者所需的容量D)结构体中各成员所需内存容量的总和29.以下程序存在语法错误,关于错误原因的正确说法是()。
main( ){ void search_n(int A);int A[5]={5, 4, 0, 7, 1}, b;……b=search_n(A);……}A)void search_n( ); 是函数调用语句,不能使用void说明B)函数声明和函数调用语句之间有矛盾C)变量名不能使用大写字母D)函数名不能使用下划线30.若k为整型变量,则以下for循环的执行次数是()。
for(k=2; k! =0;)printf(“%d”, k--);A)无限次B)0次C)1次D)2次31.若有以下调用语句,则不正确的fun函数的首部是()。
main( ){ ……int a[50], n ;……fun(n, a) ;……}A)void fun (int m, int a ) B)void fun (int m, int x[ ] )C)void fun (int m, int *s) D)void fun (int m, int x[50 ] )32.以下关于预处理的叙述中不正确的是()。
A)预处理命令行必须位于源程序的开始部位B)预处理命令是在正式编译之前先行被处理的C)一条有效的预处理命令行必须单独占据一行D)C源程序中凡是以“#”号开始的控制行都是预处理命令行33.若有定义:int *p [3]; ,则以下叙述正确的是()。
A)p是一个指针数组,数组p有3个元素,每个元素是指针B)p是一个指针变量,它可以指向一个一维数组中的任意元素C)p是一个指针变量,它可以指向一个含有3个整型元素的一维数组D)(*p)[3]等价于*p [3]34.以下选项中,不能正确赋值的是()。
A) char s1[10];s1="Ctest"; B) char s2[ ]={'C', 't', 'e','s', 't'};C) char s3[20]="Ctest"; D) char *s4="Ctest\n"35.判断char型变量c1是否为大写字母的正确表达式是()。
A)'A'<=c1<='Z'B)(c1>='A') & (c1<='Z')C)(c1>='A') && (c1<='Z') D)('A'<=c1) AND ('Z'>=c1)36.C语言规定:在源程序中,main函数的位置()。
A)必须在最开始B)必须在最后C)可以任意D)必须在被调用的函数前面37.若有以下说明和语句,则对结构体变量std中成员的引用方式不正确的是()。
struct work{ int id;int name;}std, *p;p=&std;A)std.id B)(*p)->id C)(*p).id D)p->id38.若有语句char s1[10], s2[10]="abcdef" ; ,则能将字符串abcdef赋给数组s1的正确语句是()。
A)s1 = "abcdef" ; B)s1 = s2 ; C)strcpy(s1,s2) ; D)strcpy(s2,s1) ;39.设有定义:char s[20]="ABCDEF"; ,则数组s在内存中所占字节数是()。
A) 6 B) 7 C) 20 D) 不确定40.以下正确的函数定义形式是()。