全国高等学校计算机等级考试(二级C语言)选择题试题库
答案
试题
C
 1.  C语言源程序中,以下叙述正确的是()。
 A. main函数必须位于文件的开头   
 B. 每行只能写一条语句   
 C. 程序中的一个语句可以写成多行
 D. 每个语句的最后必须有点号
C
 2.  关于C语言的源程序的叙述中,错误的是( C )。
 A. C语言的源程序由函数构成
 B. main函数可以书写在自定义函数之后     
 C. 必须包含有输入语句
 D. 一行可以书写多个语句 
C
 3.  关于C语言数据类型的叙述,正确的是(  )。
 A. 枚举类型不是基本类型
 B. 数组不是构造类型
 C. 变量必须先定义后使用
 D. 不允许使用空类型
C
 4.  C程序中main函数的位置()。
 A. 必须在最开始
 B. 必须在系统库函数后面
 C. 可以在自定义函数后面
 D. 必须在最后
B
 5.  C语言的函数体由( B)括起来。
 A.  
 B.  { }
 C.  [ ]
 D.  /* */
D
 6.  关于C语言的叙述中,不正确的是( D)。
 A. C程序可由一个或多个函数组成
 B. C程序必须包含一个main()函数
 C. C程序的基本组成单位是函数
 D. 注释说明只能位于一条语句的后面
D
 7.  以下叙述不正确的是()。
 A. C程序的执行总是从main函数开始
 B. 一个C源程序必须包含一个main函数
 C. C语言程序的基本组成单位是函数
 D. 在编译C程序源程序时,可发现注释中的拼写错误
C
 8.  结构化程序设计的三种基本结构是( C )。
 A. 函数结构、分支结构、判断结构
 B. 函数结构、嵌套结构、平行结构
 C. 顺序结构、分支结构、循环结构
 D. 分支结构、循环结构、嵌套结构
C
 9.  对于C语言源程序,以下叙述错误的是( C )。
 A. 可以有空语句
 B. 函数之间是平等的,在一个函数内部不能定义其它函数
 C. 程序调试时如果没有提示错误,就能得到正确结果
 D. 注释可以出现在语句的前面
D
 10.  下面关于C语言用户标识符的描述,正确的是(  )。
 A. 不区分大小写
 B. 用户标识符不能描述常量
 C. 类型名也是用户标识符
 D. 用户标识符可以作为变量名
D
 11.  以下( D )是正确的变量名。
 A. 5f
 B. if
 C. f.5
 D. _f5
D
 12.  以下()是正确的常量。
 A. E-5
 B. 1E5.1
C. 'a12'//字符串用双引号
 D. 32766L
D
 13.  以下(  D)是正确的变量名。
 A. a.bee
 B. -p11
 C. int
 D. p_11
C
 14.  以下(  C)是正确的字符常量。单引号括起来
 A. "c"
 B. '\\''
 C. 'W'
 D. "\32a"
A
 15.  以下(  A)是不正确的字符串常量。双引号括起来
 A. 'abc'
 B. "12'12"
 C. "0"
 D. " "
B
 16.  以下(  B)是错误的整型常量。
 A. -0xcdf
 B. 018      //八进制数不能超过8
 C. 0xe
 D. 011
B
 17.  以下()是正确的浮点数。
 A. e3        //e前面必须有数字,指数必须为整数
 B. .62
 C. 2e4.5
 D. 123
A
 18.  若有说明语句:char c='\95'; 则变量c包含(  )个字符。
 A. 1  \ddd :表示13位八进制数所代表的字符(ASCII码值)
 B. 2  \xhh表示 12位十六进制数所代表的字符
 C. 3
 D. 语法错误
A
 19.  若有定义:int a=2; 则正确的赋值表达式是(  )。
 A. a-=(a*3)//a=a-(a*3)
 B. double(-a)  //(double)(-a)
 C. a*3
 D. a*4=3
C
 20.  语句x=(a=3,b=++a);运行后,xab的值依次为()。
 A. 3,3,4    //逗号运算符及逗号表达式
 B. 4,4,3
 C. 4,4,4
 D. 3,4,3
B
 21.  语句a=(3/4)+3%2;运行后,a的值为()。
 A. 0
 B. 1  //注意除号/ 两边均为整型时,结果为整数(不含小数点)
 C. 2
 D. 3
A
 22.  char型变量存放的是( A)。//考查变量类型
 A. ASCII代码值
 B. 字符本身
 C. 十进制代码值
 D. 十六进制代码值
C
 23.  若有定义:int x,a;则语句x=(a=3,a+1);运行后,xa的值依次为()。
 A. 3,3  //考查逗号表达式及逗号运算符
 B. 4,4
 C. 4,3
 D. 3,4
B
 24.  若有定义:int a; 则语句a=(3 * 4)+ 2 % 3;运行后,a的值为( bB)。
 A. 12///////%取余
 B. 14
 C. 11
 D. 17
A
 25.  若有定义:int a,b; double x,则以下不符合C语言语法的表达式是(  Aa)。
 A. x%(-3) //%两侧均应为整型数据
 B. a+=-2
 C. a=b=2
 D. x=a+b
B
 26.  若有定义:int x=2,y=3;float i;,则以下符合C语言语法的表达式是( B )。
 A. x=x*3=2  //x*3不是一个变量名
 B. x=(y==1)
 C. i=float(x)  //应改为i=(float)x
 D. i%(-3)  //%两侧均应为整型数据
C
 27.  double型变量a,b,c,e均有值;对代数式(3ae)/(bc),不正确的C语言表达式是( C )。
 A. a/b/c*e*3
 B. 3*a*e/b/c
 C. 3*a*e/b*c //改为3*a*e/b/c
 D. a*e/c/b*3
B
 28.  下面叙述正确的是( b )。
 A. 2/3  2.0/3.0  等价
 B. (int)2.0/3  2/3 等价//强制类型转换将2.0转换成2
 C. ++5  6 等价  //单独写++5是错误的,可以写成a=++5
 D. 'A'"A"等价
A
 29.  下面叙述中,错误的是( A )。
 A. 其算术运算对象不包含函数
 B. %(模运算符)的运算对象只能为整型量
 C. 算术运算符的结合方向是"自左至右"
 D. 自加和自减运算符的结合方向是"自右至左"
A
 30.  下面叙述正确的是(A)。 //++ --只能用于变量,而不能用于常量或表达式
 A. 强制类型转换运算的优先级高于算术运算
 B. ab是整型变量,(a+b)++是合法的
 C. 'A'*'B' 是不合法的
 D. "A"+"B"是合法的
