兔云论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 40|回复: 0

C语言同步练习题

[复制链接]

97

主题

99

帖子

384

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
384
发表于 2019-11-16 19:44:07 | 显示全部楼层 |阅读模式
第一章 C语言概述
一.知识点
1.C语言的特点:①语言简洁、紧凑,使用方便、灵活; ②运算符丰富;
数据结构丰富;    ④具有结构化控制语句;
⑤语法限制不太严格,程序设计自由度大;
⑥可以进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作;
生成的目标代码质量高,程序执行效率高;  ⑧程序的移植性好。
2.C程序的组成:
⑴C程序是由函数构成的;
⑵一个函数包括函数的首部(即函数的第一行)和函数体(即花括号部分);
⑶函数体一般包括声明部分和执行部分;
一个C程序总是从main函数开始执行,从main函数结束;
⑸C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上;
⑹每个语句和数据定义的最后必须有一个分号;
⑺C语言本身没有输入输出语句,是通过函数实现输入输出的;
可以用/*……*/对C程序的任何部分作注释。
3.C语言程序的运行:源程序文件的扩展名为.c,目标程序文件的扩展名为.obj,可执行程序文件的扩展名为.exe。

二.练习
.填空题
1.在TURBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是   
2.C语言源程序文件的后缀是      ,经过编译后,生成文件的后缀是      ,经过连接后,生成文件的后缀是      
3.结构化程序由                        三种基本结构组成。

.选择题
1.组成C语言程序的是(  )。
A.子程序      B.过程      C.函数      D.主程序和子程序
2.以下叙述中正确的是(  )。
A.在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。
B.C程序由主函数组成。
C.C程序由函数组成。
D.C程序由函数和过程组成。

.程序设计题
1.编写一个C程序,输入a、b、c三个数,输出其中最大者。

第二章 算法
一.知识点
1.算法:为解决一个问题而采取的方法和步骤。
2.算法的分类:数值算法、非数值算法。
3.算法的特点:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。
4.算法描述方法:自然语言、流程图、改进流程图、N—S流程图、伪代码、计算机语言。

二.练习
N—S图表示下列问题:
1.有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换。
2.依次将10个数输入,要求将其中最大的数打印出来。
3.有3个数a、b、c,要求按从大到小的顺序把它们打印出来。
4.求1+2+3+……+100。
5.判断一个数n能否同时被3和5除。
6.将100~200之间的素数打印出来。
7.求两个整数m和n的最大公约数。
8.求方程ax2+bx+c=0的根;分别考虑有两个不等的实根和有两个相等的实根的情况。

第三章 数据类型、运算符与表达式
一.知识点
1.C的数据类型:基本、构造、指针和空类型,char、int、short、long、unsigned、float、double、enum、struct、union、typedef。
2.常量与变量的概念,注意符号常量的定义与使用;
3.整型、实型、字符型常量的表示,注意整型常量的十进制、八进制、十六进制的书写。
4.变量的定义,C的标识符包括关键字、预定义标识符、用户定义标识符;用户定义标识符的可用字符为字母、数字、下划线,第一个字符为字母或下划线。
5.常见数据类型的取值范围,int为-32768~+32767,unsigned int为0~65535。
6.转义字符:\n、\t、\b、\r、\f、\\、\’\”\ddd、\xhh
7.不同数值型数据的混合运算,低级类型转换为高级类型运算
8.C的运算符:注意结合方向和运算的优先级
9.算术运算符:+、-、*、/、%、++、--,注意自加、减运算符分前缀和后缀两种方式。其中前缀方式为先自加、减,后引用;后缀方式为先引用,后自加、减;运算符%要求运算量为整数,运算结果也为整数。注意除运算时,若运算量为整型时,其运算结果也是整型的规则。
10.赋值类运算符:=、+=、-=、*=、/=、%=,注意含义和数据类型的转换。
11.逗号运算符的使用,注意逗号运算符的运算规则。

二.练习
.填空题
1.若k为整型变量且赋值11。请写出运算k++后表达式的值      和变量的值      
2.若x为double型变量,运算x=3.2,++x后表达式的值      和变量的值      
3.函数体由符号   开始,用符号   结束。函数体的前面是     部分,其后是     部分。
4.C语言中的标识符可分为                    和预定义标识符三类。
5.在C语言程序中,用关键字      定义基本整型变量,用关键字      定义单精度实型变量,用关键字      定义双精度实型变量。
6.把a1、a2定义成单精度实型变量,并赋初值1的定义语句是                    
7.C程序中定义的变量,代表内存中的一个            
8.表达式3.5+1/2的计算结果是      
9.写出数学表达式file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml95984\wps1.png三个等价的C语言表达式                             
10.通常一个字节包含    个二进制位。
11.当计算机用两个字节存放一个整数时,能存放的最大(十进制)整数是      、最小(十进制)整数是      
12.在C语言中整数可用    进制数、    进制数和    进制数三种数制表示。
13.C语言中,int型数据占    个字节,long型数据占    个字节,unsigned int型数据占    个字节,short型数据占    个字节, float型数据占    个字节,double型数据占    个字节,char型数据占    个字节。

.选择题
1.以下选项中正确的整型常量是(  )。
A.12.        B.-20        C.1,000        D.4  5  6
2.以下选项中正确的实型常量是(  )。
A.0        B.3.  1415     C.0.329╳102        D..871
3.以下选项中不合法的用户标识符是(  )。
A._123        B.printf     C.A$        D.Dim
4.C语言中运算对象必须是整型的运算符是(  )。
A.%        B./        C.!        D.*
5.可在C程序中用作用户标识符的一组标识符是(  )。
A.void        B.as_b3        C.For        D.2c
   define          _123            -abc           DO
   WORD         If               case           SIG
