C模拟练习题
- 格式:doc
- 大小:43.50 KB
- 文档页数:7
《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)。
一、C语言基本知识和基本语句(一)选择题1.设a,b和c都是int型变量,且a=3,b=4,c=5则下面的表达式中,值为零的表达式是()。
A)‘a’&&’b’ B) a<=bC) a || b+c&&b-c D) ! ((a<b)&&! C|| 1)2.设ch是char型变量,其值为A字符,且有表达式:ch= (ch >= ‘A’ && ch <=‘Z’) ? ( ch + 32):ch,则表达式ch的值是()字符。
A) A B) a C) Z D) z3.若x和y都是int 型变量,x=100,y=200,且有程序段:printf (“%d”,(x,y));则输出结果是()。
A) 200 B)100 C) 100,200 D)输出格式不够,输出不确定的值4.C语言中最简单的数据类型包括()。
A)整型、实型、逻辑型 B) 整型、单精度型、双精度、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型5.C语言中,运算对象必须是整型的运算符是()。
A)% B) / C) % 和 / D) **6.数学关系x≥y≥z ,它对应C语言表达式是()。
A)(x>=y)&& (y>=z ) B) (x>=y) AND (y>=z )C) (x>=y>=z) D) (x>=y) & (y>=z )7.以下说法中正确的是()。
A)C语言程序总是从第一个定义的函数开始执行B) 在C语言程序中,要调用的函数必须在main()函数中定义C) C语言程序总是从main()函数开始执行D) C语言程序中的main()函数必须放在程序的开始部分8.设int x=10,y=3,z;则语句printf (“%d\n”,z=(x%y,x/y));的输出结果是()。
一、选择题1. 以下程序的运行结果是。
#include<stdio.h>int fun(int n){int m=0,f=-1,i;for(i=1;i<=n;i++){m=m+i*f;f=-f;}return m;}int main(){printf("m=%d\n",fun(10));return 0;}A.m=5 B.m=-6 C.m=6 D.m=-52. C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是。
A.地址传递B.单项值传递C.由实参传给形参,再由形参传回给实参D.由用户指定传递方式3. 以下程序有语法性错误,有关错误原因的正确说法是。
#include<stdio.h>int main(){int G=5,k;void prt_char ( );...k=prt_char(G);...}A.语句void prt_char( ); 有错,它是函数调用语句,不能用void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线4. 以下程序的运行结果是。
#include<stdio.h>int fun(int a,int b){if(a>b) return (a+b);else return (a-b);}int main(){int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);return 0;}A.-16 B.-17 C.17 D.165. 以下程序的功能是计算函数F(x,y,z) = (x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include<stdio.h>#include<math.h>float f(float,float);int main( ){float x,y,z,sum;scanf("%f%f%f",&x,&y,&z);sum=f( )+f( );printf("sum=%f\n",sum);return 0;}float f(float a,float b){float value;value=a/b;return value;}A.x-y, x+y B.x+y, x-y C.z+y, z-y D.z-y, z+y A.x-y, x+y B.x+y, x-y C.z+y, z-y D.z-y, z+y 6. 以下程序可选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。
第一章C语言基础知识1.1 选择题1. 以下不是C语言的特点的是()。
BA、语言简洁紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件操作D、C语言移植性好2. 下列字符序列中,不可用作C语言标识符的是()。
BA.abc123 B. C._123_ D._ok 3. 正确的C语言标识符是()。
AA._buy_2 B.2_buy C._buy D.buy4. 请选出可用作C语言用户标识符的一组标识符()。
BA.void B.a3_b3 C.For D.2a define _123 -abc DOWORD IF Case sizeof5. 下列符号中,不属于转义字符的是()。
BA.\\ B.\0xAA C.\t D.\06. 不属于C语言关键字的是()。
dA.int B.break C.while D.character 7. 是C语言提供的合法关键字的是()。
bA.Float B.signed C.integer D.Char8. 以下不能定义为用户标示符的是()。
bA.scanf B.Void C._3com_ D.int9. 一个C程序是由()。
bA.一个主程序和若干子程序组成B.一个或多个函数组成C.若干过程组成D.若干子程序组成10. C语言程序的基本单位是()。
cA.程序行 B.语句 C.函数 D.字符11. 下列说法中,错误的是()。
aA.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外C.主函数只能调用用户函数或系统函数,用户函数可以相互调用D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数12. 以下说法中正确的是()。
cA.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main( )函数中定义C.C语言程序总是从main( )函数开始执行D.C语言程序中的main( )函数必须放在程序的开始部分13. C编译程序是()。
目录第一章程序设计和C语言 (2)第二章最简单的C程序设计 (2)第三章选择结构程序设计 (4)第四章循环结构程序设计 (7)第五章数组 (11)第六章函数 (14)第七章指针 (18)第一章程序设计和C语言一、选择题:1.一个C程序的执行是从( )A、本程序的main函数开始,到main函数结束B、本文件第一个函数开始,到本文件的最后一个函数结束C、本程序的main函数开始,到本文件的最后一个函数结束D、本文件的第一个函数开始,到本文件的main结束2.以下说法不正确的是()A、一个C源程序可由一个或多个函数组成B、一个C程序必须包含一个main函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面3.C语言规定:在一个源程序中,main函数的位置()A、必须在开始B、必须在系统调用的库函数的位置C、可以任意D、必须在最后4.源程序program.c经编译产生的目标文件和连接后产生的可执行文件是( )A、program.bak和program.objB、program.obj和program.exeC、program.exl和program.cD、program.bak和prgram.exe第二章最简单的C程序设计一、选择题1.是合法的用户自定义标识符的( )A、ah-spksB、doubleC、<ctrl>D、_myapple2.以下正确的C语言标识符是()A、%xB、a+bC、a123D、test!3.以下不能定义为用户标识符的是( )A、V oidB、b_2C、intD、name4.以下选项中可作为C语言合法整数的是( )A、11010(B)B、0583C、x2b2D、0xafb5.VC++6.0中的短整型数值在计算机中占用的字节个数是( )A、1B、2C、3D、46.设short int型的数据长度为2个字节,则unsigned short 类型数据的取值范围是()P34A、均为2个字节B、0至65535C、-3276至32767D、-256至255 7.以下选项中可作为C语言合法常量的是()(指数E或e前必须有数字,后面必须有整数)A、-80.0B、-080C、-8e1.2D、-80.0e8.在VC++6.0编译环境下,下列式中,值不为4的表达式是()P34,double为8字节A、sizeof(unsigned long)B、sizeof(long)C、sizeof(unsigned int)D、sizeof(double)9.设有说明语句:char a=’\123’;则变量a( )一个ascii字符A、包含1个字符B、包含2个字符C、3个字符D、说明不合法10.设x为一数字字符,则其所对应的十进制数值为()。
综合强化练习一一、选择题(每题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. 设有如下程序段,则下面描述正确的是int k=10;while (k=0) k=k-1;A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次2. 下面程序段的运行结果是a=1; b=2; c=2;while(a<b<c) { t=a; a=b; b=t; c--;}pirntf(“%d, %d, %d”,a,b,c);A.1,2,0 B.2,1,0 C.1,2,1 D.2,1,13. 下面程序段的运行结果是。
int n=0;while(n<=2) n++; printf(“%d”,n);A.2 B.3 C.4 D.有语法错误4. 设有如下程序段,则描述正确的是。
t=0;while (printf(“*”)){t++; if(t<3) break;}A.其中循环控制表达式与0等价B.其中循环控制表达式与‘0’等价C.其中循环控制表达式是不合法的D.以上说法都不对5. 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对等数时结束循环,请选择填空。
#include<stdio.h>int main(){int a,b,t;scanf("%d%d",&a,&b);while( ){if(a>b) {t=a;a=b;b=t;}printf("%d,%d\n",a,b);scanf("%d%d",&a,&b);}return 0;}A.!a=b B.a!=b C.a==b D.a=b6. 下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
#include<stdio.h>int main(){int m=0,n=0;char c;while(( )!='\n'){if(c>='a' && c<='z') n++;if(c>='A' && c<='Z') m++;}printf("%d\n",m<n? );return 0;}A.c= =getchar( ) B.getchar( ) C.c=getchar( ) D.scanf(“%c”,c)A.n:m B.m:n C.m:m D.n:n7. 下面程序的功能是将小写字母变成对应大写字母后的第二个字母。
C语言试题练习及答案(都是历年的考题)第一部分:选择题(40分,20小题/套)概述1、下面关于C语言的叙述中,正确的是()A. 每行只能写一条语句B. 程序中必须包含有输入语句C. main函数必须位于文件的开头D. 每条语句最后必须有一个分号 2、下面关于C语言的叙述中,错误的是() A. 若一条语句较长,也可分写在下一行上 B. 构成C语言源程序的基本单位是表达式 C. C语言源程序中大、小写字母是有区别的 D. 一个C语言源程序可由一个或多个函数组成 3、关于C语言数据类型的叙述,正确的是()A. 枚举类型不是基本类型B. 数组不是构造类型C. 变量必须先定义后使用D. 不允许使用空类型 4、C程序中main函数的位置()A. 必须在最开始B. 必须在系统库函数后面C. 可以在自定义函数后面D. 必须在最后 5、C语言的函数体由()括起来A. ( )B. { }C. [ ]D. /* */6、关于C语言的叙述中,不正确的是()A. C程序可由一个或多个函数组成B. C程序必须包含一个main()函数C. C程序的基本组成单位是函数D. 注释说明只能位于一条语句的后面 7、一个程序的执行是从()A. 本程序的第一个函数开始,到最后一个函数结束B. 本程序的main函数开始,到main函数结束C. 本程序的main函数开始,到最后一个函数结束D. 本程序的第一个函数开始,到main函数结束 8、结构化程序设计的三种基本结构是()A. 函数结构、分支结构、判断结构B. 函数结构、嵌套结构、平行结构C. 顺序结构、分支结构、循环结构D. 分支结构、循环结构、嵌套结构 9、调试程序是指对程序进行()A. 编辑B. 编译C. 查错和排错D. 连接10、C语言中,复合语句的构成是将一系列语句置于() A. begin与end之间B. 一对圆括号“()”之间C. 一对花括号“{ }”之间D. 一对方括号“[ ]”之间 11、构成C语言源程序的基本单位是() A. 语句 B. 过程 C. 表达式 D. 函数语法基础12、在C语言中,正确的用户标识符是() A. 3f B. _for C. structD. _f.5113、C语言的基本数据类型包括()A. 整型、实型、字符型B. 整型、实型、字符型、逻辑型C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型 14、以下()是正确的常量A. E-5B. 1E5.1C. ?a12?D. 32766L 15、以下()是正确的变量名A. a.beeB. �Cp11C. intD. p_11 16、以下()是正确的字符常量A. “c”B. ?//”C. ?W?D. “\\32a” 17、以下()是不正确的字符串常量A. ?abc?B. “12?12”C. “0”D. “ “ 18、C语言的整型数据在内存中的存储形式是() A. 原码 B. 反码 C. 补码 D. ASCII码19、以下()是正确的浮点数A. e3B. .62C. 2e4.5D. 123 20、下列不属于C语言关键字的是()A. continueB. integerC. staticD. signed 21、C语言的字符型数据在内存中的存储形式是() A. 原码 B. 补码 C. 反码 D.ASCII 22、在C语言中,变量所分配的内存空间大小是() A. 由变量的类型决定B. 由用户自己决定C. 任意的D. 均为两个字节23、若有定义:int a=2;则正确的赋值表达式是()A. a-=(a*3)B. double(-1)C. a*3D. a*4=3 24、语句x=(a=3,b=++a);运行后,x、a、b的值依次为() A. 3,3,4 B. 4,4,3 C.4,4,4 D. 3,4,3 25、语句a=(3/4)+3%2;运行后,a的值为() A. 0 B. 1 C. 2 D. 326、以下四项中,符合C语言语法的语句是()A. int a+b=c;B. int a=12:b=12:c=12;C. int a=12,b=12,c=12;D. int a,b=12,float c=2127、若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为() A.3,3 B. 4,4 C. 4,3 D. 3,428、若变量已正确定义并赋值,符合C语言语法的表达式是()A. a=8+b+c,a++B. a=3aC. int(12.3%4)D. a=a+1=c+b 29、若有定义:int a,b;double x;则以下不符合C语言语法的表达式是() A. x%(-3) B. a+=-1 C. a=b=2 D. x=a+b30、若有定义:int x=2,y=3;float i;则以下符合C语言语法的表达式是() A.x=x*3=2 B. x=(y==1) C. i=float(x) D. i%(-3) 31、若有定义:int x;则语句x=(2*3)+6%5;运行后,x的值是()A. 8B. 7C. 6D. 532、下面关于C语言变量的叙述中,错误的是()A. 可以用const关键字定义变量B. 在C程序中,SUM和sum是不同的变量C.变量名必须由字母或下划线组成 D. 变量的类型确定了变量的取值范围233、若有定义:int x=5,y=6;则表达式x=(y= =6)的值为() A. 5 B. 1C. 6D. 0 34、下面叙述正确的是()A. 2/3与2.0/3.0等价B. (int)2.0/3与2/3等价C. ++5与6等价D. ?A?与”A”等价 35、下面叙述中,错误的是()A. C语言基本的算术运算符不包含模运算符”%”B. 算术运算符的优先级高于关系运算符C. 自加和自减运算符的结合方向是”自右向左”D. C语言规定在表达式求值时,按其中运算符的优先级先高后低的次序进行 36、下面叙述正确的是()A. 强制类型转换运算的优先级高于算术运算B. 若a和b是整型变量,(a+b)++是合法的 C. ?A?*?B?是不合法的 D. “A”+”B”是合法的 37、若有定义:int i=1,j=5;则表达式(++j)*(i--)的值为() A. 1 B. 0 C. 6 D. 738、设整型变量a为5,使b不为2的表达式是()A. b=(++a)/3B. b=6-(--a)C. b=a%2D. b=a/239、若有定义:int a=1,b=2,c=3;则语句++a||++b&&++c;运行后b的值为() A. 1B. 0C. 2D. 340、若有定义:int i,j;则表达式(i=2,j=5,i++,i+j++)的值是() A. 7 B.8 C. 9 D. 1041、若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是() A. 7 B.8 C. 9 D. 1042、若有定义:int i=2,j=5;则表达式(i+1,j+1,(++i+(j--))的值为() A. 8B. 6C. 7D. 543、若已定义:int i=3,k;则语句k=(i--)+(i--);运行后k的值为() A. 4B. 5C. 6D. 744、C语言的运算符按运算对象的个数可以分为() A. 单目运算符一种 B.单目和双目运算符C. 单目、双目和三目运算符D. 单目、双目、三目和四目运算符45、若已定义:float m;拟从键盘输入135.78这一数据给变量m,则应选用的语句是()A. scanf(“%5.2f”,&m); B. scanf(“%3.2f”,&m);C. scanf(“6.2f”,&m);D. scanf(“o”,&m);46、已知double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是()A. scanf(“%ld”,&a);B. scanf(“%lf”,&a);C. scanf(“%c”,&a);D. scanf(“%u”,&a);47、已知char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是()A. scanf(“%d”,&a);B. scanf(“%lf”,&a);C. scanf(“%c”,&a);D.scanf(“%u”,&a); 48、putchar()函数的功能是向终端输出()A. 多个字符B. 一个字符C. 一个实型变量值D. 一个整型变量表达式 49、以下程序段运行后的输出结果是() int k=11;printf(“k=%d,k=%o,k=%x\\n”,k,k,k);A. k=11,k=13,k=cB. k=11,k=12,k=133C. k=11,k=13,k=bD. k=11,k=13,k=a50、若有定义:int x=1234,y=123,z=12;则语句printf(“M+=+-”,x,y,z);运行后的输出结果为()A. 123412312B. 12341234123412341231231231212C. 1234+1234+1234D. 1234+123+12 51、已有如下定义和输入语句,int a;char c1,c2;scanf(“%d%c%c”,&a,&c1,&c2);若要求a、c1、c2的值分别为10、A和B,正确的数据输入是() A. 10AB B. 10 A B C. 10A B D. 10 AB 52、以下程序段的运行结果是()int a=0,b=0,c=0; if(a&&++b) c++;printf(“%d,%d\\n”,b,c);A. 0,0B. 1,2C. 2,2D. 1,0 53、以下程序的运行结果是()void main() {int a=65; char c=?A?;printf(“%x,%d”,b,c); }A. 65,aB. 41,aC. 65,65D. 41,6554、若已定义:int a=5;float b=63.72;以下语句中能输出正确值的是() A.printf(“%d%d”,a,b); B. printf(“%d/”,a,b); C. printf(“//”,a,b);D. printf(“/%d”,a,b); 55、运行以下程序段时编译出错,其原因是()char c1='8',c2='2021'; printf(\A. c2是字符变量,只能赋以字符常量,不能赋以字符串常量B. 字符串要用“2021“表示,而‘2021’不是字符串表示 C. ‘2021’只能赋值给字符数组 D. 字符变量不能用%d格式输出56、若已定义:int a=3,b=15,c;则语句c=a>b;运行后c的值为() A. 1 B.0 C. t D. f57、在C语言中,判定逻辑值为“真“的最正确的叙述是() A. 1 B. 非0的数 C. 大于0的数 D. 非0的整数 58、若已定义:int a=-36,b=-30,c;则语句c=a59、能正确表示数学关系式800>=y>=500的C语言表达式为() A. (y<=800)&&(y>=500) B. (y<=800)AND(y>=500) C. 800>=y>=500 D. (y<=800)&(y>=500) 60、若有定义:int x=3,y=4;则表达式!x||y的值为()4A. 1B. 0C. 3D. 4感谢您的阅读,祝您生活愉快。
C练习题一、基础语法1. 声明一个整型变量并赋值为10。
2. 声明一个浮点型变量并赋值为3.14。
3. 声明一个字符串变量并赋值为"Hello, World!"。
4. 声明一个布尔变量并赋值为true。
5. 创建一个名为`MyClass`的类,并在其中声明一个名为`myField`的私有整型字段。
6. 在`MyClass`类中添加一个构造函数,接受一个整型参数并赋值给`myField`字段。
7. 在`MyClass`类中添加一个名为`PrintField`的方法,打印出`myField`字段的值。
二、控制结构8. 编写一个程序,使用`if`语句判断一个整数变量是否大于0。
9. 编写一个程序,使用`switch`语句根据整数变量的值输出对应的星期名称。
10. 编写一个程序,使用`for`循环打印1到10的数字。
11. 编写一个程序,使用`foreach`循环遍历一个整数数组并打印每个元素。
12. 编写一个程序,使用`while`循环计算1到10的阶乘。
三、函数和方法13. 编写一个名为`Add`的方法,接受两个整数参数并返回它们的和。
14. 编写一个名为`Multiply`的方法,接受两个整数参数并返回它们的乘积。
15. 编写一个名为`PrintNumbers`的方法,接受一个整数参数,打印从1到该参数的所有数字。
16. 编写一个名为`ReverseString`的方法,接受一个字符串参数并返回其反转后的字符串。
17. 编写一个名为`FindMax`的方法,接受一个整数数组参数并返回数组中的最大值。
四、面向对象18. 创建一个名为`Person`的类,包含姓名和年龄两个属性。
19. 在`Person`类中添加一个构造函数,接受姓名和年龄作为参数。
20. 在`Person`类中添加一个名为`PrintInfo`的方法,打印出该人的姓名和年龄。
21. 创建一个`Student`类,继承自`Person`类,并添加一个名为`Grade`的属性。
C语言_面试专项练习题_带答案_100题_2021_第6套[单选题]1.下面程序的运行结果是___( )___.#include<stdio.h>void main( ){ int a=1,b=10;do{ b-=a;a++;} while(b--<0);printf("%d,%d\n",a,b);}A)3,11B)2,8C)1,-1D)4,9答案:B解析:2.( ) 。
下列运算符中优先级最高的是。
A)<B)十C)&&D)!=答案:B解析:3.在定义int a[5][4]; 之后,对a 的引用正确的是.___( )___A)a[2][4]B)a[1,3]C)a[4][3]D)a[5][0]答案:C解析:4.下面程序的运行结果是。
#include<stdio.h>main(){char ch[7]={"12ab56"};int i,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}A)1B)1256C)12ab56D)1 2 5 6答案:A解析:5.以下正确的函数定义形式是。
A)double fun(int x,int y)B)double fun(int x;int y)C)double fun(int x,int y);D)doubel fun(int x;int y);答案:A解析:6.如果程序中有如下的说明和定义:struct s{ int x,y;}struct s x,y;则会发生的情况是( )。
A)编译出错B)能顺利编译和链接,但不能执行C)程序能顺利通过编译,但是链接时会出错D)程序能顺利编译,链接,执行答案:A解析:7.下面程序的输出结果是___( )___.#include<stdio.h>void main(){int a=5,b=3;float x=3.14, y=6.5;printf("%d,%d\n",a+b!=a-b,x<=(y-=6.1)); }A)1,0B)0,1C)1,1D)0,0答案:A解析:8.( ) 。
完成下列训练题的基本步骤是:1、问题分析及解决方案框架确定充分地分析和理解问题本身,明确问题到底要做什么。
(what to do?)在确定解决问题框架过程中(how to do?),考虑怎样使程序结构清晰、合理、简单和易于调试,并确定每个函数的简单功能,以及函数之间的调用关系。
2、详细设计和编码确定算法的主要流程,在此基础上进行代码设计(coding),一般来讲,每个明确的功能模块程序不超过60行代码,否则,功能要继续分解。
3、上机前编写程序与检查上机前检查程序可有效提高调试效率,减少上机调试程序时的无谓错误。
程序检查主要有两种途径:用一组测试数据手工执行程序;或者通过阅读或给别人讲解自己的程序而深入、全面地理解程序逻辑,把程序中的明显错误事前排除。
4、上机调试程序提供的结果应当包括:算法、数据结构的设计、程序清单1、猜数游戏游戏的开始由机器产生一个随机数(1~100之间,用库函数random()取值),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示“your answer is HIGH,try again!”否则,程序提示“your answer is LOW,try again!”直到猜对为止。
程序可以实现连续猜数,直到游戏者退出。
程序输出要求:累计游戏者猜对这个数所需的次数n,当n<=7时,给出“congratulation!”,当7<n<15时,给出“I believe you can do it better!”;当n>15时,用exit(0)库函数退出程序。
2、百钱百鸡问题(穷举算法)我国古代数学家张丘建在《算经》中出了一道题“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。
百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”注:穷举法是最简单、最常见的一种程序设计方法,它充分利用了计算机处理的高速特性。
使用穷举法的关键是确定正确的穷举范围,即不能过分扩大,也不能过分缩小穷举的范围。
一、单项选择题之五兆芳芳创作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 t6.下列C语言用户标识符中正当的是( B).A)3ax B)x C)case D)-e2 E)union7.下列四组选项中,正确的C语言标识符是(C).A) %xB) a+b C)a123D)1238、下列四组字符串中都可以用作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语言中的复杂数据类型包含(D).A、整型、实型、逻辑型B、整型、实型、逻辑型、字符型C、整型、字符型、逻辑型D、整型、实型、字符型10.在C语言程序中,表达式5%2的结果是C.A)2.5 B)2 C)1 D)311.如果int a=3,b=4;则条件表达式"a<b? a:b"的值是__A__.A) 3B) 4 C) 0D) 112.若int x=2,y=3,z=4 则表达式x<z?y:z的结果是(B).A)4 B)3 C)2 D)0 E)113.C语言中,关系表达式和逻辑表达式的值是(B).A)0 B)0或1C) 1 D)‘T’或’F’14. 下面( D )表达式的值为4.A)11/3 B)C) (float)11/3 D) (int)(11.0/3+0.5)15.设整型变量a=2,则执行下列语句后,浮点型变量b的值不为的是(B)A.b=1.0/aB.b=(float)(1/a)C.b=1/(float)aD.b=1/(a*1.0)16. 若“int n; float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)17. 以下对一维数组a的正确说明是:DA) char a(10);B) int a[];C)int k=5,a[k]; D)char a[3]={‘a’,’b’,’c’};18.以下能对一维数组a进行初始化的语句是: ( C )A. int a[5]=(0,1,2,3,4,)B. int a(5)={}C. int a[3]={0,1,2}D. int a{5}={10*1}19.在C语言中对一维整型数组的正确定义为D.A)int a(10); B)int n=10,a[n];C)int n;a[n]; D)#define N 10int a[N];20、已知:int a[10]; 则对a数组元素的正确引用是( D ).A、a[10]B、a[3.5]C、a(5)D、a[0]21.若有以下数组说明,则i=10;a[a[i]]元素数值是(B).int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};22.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( B )A. 2B. 3C. 4D.无确定值5 7 D) 36 923.对二维数组的正确定义是(C)A.int a[ ] [ ]={1,2,3,4,5,6};B.int a[2] [ ]={1,2,3,4,5,6};C.int a[ ] [3]={1,2,3,4,5,6};D.int a[2,3]={1,2,3,4,5,6}; 24.已知int a[3][4];则对数组元素引用正确的是__C___A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)语言中函数前往值的类型是由A决定的.A)函数定义时指定的类型 B) return语句中的表达式类型C) 调用该函数时的实参的数据类型 D) 形参的数据类型26. 在C语言中,函数的数据类型是指( A )A 函数前往值的数据类型 B. 函数形参的数据类型C 调用该函数时的实参的数据类型 D.任意指定的数据类型27. 在函数调用时,以下说法正确的是(B)A.函数调用后必须带回前往值B.实际参数和形式参数可以同名C.函数间的数据传递不成以使用全局变量D.主调函数和被调函数总是在同一个文件里28.在C语言中,暗示静态存储类此外关头字是: (C)A) auto B) register C) static D) extern29.未指定存储类此外变量,其隐含的存储类别为(A).A)auto B)static C)extern D)register30. 若有以下说明语句:struct student{ int num;char name[ ];float score;}stu;则下面的叙述不正确的是: ( D )A. struct是结构体类型的关头字B. struct student 是用户定义的结构体类型C. num, score都是结构体成员名D. stu是用户定义的结构体类型名31.若有以下说明语句:struct date{ int year;int month;int day;}brithday;则下面的叙述不正确的是__C___.A) struct是声明结构体类型时用的关头字B) struct date 是用户定义的结构体类型名C) brithday是用户定义的结构体类型名D) year,day 都是结构体成员名32.以下对结构变量stul中成员age的不法引用是Bstruct student{ int age;int num;}stu1,*p;p=&stu1;A) stu1.age B) student.age C) p->age D) (*p).age33.设有如下定义:struck sk{int a;float b;}data;int*p;若要使P指向data中的a域,正确的赋值语句是CA) p=&a;B) p=data.a;C) p=&data.a;D)*p=data.a;34.设有以下说明语句:typedef struct stu{ int a;float b;} stutype;则下面叙述中错误的是(D).A、struct是结构类型的关头字B、struct stu是用户定义的结构类型C、a和b都是结组成员名D、stutype是用户定义的结构体变量名35.语句int *p;说明了C.A)p是指向一维数组的指针B)p是指向函数的指针,该函数前往一int型数据C)p是指向int型数据的指针D)p是函数名,该函数前往一指向int型数据的指针36.下列不正确的定义是(A).A. int *p=&i,i;B.int *p,i;C.int i,*p=&i; D.int i,*p;37. 若有说明:int n=2,*p=&n,*q=p,则以下不法的赋值语句是: (D)A)p=q B)*p=*q C)n=*q D)p=n38.有语句:int a[10],;则B是对指针变量p的正确定义和初始化.A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;“int a[5],*p=a;”,则对数组元素的正确引用是( C ).A.a[p]B.p[a]C.*(p+2)D.p+240. 有如下程序int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;则数值为9的表达式是BA) *P+9 B) *(P+8) C) *P+=9 D) P+841.在C语言中,以D作为字符串结束标记A)’\n’ B)’’C) ’0’ D)’\0’42.下列数据中属于“字符串常量”的是(A).A.“a”B.{ABC}C.‘abc\0’D.‘a’43.已知char x[]="hello", y[]={'h','e','a','b','e'};, 则关于两个数组长度的正确描述是B .A)相同 B)x大于y C)x小于y D)以上答案都不合错误44. 下面各函数中能实现打开文件功效的是AA)fopen B) fgetcC) fputcD) fclose45. 下列语句中,把变量fp说明为一个文件型指针的是( A ) .A) FILE *fp; B) FILE fp;C) file *fp; D) file fp;46.以读写方法打开一个已有的文本文件file1,并且FILE *fp,下面fopen函数正确的调用方法是( B ).A.fp=fopen(“file1”,“r”)B.fp=fopen(“file1”,“r+”)C.fp=fopen(“file1”,“rb”)D.fp=fopen(“file1”,“w”)二、读程序根本输入输出及流程控制1.#include <stdio.h>main(){ int a=1,b=3,c=5;if (c==a+b)printf("yes\n");elseprintf("no\n");}运行结果为:no2.#include <stdio.h>main(){ int a=12, b= -34, c=56, min=0;min=a;if(min>b)min=b;if(min>c)min=c;printf("min=%d", min);}运行结果为:min=-343.#include <stdio.h>main(){ int x=2,y= -1,z=5;if(x<y)if(y<0)z=0;elsez=z+1;printf(“%d\n”,z);}运行结果为:54.#include <stdio.h>main(){ float a,b,c,t;a=3;b=7;c=1;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c); }运行结果为:1.5.#include < stdio .h >main ( ){ float c=3.0 , d=4.0;if ( c>d ) c=5.0;elseif ( c==d ) c=6.0;else c=7.0;printf ( “%.1f\n”,c ) ;}运行结果为:6.#include <stdio.h>main(){int m;scanf("%d", &m);if (m >= 0){if (m%2 == 0)printf("%d is a positive even\n", m);elseprintf("%d is a positive odd\n", m);}else{if (m % 2 == 0) printf("%d is a negative even\n", m); else printf("%d is a negative odd\n", m);}}若键入-9,则运行结果为:-9 is a negative odd7.#include <stdio.h>main(){ int num=0;while(num<=2){ num++;printf("%d\n",num);}}运行结果为:1238.#include <stdio.h>main( ){ int sum=10,n=1;while(n<3){sum=sum-n; n++;}printf(“%d,%d”,n,sum);}运行结果为:3,79.#include <stdio.h>main(){ int num,c;scanf("%d",&num);do{c=num%10; printf("%d",c);}while((num/=10)>0);printf("\n");}从键盘输入23,则运行结果为:3210#include <stdio.h>main(){ int s=0,a=5,n;scanf("%d",&n);do{ s+=1; a=a-2; }while(a!=n);printf("%d,%d\n",s,a);}若输入的值1,运行结果为: 2,111.#include "stdio.h"main(){char c;c=getchar();while(c!='?') {putchar(c); c=getchar();} }如果从键盘输入abcde?fgh(回车)运行结果为:abcde12.#include <stdio.h>main(){ char c;while((c=getchar())!=’$’){ if(‘A’<=c&&c<=‘Z’) putchar(c);else if(‘a’<=c&&c<=‘z’) putchar(c-32); }}当输入为ab*AB%cd#CD$时,运行结果为:ABABCDCD 13.#include <stdio.h>main(){ int x, y =0;for(x=1;x<=10;x++){ if(y>=10)break;y=y+x;}printf(“%d %d”,y,x);}运行结果为:10 514.#include<stdio.h>main( ){ char ch;ch=getchar( );switch(ch){ case ‘A’ : printf(“%c”,’A’);case ‘B’ : printf(“%c”,’B’); break;default: printf(“%s\n”,”other”);} }当从键盘输入字母A时,运行结果为:AB 15.#include <stdio.h>main( ){ int a=1,b=0;scanf(“%d”,&a);switch(a){ case 1: b=1;break;case 2: b=2;break;default : b=10;}printf("%d ", b);}若键盘输入5,运行结果为:1016.#include <stdio.h>main()_{ char grade=’C’;switch(grade){ case ‘A’: printf(“90-100\n”);case ‘B’: printf(“80-90\n”);case ‘C’: printf(“70-80\n”);case ‘D’: printf(“60-70\n”); break;case ‘E’: printf(“<60\n”);default : printf(“error!\n”);}}运行结果为:70-8060-7017.#include <stdio.h>main(){ int y=9;for(;y>0;y- -)if(y%3==0){ printf(%d”,- -y);continue;}}运行结果为:85218.#include <stdio.h>main(){ int i,sum=0;i=1;do{sum=sum+i;i++;}while(i<=10); printf(“%d”,sum);}运行结果为:5519.#include <stdio.h>#define N 4main(){ int i;int x1=1,x2=2;printf("\n");for(i=1;i<=N;i++){ printf("%4d%4d",x1,x2);if(i%2==0)printf("\n");x1=x1+x2;x2=x2+x1;}}运行结果为:1 2 3 58 13 21 3420#include <stdio.h>main( ){ int x, y;for(x=30, y=0; x>=10, y<10; x--, y++) x/=2, y+=2;printf(“x=%d,y=%d\n”,x,y);}运行结果为:x=0,y=1221.#include <stdio.h>#define N 4main( ){ int i,j;for(i=1;i<=N;i++){ for(j=1;j<i;j++)printf(" ");printf("*");printf("\n");}}运行结果为:****数组1.#include <stdio.h>main(){ int i,a[10];for(i=9;i>=0;i--)a[i]=10-i;printf(“%d%d%d”,a[2],a[5],a[8]); }运行结果为:8522.#include <stdio.h>main(){int i,a[6];for (i=0; i<6; i++)a[i]=i;for (i=5; i>=0 ; i--)printf("%3d",a[i]);}运行结果为:5 4 3 2 1 03.#include <stdio.h>main( ){ int i,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}运行结果为:214.#include <stdio.h>int m[3][3]={{1},{2},{3}};int n[3][3]={1,2 ,3};main( ){ printf(“%d,”, m[1][0]+n[0][0]); printf(“%d\n”,m[0][1]+n[1][0]); }运行结果为:3,05.#include <stdio.h>main(){int i;int x[3][3]={1,2,3,4,5,6,7,8,9};for (i=1; i<3; i++)printf("%d",x[i][3-i]);}运行结果为:6 86.#include <stdio.h>main( ){ int n[3][3], i, j;for(i=0;i<3;i++ ){for(j=0;j<3;j++ ){n[i][j]=i+j;printf(“%d ”, n[i][j]);}printf(“\n”);}}运行结果为:0 1 21 2 32 3 47.#include <stdio.h>main(){char diamond[][5]={{‘_’,’_’,’*’},{‘_‘,’*’,’_’,’*’}, {‘*’,’_’,’_‘,’_‘,’*’},{‘_’,’*’,’_’,’*’},{‘_’,’_’,’*’}}; int i,j;for(i=0;i<5;i++){for(j=0;j<5;j++)printf(“%c”,diamond[i][j]);printf(“\n”);}}注:“_”代表一个空格.运行结果为:** ** ** **8.。
时间:二O二一年七月二十九日50道C/C++编程练习题之阿布丰王创作1、输入3个数,求最年夜值int main(){ int a,b,c,m;cin>>a>>b>>c;m=a;if(b>m) m=b;if(c>m) m=c;cout<<m;}2、编法式,求方程ax2+bx+c=0的根#include<iostream>#include<cmath>using namespace std;int main(){double a,b,c,d,x1,x2;cin>>a>>b>>c;if(a==0)if(b==0) cout<<"error\n";else cout<< "x="<<-c/b<<endl;else{ d=b*b-4*a*c;if(fabs(d)<=1e-6)cout<<"x1=x2="<<-b/(2*a)<<endl;else if(d>1e-6){ x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);cout<<"x1="<<x1<<",x2="<<x2<<endl;}else cout<<"方程无实根\n";}}3、输入一个成果,打印相应的品级int main(){ int a;cin >> a;if(a>=90) cout<<"A";else if(a>=80) cout<<"B";else if(a>=70) cout<<"C";else if(a>=60) cout<<"D";else cout<<"E";}4、输入3个double类型的值,判断这3个值是否可以暗示一个三角形的三条边. int main(){double a,b,c;cin>>a>>b>>c;if(a+b>c && b+c>a && c+a>b)cout<<"可以构成三角形";elsecout<<"不成以构成三角形";5、输入20个数,求其最年夜、最小和平均值int main(){int i;int a,max,min,s;cin>>a;max=min=a; s=a;for(i=1;i<20;i++){ cin>>a;if(a>max) max=a;if(a<min) min=a;s=s+a;}cout<<max<<","<<min<<","<<s/20.0<<endl;}6、输入若干个数,设输入的第一个数为后面要输入的数的个数,求平均值及最年夜值. int main(){int a,m,s=0;cin>>n;cin>>a;m=a; s=a;for(int i=1; i<n; i++){ cin>>a;s +=a;if(a>m) m=a;}cout<<"平均值:"<<(double)s/n<<",最年夜值:"<<m<<endl;}7、输入若干个数,输入-999暗示结束,求平均值及最年夜值.#include<iostream>#include<iomanip>#include<cstdlib>using namespace std;int main(){ int n, count, sum, max;double ave;count = 0;cin >> n;sum = 0; max = n;while( n != -999 ){ sum = sum + n;if( n > max ) max = n;count++;cin >> n;}if( count != 0 ){ ave=static_cast<double>(sum) / count;cout<<setiosflags(ios::fixed)<<setprecision(2);cout<<"平均值为:"<<ave<<" 最年夜值为:"<<max<<endl;}8、求和 s=1*1 + 2*2 + 3*3 +...+ 100*100int main(){ int i,t;double s=0;for(i=1; i<=100; i++){ t=i*i;s=s+t;}}9、印度国王的奖励,求和 s=20 + 21 + 22 +...+ 263 int main(){ double t=1,s=0;for(int i=0; i<=63; i++){ s=s+t;t=2*t;}cout<<s/1.4e8<<endl;}10、求和 s=1! + 2! + 3! +...+ 10!int main(){ int i;long t,s;t=1; s=0;for(i=1; i<=10; i++){ t=t*i;s=s+t;}}11、求 e=1 + 1/1! + 1/2! + 1/3! + ...int main(){ int i;double t,e;i=1; t=1; e=1;while(t>=1e-7){ t=t/i;e=e+t;i=i+1;}cout<<e;}12、求PI值,PI/4 = 1 - 1/3 + 1/5 - 1/7 + ... int main(){ int i,k;double pi,t;i=1; t=1; pi=0; k=1;while(fabs(t)>1e-8){ pi=pi+t;i=i+2;k=-k;t=double(k)/i;}cout<<4*pi;}13、求PI值,PI/2 = 1 + 1/3 + 1/3*2/5 + 1/3*2/5*3/7 + ...#include<iostream>#include<cstdlib>int main(){int i,j;double pi,t;i=0; j=1; t=1; pi=0;while(t>1e-18){ pi=pi+t;i=i+1;j=j+2;t=t*i/j;}cout<<setprecision(17)<<2*pi;}14、输入20个数,统计其中正数、负数和零的个数.int main(){int a,n=0,m=0,s=0;for(int i=1; i<=20; i++){ cin >> a;if(a>0) n++;else if(a<0) m++;else s++;}cout<<n<<" "<<m<<" "<<s;}15、输入若干个整数,计算其中的奇数之和与偶数之和,假设输入0暗示结束. int main(){ int a,n=0,m=0;cin>>a;while(a!=0){ if(a%2 == 0) n += a;;else m += a;cin >> a;}cout<<n<<" "<<m;}16、写一函数,计算x的y次方(假设x、y都为正整数).int pow(int x, int y){ int s=1;for(int i=1; i<=y; i++)s = s * x;return s;}17、求水仙花数(一个三位数,其各位数字立方和即是该数字自己){ int i,a,b,c;for(i=100;i<=999;i++){ a=i/100;b=i/10%10;c=i%10;if(i==a*a*a+b*b*b+c*c*c)cout<<i<<endl;}}int main(){ int i,a,b,c;for(a=1;a<=9;a++)for(b=0;b<=9;b++)for(c=0;c<=9;c++){ i=a*100+b*10+c;if(i==a*a*a+b*b*b+c*c*c)cout<<i<<endl;}}18、编写一个函数,确定一个整数是否为完全数(一个数,即是他的因子之和).用这个函数确定和打印1到1000之间的所有完全数.int perfect(int n){ int i,s=1;for(i=2;i<=n/2;i++)if(n%i==0) s=s+i;if(s==n) return 1;else return 0;}int main(){ int n;for(n=2;n<=1000;n++)if perfect(n)cout<<n<<endl;}19、写一函数,求斐波那契数列的第n项.int fib(int n){int i,f1,f2,f;if(n==1||n==2) return 1;f1=1; f2=1;for(i=3; i<=n; i++){ f=f1+f2;f1=f2;f2=f;}return f;}20、写一个函数,取一个整数值并返回将此整数的各数字反序的数值int reverse(int n){ int s=0;{ s = s * 10 + n % 10;n /= 10;};return s;}21、写一个函数,将一个整数的各位数字的反序打印void show(int n){ while(n){ cout << n % 10 << " ";n /= 10;};}void show(int n){ if(n < 10) cout << n;else{ cout << n % 10 << " ";show(n / 10);}}22、写一个函数,将一个整数的各位数字的按顺序打印出来void show(int n){int k = 1, m = n;while(m > 10){ k *= 10; m /= 10; }while(n){ cout << n / k << " ";n %= k;k /= 10;};}void show(int n){ int a[10], i=0;while(n){ a[i] = n % 10;n /= 10;i++;}for(int j=i-1; j>=0; j--)cout<<a[j]<<" ";}void show(int n){ if( n < 10 ) cout << n;else{ show( n / 10 );cout << " " << n % 10;}}23、求一个整数的各位数之和的函数int sum(int n)while(n){ s += n % 10;n /= 10;};return s;}24、写一函数,判断某个数是否素数,以及求1-1000之内的素数#include<iostream>#include<cmath>#include<stdlib.h>using namespace std;bool isprime(int n){ float k=sqrt(float(n));for(int i=2; i<=k; i++)if(n%i==0) return false;return true;}int main(){ for(int n=2; n<=1000; n++)if(isprime(n)) cout<<setw(5)<<n;}25、用筛法求1-1000之内的素数#include<iostream>#include<cmath>#include<stdlib.h>#include<iomanip>using namespace std;int main(){int i,k,a[1001];for(i=2; i<=1000; i++) a[i]=1;float s=sqrt(float(1000));for(i=2; i<=s; i++)if(a[i]==1){ k=2*i;while(k<=1000){ a[k]=0;k=k+i;}}for(i=2; i<=1000; i++)if(a[i]==1) cout<<setw(5)<<i;}26、判断某一年是否闰年的函数bool IsLeapYear(int y){ return (y%4 == 0 && y%100 != 0)||(y%400 == 0);}27、写一个函数,交换两个整型变量的值void swap(int *p, int *q){ int t;t=*p; *p=*q; *q=t;}void swap(int &a, int &b){ int t;t=a; a=b; b=t;}28、求两个数的最年夜公约数,欧几里德算法(辗转相除法)int gcd(int m, int n){ int k;while(n!=0){ k=m%n; m=n; n=k; }return m;}int gcd(int m, int n){ int k;while((k=m%n)!=0){ m=n; n=k; }return n;}int gcd(int m, int n){ while(m!=n){ if(m>n) m=m-n;else n=n-m;}return m;}29、求两个数的最小公倍数int lcm(int m, int n){ int t,s;if(m<n) { t=m; m=n; n=t; }s=m;while(s%n != 0) s=s+m;}int lcm(int m, int n){return m*n/gcd(m,n);}30、百钱买百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、母、雏各几何?int main(){int cock,hen,chick;for(cock=0; cock<=20; cock++)for(hen=0; hen<=33; hen++){ chick=100-cock-hen;if(5*cock+3*hen+chick/3.0==100)cout<<setw(4)<<cock<<setw(4)<<hen<<setw(4)<<chick<<endl;}}31、编一法式,输入一行字符串,统计其中的小写英文字母的个数.int main(){ char s[100];cin.getline(s,100);int i=0,count=0;while(s[i]!='\0'){ if(s[i]>='a' && s[i]<='z')count++;i++;}cout<<count<<endl;}32、编一法式,输入一行字符串,将其中的年夜写英文字母改为小写,再输出. int main(){ char s[100];int i;cin.getline(s,100);i=0;while(s[i]!='\0')if(s[i]>='A' && s[i]<='Z')s[i]=s[i]+32;cout<<s<<endl;}33、打印杨辉三角形(帕斯卡三角形),打印10行.#include<iostream>#include<iomanip>using namespace std;int main(){ int a[10][10]={0};for(int i=0; i<10; i++){ a[i][0]=1;a[i][i]=1;}for(int i=1; i<10; i++)for(int j=1; j<i; j++)a[i][j] = a[i-1][j-1] + a[i-1][j];for(int i=0; i<10; i++){ for(int j=0; j<=i; j++)cout<<setw(4)<<a[i][j];cout<<endl;}}34、打印一个九九乘法表#include<iostream>#include<iomanip>using namespace std;int main(){for(int j=1; j<=9; j++){ for(int i=1; i<=j; i++)cout<<i<<"*"<<j<<"="<<setw(2)<<i*j<<" ";cout<<endl;}时间:二O二一年七月二十九日}35、掷骰子10000次,统计获得各点数的次数.int main(){ int a[7]={0};srand(time(0));for(int i=1; i <= 10000 ; ++i)++a[ 1 + rand()%6 ];for(int i=1; i <= 6 ; ++i)cout<<i<<": "<<a[i]<<endl;}36、编写函数distance,计算两点(x1,y1)和(x2,y2)之间的距离.double distance(double x1, double y1, double x2, double y2){return sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) );}37、写一个法式,进行体操评分,依次输入10名评委所评分数,去除一个最高分和一个最低分,再算出平均分作为选手的得分.int main(){ int i;float max,min,s,x;max = 0; min = 10; s=0;for(i=1;i<=10;i++){ cin >> x;s = s + x;if(x<min) min = x;if(x>max) max = x;}s = s - min - max;cout << s/8;}38、写一函数,将一数组中的元素反转.void reverse(int a[], int n){ for(int i=0; i<n/2; i++)swap(a[i],a[n-i-1]);}39、写一函数,在一个数组中找出最年夜元素的位置int SearchMax(int a[], int n){ int k = 0;for(int i=1; i<n; i++)if(a[i]>a[k]) k = i;return k;}40、找出一个二维数组中的鞍点,即该元素在该行上最年夜,在该列上最小.41、写一个字符串拷贝函数时间:二O二一年七月二十九日。
C语言各章节练习题(含答案)一、c语言概述练习题选项1。
C程序的执行是从。
a)该程序的主要功能以主要功能开始和结束b)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束c)本程序文件的第一个函数开始,到本程序main函数结束d)本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。
a) C源程序必须包含一个主函数B)C源程序可以由一个或多个函数组成C)C程序的基本单元是函数d)在C程序中,注释只能位于一条语句之后3.以下叙述正确的是。
a)在编译C程序的过程中,你可以在注释中发现拼写错误。
B)在C程序中,主函数必须位于程序的前面c)c语言本身没有输入输出语句d)c程序的每行中只能写一条语句4.一个c语言程序是由。
a)一个主程序和几个子程序由B)函数组成C)几个进程组成d)几个子程序组成二、数据类型、运算符与表达式选择1.如果x、I、J和K是int变量,则x的值是在计算以下表达式后得出的。
X=(I=4,j=16,k=32)a)4b)16c)32D)522。
在以下四组选项中,不是c语言关键字的选项是。
a)定义类型b)getccharprintfc)包括3.下列四组选项中,均是不合法的用户标识符的选项是。
(c语言标识符由字母,数字,下划线组成,开头不能是数字)a) wp_0dob)b-agotointc)floatla0_0ad)-123abctemp8.已知字母a的ascii码为十进制数65,且c2为字符型,则执行语句c2=‘a’+‘6’-‘3’后,c2中的值为。
a) C)DB的不确定值)填空1.若有以下定义,则计算表达式y+=y-=m*=y后的y值是【1】。
-16intm=5,y=2;7.如果X和N都是int变量,且X和N的初始值为5,则计算表达式后,X的值为[8],N的值为[9]。
一百零六x+=n++//若改为x+=++n则计算后x为11,n为610.假设字母A的ASCII码是十进制数97,ch是字符变量,则表达式ch='A'+'8'-'3'的值为[12]。
1) 设x,y均为整型变量,且x=10 y=3,则以下C语言的输出结果是()。
printf(“%d,%d\n”,x--,--y);a)10,3b)9,3c)9,2d)10,22)在C语言中,要计算一个数(变量i)的开平方,下面代码正确的是()。
a)printf(sqrt(t), "\n Square of%d",i)b)printf("\n Square of %d is %d",i,sqrt(i))c)[d)printf(sqrt(i),i,t, "\n Sqrt of %d is %d")e)printf(i,t,"\n Square of%d")f)scanf(i,"\n Square of%d is %d",sqrt(i))3)运行下列C程序:#include <>void fun(int x,int y,int z){ z=x*x+y*y;}void main(){ int a=31;fun(5,2,a);printf(“%d”,a);}输出结果是()。
e)0 b)29 c)31 d)无定值4)在C语言中,下面选项()是合法的变量名。
(选择两项)f)Minimum b)3rd_rowc)n1+n2; d)Doubles e)]5)运行下面的C程序:#include <>void main(){ int n;scanf(“%d”,&n);if(n++<10)printf(“%d\n”,n);elseprintf(“%d\n”,n--);}》若从键盘上输入9,则输出结果是()。
g)11 b) 10 c)9 d)86)在C语言中,下列关于条件语句的描述中,正确的是()。
(选择两项)a)当if语句嵌套使用的时候,最后一个else和最近的一个没有else匹配的if匹配b)一个if可以有多个else与之匹配c)一个switch语句总是可以被一系列if…else语句替换d)当执行break语句时程序将停止执行7)在C语言中,下面不正确的字符串常量是()。
C模拟练习题 一、单项选择题 1.( )是合法的用户自定义标识符。 A、 b-b B、float C、 D、 _isw
2.若变量已正确定义并赋值,表达式( )不符合C语言语法。 A、a*b/c; B、3.14%2 C、2, b D、a/b/c
3.( )是不正确的字符常量。 A、'n' B、'1' C、"a" D、'\101'
4.在 C 程序中,用( )表示逻辑值“真”。 A、1 B、非 0 的数 C、非 1 的数 D、 大于 0 的数
5.以下程序段的输出结果是( ) int a=1,b=2,c=3,d=4,m=5,n=6; (m=a>b)&&(n=cA、5 6 B、0 1 C、0 6 D、5 1
6. 以下能产生随机数30~80的表达式为 ( ) A) rand( )%50+30 B) rand( )%51+30 C) rand( )%110+30 D) rand( )%50+80
7.若变量已正确定义,语句“if(a>b) k=0; else k=1;”和( )等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1;
8.设变量定义为“int a, b;”,执行下列语句时,输入( ),则a和b的值都是10。 scanf("a=%d, b=%d",&a, &b); A、10 10 B、10, 10 C、a=10 b=10 D、a=10, b=10
9.下列程序的输出结果是( )。 void fun(int a, int b, int c) { c =a*b; } void main( ) { int c; fun(2,3,c); printf(”%dn”,c); } A、0 B、1 C、6 D、无法确定
10.以下程序段的执行结果是( )。 char s1[100]=”123”; char s2[]=”4567”; strcat(s1,s2+2); puts(s1); A、1234567 B、4567 C、12367 D、67
11.表达式 strlen(“hello”) 的值是( )。 A、 4 B、 5 C、 6 D、 7
12.设定义为int a[4]; 则表达式( )不符合C语言语法。 A、*a B、a[0] C、a D、a++
13.设变量定义为“int x, *p=&x;”,则&*p相当于( )。 A、p B、*p C、x D、*&x
14.执行语句for(i=1;i<=5;i++); 后变量i的值是() A: 4 B:5 C:6 D:不确定
15.对于以下的变量定义,表达式( )不符合C语言语法。 struct node { int len; char *pk; } x = {2, "right"}, *p = &x; A、p->pk B、*p.pk C、*p->pk D、*x.pk
16. 有如下程序 int runc(int a,int b) { return(a+b);} main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%\d\n”,r); } 该程序的输出的结果是 ( ) A) 12 B) 13 C) 14 D) 15
17. 下面程序段的运行结果是 __. char c[5]={'a','b','\0','c','\0'}; printf("%s",c);} A)’a’’b’ B) ab C) ab c D) ab
18. 有如下程序 long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main() { printf(“%d\n”,fib(3)); 该程序的输出结果是 ( ) A} 2 B} 4 C} 6 D} 8
19. 有如下定义 struct person{char name[9]; int age;}; struct person class[10]={{“Johu”, 17},{“Paul”, 19},{“Mary”, 18},{“Adam” 16}}; 根据上述定义,能输出字母M的语句是 ( ) A) prinft(“%c\n”,class[3].mane); B) pfintf(“%c\n”,class[3].name[1]); C) prinft(“%c\n”,class[2].name[1]); D) printf(“%c\n”,class[2].name[0]);
20. 对两个数组a和b进行如下初始化 char a[]="ABCDEF"; char b[]={’A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是( ) A) a与b数组完全相同 B) a与b长度相同 C) a和b中都存放字符串 D) a数组比b数组长度长
21. 有以下程序段 int k=0; while(k=1)k++; while 循环执行的次数是 ( ) A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次
22. 以下程序的输出结果是 ( ) fun(int x, int y, int *z) { *z=x*x+y*y; } main() { int a=31; fun(5,2,&a); printf(“%d”,a); } A) 0 B) 29 C) 31 D) 无定值
23. 下列程序段的输出结果是 ( ) void fun(int *x, int *y) { printf(“%d %d”, *x, *y); *x=3; *y=4;} main() { int x=1,y=2; fun(&y,&x); printf(“%d %d”,x, y); } A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 24. 以下程序的执行结果是() int main() { int m=5; if(++m>5) printf(“%d\n”,m); else printf(“%d\n”,--m); return 0; } A)7 B)6 C)5 D)4
25. 以下程序的输出结果是 ( ) long fun( int n) { long s; if(n= =1 || n= =2) s=2; else s=n-fun(n-1); return s; } main() { printf(“%ld\n”, fun(3)); } A) 1 B) 2 C) 3 D) 4
二、程序分析题 1、以下函数返回a所指数组中最小的值所在的下标值 fun(int *a, int n) { int i,j=0,p; p=j; for(i=j;iif(a[i]return(p); }
2.下面程序的运行结果是_________。 #include #inc1ude main() {char a[80」="AB",b[80]="LMNP"; int i=0; strcat(a,b); whi1e(a[i++]!='\0')b[i]=a[i]; puts(b); } 3. 下面程序的运行结果是 #include main() { char str[]="SSSWLIA",c; int k; for(k=2;(c=str[k])!='\0';k++) {switch(c) {case 'I':++k;break; case 'L':continue; default:putchar();continue; } putchar('*'); } }
4. 下列程序段的输出是____。 main() { int k; for(k=1; k<5; k++) { if(k % 2) printf("*"); else continue; printf("#"); } } 5. 下面程序的功能是将字符串s中所有的字符c删除。请填空。 #include main() { char s[80]; int i,j; gets(s); for(i=j=0;s[i]!='\0';i++) if(s[i]!='c')
puts(s); }
6. 下列程序段的输出是_____。 # include int f(int x) { static y=1; y++; x += y; return x;