B
 31.  若有定义:int k,i=2,j=4; 则表达式 k=(++i)*(j--) 的值是()。
 A. 8
 B. 12  //注意前缀 后缀的区别
 C. 6
 D. 9
C
 32.  设整型变量a5,使b不为2的表达式是()。
 A. b=(++a)/3
 B. b=6-(--a)
 C. b=a%2  //结果为1
 D. b=a/2 //QUZHENG
C
 33.  若有定义:int a=1,b=2,c=3; 则语句 ++a||++b&&++c;运行后b的值为( )。
 A. 1
 B. 0
 C. 2  //注意运算的不完全性
 D. 3
B
 34.  若有定义:int i,j;则表达式(i=2,j=5,i++,i+j++)的值是( B )。
 A. 7
 B. 8
 C. 9
 D. 10
B
 35.  若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是()。
 A. 7////a没有被赋值成为4,所以a=2
 B. 8
 C. 9
 D. 10
B
 36.  若有定义:int m=5,n=3;则表达式(m+1,n+1,(--m)+(n--))的值是()。
 A. 6///与上一题同理,mn没有被赋值
 B. 7
 C. 8
 D. 9
B
 37.  已知 int a;使用scanf()函数输入一个整数给变量a,正确的函数调用是( b )。
 A. scanf("%d",a);
 B. scanf("%d",&a);
 C. scanf("%f",&a);
 D. scanf("%lf",&a);
D
 38.  已知 double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是(  d)。
 A. scanf("%ld",&a);
 B. scanf("%d",&a);
 C. scanf("%7.2f",&a); //输入数据时不能规定精度
 D. scanf("%lf",&a);
B
 39.  已知 char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是( B )。
 A. scanf("%d",&a);
 B. scanf("%lf",&a);  //字符型变量与整型等价,但不与浮点型等价
 C. scanf("%c",&a);
 D. scanf("%u",&a);
B
 40.  putchar()函数的功能是向终端输出()。// char *str0;….;puts( str0);
 A. 多个字符//puts()才是输出多个字符
 B. 一个字符
 C. 一个实型变量值
 D. 一个整型变量表达式
D
 41.  getchar()函数的功能是从终端输入()。
 A. 一个整型变量值
 B. 一个实型变量值
 C. 多个字符
 D. 一个字符
D
 42.  若有定义:int x=1234,y=123,z=12;则语句printf("%4d+%3d+%2d", x, y, z);运行后的输出结果为()。
 A. 123412312
 B. 12341234123412341231231231212
 C. 1234+1234+1234
 D. 1234+123+12
A
 43.  已有如下定义和输入语句,
int a; char c1,c2;
scanf("%d%c%c",&a,&c1,&c2);
若要求ac1c2的值分别为10AB,正确的数据输入是()。
 A. 10AB //输入数据时,遇空格、回车、TAB、及非法输入 或按规定的宽度结束
 B. 10  A  B
 C. 10A  B
 D. 10  AB
B
 44.  已有如下定义和输入语句:
int a,b;
scanf("%d,%d",&a,&b); //“格式控制”字符串中除了格式说明还有其他字符,则输入//时应在相应位置输入
若要求ab的值分别为1020,正确的数据输入是()。
 A. 10  20
 B. 10,20
 C. a=10,b=20
 D. 10;20
D
 45.  以下程序的运行结果是(  D)。
void main()
{
  int a=65;
  char c='A';
  printf("%x,%d",a,c);
}
 A. 65,a
 B. 41,a
 C. 65,65
 D. 41,65
A
 46.  下面叙述中,()不是结构化程序设计中的三种基本结构之一。
 A. 数据结构
 B. 选择结构 
 C. 循环结构
 D. 顺序结构
A
 47.  下面叙述中,)不是结构化程序设计三种基本结构的共同特点。
 A. 先判断后执行
 B. 单入口,单出口
 C. 程序中没有执行不到的语句
 D. 无死循环
A
 48.  结构化程序设计不包括( A )。
 A. 最优化
 B. 自顶而下,逐步细化
 C. 模块化设计
 D. 结构化编码
D
 49.  以下运算符中优先级最高的是()。
 A. >
 B. ||
 C. &&
 D. + //初等运算符()[]  单目  算术 关系 逻辑(不含! 赋值 逗号