6.若变量已正确定义并赋值,符合C语言语法的表达式是(  )。
A.a=a+7;    B.a=7+b+c,a++    C.int(12.3%4)    D.a=a+7=c+b
7.不合法的八进制数是(  )。
A.0        B.028        C.077        D.01
8.不合法的十六进制数是(  )。
A.oxff        B.0Xabc        C.0x11        D.0x19

.程序设计题

第四章 顺序程序设计
一.知识点
1.C语句的类型:控制语句、函数调用语句、表达式语句、空语句、复合语句。
2.输入输出的概念:输入输出是相对主机而言,C语言是由函数来实现输入输出的。
3.字符数据的输入/输出:getchar()、putchar()
4.格式输入/输出:scanf()、printf()
5.printf的格式符:d、io,x、Xu,c,s,f,e、Eg、Gl,m,n,-。
6.scanf的格式符:d、io,x、Xu,c,s,f,e、Eg、Gl,m,*;&。注意输入数据时数据流的分隔符,系统默认的分隔符为空格、tab键和回车。
7.顺序结构的设计思想:声明变量、输入数据、处理、输出结果。

二.练习
.填空题
1.以下程序段执行后的输出结果是:⑴                        
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.以下程序段的输出结果是                          
int  x=0177;printf(“x=%6d,x=%6o,x=%6x,x=%6u\n”,x,,x,x,x);
5.以下程序段的输出结果是                          
double  a=513.789215;
printf(“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf\n”,a,a,a,a);
6.以下程序段的输出结果是        
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 <stdio.h>
main()
{ int a,b,c,;
  printf(“Enter a,b,c:”);
  scanf(“%d,%d,%d”,);
  a=b;b=c;;
  printf(“a=%d,b=%d,c=%d\n”,a,b,c);}
8.以下程序不借助任何变量把a、b中的值进行交换。请填空:
#include <stdio.h>
main()
{ int a,b;
  printf(“Input a,b:”);
  scanf(“%d,%d”,);
  a+=b=a-a=a-;
  printf(“a=%d,b=%d\n”,a,b);}

.选择题
1.若a、b、c、d都是int型变量且初始值为0,下列不正确的赋值语句是(  )。
A.a=b=c=100;      B.d++;      C.c+b;      D.d=(c=22)-(b++);
2.以下选项中不是C语句的是(  )。
A.{int i;i++;printf(“%d\n”,i);}    B.;      C.a=5,c=10      D.{ ;}
3.以下合法的C语言赋值语句是(  )。
A.a=b=58        B.k=int(a+b);        C.a=58,b=58        D.--i;
4.以下程序的输出结果是(  )。
A.0        B.1        C.3        D.不确定的值
main()
{ int x=10,y=3;  printf(“%d\n”,y=x/y);}
5.若变量已正确说明为int类型,要给a、b、c输入数据,正确的输入语句是(  )。
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中的数进行交换,下面不正确的语句组是(  )。
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.若变量已正确定义,以下程序段的输出结果是(  )。
A.输出格式说明与输出项不匹配,输出无定值
B.5.1700        C.5.16800        D.5.16900
x=5.16894;printf(“%f\n”,(int)(x*1000+0.5)/(float)1000);
8.执行以下程序段后,c3中的值是(  )。
A.0        B.1/2        C.0.5        D.1
int c1=1,c2=2,c3;c3=c1/c2;
9.执行以下程序段后,其输出结果是(  )。
A.0,0,-10        B.0,0,5        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.以下程序的输出结果是(  )。
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型占两个字节,以下程序段的输出是(  )。
A.-1,-1        B.-1,32767        C.-1,32768        D.-1,65535
int a=-1;printf(“%d,%u\n”,a,a);
12.以下程序段的输出结果是(  )。
A.|3.1415|        B.|    3.0|        C.|     3|        D.|     3.|
float a=3.1415;printf(“|%6.0f|\n”,a);
13.以下程序段的输出结果是(  )。
A.9  8        B.8  9        C.6  6        D.以上三个都不对
#include <math.h>
main()
{ double a=-3.0,b=2;
  printf(“%3.0f  %3.0f\n”,pow(b,fabs(a)),pow(fabs(a),b));}
