一.知识点
1.C语言的特点:①语言简洁、紧凑,使用方便、灵活; ②运算符丰富;
③数据结构丰富; ④具有结构化控制语句; ⑤语法不太严格,程序设计自由度大;
⑥可以进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作; ⑦生成的目标代码质量高,程序执行效率高; ⑧程序的移植性好。 2.C程序的组成:
⑴C程序是由函数构成的;
⑵一个函数包括函数的首部〔即函数的第一行〕和函数体〔即花括号部分〕; ⑶函数体一般包括声明部分和执行部分;
⑷一个C程序总是从main函数开始执行,从main函数结束;
⑸C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上; ⑹每个语句和数据定义的最后必须有一个分号;
⑺C语言本身没有输入输出语句,是通过函数实现输入输出的; ⑻可以用/*……*/对C程序的任何部分作注释。
3.C语言程序的运行:源程序文件的扩展名为.c,目标程序文件的扩展名为.obj,可执行程序文件的扩展名为.exe。
4.C的数据类型:基本、构造、指针和空类型,char、int、short、long、unsigned、float、double、enum、struct、union、typedef。
5.常量与变量的概念,注意符号常量的定义与使用;
6.整型、实型、字符型常量的表示,注意整型常量的十进制、八进制、十六进制的书写。 7.变量的定义,C的标识符包括关键字、预定义标识符、用户定义标识符;用户定义标识符的可用字符为字母、数字、下划线,第一个字符为字母或下划线。
8.常见数据类型的取值范围,int为-32768~+32767,unsigned int为0~65535。 9.转义字符:\\n、\、\\b、\\r、\\f、\\\\、\\’、\\”、\\ddd、\\xhh
10.不同数值型数据的混合运算,低级类型转换为高级类型运算 11.C的运算符:注意结合方向和运算的优先级
12.算术运算符:+、-、*、/、%、++、--,注意自加、减运算符分前缀和后缀两种方式。其中前缀方式为先自加、减,后引用;后缀方式为先引用,后自加、减;运算符%要求运算量为整数,运算结果也为整数。注意除运算时,假设运算量为整型时,其运算结果也是整型的规则。
13.赋值类运算符:=、+=、-=、*=、/=、%=,注意含义和数据类型的转换。 14.逗号运算符的使用,注意逗号运算符的运算规则。
二.练习 ㈠.填空题:
1.在TURBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是 .exe 。 2.C语言源程序文件的后缀是 .c ,经过编译后,生成文件的后缀是 .obj ,经过连接
第 1 页 共 39 页
程序设计语言C复习 后,生成文件的后缀是 .exe 。
3.结构化程序由 顺序、 选择〔分支〕 、 循环 三种基本结构组成。
4.假设k为整型变量且赋值11。请写出运算k++后表达式的值 11 和变量的值 12 。
5.假设x为double型变量,运算x=3.2,++x后表达式的值 4.2 和变量的值 4.2 。 6.函数体由符号 { 开始,用符号 }结束。函数体的前面是 定义 部分,其后是 执行 部分。
7.C语言中的标识符可分为 关键字、 用户标识符 和预定义标识符三类。
8.在C语言程序中,用关键字 int 定义基本整型变量,用关键字 float定义单精度实型变量,用关键字 double 定义双精度实型变量。
9.把a1、a2定义成单精度实型变量,并赋初值1的定义语句是 float a1=1.0,a2=1.0;。 10.C程序中定义的变量,代表内存中的一个 存储空间。 11.表达式3.5+1/2的计算结果是 3.5。 12.写出数学表达式
a•b三个等价的C语言表达式 a*b/(c*d)、a /(c*d)*b、b/(c*d)*a。 c•d13.通常一个字节包含 8 个二进制位。
14.当电脑用两个字节存放一个整数时,能存放的最大〔十进制〕整数是216-1(65535)、最小〔十进制〕整数是 -215(-32768) 。
15.在C语言中整数可用 十 进制数、 八 进制数和 十六 进制数三种数制表示。
16.C语言中,int型数据占 2 个字节,long型数据占 4 个字节,unsigned int型数据占 2 个字节,short型数据占 2 个字节, float型数据占 4 个字节,double型数据占 8 个字节,char型数据占 1 个字节。
㈡.选择题:
1.组成C语言程序的是〔 〕〔C〕。
A.子程序 B.过程 C.函数 D.主程序和子程序 2.以下表达中正确的选项是〔 〕(C)。
A.在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。 B.C程序由主函数组成。 C.C程序由函数组成。
D.C程序由函数和过程组成。
3.以下选项中正确的整型常量是〔 〕(B)。
A.12. B.-20 C.1,000 D.4 5 6 4.以下选项中正确的实型常量是〔 〕(D)。
A.0 B.3. 1415 C.0.329╳102 D..871 5.以下选项中不合法的用户标识符是〔 〕(C)。
A._123 B.printf C.A$ D.Dim 6.C语言中运算对象必须是整型的运算符是〔 〕(A)。 A.% B./ C.! D.*
第 2 页 共 39 页
程序设计语言C复习 7.可在C程序中用作用户标识符的一组标识符是〔 〕(B)。 A.void B.as_b3 C.For D.2c define _123 -abc DO WORD If case SIG
8.假设变量已正确定义并赋值,符合C语言语法的表达式是〔 〕(B)。
A.a=a+7; B.a=7+b+c,a++ C.int〔12.3%4〕 D.a=a+7=c+b 9.不合法的八进制数是〔 〕(B)。
A.0 B.028 C.077 D.01 10.不合法的十六进制数是〔 〕(A)(零X)。
A.oxff B.0Xabc C.0x11 D.0x19 ㈢.程序设计题:
1.编写一个C程序,输入a、b、c三个数,输出其中最大者。 #include printf(“input 3 num:\\n”); scanf(“%d%d%d”,&a,&b,&c); max=a; if(b>max)max=b; if(c>max)max=c; printf(“%d”,max); } 第二章 算法与顺序结构 一.知识点 1.算法:为解决一个问题而采取的方法和步骤。 2.算法的分类:数值算法、非数值算法。 3.算法的特点:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。 4.算法描述方法:自然语言、流程图、改进流程图、N—S流程图、伪代码、电脑语言。 5.C语句的类型:控制语句、函数调用语句、表达式语句、空语句、复合语句。 6.输入输出的概念:输入输出是相对主机而言,C语言是由函数来实现输入输出的。 7.字符数据的输入/输出:getchar〔〕、putchar〔〕 8.格式输入/输出:scanf〔〕、printf〔〕 9.printf的格式符:d、i,o,x、X,u,c,s,f,e、E,g、G;l,m,n,-。 10.scanf的格式符:d、i,o,x、X,u,c,s,f,e、E,g、G;l,m,*;&。注意输入数据时数据流的分隔符,系统默认的分隔符为空格、tab键和回车。 11.顺序结构的设计思想:声明变量、输入数据、处理、输出结果。 二.练习 第 3 页 共 39 页 程序设计语言C复习 ㈠.填空题: 1.以下程序段执行后的输出结果是:⑴ -200 2500 ⑵ i=-200,j=2500⑶ 。 int i=-200,j=2500; printf〔“⑴ %d %d”,i,j〕; printf〔“⑵ i=%d,j=%d\\n”,i,j〕; printf〔“⑶ i=%d\\n j=%d\\n”,i,j〕; 2.复合语句在语法上被认为是 一条语句。空语句的形式是 ; 。 3.C语句的最后用 ;结束。 4.以下程序段的输出结果是 x= 127,x= 177,x= 7f,x= 127 。 int x=0177;printf〔“x=%6d,x=%6o,x=%6x,x=%6u\\n”,x,,x,x,x〕; 5.以下程序段的输出结果是 a=513.7215,a= 513.79,a=513.721500,a= 531.721500。 double a=513.7215; printf〔“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf\\n”,a,a,a,a〕; 6.以下程序段的输出结果是 8,3 。 a=3+5,a*4;x=11/3;printf〔“%d,%%d\\n”,a,x〕; 7.以下程序输入三个整数值给a、b、c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a、b、c的值。请填空: #include { int a,b,c, m ; printf〔“Enter a,b,c:”〕; scanf〔“%d,%d,%d”, &a,&b,&c〕; m=a ;a=b;b=c; c=m ; printf〔“a=%d,b=%d,c=%d\\n”,a,b,c〕;} 8.以下程序不借助任何变量把a、b中的值进行交换。请填空: #include ㈡.选择题: 1.假设a、b、c、d都是int型变量且初始值为0,以下不正确的赋值语句是〔 〕(C)。 A.a=b=c=100; B.d++; C.c+b; D.d=〔c=22〕-〔b++〕; 2.以下选项中不是C语句的是〔 〕(C)。 第 4 页 共 39 页 程序设计语言C复习 A.{int i;i++;printf〔“%d\\n”,i〕;} B.; C.a=5,c=10 D.{ ;} 3.以下合法的C语言赋值语句是〔 〕(D)。 A.a=b=58 B.k=int〔a+b〕; C.a=58,b=58 D.--i; 4.以下程序的输出结果是〔 〕(C)。 A.0 B.1 C.3 D.不确定的值 main〔〕 { int x=10,y=3; printf〔“%d\\n”,y=x/y〕;} 5.假设变量已正确说明为int类型,要给a、b、c输入数据,正确的输入语句是〔 〕D。 A.read〔a,b,c〕; B.scanf〔“%d%d%d”,a,b,c〕; C.scanf〔“%D%D%D”,&a,&b,&c〕; D.scanf〔“%d%d%d”,&a,&b,&c〕; 6.假设变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是〔 〕C。 A.a=a+b,b=a-b,a=a-b; B.t=a,a=b,b=t; C.a=t;t=b;b=a; D.t=b;b=a;a=t; 7.假设变量已正确定义,以下程序段的输出结果是〔 〕D。 A.输出格式说明与输出项不匹配,输出无定值 B.5.1700 C.5.16800 D.5.16900 x=5.1;printf〔“%f\\n”,〔int〕〔x*1000+0.5〕/〔float〕1000〕; 8.执行以下程序段后,c3中的值是〔 〕A。 A.0 B.1/2 C.0.5 D.1 int c1=1,c2=2,c3;c3=c1/c2; 9.执行以下程序段后,其输出结果是〔 〕B。 A.0,0,-10 B.0,0,3 C.-10,3,-10 D.3,3,-10 int a=0,b=0,c=0; c=〔a-=a-5〕,〔a=b,b+3〕; printf〔“%d,%d,%d\\n”,a,b,c〕; 10.以下程序的输出结果是〔 〕D。 A.a=%2,b=%5 B.a=2,b=5 C.a=%%d,b=%%d D.a=%d,b=%d main〔〕 { int a=2,b=5; printf〔“a=%%d,b=%%d\\n”,a,b〕;} 11.假设int型占两个字节,以下程序段的输出是〔 〕D。 A.-1,-1 B.-1,32767 C.-1,32768 D.-1,65535 int a=-1;printf〔“%d,%u\\n”,a,a〕; 12.以下程序段的输出结果是〔 〕C。 A.|3.1415| B.| 3.0| C.| 3| D.| 3.| float a=3.1415;printf〔“|%6.0f|\\n”,a〕; 13.以下程序段的输出结果是〔 〕B。 A.9 8 B.8 9 C.6 6 D.以上三个都不对 #include { double a=-3.0,b=2; 第 5 页 共 39 页 程序设计语言C复习 printf〔“%3.0f %3.0f\\n”,pow〔b,fabs〔a〕〕,pow〔fabs〔a〕,b〕〕;} 14.假设a为整型变量,则以下语句〔 〕B。 A.赋值不合法 B.输出值为-2 C.输出为不确定值 D.输出值为2 a=-2L;printf〔“%d\\n”,a〕; 15.假设有定义char s=‘\\092’;则该语句〔 〕B。 A.使s的值包含1个字符 B.定义不合法,s的值不确定 C.使s的值包含4个字符 D.使s的值包含3个字符 16.假设k、g均为int型变量,则以下语句的输出为〔 〕D。 A.15 B.16 C.15 D.16 6f 70 71 6f k=017;g=111;printf〔“%d\\n”,++k〕;printf〔“%x\\n”,g++〕; 17.已知字母a的ASCII十进制代码为97,执行以下语句后的输出为〔 〕C。 A.b,c B.a--运算不合法,故有语法错误 C.98,c D.格式描述和输出项不匹配,输出无定值 char a=‘a’;a--;printf〔“%d,%c\\n”,a+‘2’-‘0’,a+‘3’-‘0’〕; 18.以下程序的输出为〔 〕A。 A.27.000000 B.27.500000 C.28.000000 D.28.500000 #include { int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2;printf〔“%f\\n”,x〕; } 19.以下程序的输出结果是〔 〕C。 A.18 B.9 C.-18 D.-9 main〔〕 { int a=9;a+=a-=a+a;printf〔“%d\\n”,a〕; } 20.以下程序的输出结果是〔 〕A。 A.0 B.5 C.1 D.不确定值 main〔〕 { int a=7,b=5;printf〔“%d\\n”,b=b/a〕;} 21.以下程序的输出结果是〔 〕C。 A.12 B.11 C.10 D.9 main〔〕 { int a=011;printf〔“%d\\n”,++a〕;} ㈢.程序设计题: 用N—S图表示以下问题: 1.有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换。 编写程序 2.依次将10个数输入,要求将其中最大的数打印出来。 #include 第 6 页 共 39 页 程序设计语言C复习 int i,a,max; scanf(\"%d\ for (i=1;i<=9;i++) { scanf(\"%d\ if (a>max) max=a; } printf(\"%d\ } 3.有3个数a、b、c,要求按从大到小的顺序把它们打印出来。 main() { float a,b,c,t; scanf(\"%f,%f,%f\ if(a>b) {t=a;a=b;b=t;} /*实现a和b的互换*/ if(a>c) {t=a;a=c;c=t;} /*实现a和c的互唤*/ if(b>c) {t=b;b=c;c=t;] /*实现b和c的互换*/ printf(\"%5.2f,%5.2f,%5.2f\\n\ } 4.求1+2+3+……+100。 #include int i,sum=0; i=1; while(i<=100) { sum=sum+i; i=i+1; } printf(“%d”,sum); } 5.判断一个数n能否同时被3和5除。 #include 第 7 页 共 39 页 程序设计语言C复习 { int n; scanf(\"%d\; if(n%3 == 0 && n%5 == 0) printf(\"%d能否同时被3和5整除\\n\ else printf(\"%d不能否同时被3和5整除\\n\ return 0; } 6.将100~200之间的素数打印出来。 #include for(i=2;i*i<=n;i++) if(n%i==0) return 0; return 1; } int main() { int i; for(i=100;i<=200;i++) { if(isPrime(i)) printf(\"%d\\n\ } } 7.求两个整数m和n的最大公约数和最小公倍数。 main() { int a,b,num1,num2,temp; printf(\"please input two numbers:\\n\"); scanf(\"%d,%d\ if(num1 { temp=num1; num1=num2; num2=temp; } a=num1;b=num2; 第 8 页 共 39 页 程序设计语言C复习 while(b!=0)/*利用辗除法,直到b为0为止*/ { temp=a%b; a=b; b=temp; } printf(\"gongyueshu:%d\\n\ printf(\"gongbeishu:%d\\n\ } 8.求方程ax2+bx+c=0的根 #include #include float a,b,c,x1,x2,p,q,m; scanf(\"%f%f%f\ if ((a==0.0)&&(b==0.0)&&(c!=0.0)) printf(“no value!\"); else if ((a==0.0)&&(b==0.0)&&(c==0.0)) printf(\"any value!\"); else if ((a==0.0)&&(b!=0.0)) printf(\"x1=x2=%f\else {m=b*b-4.0*a*c; if(m>=0) { x1=(-b+sqrt(m))/(2.0*a); x2=(-b-sqrt(m))/(2.0*a); printf(\"x1=%f\\n\ printf(\"x2=%f\\n\ } else { p=-b/(2.0*a); q=sqrt(-m)/(2.0*a); printf(\"x1=%f+%fi\\n\ printf(\"x2=%f-%fi\\n\ } }} 9.编写程序,输入两个整数1500和350,求出它们的商和余数并进行输出。 第 9 页 共 39 页 程序设计语言C复习 #include a=1500,b=350; c=a/b;//商数 d=a%b;//余数 pritf(\"商数为: %d\\n\ printf(\"余数为:%d\\n\ return 0; } 10.编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。 #include { double a, b, c, d; printf(\"输入三个双精度数\\n\"); scanf(\"%lf%lf%lf\ d = ( a + b + c) / 3; printf(\"%.1f\\n\ } 11.求三角形的面积:a,b,c是边长,p是半边长,s是面积,则s=[p(p - a)(p - b)(p - c)] 1/2 #include {float a,b,c,p,s; printf(\"input 3 num:\"); scanf(\"%f%f%f\b,&c); p=(a+b+c)/2; s=p*(p-a)(p-b)(p-c); s=pow(s,0.5); printf(\"s=%f\",s); } 12.输入一个华氏温度,要求输出摄氏温度。公式为:c=5〔f-32〕/9。 #include 第 10 页 共 39 页 程序设计语言C复习 { double tem_c, tem_f; puts(\"=====华氏温度至摄氏温度转换程序=====\"); printf(\"请输入华氏温度:\"); scanf(\"%lf\ tem_c = (tem_f - 12) * 5.0 / 9.0; printf(\"%f对应的摄氏温度为%.2f\ renturn 0; } 第三章 选择结构程序设计 一.知识点 1.关系运算符、逻辑运算符、逻辑值的表示与含义;注意&&、||的运算规则。 2.三种if语句 3.选择结构的嵌套,注意if与else的配对; 4.条件运算符:?: 5.switch语句,注意其执行过程; 6.选择结构程序设计思想。 二.练习 ㈠.填空题: 1.C语言中用 非0 表示逻辑值“真”,用 0 表示逻辑值“假”。 2.C语言中的关系运算符按优先级别是 、 、 、 、 、 。 答案:>、<、>=、<=、==、!= 3.C语言中的逻辑运算符按优先级别是 、 、 。 答案:!、&&、|| 4.C语言中的关系运算符和逻辑运算符的优先级别是 、 、 、 、 、 、 、 、 。 !、>、<、>=、<=、==、!=、&&、|| 5.C语言中逻辑运算符的 ! 优先级高于算术运算符。 6.将以下数学式改写成C语言的关系表达式或逻辑表达式: a=b或a main〔〕 { int a=100; if〔a>100〕 printf〔“%d\\n”,a>100〕; else printf(“%d\\n”,a<=100);} 8.假设已知a=10、b=15、c=1、d=2、e=0,请分别给出以下表达式的运算结果: ⑴ a*b && c 1 ⑵ a+b>10 || a+b<0 1 ⑶ e 0 ⑷ c==b>e 1 ⑸ !a 第 11 页 共 39 页 程序设计语言C复习 ⑿ (a+c==b)==(b+d==a) || (c=b+a)>(d=c+b) 1 9.当a=1、b=2、c=3时,执行以下if语句后,a= 3 、b= 1 、c= 1 。 if〔a>c〕;b=a;a=c;c=b; 10.当a=1、b=2、c=3时,执行以下if语句后,a= 3 、b= 2 、c= 2 。 if〔a>c〕b=a;a=c;c=b; 11.当a=1、b=2、c=3时,执行以下if语句后,a= 1 、b= 2 、c= 2 。 if〔a>c〕b=a,a=c;c=b; 12.将以下两条if语句合并为一条if语句: 。 if〔a>b〕 scanf〔“%d”,&x〕;else scanf〔“%d”,&y〕; if〔a<=b〕 i++;else j++; 答案:if〔a>b〕 {scanf〔“%d”,&x〕;j++;} else {scanf〔“%d”,&y〕;i++;} 13.将以下嵌套的if语句改写成不嵌套的if语句: 。 if〔w<0〕 k=0;else if〔w<=100〕 k=1; else k=0; 答案:if〔w>=0&&w<=100〕k=1; else k=0; 14.以下程序判断输入的一个整数是否能被3或7整除,假设能整除,输出“YES”,假设不能整除,输出“NO”。请填空: #include ㈡.选择题: 1.假设给定条件表达式〔M〕?〔a++〕:〔a--〕,则和表达式M等价的表达式为〔 〕C。 A.M==0 B.M==1 C.M!=0 D.M!=1 2.为表示关系x≥y≥z,应使用的C语言表达式是〔 〕A。 A.(x>=y) && (y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) 3.以下程序的输出结果是〔 〕D。 A.0 B.1 C.2 D.3 main〔〕 { int a=2,b=-1,c=2; if〔aif〔b<0〕 c=0; else c+=1; printf〔“%d\\n”,c〕; } 4.以下程序的输出结果是〔 〕A。 第 12 页 共 39 页 程序设计语言C复习 A.1 B.2 C.3 D.4 main〔〕 { int w=4,x=3,y=2,z=1;printf〔“%d\\n”,〔w { int a,b,s;scanf〔“%d %d”,&a,&b〕; s=a; if〔a6.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式〔 〕。D A.只能用逻辑表达式 B.只能用关系表达式 C.只能用逻辑表达式或关系表达式 D.可用任意表达式 7.以下程序段运行后,x的值是〔 〕D。 A.14 B.4 C.15 D.3 ok1=1;ok2=2;ok3=3;x=15; if〔!ok1〕 x--;else if〔ok2〕 if〔ok3〕x=3;else x=4; 8.在C语言中,switch语句后一对圆括号中exp的类型〔 〕。A A.可以是任何类型 B.只能为int型 C.可以是整型或字符型 D.只能是整型或实型 9.以下各组运算符中,优先级最高的分别为〔⑴B ⑵C ⑶C ⑷D〕。 ⑴A.?: B.++ C.&& D.+= ⑵A.*= B.>= C.〔类型〕 D., ⑶A.|| B.% C.! D.== ⑷A.= B.!= C.*(乘) D.( ) 10.假设a为整型变量,b为字符型变量,则以下正确的switch语句是〔 〕A。 A.switch〔〔int〕x/10〕 B.switch〔b〕 { case 1:a++;break; { case ‘\\042’;x=a/b;break; case 2:b++;break; case ‘6’;x=a*b;break; case 3:c++;break; case ‘\\010’;x=a+c;break; } } C.switch〔〔int〕x/10〕; D.switch〔a/100+10〕 { case 0:a++;break; { case2 :x=a/b;break; default:b++;break; case6 :x=a*b;break; case 3+1:c++;break; case8 :x=a+c;break; case 3:d++;break; case10 :x=a-c;break; } } ㈢.程序设计题: 1.从键盘输入一个字母,假设是大写字母,要求改用小写字母输出。 第 13 页 共 39 页 程序设计语言C复习 #include var=getchar(); if(var>=65&&var<=90) var=32+var; putchar(var); } 2.求ax2+bx+c=0的根。a、b、c由键盘输入,设b2-4ac>=0. #include {float a,b,c,p,x1,x2; printf(\"input 3 numbers:\\n\"); scanf(\"%f%f%f\ if(b*b-4*a*c>=0) { p=pow(b*b-4*a*c,0.5); x1=(-b+p)/2; x2=(-b-p)/2; printf(\"x1=%f,x2=%f\ } else { p=pow(-b*b+4*a*c,0.5); printf(\"x1=%f+%fi,x2=%f-%fi\ } } 第四章 循环结构程序设计 一.知识点 1.循环的概念,C实现循环的方法; 2.goto语句,注意标号的书写; 3.while语句,注意条件表达式的设计; 4.do……while语句,注意条件表达式的设计,及while之后的分号; 5.for语句,注意for中三个表达式的一般含义; 6.循环的嵌套; 7.break与continue语句,注意二者之间的区别; 8.循环结构程序设计思想 第 14 页 共 39 页 程序设计语言C复习 二.练习 ㈠.填空题: 1.以下程序段的输出结果 。y=7,x=21 x=y=0;while〔x<20〕y++,x+=3; printf〔“y=%d,x=%d\\n”,y,x〕; 2.当执行以下程序段后,i的值是 、j的值是 、k的值是 。5、4、6 int a,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0; for〔 ;a>b;++b〕i++; while〔a>++c〕 j++; do k++;while〔a>d++〕; 3.以下程序段的输出结果 。死循环没有输出结果 int k,m,n;n=10;m=1;k=1; while〔k<=n〕 m*=2; printf〔“%d\\n”,m〕; 4.以下程序的输出结果 -1 。 main〔〕 { int x=2;while〔x--〕;printf〔“%d\\n”,x〕;} 5.以下程序段的输出结果 11 。 int i=0,sum=1;do{ sum+=i++;}while〔i<5〕;printf〔“%d\\n”,sum〕; 6.有以下程序段: s=1.0;for〔k=1;k<=n;k++〕s=s+1.0/〔k*〔k+1〕〕;printf〔“%f\\n”,s〕; 要使下面的程序段的功能与上面程序段的功能相同,请填空: s=0.0;k=0; d=1.0; do{ s=s+d; k++ ;d=1.0/〔k*〔k+1〕〕;}while〔 k<=n〕; printf〔“%f\\n”,s〕; 7.以下程序的功能是:从键盘上输入假设干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空: main〔〕 { float x,amax,amin; scanf〔“%f”,&x〕;amax=x;amin=x; while〔 x>=0 〕 { if〔x>amax〕amax=x; if〔 x a=10;y=0; do { a+=2;y+=a; printf〔“a=%d,y=%d\\n”,a,y〕; if〔y>50〕break;}while〔a=14〕; 第 15 页 共 39 页 程序设计语言C复习 9.以下程序段中,for循环的循环次数为 。10 9 8 7 6 a=2;b=10;for〔i=b;i<=a;i--,a++〕 printf〔“%3d”,i〕; 10.以下程序段的输出结果 。8 *6 *4 *2 *0↙ 8 *6 *4 *2 *0 for〔i=0;i<3;i++,i++〕 { for〔j=10;j>0;j--〕 { if〔〔j+i〕%2〕{ j--;printf〔“*%d ”,j〕;continue;} --j;--j;printf〔“%d ”,j〕;} printf〔“\\n”〕;} ㈡.选择题: 1.以下程序段的输出结果是〔 〕D。 A.9 B.1 C.11 D.10 int k,j,s; for〔k=2;k<6;k++,k++〕{ s=1;for〔j=k;j<6;j++〕 s+=j;} 2.以下程序段的输出结果是〔 〕。C A.12 B.15 C.20 D.25 int i,j,m=0; for〔i=1;i<=15;i+=4〕 for〔j=3;j〈=19;j+=4〉m++; printf〔“%d\\n”,m〕; 3.以下程序段的输出结果是〔 〕。B A.10 B.9 C.10 D.9 9 8 9 8 8 7 8 7 7 6 int n=10;while〔n>7〕{ n--;printf〔“%d\\n”,n〕;} 4.以下程序段的输出结果是〔 〕。C A.1 B.3 0 C.1 -2 D.死循环 int x=3;do { printf〔“%3d”,x-=2〕;}while〔!〔--x〕〕; 5.以下程序的输出结果是〔 〕。C A.15 B.14 C.不确定 D.0 main〔〕 { int i,sum;for〔i=1;i<6;i++〕sum+=sum;printf〔“%d\\n”,sum〕;} 6.以下程序的输出结果是〔 〕。B A.741 B.852 C.963 D.8721 main〔〕{ int y=10; for〔 ;y>0;y--〕if〔y%3==0〕{ printf〔“%d”,--y〕;continue;} } 7.假设x是int型变量,以下程序段的输出结果是〔 〕。D A.**3 B.##3 C.##3 D.**3##4 第 16 页 共 39 页 程序设计语言C复习 ##4 **4 **4##5 **5 **5 ##5 for〔x=3;x<6;x++〕printf〔〔x%2〕?〔“**%d”〕 :〔“##%d\\n”〕,x〕; 8.以下程序的输出结果是〔 〕。A A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$ main〔〕 { int i; for〔i=1;i<=5;i++〕 { if〔i%2〕printf〔“*”〕;else continue; printf〔“#”〕;} printf〔“$\\n”〕; } 9.以下表达正确的选项是〔 〕。D A.do_while语句构成的循环不能用其它语句构成的循环来代替。 B.do_while语句构成的循环只能用break语句退出。 C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。 D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环。 10.以下程序的输出结果是〔 〕。D A.39 81 B.42 84 C.26 68 D.28 70 main〔〕 { int x,i; for〔i=1;i<=100;i++〕 { x=i;if〔++x%2==0〕if〔++x%3==0〕if〔++x%7==0〕printf〔“%d ”,x〕;} printf〔“\\n”〕; } 11.对下面程序段描述正确的选项是〔 〕。C A.while循环执行了10次 B.循环是无限循环 C.循环体语句一次也不执行 D.循环体语句只执行一次 int x=10;while〔x=0〕x=x-1; 12.以下关于for循环的正确描述是〔 〕。D A.for循环只能用于循环次数已确定的情况 B.for循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 13.以下程序段中是死循环的是〔 〕。C A.int n=1;while〔!n〕n++; B.int n=1;do { n--;}while〔n〕; C.int n=1;do { n++;}while〔n〕; D.for〔n=5;n<1;〕; 14.以下能正确计算1╳2╳3╳…╳10的程序段是〔 〕。C A.do { k=1;n=1;n=n*k;k++;}while〔k<=10〕; B.do { k=1;n=0;n=n*k;k++;}while〔k<=10〕; C.k=1;n=1;do { n=n*k;k++;}while〔k<=10〕; 第 17 页 共 39 页 程序设计语言C复习 D.k=1;n=0;do { n=n*k;k++;}while〔k<=10〕; ㈢.程序设计题: 1.编写程序,求1-3+5-7+…-99+101的值。 #include \"math.h\" #include \"stdio.h\" void main() { int i; double sum=0.0; for(i=0;i<=50;i++) { sum=sum+pow(-1,i)*(i*2+1); } printf(\"1-3+5-7+……-99+101=%0.0f\ } 或者 #include \"math.h\" #include \"stdio.h\" void main() { int i,k=1; long sum=0; for(i=1;i<=51;i++) { sum+=k*(i*2-1); k=-k; } printf(\"1-3+5-7+……-99+101=%ld\ } 2.求1+2+3+…+100的值。 #include int i,sum=0; i=1; while(i<=100) { sum=sum+i; 第 18 页 共 39 页 程序设计语言C复习 i=i+1; } printf(“%d”,sum); } 3.把100~200之间的不能被3整除的数输出。 #include for(n=100;n<=200;n++); { if(n%3!=0) printf(\"%d \} printf(\"\\n\"); } 4.求Fibonacci数列前20个数。#include for(i=0;i<20;i++) printf(\"%d,\} 5.打印1000以内的所有素数。 #include\"stdio.h\" void main() {int a[1001],i,j; a[0]=a[1]=0; for(i=2;i<=1000;i++) a[i]=i; for(i=2;i<1001;i++) { if(a[i]!=0) for(j=i+1;j<1001;j++) { if(j%i!=0); 第 19 页 共 39 页 程序设计语言C复习 else a[j]=0; } } printf(\"\\n\"); for(i=0;i<1001;i++) { if(a[i]!=0) printf(\"%d,\ } } 第五章 数组及其应用 一.知识点 1.数组的概念与定义 2.数组的初始化 3.数组元素的引用 4.字符数组的定义、使用、字符串处理函数 5.数组数据的一般处理方式 二.练习 ㈠.填空题: 1.假设有定义:double w[10];则w数组元素下标的上限是 9 ,下限是 0 。 2.以下程序的输出结果是 12 。 main〔〕 { int arr[10],i,k=0; for〔i=0;i<10;i++〕 arr[i]=i; for〔i=0;i<4;i++〕 k+=arr[i]+i; printf〔“%d\\n”,z〕; } 3.以下程序的输出结果是 300,0,2 。 main〔〕 { int i,j,row,col,m; int arr[3][3]={{100,200,300},{28,72,-30},{-850,2,6}}; m=arr[0][0]; for〔i=0;i<3;i++〕 for〔j=0;j<3;j++〕 if〔arr[i][j] 5.假设二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为i*m+j+1。 6.假设有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初 第 20 页 共 39 页 程序设计语言C复习 值是 0 ,a[2][1]得到的初值是 6 。 7.假设有说明char s[20];如果想从键盘上把字符串“This is a book.”输入到数组s中,应当调用的函数是 strcpy ;函数调用语句的形式是strcpy(s, “This is a book.”) 。 8.假设有char str1[20]={“a good”},str[ ]={“ student”};能把str2中的字符串接到str1中的字符串后面的函数调用语句是 strcat(str1,str) 。 9.以下findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。 findmax〔int s[ ],int t〕 { int k,p; for〔p=0,k=p;p #include “stdio.h” #include “ctype.h” main〔〕 { int num[26]={0},i; char c; while〔c=getchar()!=‘#’〕 if〔isupper〔c〕〕 num[c-‘A’]+=1; for〔i=0;i<26;i++〕 if〔num[i]〕 printf〔“%c: %d\\n”,i+‘A’,num[i]〕; } ㈡.选择题: 1.以下程序的输出结果是〔 〕。A A.不确定的值 B.3 C.2 D.1 main〔〕 { int n[2]={0},i,j,k=2; for〔i=0;i C.int k=5,a[k]; D.char a[ ]={‘a’,‘b’,‘c’}; 3.假设有说明语句:int a[2][4];则对a数组元素的正确引用是〔 〕。A A.a[0]3] B.a[0][4] C.a[2][2] D.a[2][2+1] 4.以下能对二维数组y进行正确初始化的语句是〔 〕。B A.int y[2][ ]={{ 1,0,1 },{ 5,2,3 }}; B.int y[ ][3]={{1,2,3},{4,5,6}}; 第 21 页 共 39 页 程序设计语言C复习 C.int y[2][4]={1,2,3},{4,5},{6}; D.int y[ ][3]={{1,0,1,0},{ },{1,1}}; 5.假设有说明语句:int y[ ][4]={0,0};则下面不正确的表达是〔 〕。D A.数组y的每个元素都可以得到初值0; B.二维数组y的行数为1; C.该说明等价于int y[ ][4]={0}; D.只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0; 6.假设有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8};则a数组的行数为〔 〕。A A.3 B.2 C.无确定值 D.1 7.假设二维数组y有m列,则在y[i][j]前的元素个数为〔 〕。B A.j*m+i B.i*m+j C.i*m+j-1 D.i*m+j+1 8.假设有以下语句,则正确的描述是〔 〕。B char x[ ]=“12345”;char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’}; A.x数组与y数组的长度相同 B.x数组长度大于y数组长度 C.x数组长度小于y数组长度 D.x数组等价于y数组 9.下面程序段的运行结果是〔 〕。B A.‘a’‘b’ B.ab C.ab c D.abc char c[5]={‘a’,‘b’,‘\\0’,‘c’,‘\\0’};printf〔“%s”,x〕; 10.有两个字符数组a、b,则以下能正确为a、b进行赋值的语句是〔 〕。D A.gets〔a,b〕; B.scanf〔“%s%s”,&a,&b〕; C.getchar〔a〕;getchar〔b〕; D.gets〔a〕;gets〔b〕; 11.有字符数组s1[80]和s2[80],则以下能正确对s1、s2进行输出的语句是〔 〕。B D A.puts〔s1,s2〕; B.printf〔“%s,%s\\n”,s1,s2〕; C.putchar〔s1,s2〕; D.puts〔s1〕,puts〔s2〕; 12.下面描述正确的选项是〔 〕。D A.两个字符串所包含的字符个数相同时,才能比较字符串; B.字符个数多的字符串比字符个数少的字符串大 C.字符串“STOP ”与“STOP”相等 D.字符串“That”小于字符串“The” 13.以下对字符数组的描述中错误的选项是〔 〕。C A.字符数组中可以存放字符串 B.字符数组中的字符串可以整体输入、输出 C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较 14.语句printf〔“%d\\n”,strlen〔“school”〕〕;的输出结果是〔 〕。B A.7 B.6 C.存在语法错误 D.不定值 15.有语句char s1[10],s2[10]={“books”};则能将s2的值正确赋给s1的语句是〔 〕。B A.s1={“books”}; B.strcpy〔s1,s2〕; C.s1=s2; D.strcpy〔s2,s1〕; ㈢.程序设计题: 1.编写程序打印九九乘法表。 第 22 页 共 39 页 程序设计语言C复习 #include printf(\"%d*%d=%d\ printf(\"\\n\"); } } 2.用随机函数产生20个100以内的整数,用选择法对它们排序。 #include {int a[20],i,j,min,mid,f; srand((unsigned)time(0)); for(i=0;i<20;i++) a[i]=rand()%100; for(i=0;i<19;i++) {min=a[i];f=i; for(j=i+1;j<20;j++) {if(min>a[j]) {min=a[j];f=j; } else ; } if(f==i)continue; else {mid=a[i];a[i]=a[f];a[f]=mid;} } printf(\"\\n\"); for(i=0;i<20;i++) printf(\"%d,\} 3.用随机函数产生50个200以内的整数,用冒泡法对它们排序。 #include 第 23 页 共 39 页 程序设计语言C复习 #include {int a[50],i,j,mid; srand((unsigned)time(0)); for(i=0;i<50;i++) a[i]=rand()%200; for(i=0;i<50;i++) { for(j=0;j<49;j++) { if(a[j]{mid=a[j];a[j]=a[j+1];a[j+1]=mid;} } } printf(\"\\n\"); for(i=0;i<50;i++) printf(\"%d,\}
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务