A
 50.  若有定义:int x=3,y=4;则表达式 !x||y 的值为( A
 A. 1////0//非零=1
 B. O
 C. 3
 D. 4
A
 51.  若有定义:int i=7,j=8;则表达式 i>=j||i<j 的值为( A)。
 A. 1
 B. 变量i的值
 C. 0
 D. 变量j的值
C
 52.  若希望当a的值为奇数时,表达式的值为"",a的值为偶数时,表达式的值为""。则不能满足要求的表达式是(  C)。
 A. a%2==1
 B. !(a%2==0)
 C. !(a%2)//偶数时为1.奇数时为0
 D. a%2
D
 53.  若有定义:int x=3,y=4,z=5;则值为0的表达式是()。
 A. 'x'&&'y'//120&&121=1
 B. x<=y//1
 C. x||y+z&&y-z//////3//9&&-1
 D. !((x<y)&&!z||1) //考查运算符优先级
A
 54.  若有定义:int a=5,b=2,c=1;则表达式a-b<c||b==c的值是()。
 A. 0
 B. 1
 C. 2
 D. -1
A
 55.  已知double a=5.2; 则正确的赋值表达式是()。
 A. a+=a-=(a=4)*(a=3)
 B. a=a*3=2///a*3不是变量
 C. a%3////%两边都要是整形变量
 D. a=double(-3) 、、、(double(-3)
A
 56.  已知char a='R'; 则正确的赋值表达式是()。
 A. a=(a++)%4
 B. a+2=3
 C. a+=256--
 D. a='\078'
A
 57.  已知int a='R'; 则正确的表达式是()。
 A. a%10///A=82
 B. a=int(3e2)
 C. 2*a=a++
 D. a=a+a=a+3  C 同属一类错误
A
 58.  设单精度型变量fg的值均为2.0,使f4.0的表达式是( A)。
 A. f+=g
 B. f-=g+2
 C. f*=g-6
 D. f/=g*10
B
 59.  若有定义:float x=3.5;int z=8;则表达式 x+z%3/4 的值为( B)。
 A. 3.75
 B. 3.5
 C. 3
 D. 4
A
 60.  若有定义:int a=1,b=2,c=3,d=4,x=5,y=6;则表达式 (x=a>b)&&(y=c>d) 的值为()。
 A. 0
 B. 1
 C. 5
 D. 6
A
 61.  若有定义:int a=2,b=3; float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是(  A)。 //(float)(a+b)/2=2.5
 A. 3.5
 B. 3.0
 C. 2.5
 D. 2.0
C
 62.  若有定义:int b=7; float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是(C)。
 A. 2.5 //(b/2*(int)(a+c)/2)=10 注意运算顺序
 B. 3.5
 C. 4.5
 D. 5.5
C
 63.  若有定义:int a=6,b=2;char c1='a',c2='b';则表达式a+b%5+c2-c1的值是(C)。
 A. 7
 B. 8
 C. 9
 D. 表达式错误
B
 64.  以下的if语句中,x的值一定被重新赋值的是(  )。
 A. if(x==y) x+=y;
 B. if(x>y && x!=y );  //注意if语句后的空语句;
   x+=y;
 C. if(x!=y) 
   scanf("%d",&x); 
 else 
   scanf("%d",&y); 
 D. if(x<y) 
 { x++;y++; }
B
 65.  C语言对if嵌套语句的规定:else总是与(  B)配对。
 A. 第一个if
 B. 之前最近的且尚未配对的if
 C. 缩进位置相同的if
 D. 之前最近的if
B
 66.  对于整型变量x,下述if语句()与赋值语句:
     x=x%2==0?1:0;
不等价。
 A. if (x%2!=0) x=0; else x=1;
 B. if (x%2) x=1; else x=0;
 C. if (x%2==0) x=1; else x=0;
 D. if (x%2==1) x=0; else x=1;
B
 67.  若有定义:int x=1,y=2,z=4;则以下程序段运行后z的值为( B)。
if(x>y) z=x+y;
else z=x-y;
 A. 3
 B. -1
 C. 4
 D. 不确定 
D
 68.  若有定义:int a=1,b=2,c=3;则执行以下程序段后a,b,c的值分别为()。
if (a<b) 
{c=a;a=b;b=c;}
 A. a=1,b=2,c=3
 B. a=2,b=3,c=1
 C. a=2,b=3,c=3
 D. a=2,b=1,c=1
D
 69.  以下程序段运行后变量a的值为( )。
int x=6,y=5;
int a;
a=(--x==y++)?x:y+1;//X
已经被赋值为5
 A. 0
 B. 1
 C. 6
 D. 5 、、、、、、、//2013-05-27.晚上21.13
C以下()是不正确的字符串常量
 70.  以下程序的运行结果是(  )。//注意分支中有无break的区别
void main()
{
  int n='e';
  switch(n--)
  {
    default: printf("error "); 
    case 'a':
    case 'b': printf("good "); break;//break.跳出
    case 'c': printf("pass ");
    case 'd': printf("warn ");
  }
}
 A. error
 B. good
 C. error good
 D. warn
C
 71.  以下程序的运行结果是( C )。
void main()
{
  int n='c';
  switch(n++)
  {
    default: printf("error "); break;
    case 'a':
    case 'b': printf("good "); break;
    case 'c': printf("pass ");
    case 'd': printf("warn ");
  }
}
 A. pass
 B. warn
 C. pass warn
 D. error
D
 72.  以下程序的运行结果是(  )。
void main( )
{ int n=5;
  if(n++>=6)先取值后运算n=6
    printf("%d\n",n);
  else
    printf("%d\n",++n);先运算后取值n=7
}
 A. 4
 B. 5
 C. 6
 D. 7
B
 73.  设有整型变量x,下述语句(B  )不会出现死循环。
 A. for(;;x+=1);
 B. for(;(x=getchar())!='\n';);
 C. while(1) {x++;}
 D. for(x=10;;x--);
B
 74.  对于整型变量x,while(!x)等价的是( B )。
 A. while(x!=0)
 B. while(x==0)
 C. while(x!=1)
 D. while(~x)
A
 75.  对于整型变量xy,语句
    for(x=0,y=0;(y!=123)&&(x<4);x++) y++;
  中的“y++被执行(A  )。
 A. 4
 B. 0
 C. 123
 D. 3
B
 76.  c语言中while循环和do--while循环的主要区别是(B)。
 A. do--while循环体内可以使用break语句,while循环体内不能使用break语句
 B. do--while的循环体至少无条件执行一次,while的循环体不是
 C. do--while循环体内可以使用continue语句,while循环体内不能使用continue语句
 D. while的循环体至少无条件执行一次,do--while的循环体不是
B
 77.  以下程序段运行后,循环体运行的次数为( BB)。
int i=10,x;
for (;i<10;i++) x=x+i;
 A. 10
 B. 0
 C. 1
 D. 无限
D
 78.  以下程序段运行后变量n的值为( D)。
int i=1,n=1;
for (;i<3;i++)
   {continue;n=n+i;}//continue语句结束本次循环,转而进行下一次同层的循环过程
 A. 4
 B. 3
 C. 2
 D. 1
B
 79.  以下程序的运行结果是(  )。
void main()
{
  int sum = 0, item = 0;
  while(item < 5)
  {
    item++;
    sum += item;
    if(sum==5)
      break;
  }
  printf("%d\n",sum);//sum不可能等于5
}
 A. 10
 B. 15
 C. 5
 D. 6
C
 80.  以下程序的运行结果是(C  )。
void main()
{
  int sum = 0, item = 0;
  while(item < 5)
  {
    item++;
    sum += item;
    if(sum>=6)
      break;
  }
  printf("%d\n",sum);
}
 A. 10
 B. 15
 C. 6
 D. 7
B
 81.  以下程序的运行结果是( B )。
void main()
{
  int sum = 0, item = 0;
  while(item < 5)
  {
    item++;
    if(item == 2)
      continue;
    sum += item;
  }
  printf("%d\n",sum);//1+3+4+5=13
}
 A. 10
 B. 13
 C. 15
 D. 1
A
 82.  下列数组定义中,正确的是()。
 A. int a[5]={0};
 B. int a[]={0 1 2}; // int a[]={0 , 1,2}; 注意元素与元素之间加逗号
 C. int a[5]=0; // int a[5]={0};
 D. int a[]; //必须指明数组大小
A
 83.  下列数组定义中,正确的是()。
 A. int a[10];
 B. int n=10,a[n]; //下标必须是常量表达式
 C. int N=10;int a[N];
 D. int n;scanf("%d",&n); int a[n];
A
 84.  已知 int  a[10];  则对a数组元素引用不正确的是( A )。 
 A. a[10]  //10个元素的数组下标范围从09 ,故此题越界
 B. a[3+5]
 C. a[10-10] //引用数组元素时,下标可以是整型常量或整型表达式
 D. a[5]
B
 85.  若有定义:int a[3]={0,1,2};a[1]的值为()。
 A. 0
 B. 1
 C. 2
 D. 3
A
 86.  若有定义:int a[5]={1,2,3,4,5};则语句a[1]=a[3]+a[2+2]-a[3-1];运行后a[1]的值为( A)。
 A. 6
 B. 5
 C. 1
 D. 2
D
 87.  以下能对一维数组a进行正确初始化的语句是( D)。
 A. int a[5]=(0,0,0,0,0);
 B. int a[5]=[0]; //注意使用大括号
 C. int a[5]={1,2,3,4,5,6,7};//多余2
 D. int a[]={0}; //定义一个只有一个元素的一维数组,指为0
D
 88.  下面程序段的运行结果是(  )。
int i=0,a[]={3,4,5,4,3};
do{ 
 a[i]++;
 }while(a[++i]<5);//若为假则不执行循环直接跳出。。所以i=4,5不执行
for(i=0;i<5;i++)
  printf("%d ",a[i]);
 A. 4 5 6 5 4
 B. 3 4 5 4 3
 C. 4 5 5 5 4
 D. 4 5 5 4 3 
C
 89.  下面程序段的运行结果是(  )。
int i=0,a[]={7,5,7,3,8,3};
do{
 a[i]+=2;
 }while(a[++i]>5);
for(i=0;i<6;i++)
  printf("%d ",a[i]);//与上题同理
 A. 9 7 9 5 10 5
 B. 9 5 9 3 10 3
 C. 9 5 7 3  8 3
 D. 7 5 7 3  8 3 
A
 90.  下面程序段的运行结果是( A )。
int i=0,a[]={1,2,3,4,5};
do{ 
  a[i]+=10;
  }while(a[++i]>2);
for(i=0;i<5;i++)
  printf("%d ",a[i]);
 A. 11  2  3  4  5
 B. 1   2  3  4  5
 C. 11 12 13 14 15
 D. 11 12  3  4  5 
C
 91.  设有如下程序段:
int a[3][3]={1,0,2,1,0,2,1,0,1},i,j,s=0;
for(i=0;i<3;i++)
  for(j=0;j<i;j++)
     s=s+a[i][j];
则执行该程序段后,s的值是(  c)。//a[1][0]+a[2][0]+a[2][1]
 A. 0
 B. 1
 C. 2
 D. 3
B
 92.  有如下定义
    int a[][3]={12345678}; //考查二维数组的初始化
则数组a的行数是( b)。
 A. 2
 B. 3
 C. 4
 D. 无法确定的
D
 93.  以下数组定义中,正确的是( d )。
 A. int a[2][3]={1,2,3,4,5,6,7};//多余1
 B. int a[][]={{1,2,3},{4,5,6},{7,8,9}}; //第二维长度不能省
 C. int a[2][]= {1,2,3,4,5,6};
 D. int a[][4]= {6};
A
 94.  若有定义:int a[3][4]={{1,2},{0},{1,2,3}};a[1][1]的值为( a)。
 A. 0
 B. {1,2}
 C. 1
 D. 3
A
 95.  若有定义:int a[3][3];则表达式&a[2][1]-a的值为( )。
 A. 7  //&a[2][1]-a 代表两者之间的元素个数,类似指向同种类型的指针相减
 B. 8
 C. 6
 D. 9
C
 96.  若有定义:int i=0,x=0;int a[3][3]={1,2,3,4,5,6,7,8,9};则以下程序段运行后x的值为( c)。
for (;i<3;i++) x+=a[i][2-i];
 A. 0
 B. 12
 C. 15
 D. 18
D
 97.  若有定义int a[2][3];则对数组元素的非法引用是( D )。
 A. a[0][1/2]
 B. a[1][1]
 C. a[4-4][0]
 D. a[0][3]
C
 98.  以下数组定义中,正确的是()。
 A. int a[2][]={1,2,3,4,5}; //二维数组第二维长度不能省
 B. int a[][2]={{0},{}};
 C. int a[2][2]={{1,2},{3}};
 D. int a[][]={1,2,3,4};
D
 99.  若有定义int a[][3]={1,2,3,4,5,6,7,8,9};则表达式sizeof(a)/sizeof(a[0])
的值为( D )。
 A. 3
 B. 4
 C. 5
 D. 9
A
 100.  设有以下变量定义:
   char str1[]="string",str2[8],*str3,*str4="string";
  )是正确的。
 A. strcpy(str1,"China");
 B. str2="China";
 C. strcpy(*str3,"China");
 D. strcpy(str4[0],"China");
D
 101.  有如下定义:
   char str[6]={ 'a','b','\0','d','e','f'};
则语句:
   printf("%s",str);
的输出结果是()。
 A. ab\
 B. abdef
 C. ab\0
 D. ab
C
 102.  设有如下数组定义:
   char str[8]={ "FuJian"};
则分配给数组str的存储空间是()个字节。
 A. 6
 B. 7
 C. 8
 D. 9
B
 103.  若有定义:char a[]="abcdef";char b[]="xyz";则以下程序段运行后屏幕输出为( B)。
strcpy(a,b);
printf("%c",a[2]);//strcpy字符串复制
 A. c
 B. z
 C. \0
 D. d
C
 104.  以下程序段运行后屏幕输出为(C)。
char a[]="abc\0mis";/\\\\\\\\\\\\\\\0字符串结束标志strlen作为计算字符串的长度
printf("%d",strlen(a));
 A. 5
 B. 8
 C. 3
 D. 4
B
 105.  若有定义:int a=2;则语句a=strcmp("miss","miss");运行后a的值为( B)。
 A. 1  //相等返回0 ,字符串1>字符串2,返回一个正整数,否则返回负整数
 B. 0  //strcmp(str1,str2)
 C. -1
 D. 2
B
 106.  以下程序段运行后屏幕输出为()。
    char str[]="ab\\cd";    注意\\代表一个反斜杠字符
    printf("%d",strlen(str));
 A. 4
 B. 5
 C. 6
 D. 7
A
 107.  以下程序段运行后屏幕输出为()。
char str[80];strcpy(str,"hello");printf("%d",strlen(str));
 A. 5//strcpy 复制字符串。。strlen计算字符串的大小
 B. 6
 C. 7
 D. 80
B
 108.  若有定义:char str1[6]="abcdm",*ps,*str2="abcdef";B)是正确的。
 A. strcpy(str1,str2); 
 B. 表达式strcmp(str1,str2)的值大于0
 C. str1=str2;
 D. 表达式strlen(str1)的值为6
