1、高级语言程序设计(C语言)知识串讲 CH1 C语言概述 掌握:C程序的结构,C语言的特点 1、C程序的执行点,例: 以下说法中正确的是________3。 ①C语言程序总是从第一个的函数开始执行 ②在C语言程序中,要调用的函数必须在main()函数中定义 ③C语言程序总是从main()函数开始执行 ④C语言程序中的main()函数必须放在程序的开始部分 2、Turbo C的上机步骤:启动TC,编辑源文件、编译源程序、执行程序 3、一个C程序的执行是从 ( A ) A)本程序的main函数开始,到main函数结束。 B)本程序文件的第一个函数开始,到本程序文
2、件的最后一个函数结束。 C)本程序的main函数开始,到本程序文件的最后一个函数结束。 D)本程序文件的第一个函数开始,到本程序main函数结束。 4、 一个C语言程序是由_______。B A) 一个主程序和若干子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成 5、以下叙述中正确的是(A) A)C程序中注释部分可以出现在程序中任意合适的地方 B)花括号"{"和"}"只能作为函数体的定界符 C)构成C程序的基本单位是函数,所有函数名都可以由用户命名 D)分号是C语句之间的分隔符,不是语句的一部
3、分 6、要把高级语言编写的源程序转换为目标程序,需要使用( D ) A) 编辑程序 B) 驱动程序 C) 诊断程序 D) 编译程序 7.以下不是C语言的特点的是( B ) A.C语言简洁、紧凑 B.能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D.C语言移植性好 8 以下四项中属于C语言关键字的是【C 】。 A) CHAR B) define C) unsigned D) retrun 9. 在C语言中,一个函数由两部分组成,分别是函数的说明部分 和 函数体 CH2 数据类型、运算符与表达式 掌握: 1,
4、C的基本数据类型 2,常量与变量:常量和符号常量、变量。 3,整型数据:整型常量、整型变量。 4,实型数据:实型常量、实型变量。 5,字符型数据:字符常量、字符变量,字符串常量,字符数据在内存中的存储形式及其使用方法。 6,变量赋初值。 7,各类数值型数据间的混合运算,算术运算符和算术表达式,赋值运算符和赋值表达式,逗号运算符和逗号表达式。 1、C语言的标识符,例: 以下不正确的C语言标识符是________4。 ① abc_123 ② _123abc ③ a_bc123 ④ 123abc 2、2进制、8进制、10进制、16进制的表示方法及其转换,
5、如何识别某个数可能是几进制,例: 以下整数值中,不正确的八进制或十六进制数是________3。 ①0x16 ②016 ③-16 ④0xaaaa 以下程序的输出结果是 261 。 main() { int a=177; printf("%o\n",a); } 3、 合法的字符常量是_________。B A) ‘\084’ B) ‘\x43 ’ C) ‘ab’ D) “\0” 4、 在C语言类型说明中,int、char等类型数据的长度是(D)。 A. 固定的
6、 B. 由用户自己指定 C. 任意的 D. 与机器字的长度有关 5.简单的数据类型有哪些?例如: C语言中最简单的数据类型包括___②___。 ①整型、实型、逻辑型 ②整型、实型、字符型 ③整型、字符型、逻辑型 ④整型、实型、逻辑型、字符型 6、 若有以下定义: char a;int b; float c;double d; 则表达式a*b-d-c值的类型为(D) A)float B)int C)char D)double
7、 7、若t为double型,则表达式t=1,t+5,t++的值为____D___。 A)1 B) 6.0 C) 2.0 D) 1.0 8、如何表示double类型的常量 以下能正确表示C语言中double类型常量的选项是___②____。 ①0.314´10 ②0.314e10 ③0.0314´102 ④3.14L 9、数据类型的自动转换和强制转换 若a为float型变量,且已赋值3.46932,能正确使a中的值保持两位小数,删去此后小数的语句是___③___。 ①a=a*100/100
8、 ②a=int(a*100)/100.0; ③a=(int)(a*100)/100.0; ④a=(int)a*100/100.0; 10、设a=1,b=2,c=3,d=4,则表达式“a
9、4。 ①s/=i; ②k++; ③a=b+c; ④i+j; 12、运算符的运算对象的类型 C语言中,运算对象必须是整型数的运算符是________1。 ①% ②/ ③%和/ ④* 以下一组运算符中,优先级最低的运算符是(D)。 A. * B. = = C. + D. = 13、不同数据类型的混合运算规则 设变量a是整型,f是实型,i是双精度型,则表达式100%9+'a'+i*f值的数据类型是________3。 ①int ②float ③double ④不确定 14、逗号表达式的运算规则 设有如下定
10、义: int x=10,y=3,z; 则语句 printf("%d\n",z=(x%y,x/y)); 的输出结果是________4。 ①1 ②0 ③4 ④3 15、字符串的长度函数,转义字符,如strlen("abcd\n00a\01\\")的值是多少? 以下语句的字符串中没有空格,则输出结果是__________2。 printf("%d\n",strlen("std\n007\1\\")); ①8 ②9 ③ 10 ④11 16、 若有定义:int a=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为( B )
11、 A) 1.4 B) 1 C) 2.0 D) 2 17、若变量已正确定义,语句“if(a>b) k=0; else k=1;”和(C)等价。 A. k=(a>b)?1: 0; B. k=a>b; C. k=a<=b; D. a<=b ? 0 : 1; 18、若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是( D ) A) a的值是字符C B) a的值是浮点型 C) 不允许字符型
12、和浮点型相加 D) a的值是字符‘A’的ASCII值加上1。 19、在C语言中,5种基本数据类型的存储空间长度的排列顺序为 ( A ) A) char < int < long int <= float < double B) char = int < long int <= float < double C) char < int < long int = float = double D) char = int = long int <= float < double 21、若 int a=3,则执行完表达式a+=a-=a*a后a的值为( C ) A)
13、3 B) 9 C) -12 D) 6 22、有以下程序 main() { int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf("%d %d %3.1f %3.1f\n",a,c,f,x); } 程序运行后的输出结果是b A)1 65 1 6.5 B)1 65 1.5 6.5 C)1 65 1.0 6.5 D)2 65 1.5 6.5 23、设x.y.z和k都是int型变量,则执行表达式
14、x=(y=4,z=16,k=32)后,x的值为(C) A) 4 B) 16 C) 32 D) 52 24、有以下程序 main() { char a='a',b; printf("%c,",++a); printf("%c\n",b=a++); } 程序运行后的输出结果是(A) A)b,b B)b,c C)a,b D)a,c 25.以下使i的运算结果为4的表
15、达式是(D)。 A.int i=0,j=0; (i=3,(j十十)十i); B.int i=1,j=0; j=i=((i=3)*2); C.int i=0,j=1; (j==1)?(i=1);(i=3); D.int i=1,j=1; i+=j十=2; 26.下列四组选项中,均不是C语言关键字的选项是(A). A)define B)getc C)include D)while if char sanf go type printf ca
16、se pow 27.设n=10,i=4、则赋值运算n%=i+1执行后,n的值是(A). A.0 B.3 C.2 D.1 28.逗号表达式(a=3*5,a*4),a十15的值为( C ),a的值为( C )。 ①A.15 B.60 C.30 D.不确定 ②A.60 B.30 C.15 D.90 29. 若有代数式,则正确的C语言表达式是(A)。 A)sqrt (fabs(pow(y,x)+log(y))) B) sqrt (abs(p
17、ow(y,x)+long(y))) C) sqrt (fabs(pow(x,y)+log(y))) D) sqrt (abs(pow(x,y)+long(y))) 30.下面叙述不正确的是( B)。 A) C语句末尾必须有分号 B) C语言中无论是整数还是实数都能准确的表示 C) 运算符“%”只能用于整数运算 D) 乘除运算符优先级高于加减运算符 31. ’\60’在内存中占 一 个字节,”\60”在内存中占 两 个字节。 CH3 最简单的C程序设计 掌握: 1,数据输出:putchar函数,printf函数。 2,数据输入:getchar函数,scanf函
18、数。 1、结构化程序设计的几种基本结构,几种语句的使用 结构化程序设计所规定的三种基本控制结构是( 顺序、选择、循环 ) 2、键盘输入数据时的格式 有如下输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为2,b的值3,c的值为4,从键盘输入数据的正确形式应是____3____。 ①234↙ ②2,3,4↙ ③a=2,b=3,c=4↙ ④a=2 b=3 c=4↙ 3、若有程序 main() { int i,j; scanf("i=%d,j=%d", &i,&j); printf("i=
19、d,j=%d\n",i,j); } 要求给i赋10,给j赋20,则应该从键盘输入:i=20,j=30 。 4、以下程序段的输出结果是( C ) int a=1234; printf("%2d\n",a); A) 12 B) 34 C) 1234 D) 提示出错、无结果 5、若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为( D ) A) 无确定值 B) a的地址 C) 512 D) 511 6
20、若x和y都是int型变量,x=100,y=200,且有下面的程序片段: printf("%d",(x,y)); 上面程序片段的输出结果是(A) A)200 B)100 C)100 200 D)输出格式符不够,输出不确定的值 7、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf("i=%d,f=%f",&i,&f); 为了把100和765.12分别赋给i和f,则正确的输入为b A)100765.12 B)i=100,f=765.12 C)100765.12 D)x
21、100y=765.12 8、若有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); 9、有以下程序 main( ) { int m=0256,n=256; printf("%o %o\n",m,n); } 程序运行后的输出结果是c A)0256 0400 B)0256 256
22、 C)256 400 D)400 400 10、有以下程序 main() { int a=666,b=888; printf("%d\n",a,b); } 程序运行后的输出结果是(B) A)错误信息 B)666 C)888 D)666,888 11、若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(D). A) scanf(“%d%d1x,%1e”,&x,&y,&z); B) scanf(“%2d*%d%
23、1f”,&x,&y,&z); C) scanf(“%x%*d%o”,&x,&Y); D) scanf(“%x%o%6.2f”, &x,&y,&z); 12、 表示“x≥y≥z”的C语言表达式是___ x>=y && y>=z ____。 13、下面程序段的执行结果是x=【3】,y=【4】。 int a=3,b=5,x,y; x=a+1,b+6; y=(a+1,b+6); printf("x=%d,y=%d",x,y); CH4 选择结构程序设计 1,关系运算符和关系表达式:关系运算符及其优先次序,关系表达式。 2,逻辑运算符和逻辑表达式:逻辑运算符及其优先次序,逻
24、辑表达式。 3,条件运算符和条件表达式。 4,条件语句:if语句的三种形式,if语句的嵌套。switch开关语句。 1、逻辑表达式的计算规则 语句if(!E);中的表达式!E等价于________3。 ① E!=0 ②E!=1 ③E==0 ④ E==1 2、表达式:10!=9的值是________2。 ①true ②1 ③0 ④非零值 3、下列条件语句中,功能与其他语句不同的是 d A) if(a) printf("%d\n",x); else printf("%d\n",y); B) if(a==0) printf("%d\n",y); else pr
25、intf("%d\n",x); C) if (a!=0) printf("%d\n",x); else printf("%d\n",y); D) if(a==0) printf("%d\n",x); else printf("%d\n",y); 4、条件表达式的运算:例int a=3,b=2 求 (--a!=b++)?--a:++b值 如果变量定义有:int a=9,c=8;则表达式(――a!=c++)?――a:++c的值为________2。 ①9 ②10 ③7 ④8 5、若a=3,b=4,c=5,则表达式a+b>c&&b==c 的值是 ( 0 ) 。
26、 6、CASE语句的执行 执行下列程序,当输入为1时,输出结果是①:__________4。 输入为3时,输出结果是 ②:__________3。 #include <stdio.h> main() { scanf("%d",&k); switch(k) { case 1:printf("%d\n",k++); case 2:printf("%d\n",k++); case 3:printf("%d\n",++k); case 4:printf("%d\n",k++);break; default:printf("Full!\n") } } ① ①1
27、 ②2 ③2 3 4 5 ④ 1 2 4 4 ② ①3 ②4 5 ③4 4 ④4 Full! 设有程序片段,若grade的值为‘A’ 1. 。则输出结果是 ___。 switch(grade) {case ‘A’: printf(“85~100\n”); case ‘B’: printf(“70~84\n”); case ‘C’: printf(“60~69\n”); case ‘D’: printf(“< 60\n”); default : printf(“error!\n”); }
28、 提示:注意有无break. 设有声明语句int b=0;,则执行以下语句后输出结果为**0**。 switch (b) { case 0: printf("**0**");break; case 1: printf("**1**");break; } 7、判断语句的形式 设定义int x,a,b,c;以下合法的if语句是____________1。 ①if(a=b)x++; ②if(a=<b)x++; ③if(a<>b)x++; ④if(a=>b)x++; 8、表示图中坐标
29、轴上阴影部分的正确表达式是( C ) X a b c A) (x<=a)&&(x>=b)&&(x<=c) B) (x<=a)||(b<=x<=c) C) (x<=a)||(x>=b)&&(x<=c) D) (x<=a)&&(b<=x<=c) 9、 以下程序的输出结果是( C ) main() { int a=5,b=4,c=6,d; printf("%d\n",d=a>b?(a>c?a:c):(b)); } A) 5 B) 4 C) 6
30、 D) 不确定 10、 以下程序的输出结果是( A ) main() { int a=4,b=5,c=0,d; d=!a&&!b||!c; printf("%d\n",d); } A) 1 B) 0 C) 非0的数 D) –1 11、设a=1,b=2,c=3,d=4,则表达式“a
31、 D)1 12、若变量a, i已正确定义,且i已正确赋值,合法的语句是( B ) A) a==1 B) ++i; C) a=a++=5; D) a=int(i); 13、若从键盘输入58,则以下程序输出的结果是 585858 。 main() { int a; scanf("%d",&a); if(a>50) printf("%d",a); if(a>40) printf("%d",a); if(a>30) printf("%d",a); } 14. 以下程序的输出结果是 16
32、 main() { int a=0 a+=(a=8); printf("%d\n",a); } 15. 以下程序输出的结果是 0 。 main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); } 16、 有下列运算符<<、+、++、〈=,其中优先级最高的是 ++ 17、设x,y,z,t均为int型变量,则执行以下语句后,t的值为c x=y=z=1; t=x||y&&z; A)不定值 B)2 C
33、)1 D)0
18、以下错误的if语句是【 C】。
A) if(x>y) z=x;
B) if(x==y) z=0;
C) if(x!=y) printf("%d",x) else printf("%d",y);
D) if(x 34、与运算符
B)逻辑与运算符<关系运算符<算术运算符<赋值运算符
C)以赋值运算符<逻辑与运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑与运算符
21.判断char型变量ch是否为大写字母的正确表达式是(C).
A)’A’<=ch<=’Z’ B)(cb>=’A’)&(ch<=’Z’)
C)(ch>=’A’)&&(ch<=’Z’) D)(‘A’<=ch)AND(‘Z’>=ch)
22.以下程序的输出为【 A】。
main( )
{ int a=20,b=30,c=40;
if(a>b) a=b,
b=c;c=a;
p 35、rintf("a=%d,b=%d,c=%d",a,b,c);
}
A) a=20,b=30,c=20
B) a=20,b=40,c=20
C) a=30,b=40,c=20
D) a=30,b=40,c=30
23. 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是(B).
if(x>y)
z=x;x=y; y=z;
A)x=l0,y=20,z=30 B)x=20,y=30,z=20
C)x=20,y=30,z=10 D)x=20,y=30,z=20
24.阅读以下程序
main()
{int 36、 a=5,b=0,c=0;
if(a=b+c) printf(“***\n”);
else printf(“$$$\n”);
}
以上程序 (D).
A)语法有错不能通过编译 B)可以通过编译但不能通过连接 C)输出*** D)输出$$$
25、对下面的程序,正确的说法是【A 】。
main( )
{ int a,b=1,c=2;
a=b+c,a+b,c+3;
c=(c)?a++:b--;
printf("c=%d/n",(a+b,c)); }
A) 无错误 B) 第三行有错误 C) 第四行有错误 D) 第五行有错误
26、执行下面程序时输出为1,请填空 37、
main( )
{ int a=4,b=3,c=2,d=1;
printf("%d\\n",(a8)
printf("%d\\n",++x);
else printf("%d\\n",x--); 38、
}
答案 x++。
28、对下述程序,正确的判断是【 A】。
main( )
{ int a,b;
scanf ("%d,%d",&a,&b);
if(a>b)a=b; b=a;
else a++; b++;
printf("%d,%d",a,b); }
A) 有语法错误不能通过编译
B) 若输入4,5则输出5,6
C) 若输入5,4则输出4,5
D) 若输入5,4则输出5,5
编程题 会用if-else语句、if……else if……else if……else 语句编程
CH5 循环控制
掌握:while语句。do—while语句。for语句。循环 39、的嵌套。break和continue语句。
了解:goto语句以及用goto语句构成的循环
1、循环控制语句的使用
定义如下变量:
int n=10;
则下列循环的输出结果是________4。
while(n>7)
{n——;
printf("%d\n",n);
}
①10
②9
③10
④9
9
8
9
8
8
7
8
7
7
6
2、循环结构中的循环次数
有以下程序段:
int k=0;
while(k=1)k++;
while循环执行的次数是________1。
①无限次 ②有语法错,不能执行
③一次也不执行 40、 ④执行1次
3、当执行以下程序时( A )
x=1;
do
{x=x*x;}
while(!x);
A) 循环体将执行一次 B)循环体将执行两次
C) 循环体将执行无限次 D)系统提示有语法错误
4、有如下程序
main()
{int x=23;
do{
printf("%d",x--);
}
while(!x);
}
该程序的执行结果是( B )
A)22 B) 23 41、 C) 不输出任何内容 D) 陷入死循环
7、 有以下程序,输出结果是( B )
main()
{ int i , j ;
for(j=10;j<11;j++)
{for (i=9;i 42、 。
main()
{int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
9、有以下程序
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{
case 0:printf("%d",i);
case 2:printf("%d",i);
default:printf("%d",i);
}
}
程序运行后的输出结果是 c
A)022111 B)021021 C)000122 D)012 43、
10、#include 44、行3次
12.下面有关for循环的正确描述是( D )
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判定表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环体语句中,可以包含多条语句,但要用花括号括起来
13. C语言中while和do-while循环的主要区别是(A).
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
14.执行循环语句:for(x=0, y=0; y 45、250 || x<4; x++) y+=50;
其循环体共执行 ____A_______ 次。
A)5 B)4 C)3 D)2
15. break语句 ______C_____ 。
A 用在能出现语句的任何地方
B 只能用在循环体内
C 只能用在循环体内或switch语句中
D 可用作函数内的任一语句
16.下面程序段的运行结果是(D)
x=y=0;
while(x<15) y++, x+=++y;
printf(“%d,%d”’y’x);
A)20,7 B)6,12 C)20,8 D)8,20
17 46、下面程序的运行结果是(C).
#include 47、20】。
#include 48、{ int k, i , j;
for(i=0;i<=2;i++)
{ for(k=1;k<=i;k++) printf(“ ”);
for( j=0;j<=3;j++) printf(“ * ”);
printf(“\n”);
}
}
21.下面程序的功能是计算S= k! 。
long fun(int n)
{ int i;
long s;
for(i=1;i<=n ;i++)
s*=i;
return( s);
}
编程题
“水仙花数”是指一个三位数,它的三个数位数字的立方和这个数的数值相等,编程打印所 49、有的水仙花数。
解:本题适于使用穷举法求解,注意穷举范围为三位数100~999,穷举条件为:三位数的三个数位数字的立方和等于这个数的数值。需要使用循环结构。程序如下:
#include 50、)
printf("%5d",n);
}
printf("\n");
}
编程实现:求数列的前20项的和。
CH6 数组
1,一维数组的定义和引用,一维数组的初始化及程序。
2,二维数组的定义和使用:二维数组的定义、引用,二维数组的初始化及程序。
3,字符数组:字符数组的定义、引用及初始化,字符串和字符串结束标志,字符数组的输入输出,字符数组编程应用。
1、合法的数组定义是d
A)int a[]=“string” B)int a[5]={0,1,2,3,4,5}
C)vhst s=“string”