14.若a为整型变量,则以下语句(  )。
A.赋值不合法      B.输出值为-2      C.输出为不确定值      D.输出值为2
a=-2L;printf(“%d\n”,a);
15.若有定义char s=‘\092’;则该语句(  )。
A.使s的值包含1个字符        B.定义不合法,s的值不确定
C.使s的值包含4个字符        D.使s的值包含3个字符
16.若k、g均为int型变量,则下列语句的输出为(  )。
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,执行下列语句后的输出为(  )。
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.27.000000      B.27.500000      C.28.000000      D.28.500000
#include <stdio.h>
main()
{ 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.下列程序的输出结果是(  )。
A.18        B.9        C.-18        D.-9
main() { int a=9;a+=a-=a+a;printf(“%d\n”,a); }
20.下列程序的输出结果是(  )。
A.0        B.5        C.1        D.不确定值
main() { int a=7,b=5;printf(“%d\n”,b=b/a);}
21.下列程序的输出结果是(  )。
A.12        B.11        C.10        D.9
main() { int a=011;printf(“%d\n”,++a);}

.程序设计题
1.编写程序,输入两个整数1500和350,求出它们的商和余数并进行输出。
2.编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
3.输入一个华氏温度,要求输出摄氏温度。公式为:c=5(f-32)/9。

第五章 选择结构程序设计
一.知识点
1.关系运算符、逻辑运算符、逻辑值的表示与含义;注意&&、||的运算规则。
2.三种if语句
3.选择结构的嵌套,注意if与else的配对;
4.条件运算符:?:
5.switch语句,注意其执行过程;
6.选择结构程序设计思想。

二.练习
.填空题
1.C语言中用    表示逻辑值“真”,用    表示逻辑值“假”。
2.C语言中的关系运算符按优先级别是                       
3.C语言中的逻辑运算符按优先级别是           
4.C语言中的关系运算符和逻辑运算符的优先级别是                    
                           
5.C语言中逻辑运算符的    优先级高于算术运算符。
6.将下列数学式改写成C语言的关系表达式或逻辑表达式:
a=b或a<c                                 |x|>4                            
7.下列程序的输出结果   
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          ⑵ a+b>10 || a+b<0          ⑶ e         ⑷ c==b>e        
⑸ !a<e             ⑹ a++ && e++ && c++         ⑺ !e && e==b==++c        
⑻ (0<a) && (a<2)         ⑼ 1.234 && 5.982    
⑽ (b==10) && (a==10)         ⑾ !0 || d && a==c+d    
⑿ (a+c==b)==(b+d==a) || (c=b+a)>(d=c+b)       
9.当a=1、b=2、c=3时,执行以下if语句后,a=    b=    c=   
if(a>c);b=a;a=c;c=b;
10.当a=1、b=2、c=3时,执行以下if语句后,a=    b=    c=   
if(a>c)b=a;a=c;c=b;
11.当a=1、b=2、c=3时,执行以下if语句后,a=    b=    c=   
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++;
13.将以下嵌套的if语句改写成不嵌套的if语句:                             
if(w<0) k=0;else if(w<=100) k=1; else  k=0;
14.以下程序判断输入的一个整数是否能被3或7整除,若能整除,输出“YES”,若不能整除,输出“NO”。请填空:
#include <stdio.h>
main()
{ int k;
  printf(“Enter a int number:”);scanf(“%d”,&k);
  if(  printf(“YES\n”);else printf(“NO\n”);}
15.在switch语句中,当执行到break语句时,使流程                  

.选择题
1.若给定条件表达式(M)?(a++):(a--),则和表达式M等价的表达式为(  )。
A.M==0        B.M==1        C.M!=0        D.M!=1
2.为表示关系x≥y≥z,应使用的C语言表达式是(  )。
A.(x>=y) && (y>=z)    B.(x>=y)AND(y>=z)    C.(x>=y>=z)    D.(x>=y)&(y>=z)
3.以下程序的输出结果是(  )。
A.0        B.1        C.2        D.3
main()
{ int a=2,b=-1,c=2;
  if(a<b)
if(b<0) c=0;
  else c+=1;
  printf(“%d\n”,c); }
4.以下程序的输出结果是(  )。
A.1        B.2        C.3        D.4
main()
{ int w=4,x=3,y=2,z=1;printf(“%d\n”,(w<x ? w : z<y ? z : x));}
5.若执行以下程序时,从键盘上输入3和4,则输出结果是( B )。
A.14        B.16        C.18        D.20
main()
{ int a,b,s;scanf(“%d %d”,&a,&b); s=a;
  if(a<b)s=b;
  s*=s;printf(“%d\n”,s); }
6.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式(  )。
A.只能用逻辑表达式        B.只能用关系表达式
C.只能用逻辑表达式或关系表达式        D.可用任意表达式
7.下列程序段运行后,x的值是(  )。
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.可以是任何类型        B.只能为int型
C.可以是整型或字符型        D.只能是整型或实型
9.以下各组运算符中,优先级最高的分别为(                        )。
⑴A.?:      B.++        C.&&          D.+=
⑵A.*=        B.>=        C.(类型)     D.,
⑶A.||        B.%         C.!           D.==
⑷A.=         B.!=        C.*(乘)       D.( )
10.若a为整型变量,b为字符型变量,则以下正确的switch语句是(  )。
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.从键盘输入一个字母,若是大写字母,要求改用小写字母输出。
2.求ax2+bx+c=0的根。a、b、c由键盘输入,设b2-4ac>=0.

第六章 循环控制
一.知识点
1.循环的概念,C实现循环的方法;
2.goto语句,注意标号的书写;
3.while语句,注意条件表达式的设计;
4.do……while语句,注意条件表达式的设计,及while之后的分号;
5.for语句,注意for中三个表达式的一般含义;
6.循环的嵌套;
7.break与continue语句,注意二者之间的区别;
8.循环结构程序设计思想

二.练习
.填空题
1.以下程序段的输出结果        
x=y=0;while(x<20)y++,x+=3;
printf(“y=%d,x=%d\n”,y,x);
2.当执行以下程序段后,i的值是    j的值是    k的值是   
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.以下程序的输出结果        
main()
{ int x=2;while(x--);printf(“%d\n”,x);}
5.以下程序段的输出结果        
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;;
do{ s=s+d;d=1.0/(k*(k+1));}while();
printf(“%f\n”,s);
7.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空:
main()
{ float x,amax,amin;
  scanf(“%f”,&x);amax=x;amin=x;
  while()
  { if(x>amax)amax=x;
    if(amin=x;
    scanf(“%f”,&x);}
  printf(“\namax=%f\namin=%f\n”,amax,amin); }
8.以下程序段的输出结果        
a=10;y=0;
do { a+=2;y+=a;
     printf(“a=%d,y=%d\n”,a,y);
     if(y>50)break;}while(a=14);
9.下列程序段中,for循环的循环次数为        
a=2;b=10;for(i=b;i<=a;i--,a++) printf(“%3d”,i);
10.以下程序段的输出结果        
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.以下程序段的输出结果是(  )。
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.以下程序段的输出结果是(  )。
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.以下程序段的输出结果是(  )。
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.以下程序段的输出结果是(  )。
A.1        B.3  0        C.1  -2        D.死循环
int x=3;do { printf(“%3d”,x-=2);}while(!(--x));
5.以下程序的输出结果是(  )。
A.15        B.14        C.不确定        D.0
main()
{ int i,sum;for(i=1;i<6;i++)sum+=sum;printf(“%d\n”,sum);}
6.以下程序的输出结果是(  )。
A.741        B.852        C.963        D.875421
main(){ int y=10;
  for( ;y>0;y--)if(y%3==0){ printf(“%d”,--y);continue;} }
7.若x是int型变量,以下程序段的输出结果是(  )。
A.**3        B.##3        C.##3        D.**3##4
   ##4           **4           **4##5        **5
   **5           ##5
for(x=3;x<6;x++)printf((x%2)?(“**%d”) :(“##%d\n”),x);
8.以下程序的输出结果是(  )。
A.*#*#*#$        B.#*#*#*$        C.*#*#$        D.#*#*$
main()
{ int i;
  for(i=1;i<=5;i++)
  { if(i%2)printf(“*”);else continue;
    printf(“#”);}
  printf(“$\n”);   }
9.以下叙述正确的是(  )。
A.do_while语句构成的循环不能用其它语句构成的循环来代替。
B.do_while语句构成的循环只能用break语句退出。
C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。
D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环。
10.以下程序的输出结果是(  )。
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.对下面程序段描述正确的是(  )。
A.while循环执行了10次         B.循环是无限循环
C.循环体语句一次也不执行        D.循环体语句只执行一次
int x=10;while(x=0)x=x-1;
12.以下关于for循环的正确描述是(  )。
A.for循环只能用于循环次数已确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
13.下列程序段中是死循环的是(  )。
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的程序段是(  )。
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);
D.k=1;n=0;do { n=n*k;k++;}while(k<=10);

.程序设计题
1.编写程序,求1-3+5-7+…-99+101的值。
2.求1+2+3+…+100的值。
3.把100~200之间的不能被3整除的数输出。
4.求Fibonacci数列前40个数。
5.打印100以内的所有素数。

第七章 数组
一.知识点
1.数组的概念与定义
2.数组的初始化
3.数组元素的引用
4.字符数组的定义、使用、字符串处理函数
5.数组数据的一般处理方式

二.练习
.填空题
1.若有定义:double w[10];则w数组元素下标的上限是    ,下限是   
2.以下程序的输出结果是        
main()
{ int arr[10],i,k=0;
  for(i=0;i<10;i++) arr=i;
for(i=0;i<4;i++) k+=arr+i;
printf(“%d\n”,z); }
3.以下程序的输出结果是        
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[j]<m){ m=arr[j];row=i;col=j;}
  printf(“%d,%d,%d\n”,m,row,col); }
4.在C语言中,二维数组元素在内存中的存放顺序是            
5.若二维数组a有m列,则计算任一元素a[j]在数组中相对位置的公式为        
6.若有定义:int a[3][4]={{1,2},{0}{4,6,8,10}};则初始化后,a[1][2]得到的初值是        a[2][1]得到的初值是        
7.若有说明char s[20];如果想从键盘上把字符串“This is a book.”输入到数组s中,应当调用的函数是            ;函数调用语句的形式是            
8.若有char str1[20]={“a good”},str[ ]={“ student”};能把str2中的字符串接到str1中的字符串后面的函数调用语句是              
9.以下findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。
findmax(int s[ ],int t)
{ int k,p;
  for(p=0,k=p;p<t;p++)
    if(s[p]>s[k]);
  return }
10.以下程序统计从终端输入的字符中每个大写字母的个数,num[0]中统计字母A的个数,其它依次类推。用#号结束输入,请填空。
#include “stdio.h”
#include “ctype.h”
main()
{ int num[26]={0},i; char c;
  while(=‘#’)
    if(isupper(c)) num[]+=1;
  for(i=0;i<26;i++)
    if(num) printf(“%c: %d\n”,i+‘A’,num);
}
.选择题
1.以下程序的输出结果是(  )。
A.不确定的值        B.3        C.2        D.1
main()
{ int n[2]={0},i,j,k=2;
  for(i=0;i<k;i++)
    for(j=0;j<k;j++)n[j]=n+1;
  printf(“%d\n”,n[k]);}
2.以下对一维数组a的正确说明是(  )。
A.char a(10);        B.int a[ ];
C.int k=5,a[k];        D.char a[ ]={‘a’,‘b’,‘c’};
3.若有说明语句:int a[2][4];则对a数组元素的正确引用是(  )。
A.a[0]3]        B.a[0][4]        C.a[2][2]        D.a[2][2+1]
4.以下能对二维数组y进行正确初始化的语句是(  )。
A.int y[2][ ]={{ 1,0,1 },{ 5,2,3 }};
B.int y[ ][3]={{1,2,3},{4,5,6}};
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};则下面不正确的叙述是(  )。
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.3        B.2        C.无确定值        D.1
7.若二维数组y有m列,则在y[j]前的元素个数为(  )。
A.j*m+i        B.i*m+j        C.i*m+j-1        D.i*m+j+1
8.若有以下语句,则正确的描述是(  )。
char x[ ]=“12345”;char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’};
A.x数组与y数组的长度相同        B.x数组长度大于y数组长度
C.x数组长度小于y数组长度        D.x数组等价于y数组
9.下面程序段的运行结果是(  )。
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进行赋值的语句是(  )。
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进行输出的语句是(  )。
A.puts(s1,s2);        B.printf(“%s,%s\n”,s1,s2);
C.putchar(s1,s2);        D.puts(s1),puts(s2);
12.下面描述正确的是(  )。
A.两个字符串所包含的字符个数相同时,才能比较字符串;
B.字符个数多的字符串比字符个数少的字符串大
C.字符串“STOP ”与“STOP”相等    D.字符串“That”小于字符串“The”
13.以下对字符数组的描述中错误的是(  )。
A.字符数组中可以存放字符串        B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
14.语句printf(“%d\n”,strlen(“school”));的输出结果是(  )。
A.7        B.6        C.存在语法错误        D.不定值
15.有语句char s1[10],s2[10]={“books”};则能将s2的值正确赋给s1的语句是(  )。
A.s1={“books”};  B.strcpy(s1,s2);  C.s1=s2;  D.strcpy(s2,s1);
.程序设计题
1.编写程序打印九九乘法表。
2.用随机函数产生20个100以内的整数,用选择法对它们排序。
3.用随机函数产生50个200以内的整数,用冒泡法对它们排序。
4.打印杨辉三角形的前10行。
5.有一篇文章,共有3行文字,每行有80个字符。要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
6.输入一行数字字符,请用数组元素作为计数器来统计每个字符的个数。用下标为0的元素统计字符“1”的个数,下标为1的元素统计字符“2”的个数,依次类推。
第八章 函数
一.知识点
1.函数定义的一般形式:函数类型 函数名(形参类型 形参名,……) { 函数体 }
2.函数的参数:注意形参与实参在类型、个数上的一一对应关系。
3.函数值:函数的返回值,也就是函数类型,若函数无返回值,则为void;
4.函数的调用:注意调用的形式;
5.函数原型与对被调函数的声明,注意整型函数可以不用声明;
6.函数的嵌套调用:
7.函数的递归调用,要求能用递归编写求n!、1+2+……+n等问题的程序。
8.数组作为函数参数,注意其含义及使用的情况;
9.变量的存储类型,注意static类型的初值、值的变化,外部变量的使用等;
10.内部函数和外部函数:注意其区别。
二.练习
.填空题
1.以下程序的输出结果是        
unsigned fun6(unsigned num)
{ unsigned k=1;
  do
{ k*=num%10;num/=10;}while(num);
return k;}
main()
{ unsigned n=26;
  printf(“%d\n”,fun6(n)); }
2.以下程序的输出结果是        
double sub(double x,double y,double z)
{ y-=1.0;z=z+x;return z;}
main()
{ double a=2.5,b=9.0;
  printf(“%f\n”,sub(b-a,a,a));}
3.以下程序的输出结果是        
fun1(int a,int b)
{ int c;
a+=a;b+=b;c=fun2(a,b);
  return c*c;}
fun2(int a,int b)
{ int c;
  c=a*b%3;return c;}
main()
{ int x=11,y=19;
  printf(“%d\n”,fun1(x,y));}
4.下面pi函数的功能是,根据以下公式返回满足精度ε要求的π的值。请填空。
double pi(double eps)
{ double s=0.0,t=1.0;int n;
  for(t>eps;n++)
  { s+=t;t=n*t/(2*n+1);
  return (2.0*);}
5.以下函数是求x的y次方。请填空。
double fun(double x,int y)
{ int i;double z=1;
  for(i=1;ii++) z=return z;}
6.以下程序的功能是计算s=1!+2!+……+n!请填空。
long f(int n)
{ int i;long s;
  s=for(i=1;i<=n;i++) s=;
  return s;}
main()
{ long s;int k,n;
  scanf(“%d”,&n);s=;
  for(k=0;k<=n;k++) s=s+;
  printf(“%d\n”,s);}
7.在定义一个函数时如果不加类型说明,则它隐含的类型为      
8.下列程序的运行结果是a=      b=      
f( )
{ int a=3; static  b=4; a=a+1; b=b+1;
  printf(“a=%d,b=%d\n”,a,b);}
main( )
{ f( ); f( );}
9.下列程序的运行结果是                  
main( )
{int i=2,x=5,j=7;
fun(j,6 );
printf(“i=%d;j=%d;x=%d\n”,i,j,x);}
fun( int i, int j)
{ int x=7; printf(“i=%d;j=%d;x=%d\n”,i,j,x);}
10.下列程序的运行结果是                  
main( )
{ int x=2; y=3; z=0;
  printf(“#  x=%d  y=%d  z=%d\n”, x, y, z);
add(x, y, z);
  printf(“@  x=%d  y=%d  z=%d\n”, x, y, z);}
add( int x, int y, int z)
{ z=x+y; x=x*x;; y=y*y;
  printf(“*  x=%d  y=%d  z=%d\n”, x, y, z);}
.选择题
1.以下说法中正确的是(  )。
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须在main函数中定义
C.C语言程序总是从main函数开始执行
D.C语言程序中的main函数必须放在程序的开始部分
2.以下函数的类型是(  )。
A.与参数x的类型相同      B.void类型      C.int类型      D.无法确定
fff(float x)
{ printf(“%d\n”,x*x);}
3.以下函数调用语句中,含有的实参个数是(  )。
A.1        B.2        C.4        D.5
func((exp1,exp2),(exp3,exp4,exp5));
4.以下程序的输出结果是(  )。
A.11        B.20        C.21        D.31
func(int a,int b)
{ int c;c=a+b;return c;}
main()
{ int x=6,y=7,z=8,r;
  r=func((x--,y++,x+y),z--);
  printf(“%d\n”,r);}
5.以下程序的输出结果是(  )。
A.-1        B.0        C.1        D.2
main()
{ int i=2,p;
  p=f(i,i+1);
  printf(“%d\n”,p);}
int f(int a,int b)
{ int c;c=a;
  if(a>b) c=1;else if(a==b) c=0;else c=-1;
  return (c);}
6.以下程序输出的结果是(  )。
A.0        B.1        C.6        D.无定值
fun(int a,int b,int c)
{ c=a*b;}
main()
{ int c;
  fun(2,3,c);printf(“%d\n”,c);}
7.以下程序输出的结果是(  )。
A.5.500000      B.3.000000      C.4.000000      D.8.25
double f(int n)
{ int i;double s;
  s=1.0;for(i=1;i<=n;i++) s+=1.0/i;return s;}
main()
{ int i,m=3;float a=0.0;
  for(i=0;i<m;i++) a+=f(i);
  printf(“%f\n”,a);}
8. 以下不正确的概念是(  )
A.函数不能嵌套定义,但可以嵌套调用
Bmain函数由用户定义,并可以被调用
C.程序的整个运行最后在main函数中结束
D.在C语言中以源文件而不是以函数为单位进行编译
9.以下概念正确的是(  )
A.形参是虚设的,所以它始终不占用存储单位
B.实参与它所对应的形参占用不同的存储单元
C.实参与它所对应的形参占用一个存储单元
D.实参与它所对应的形参同名时可占用一个存储单元
10.以下不正确的说法是
A.在C语言中允许函数递归调用
B.函数值类型与返回值类型出现矛盾时,以函数值类型为准
C.形参可以是常量、变量或表达式
DC语言规定,实参变量对形参变量的数据传递是“值传递”
11.以下正确的函数首部是
Afloat swap(int x,y)
Bint max(int a,int b)
Cchar scmp(char c1,char c2);
Ddouble sum(float x;float y)
12.在函数中未指定存储类别的变量,其隐含存储类别为( )
A.静态   B.自动  C.外部  D.存储器
13.在一个文件中定义的全局变量的作用域为
A.本程序的全部范围
B.离定义该变量的位置最近的函数
C.函数内全部范围
D.从定义该变量的位置开始到本文件结束
14.以下函数的返回值类型是( )
fun(int x)
   {printf(“%d\n”,x);}
A.void类型  Bint类型  C.没有  D.不确定的
15.在一个函数中的复合语句中定义了一个变量,则该变量的有效范围是( )
A.在该复合语句内
B.在该函数中
C.本程序范围内
D.非法变量
16.若用数组名作为函数调用的实参,传递给形参的是( )
A.数组的首地址       B.数组第一个元素的值
C.数组中全部元素的值   D.数组元素的个数
.程序设计题
1.用递归法求n!。
2.用递归法求1+2+……+n。
第九章 预处理命令
一.知识点
1.宏定义:注意带参宏定义
2.文件包含:注意两种书写方式的区别
二.练习
.选择题
1.以下程序的输出结果是(  )。
A.15        B.100        C.10        D.150
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{ int i,j,k;i=10;j=15;k=10*MIN(i,j);
  printf(“%d\n”,k);}
2.以下程序中的for循环执行的次数是(  )。
A.5        B.6        C.8        D.9
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{ int i;for(i=1;i<=NUM;i++);
  printf(“%d\n”,i);}
3.以下程序的输出结果是(  )。
A.11        B.12        C.13        D.15
#include “stdio.h”
#define FUDGF(y) 2.84+y
#define PR(a) printf(“%d”,(int)(a))
#define PRINT1(a) PR(a);putchar(‘\n’)
main()
{ int x=2;PRINT1(FUDGF(5)*x); }
4.以下叙述正确的是(  )。
A.用#include包含的头文件的后缀不可以是“.a”
B.若一些源程序中包含某个头文件;当该头文件有错时,只需对该头文件进行修改,包含此头文件所有源程序不必重新进行编译
C.宏命令可以看做是一行C语句
D.C编译中的预处理是在编译之前进行的。
5.以下有关宏替换的叙述不正确的是(  )。
A.宏替换不占用运行时间           B.宏名无类型
C.宏替换只是字符替换             D.宏名必须用大写字母表示
第十章 指针
一.知识点
1.指针的概念
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml95984\wps2.png2.指针变量
3.指针与数组
4.指针与字符串
二.练习
.填空题
1.若有定义:char ch;
使指针p可以指向变量ch的定义语句是。
使指针p指向变量ch的赋值语句是。
通过指针p给变量ch读入字符的scanf函数调用语句是。
通过指针p给变量ch赋字符的语句是。
通过指针p输出ch中字符的语句是。
2.若有如图8.1所示五个连续的int类型的存储单元并赋值,且p和s的基类型皆为int,p已指向存储单元a[1]。
通过指针p,给s赋值,使其指向最后一个存储单元a[4]的语句是。
用以移动指针s,使之指向中间的存储单元a[2]的表达式是。
已知k=2,指针s已指向中间的存储单元a[2],表达式*(s+k)的值是。
指针s已指向存储单元a[2],不移动指针s,通过s引用存储单元a[3]的表达式是
  。
指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是。
p指向存储单元a[0],则以下语句的输出结果是。
for(i=0;i<5;i++) printf(“%d  ”,*(p+i));printf(“\n”);
.选择题
1.若有定义:int x,*pb;则以下正确的赋值表达式是(  )。
A.pb=&x      B.pb=x      C.*pb=&x      D.*pb=*x
2.以下程序的输出结果是(  )。
A.因变量无定义输出不定值      B.0      C.-1      D.1
#include “stdio.h”
main()
{ printf(“%d\n”,NULL);}
3.已知指针p的指向如图8.1所示,则表达式*++p的值是(  )。
A.20        B.30        C.21        D.31
4.已知指针p的指向如图8.1所示,则表达式++*p的值是(  )。
A.20        B.30        C.21        D.31
5.以下程序的输出结果是(  )。
A.23        B.24        C.25        D.26
void prtv(int *x)
{ printf(“%d\n”,++*x); }
main()
{ int a=25;prtv(&a);}
6.指针变量a所指的字符串长度为( )
A26    B27   C28   D23
char  *a=”\nMy Name is Zhang Li\”\n”;
7.在C语言中,变量的指针是指该变量的( )
A.值     B.名   C. 地址  D.一个标志
8.下面程序段的运行结果是( )
 Acde                  B.无确定的输出结果
C.字符’c’ASCII码值  D.存放字符’c’的存储单元的地址
char  *s=”abcde”;  s+=2;  printf(“%d”,s);
9.若有定义:int *p[4];则标识符p( )
A.是一个指向整型变量的指针            B.是一个指针数组名
C.是一个指针,它指向一个含有四个整型元素的一维数组
D.说明不合法
10.有一个二维数组a[3][4]23列元素的正确表示方法为( )
A.&a[2][3]    B.a[2]+3    C.*(a+2)+3    D.*(a[2]+3)
11.若有以下说明语句
char  *language[ ]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};
则表达式:*language[1] >*language[3]  比较的是
A.字符B和字符J            B.字符串BASIC和字符串JAVA
C.字符串FORTRAN和字符串PASCAL  D.字符F和字符P
12.指向一个包含4个整型元素的一维数组的指针变量的定义形式为( )
A.int (*p)[4];    B.int *p[4];   C.int (p[4]);    D.int (p)[ ]
13.以下程序的运行结果是( )
fun( int *p1,int *p2)
{ if(*p1>*p2)  printf(“%d\n”,*p1);
  else printf(“%d\n”,*p2);}
main( )
{ int a=3,b=7; fun(&a,&b);}
A.7     B.3     C.10    D.4
第十一章 结构体与共用体
一.知识点
1.结构体的概念与定义
2.结构体变量的定义
3.结构体变量的引用
4.结构体数组
5.共用体的概念与定义
6.枚举类型
7.用户自定义类型
二.练习
.填空题
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml95984\wps3.png1.为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域),请填空。
struct link
{ char data;
  }node;
2.访问结构体数组元素a[k]的成员b,写作            
3.以下程序的运行结果是     
    struct s
     { int num;
       char name[20];
       int age;
      };
     main( )
{ struct s stud[3]={{101,”Li”,18},{102,”Wang”,19},{103,”Zhang”,21}};
   fun(stud+2);
}
  fun(struct s *p)
    { printf(“%s\n”,(*p).name);}
.以下程序的运行结果是_____。
    main( )
    { struct EXAMPLE
       {struct
         {int x;
          int y;
         }in;
      int a;
      int b;
     }e;
     e.a=1;e.b=2;
     e.in.x=e.a*e.b;
     e.in.y=e.a+e.b;
     printf(“%d,%d”,e.in.x,e.in.y);
.选择题
1.根据以下定义,能输出字母M的语句是(  )。
A.printf(“%c\n”,class[3].name);     B.printf(“%c\n”,class[3].name[1]);
C.printf(“%c\n”,class[2].name[1]);  D.printf(“%c\n”,class[2].name[0]);
struct person{ char name[9];int age;};
struct person class[10]={ “John”,17,“Paul”,19,“Mary”,18,“Adam”,16};
2.以下程序的输出结果是(  )。
A.32        B.16         C.8        D.24
typedef union{ long x[2];int y[4];char z[8];}MYTYPE;
MYTYPE them;
main(){ printf(“%d\n”,sizeof(them));}
3.设有定义语句
enum weekday{sun,mon,tue,wed,thu,fri,sat} workday;
则以下语句中编译不能通过的语句为___________.
A.sun=0;  B.workday=thu;  C.workday=3;  D.workday=1/7;
4.以下对结构体类型变量的定义中,不正确的是(  )。
A. typedef struct aa                    B.#define AA    struct aa
{  int   n;                                AA { int n;
float m;                                     float m;
}AA;                                         }td1;
AA td1;
C) struct                                  D) struct
{ int n;                                   {  int n;
float m;                                    float m;
}aa;                                       }td1;
stuct aa td1;
5.当定义一个结构体变量时,系统分配给它的内存是( )
   A.结构体最后一个成员所需内存量的大小。
   B.各成员所需内存量的总和。
   C.成员中占内存量最大者所需的容量。
   D.结构体中第一个成员所需内存量。
6.在16IBM-PC机上使用C语言,如果有以下说明语句,则变量ss所占内存的字节数为( )
   struct s
   { int m;  char c;  double d; }ss;
A8       B1       C11     D2
7.下面程序的运行结果是( )
   main( )
     { struct cmplx
                 { int x;
                   int y;
                  }cnum[2]={1,3,2,7}; prinyf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x);}
    A0         B1        C3        D6