A
 109.  设有如下函数定义:
int fun(char *str)
{ char *p=str;
  while ( *p != '\0') p++; 
  return (p-str);
}
则以下语句执行后的输出结果是(  )。//返回字符串个数
printf("%d\n",fun("Student"));
 A. 7
 B. 8
 C. 9
 D. 10
A
 110.  以下程序的运行结果是(  )。
int fun(int array[4][4])
{ int j;
  for(j=0;j<4;j++) printf("%2d",array[2][j]);
  printf("\n");
}
main()
{ int a[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0};
  fun(a);
}
 A. 2 0 0 5
 B. 1 0 0 4
 C. 0 1 2 0
 D. 0 4 5 0
C
 111.  如下fun函数的类型是(  )。
fun(float x)
{double y; int z ;
 y=x * x ;
 z=(int)y ; 
 return(z); 
}
 A. void
 B. double
 C. int
 D. float
B
 112.  以下程序运行后屏幕输出为( )。
#include<stdio.h>
int f(int x,int y)
{
  return(x+y);
}
main()
{
  int a=2,b=3,c;
  c=f(a,b);
  printf("%d+%d=%d\n",a,b,c);
}
 A. 0
 B. 2+3=5
 C. 2+3=0
 D. 3+2=5
D
 113.  以下程序运行后屏幕输出为( )。 //考查全局变量与局部变量的区别及范围
#include<stdio.h>
int a=2,b=3;
int max(int a,int b)
{
  int c;
          c=a>b?a:b;
  return(c);
}
main()
{
  int a=4;
  printf("%d",max(a,b));
}
 A. 2,3
 B. 2
 C. 3
 D. 4
B
 114.  以下程序运行后屏幕输出为( )。
#include<stdio.h>
void f(int i)    //两个函数中的a不一样
{
  int a=2;
  a=i++;
  printf("%d,",a);
}
main()
{
  int a=1,c=3;
  f(c);
  a=c++;
  printf("%d",a);
}
 A. 4,3
 B. 3,3
 C. 4,5
 D. 3,5
D
 115.  若有如下函数定义: //注意静态变量的使用
int fun()
{
 static int k=0;
 return ++k;
}
以下程序段运行后屏幕输出为(  )。
int i;
for(i=1;i<=5;i++) fun();
printf("%d",fun());
 A. 0
 B. 1
 C. 5
 D. 6
D
 116.  下面程序的输出结果是(  )。
#include <stdio.h>
int global=100;
fun()
{
int global=5;
return ++global;
}
void main()
{
 printf("%d\n",fun());
}
 A. 100
 B. 101
 C. 5
 D. 6
B
 117.  下列关于C语言函数的描述中,正确的是(  )。
 A. 函数的定义可以嵌套,但函数的调用不可以嵌套
 B. 函数的定义不可以嵌套,但函数的调用可以嵌套
 C. 函数的定义和函数的调用都可以嵌套
 D. 函数的定义和函数的调用都不可以嵌套
D
 118.  若有以下宏定义,
#define MOD(x,y) x%y
则执行以下程序段后,z的值是(  )。
int z,a=15,b=100;
z=MOD(b,a);
 A. 100
 B. 15
 C. 11
 D. 10
B
 119.  以下叙述中,正确的是()。
 A. “#define PRICE=30”定义了与30等价的符号常量PRICE
 B. 预编译处理命令行都必须以“#”开头
 C. 宏名只能包含大写字母和数字字符 //可以包括小写字母
 D. 在程序的一行上可以书写几个有效的宏定义
A
 120.  Z以下叙述中,正确的是( A)。
 A. 宏展开不占用运行时间,只占用编译时间
 B. 预编译处理命令行必须以分号结束
 C. 一个源程序只能有一个预编译处理命令行
 D. 使用带参数的宏定义时,应该说明每个参数的数据类型
C
 121.  以下的叙述中不正确的是()。
 A. 宏展开不占用运行时间,只占用编译时间
 B. 宏名无类型
 C. 宏名必须用大写字母表示
 D. 预处理命令行都必须以#号开始
A
 122.  若有定义:#define PI 3,则表达式PI*2*2的值为( )。
 A. 12
 B. 4
 C. 3
 D. 不确定
C
 123.  以下程序运行后,屏幕输出为( )。
#define MIN(a,b) ((a)<(b)?(a):(b))
main()
{int x=2,y=3,z;
     z=2*MIN(x,y);
     printf("%d",z);
}
 A. 2
 B. 3
 C. 4
 D. 6
A
124.  下面程序的输出结果是( )。
#include <stdio.h>
#define SQR(x) (x*x)
void main()
{
  int a,b=3;
  a=SQR(b+2);
  printf("\n%d",a);//3+2*3+2
}
 A. 11
 B. 25
 C. 不定值
 D. 产生错误
C
 125.  下面程序的输出结果是()。
#include <stdio.h>
#define ONE 1
#define TWO ONE+1
#define THREE TWO+1
void main()
{
  printf("%d\n",THREE-ONE);
}
 A. 产生错误
 B. 1
 C. 2
 D. 3
B
 126.  以下叙述中正确的是( )。
 A. 预处理命令行必须位于C源程序的起始位置
 B. C语言中,预处理命令行都以"#"开头
 C. 每个C程序必须在开头包含预处理命令行:#include<stdio.h>
 D. C语言的预处理不能实现宏定义和条件编译的功能
D
 127.  设有以下语句,则(  )是对a数组元素的不正确引用,其中0≤i10
    int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
 A. a[p-a]
 B. *(&a[i])
 C. p[i]
 D. *(*(a+i))
C
 128.  对于基类型相同的两个指针变量之间,不能进行的运算是(  )。
 A. <
 B. =
 C. +//地址之间不能相加。可以相减
 D. -
B
 129.  执行以下程序段的输出结果是(  )。
    int a=10,*p=&a;
    printf("%d",++*p);//*p为内容。。p才是指针变量
 A. 10
 B. 11
 C. 变量a的地址
 D. 变量a的地址 + 1
A
 130.  以下程序段运行后*(p+3)的值为( )。
char a[]="good";
char *p;
p=a;
 A. 'd'////数组名可以当做指针
 B. '\0'
 C. 存放'd'的地址
 D. 'o'
C
 131.  以下程序段运行后*(++p)的值为( )。
char a[5]="work";
char *p;
p=a;
 A. 'w'
 B. 存放'w'的地址
 C. 'o'
 D. 存放'o'的地址