第十二章 位运算
一.知识点
1.位运算符与位运算赋值运算符
二.练习
.填空题
1.设变量a的二进制数是00101101,若想通过运算a^b使a的高4位取反,低4位不变,则b的二进制数应是            
2.a为任意整数,能将变量a清零的表达式是            
3.a为任意整数,能将变量a中的各二进制位均置成1的表达式是            
4.能将两字节变量x的高8位置全1,低字节保持不变的表达式是            
5.运用位运算,能将八进制数012500除以4,然后赋给变量a的表达式是         
6.运用位运算,能将变量ch中的大写字母转换成小写字母的表达式是            
7.3 && 5的值是——,3& 5的值是——,3||5的值是——3|5的值是——
8.表达式~2&3<<2|3的值是——。
9.表达式5^3|2<<1的值是——。
10.表达式025&012的值是——。
11.在位运算中,操作数每向右移动一位相当于操作数——以——8、在位运算中,操作数每向左移动一位相当于操作数——以——
.选择题
1.以下程序的输出结果是(  )。
A.100        B.160        C.120        D.64
main(){ char x=040;printf(“%d\n”,x=x<<1);}
2.以下程序段中c的二进制值是(  )。
A.00011011      B.00010100      C.00011100      D.00011000
3.以下程序的输出结果是(  )。
A.0        B.1        C.2        D.3
main(){ int x=35;char z=‘A’;printf(“%d\n”,(x&15)&&(z<‘a’));}
4.以下程序的输出结果是(  )。
A.0        B.1        C.2        D.3
main()
{ int a=5,b=6,c=7,d=8,m=2,n=2;
  printf(“%d\n”,(m=a>b)&(n=c>d));}