B
 132.  若有定义:int *p,a=4; p=&a;则以下均代表地址的是( )。
 A. a,p
 B. &a,p //&取出地址,,p已经定义为指针变量
 C. &a,*p
 D. a,*p
D
 133.  若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是( )。
 A. *p=&a;scanf("%lf",p);
 B. *p=&a;scanf("%lf",*p);
 C. p=&a;scanf("%lf",*p);
 D. p=&a;scanf("%lf",p); //p已经定义为指针
A
 134.  16位编译系统上,若有定义int a[]={10,20,30},*p=&a;当执行p++;后下列叙述错误的是( )。
 A. p向高地址移了一个字节//数组的元素移位一般都是两个字节
 B. pa+1等价
 C. 语句printf("%d",*p);输出20
 D. p指向数组元素a[1]
B
 135.  下面语句正确的是( )。
 A. int *p; *p=20; 
 B. char *s="abcdef"; printf("%s\n",s);////指针指向字符串,书上内容
 C. char str[]="abcd"; str++;//数组名不能改变
 D. char str[]={'a','b','c'};printf("%s",str);  //%s输出字符串,必须以’\0’结束
D
 136.  若有以下程序段,且0≤i40≤j3,则不能正确访问a数组元素的是(  )。
int i,j,(*p)[3];
int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12};
p = a;
 A. *(*(a+i)+j)
 B. p[i][j]
 C. (*(p+i))[j]
 D. p[i]+j
B
137.  若函数fun的函数头为:
   int fun(int i, int j)
且函数指针变量p定义如下:
   int(*p)(int i, int j);
则要使指针p指向函数fun的赋值语句是(  )。
 A. p=*fun;
 B. p=fun;
 C. p=fun(i,j);
 D. p=&fun;
D
 138.  设有如下变量定义:
    char aa[2][3]={'a','b','c','d','e','f'};
    char (*p)[3]=aa;
则以下程序段的运行结果是(  )。
    p++;
    printf("%c",**p);
 A. a
 B. b
 C. c
 D. d
D
 139.  以下程序段运行后x的值为( )。
int a[]={1,2,3,4,5,6,7,8};
int i,x,*p;
x=1;
p=&a[2];
for(i=0;i<3;i++)
x*=*(p+i);
 A. 不确定
 B. 24
 C. 120
 D. 60
B
 140.  以下程序段运行后x的值为( )。
  int a[]={1,2,3},b[]={4,2,5};
int *p,*q;
int i,x;
p=a; q=b;
for(i=0;i<3;i++)
if(*(p+i)==*(q+i))
x=*(p+i)*2;
 A. 2
 B. 4
 C. 6
 D. 不确定
C
 141.  以下程序段运行后x的值为( )。
  int a[9]={1,2,3,4,5,6,3,8,9};
int *p,*q;
int i,x;
p=&a[0]; 
q=&a[8];
for(i=0;i<3;i++)
if(*(p+i)==*(q-i))
x=*(p+i)*2;
 A. 2
 B. 4
 C. 6
 D. 不确定
A
 142.  下面程序的输出结果是( )。
#include<stdio.h>
void main()
{
 int i;
 char *s="abc";
 for(i=0;i<3;i++)
   printf("%s\n",s+i);
}
 A. abc
 bc
 c
 B. c
 bc
 abc
 C. abc
 c
 bc
 D. a
 ab
 abc
A
 143.  下面程序的输出结果是( )。
#include <stdio.h>
void main()
 char *str="12345",*ps=str+4;
 printf("%c\n",ps[-4]);
}
 A. 1
 B. 2
 C. 3
 D. 错误
A
 144.  以下程序执行时,输入1  2  3  4  5<回车>,输出为:
#include <stdio.h>
#define N 5
void main()
{
int a[N];
int *p=a;
while(p<a+N)
  scanf("%d",p++);
while(p>a)
  printf("%d ",*(--p));
}
 A. 5 4 3 2 1
 B. 1 2 3 4 5
 C. 2 3 4 5 1
 D. 4 3 2 1 5
C
 145.  设有以下定义语句:
struct student
{ int num;
  char name[10];
  float score;
} wang,zhang;
则不正确的叙述是(  )。
 A. struct是结构体类型的关键字
 B. zhang是结构体变量名
 C. wang是结构体类型名
 D. numnamescore都是结构体类型student的成员名
B
 146.  设有以下定义语句:
struct student
{ int num;
  char name[10];
  float score;
} wang,zhang;
则变量wang所占的内存字节数是(  )。
 A. 14
 B. 16
 C. 18
 D. 20
B
 147.  设有如下定义语句:
union u_type
  { int i; //二个字节
    double x; //八个字节
    float f; //四个字节
  };
struct str_type
  { char str[100];
    union u_type u[2];
  };
则语句“printf("%d", sizeof(struct str_type));”的输出结果是(  )。
 A. 100
 B. 116
 C. 120
 D. 200
C
 148.  若有定义:
struct teacher
{int num;
 char name[10];
 char sex;
 int age;
 float score;
}teacher1;
则变量teacher1所占用的内存字节数是( )。
 A. 5
 B. 14
 C. 19
 D. 20
C
 149.  下列对结构体类型变量定义不正确的是( )。
 A. struct teacher
{int num;
 int age;
}teach1; 
 B. struct 
{int num;
 int age;
}teach1,teach2;
 C. struct
{int num;
 int age;
}teacher;
   struct teacher teach1;
 D. struct teacher 
{int num;
 int age;
};
   struct teacher teach1;
D
 150.  若有定义:
struct teacher
{int num;
 char sex;
 int age;
}teacher1;
则下列叙述不正确的是( )。
 A. struct是结构体类型的关键字
 B. struct teacher是用户定义的结构体类型
 C. num,sex,age都是结构体变量teacher1的成员
 D. teacher1是结构体类型名
D
 151.  以下程序的运行结果是( )。
#include <stdio.h>
union Utype{
  int i;
  float f;
}u[2];
void main()
{
 printf("sizeof(u):%d\n",sizeof(u));
}
 A. 2
 B. 4
 C. 6
 D. 8
D
 152.  以下程序的运行结果是( )。
#include <stdio.h>
union Utype{
  int i;
  float f;
};
struct{
char ch[2];
int i;
union Utype u;
}a;
void main()
{
  printf("sizeof(a):%d\n",sizeof(a));
}
 A. 5
 B. 6
 C. 7
 D. 8