5.执行以下语句后a和b的值分别为(  )
   int a=1,b=2;a=a^b;b=b^a;a=a^b;
A.a=1,b=2  B.a=2,b=2  C.a=2,b=1  D.a=1,b=1
6.以下程序段的执行结果是(  )
 char a=56;a=a&056;printf(“%d,%o\n”,a,a);
   A.40,50  B.1,1  C.56,60  D.50,56
第十三章 文件
一.知识点
1.文件类型指针:FILE
2.文件的打开与关闭:fopen()、fclose()
3.文件的读写:fputc()、fgetc()、fread()、fwrite()、fprintf()、fscanf()
4.文件的定位:rewind()、fseek()、ftell()
5.出错检测:ferror()、clearerr()
二.练习
.填空题
1.在C程序中文件可以用两种方式存取,它们是                   
2.在C程序中数据可以用两种代码形式存放,它们是                   
3.在C语言中,文件的存取是以        为单位的,这种文件被称作        文件。
4.在C语言中,文件的打开使用          ,文件的关闭使用         
5.在C语言中,文件类型为         
.选择题
1.若执行fopen函数时发生错误,则函数的返回值是(  )。
A.随机值        B.1        C.NULL        D.EOF
2.若用fopen函数打开一个新的二进制文件,要求文件既能读也能写,则应选用的文件方式字符串是(  )。
A.“wb+”      B.“r+”      C.“rb+”      D.“ab+”
3.当正常执行了文件关闭操作时,fclose函数的返回值是(  )。
A.-1        B.随机值        C.0        D.1
4.在C语言中,对文件的存取是以(  )为单位的。
     A)记录   B)函数    C)字节   D)模块