D
 153.  以下C语言共用体类型数据的描述中,不正确的是( )。
 A. 共用体变量占的内存大小等于所需内存最大的成员所占的内存
 B. 共用体类型可以出现在结构体类型定义中
 C. 在定义共用体变量的同时允许对第一个成员的值进行初始化
 D. 同一共用体中各成员的首地址不相同
A
 154.  若有以下定义:
struct link
{ int data;
   struct link *next;
}  *head, *p;
并已建立如下图所示的链表结构:
              ┌──┬──┐    ┌──┬──┐            ┌──┬──┐
    head →│data│next┼→│data│next┼→...─→│data│NULL│
              └──┴──┘    └──┴──┘            └──┴──┘
指针p指向如下结点:
      ┌──┬──┐
  p →│data│next│
      └──┴──┘           
则能够把p所指结点插入到链表中成为链表第2个结点的程序段是(  )。
 A. p->next = head->next;  head->next = p; 
 B. head->next = p;  p->next = head->next;
 C.& =&;   = p;       
 D. (*head).next = p;  (*p).next = (*head).next;
D
 155.  若有以下定义:
struct link
{ int data;
   struct link *next;
}  a,b,c, *head, *p;
其中,指针head指向变量a, p指向变量ca.next指向变量b,链表结构如下图所示:
               a               b                       c
         ┌──┬──┐  ┌──┬──┐          ┌──┬──┐
  head →│data│next┼→│data│NULL│      p →│data│next│
         └──┴──┘  └──┴──┘          └──┴──┘
则能够把c插入到ab之间并形成新链表的程序段是(  )。
 A.& = c;& = b;
 B.& = p;& =&;
 C. head->next = &c; p->next = head->next;
 D. (*head).next = p; (*p).next = &b;
A
 156.  若有以下定义:
struct link
{ int data;
   struct link *next;
}  *head, *p;
并已建立如下图所示的链表结构:
                            p 
                            ↓       
       ┌──┬──┐  ┌──┬──┐         ┌──┬──┐
head →│data│next┼→│data│next┼→...─→│data│NULL│
       └──┴──┘  └──┴──┘         └──┴──┘
则能保留链表其它结点,而删除p所指向结点的程序段是(  )。
 A. head->next = p->next; free(p);
 B. head->next = p; p->next = head->next; free(p);
 C. free(p); head->next = p; p->next = head->next; 
 D. free(p); head->next = p->next; 
A
 157.  若有定义:
struct node
{ int data;
  struct node *next;
};
及函数:
void fun(struct node *head) 
{ struct node *p=head;
  while(p)
  { struct node *q=p->next;
    free(p);
    p=q;
  }
}
调用时head是指向链表首结点的指针,整个链表的结构如下图:
         ┌─┬─┐  ┌─┬─┐        ┌─┬─┐
  head →│2 │  ┼→│15│  ┼→ … →│27│  ┼→NULL
         └─┴─┘  └─┴─┘        └─┴─┘ 
则函数fun()的功能是( )。
 A. 删除整个单向链表
 B. 删除单向链表中的一个结点
 C. 显示单向链表中的所有数据
 D. 创建单向链表
C
 158.  若有定义:
struct node
{ int data;
  struct node *next;
};
及函数:
 void fun(struct node * head) 
 { struct node * p = head;
   while(p)
   {
    printf("%d  ", p->data );
    p = p->next;
    break;
   }
 }
调用时head是指向链表首结点的指针,整个链表的结构如下图:
         ┌─┬─┐  ┌─┬─┐        ┌─┬─┐
  head →│5 │  ┼→│17│  ┼→ … →│38│  ┼→NULL
         └─┴─┘  └─┴─┘        └─┴─┘ 
则函数fun()的功能是( )。
 A. 删除单向链表
 B. 显示单向链表中的所有数据
 C. 显示单向链表中的第一个数据
 D. 创建单向链表
B
 159.  若有定义:
struct node
{ int data;
  struct node *next;
};
及函数:
 void fun(struct node * head) 
 { struct node * p = head;
   while(p)
   {
    printf("%d  ", p->data );
    p = p->next;
   }
 }
调用时head是指向链表首结点的指针,整个链表的结构如下图:
                  ┌─┬─┐  ┌─┬─┐          ┌─┬─┐
        head →│25│  ┼→│47│  ┼→ … →│13│  ┼→NULL
                  └─┴─┘  └─┴─┘          └─┴─┘ 
则函数fun()的功能是( )。
 A. 删除单向链表
 B. 显示单向链表中的所有数据
 C. 显示单向链表中的第一个数据
 D. 创建单向链表
B
 160.  若有如下定义,函数fun的功能是( )。其中head指向链表首结点,整个链表结构如下图:
        ┌──┬─┐  ┌──┬─┐        ┌──┬──┐
 head →│data│  ┼→│data│  ┼→ … →│data│NULL│
        └──┴─┘  └──┴─┘        └──┴──┘ 
struct node{
   int data;
   struct node *next;
};
int fun(struct node* head)
{
  int n=0;
  struct node* t=head;
  while(t!=NULL)
  {
   n++;
   t=t->next;
  }
return n;
}
 A. 删除链表head中的所有结点
 B. 计算链表head中结点的个数
 C. 插入一个元素到链表head
 D. 创建一个链表head
A
 161.  若有如下定义,函数fun的功能是( )。其中head指向链表首结点,整个链表结构如下图:
        ┌──┬─┐  ┌──┬─┐        ┌──┬──┐
 head →│data│  ┼→│data│  ┼→ … →│data│NULL│
        └──┴─┘  └──┴─┘        └──┴──┘
struct node{
   int data;
   struct node *next;
};
void fun(struct node* head)
{
 struct node* t=head;
 while(t!=NULL)
  {
   if(t->data%2==0)
        printf("%d ",t->data);
   t=t->next;
  }
}
 A. 遍历链表head,输出表中值为偶数的元素
 B. 建立一个只有表头结点的链表head
 C. 删除链表head中的第一个结点
 D. 插入一个元素到链表head 
A
 162.  下面程序的输出结果是( )。
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
   int data;
   struct node *next;
}Node;
Node list[3]={{1,&list[1]},{2,&list[2]},{3,0}};
void print(Node* head)
{
 Node* t=head;
 while(t!=NULL)
  {
   printf("%d ",t->data);
   t=t->next;
  }
}
void main()
{
 print(list); 
}
 A. 1 2 3
 B. 0 1 2
 C. 0 1 3
 D. 2 3 0 