5.定义fp为文件型指针变量,使用fopen函数打开一个既能读也能写的新的二进制文件,以下正确的调用形式是(  )
  A. fp=fopen(“filel”,”ab+”)
  B. fp=fopen(“filel”,”r+”)
  C. fp=fopen(“filel”,”wb+”)
  D.fp=fopen(“filel”,”ab”)
6.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是( )
  A.只写   B.追加   C.读或读写   D.答案B和C都正确
7.若调用fputc函数输出字符成功,则其返回值是( )
  A.EOF    B.1        C.0           D.输出的字符
8.fread和fwrite函数常用来要求一次读入/输出( )数据
  A.一个整数   B.一个实数   C.一个字节   D.一组
9.函数调用语句:fseek(fp,-20L,2);的含义是( )
   A.将文件位置指针移到距离文件头20个字节处
  B.将文件位置指针从当前位置向后移动20个字节
    C.将文件位置指针从文件末尾处向后退20个字节
    D.将文件位置指针移到离当前位置20个字节处
10.函数rewind的作用是( )
   A.位置指针自动移到下一个字符位置
   B.位置指针重新返回文件的开头
   C.位置指针自动移到文件尾
   D.位置指针移到指定的位置
11.当fclose函数正确执行后,函数的返回值是( )
   A.0    B.-1    C.1    D.非零值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|兔云论坛 ( 粤ICP备18131279号 )

GMT+8, 2019-12-10 00:37 , Processed in 0.052504 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表