A
 163.  对枚举类型进行定义,不正确的是(  )。
 A. enum b{1, 2, 3}; //用户定义的标识符不能以数字开头
 B. enum a{A, B, C};
 C. enum c{D=3, E, F};
 D. enum d{X=0, Y=5, Z=9};
C
 164.  假定已有如下变量说明和枚举定义:
   char ch ;
   int j, k ;
   enum day{sun, mon, tue, wed, thu, fri, sat} ;
   int a[sat];
判断下列语句是否符合语法规则,结果是(  )。
   char a ;                   /* 语句1 */
   j + k = j ;                /* 语句2 */
   if(a[mon]>0) j ++ ;        /* 语句3 */
 A. 语句2错误,其它正确
 B. 语句1正确,其它错误
 C. 语句3正确,其它错误
 D. 语句1错误,其它正确
C
 165.  设有如下定义:
typedef int *INTEGER;
INTEGER p,*q;
则(  )是正确的叙述。
 A. pint型变量             
 B. q是基类型为int的指针变量
 C. p是基类型为int的指针变量                     
 D. 程序中可用INTEGER代替int类型名
A
 166.  在对于无符号数的位运算中,操作数右移一位相当于( )。
 A. 操作数除以2
 B. 操作数乘以2
 C. 操作数除以4
 D. 操作数乘以4
C
 167.  若有定义:int a=20,b=28,c;则执行语句c=(a^b)<<2;c的值为( )。
 A. 2
 B. 5
 C. 32
 D. 92
A
 168.  若有定义:int a=20,b=28,c;则执行语句c=(a&b)>>2;c的值为( )。
 A. 5
 B. 7
 C. 80
 D. 112
B
 169.  下面程序的输出结果为( )。
#include <stdio.h>
void main()
{
 enum Weekday{sun=7,mon=1,tue,wed,thu,fri,sat};
 enum Weekday day=sat;
 printf("%d\n",day);
}
 A. 7
 B. 6
 C. 5
 D. 4 
C
 170.  若有以下类型说明,叙述正确的是( )。
typedef struct   
{
 int num;
 char *name;
 int score;
}STU,*PSTU;
 A. STU是变量名 
 B. PSTU是变量名   
 C. PSTU是指向结构体类型STU的指针类型名
 D. 类型说明语句有错误
C
 171.  下面程序段的运行结果是( )。
int a=5,b=6;
printf("%d",a|b);
 A. 5
 B. 6
 C. 7
 D. 8
C
 172.  以下程序的功能是(  )。
#include <stdio.h>
main()
{ FILE *fp;
  long int n;
  fp=fopen("wj.txt","rb");
  fseek(fp,0,SEEK_END);
  n=ftell(fp);
  fclose(fp);
  printf("%ld",n);
}
 A. 计算文件wj.txt的起始地址
 B. 计算文件wj.txt的终止地址
 C. 计算文件wj.txt内容的字节数
 D. 将文件指针定位到文件末尾
B
 173.  标准函数fgets(s, n, f)的功能是(  )。
 A. 从文件f中读取长度为n的字符串存入指针s所指的内存
 B. 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
 C. 从文件f中读取n个字符串存入指针s所指的内存
 D. 从文件f中读取长度为n-1的字符串存入指针s所指的内存
A
 174.  以下程序的可执行文件名是
   main(int argc,char * argv[])
   { int i;
     for(i=2;i<argc;i++)
     printf("%s%c",argv[i],(i<argc-1)?' ':'\n');
   }
DOS命令行输入:file My C Language and Programming<回车>,其输出结果是(  )。
 A. C Language and Programming
 B. My C Language and Programming
 C. MyCLanguageandProgramming
 D. file My C Language and Programming
C
 175.  以下程序的可执行文件名为tt.exe,若程序运行后屏幕显示:3, We are,则在DOS提示符下输入的命令是( )。
void main(int argc, char * argv[])
{
  int i;
  printf("%d,",argc);
  for(i=1;i<argc;i++)
     printf("%s ",argv[i]);
}
 A. tt 
 B. tt We 
 C. tt We are 
 D. tt We are happy! 
D
 176.  以下程序运行后,屏幕显示write ok!,下列说法正确的是( )。
#include <stdio.h>
main()
{ FILE *fp;
  fp=fopen("", "wt");
  if(fp!=NULL)
  { fprintf(fp,"%s\n", "File write successed!\n");
    fclose(fp);
    printf("write ok!\n");
  }
}
 A. 当前工作目录下存在文件,其中的内容是"write ok!"
 B. fclose(fp);语句的功能是打开文件
 C. 当前工作目录下一定不存在文件
 D. 当前工作目录下一定存在文件
C
 177.  以下程序运行后,屏幕显示File open error!,则可能的原因是( )。
#include <stdio.h>
main()
{
  FILE *fp;
  char str[256];
  fp = fopen("", "rt");
  if(fp==NULL) 
  { printf("File open error!");
    return;
  }
  fscanf(fp,"%s",str);
  fclose(fp);
}
 A. 当前工作目录下有文件,文件太小
 B.&文件不能关闭
 C. 当前工作目录下没有文件
 D. 当前工作目录下有文件,文件太大
B
 178.  以下程序的可执行文件名为
#include <stdio.h>
#include <stdlib.h>
void main(int argc,char *argv[])
{
 if(argc!=2)
 {
  printf("You forgot to type your name or you typed more parameters\n");
  exit(1);
 }
 printf("Hello %s\n",argv[1]);
}
DOS命令行输入:cmdline harry<回车>,则输出结果是( )。
 A. You forgot to type your name or you typed more parameters
 B. Hello harry
 C. Hello cmdline
 D. hello
C
 179.  对下面程序正确的描述是( )。
#include <stdio.h>
#include <stdlib.h>
void main()
{
 FILE *in,*out;
 if((in=fopen("","r"))==NULL)
  {
   printf("cannot open infile\n");
   exit(0);
  }
 if((out=fopen("","w"))==NULL)
  {
   printf("cannot open outfile\n");
   exit(0);
  }
 while(!feof(in))
     fputc(fgetc(in),out);
 fclose(in);
 fclose(out);
}
 A. 程序实现在屏幕上显示磁盘文件的内容
 B. 程序实现将两个磁盘文件的内容合二为一
 C. 程序实现将磁盘文件复制到磁盘文件
 D. 程序实现将两个磁盘文件合并并在屏幕上输出
D
 180.  以下叙述中正确的是( )。
 A. C语言中的文件是流式文件,因此只能顺序存取数据
 B. 打开一个已存在的文件进行了写操作后,原有文件中的全部数据必定被覆盖
 C. 在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
 D. 当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。