智慧树知到答案C语言编程新思路最新答案

内容查看
查看价格15

第一章 单元测试

1、单选题:
关于一个C语言程序执行的起点和终点,以下选项正确的是 ( )。
选项:
A: main  最后一个
B: main  任意
C: 第一个  最后一个
D: main  main
答案: 【 main  main】

2、单选题:
C语句的程序一行写不下时,可以 (    )。
选项:
A: 用回车换行
B: 用分号换行
C: 用逗号换行
D: 用任意空格换行
答案: 【 用回车换行】

3、单选题:
以下叙述不正确的是  ( )。
选项:
A: C程序中,可以不必包含主函数
B: C程序中,多行语句可以写在一行上
C: 一个C程序,可以由多个函数组成
D: C程序中,语句之间必须用分号分隔
答案: 【 C程序中,可以不必包含主函数】

4、单选题:
C语言规定,在一个源程序中,main函数的位置  ( )。
选项:
A: 可以任意
B: 必须在最后
C: 必须在最开始
D: 必须在系统调用库函数的后面
答案: 【 可以任意 】

5、单选题:
以下叙述正确的是 (     )。
选项:
A: 在C程序中,注释说明只能位于一条语句的后面。
B: C语言本身没有输入输出语句
C: 在对C语言进行编译的过程中,不能发现注释中的错误
D: C程序的每行中只能写一个语句
答案: 【 在对C语言进行编译的过程中,不能发现注释中的错误】

6、单选题:
函数的主体部分需要用一对  (    )括起来。
选项:
A: < >
B: { }
C: [ ]
D: ( )
答案: 【 { }】

7、单选题:
以下叙述错误的是  (   )。
选项:
A: 一个C程序编译成功后在连接时发现错误,需要编辑修改,然后不必重新编译和连接即可直接运行。
B: 对于计算机而言,程序是指完成某一特定任务的一组指令序列
C: C语言是一种函数型语言,每个C语言程序都是由若干个函数组成
D: 机器语言和汇编语言都是低级语言
答案: 【 一个C程序编译成功后在连接时发现错误,需要编辑修改,然后不必重新编译和连接即可直接运行。】

8、单选题:
计算机能够直接识别和执行的计算机语言   (     )。
选项:
A: C语言
B: 汇编语言
C: 机器语言
D: 高级语言
答案: 【 机器语言】

9、单选题:
对C程序的注释说明信息必须写在  ( )之间。
选项:
A: ’和’
B: /*和*/
C: { 和 }
D: <和>
答案: 【 /*和*/】

10、单选题:
用C语言编写的源程序,必须翻译成用二进制指令表示的目标程序,才能被计算机识别,这个过程称为   (    )。
选项:
A: 解释
B: 汇编
C: 编译
D: 编辑
答案: 【 编译】

11、单选题:
关于C语言的特点,以下叙述错误的是  ( )。
选项:
A: C语言程序可以方便的在不同的计算机间和各种操作系统中实现程序的移植
B: C语言共有34种运算符,表达式类型多样化
C: C语言不能直接对硬件进行操作
D: C语言一共只有32个关键字,9种控制语句,程序书写自由
答案: 【 C语言不能直接对硬件进行操作】

12、单选题:
C语言程序的基本构成单位是  (  )。
选项:
A: 表达式
B: 语句
C: 函数
D: 运算符
答案: 【 函数】

13、单选题:
能够在编译过程中被检查出来,并给出提示信息的是   (   )。
选项:
A: 语法错误
B:逻辑错误
C: 注释错误
D: 运行错误
答案: 【 语法错误】

14、单选题:
以下叙述错误的是  (   )。
选项:
A: C语言的注释语句不影响编译结果
B: C语言程序中只要出现在“/*”和“*/”之间的就一定是注释内容
C: C程序的单行注释语句以“//”开始
D: C语言的注释有两种类型:单行注释和多行注释
答案: 【 C语言程序中只要出现在“/*”和“*/”之间的就一定是注释内容】

15、单选题:
C语言源程序文件的后缀名是  (  )。
选项:
A: .vbp
B: .c
C: .exe
D: .obj
答案: 【 .c】

16、单选题:
C语言编译程序是  (    )。
选项:
A: 将C源程序编译成目标程序
B: 一组机器语言指令
C: 厂家提供的应用软件
D: C程序的机器语言版本
答案: 【 将C源程序编译成目标程序】

17、单选题:
C语言源程序文件经过编译后的目标文件后缀名是  (     )。
选项:
A: .c
B: .obj
C: .exe
D: .vbp
答案: 【 .obj 】

18、单选题:
C语言源程序编译、连接后的可执行文件后缀名是  (    )。
选项:
A: .bak
B:.obj
C: .c
D:.exe
答案: 【.exe】

第二章 单元测试

1、单选题:
下面4个选项中,均是不合法的用户标识符的选项的是( )。
选项:
A: b+a    if    float
B: char    pao    _123
C: _abc    Temp    Int
D: Date    sum    do
答案: 【 b+a    if    float】

2、单选题:
下面4个选项中均是合法常量的选项是( )。
选项:
A: “w”  034    0xa3  ‘m’
B:−12.8   0x98   43.56e2   ‘n’
C: 4.45    076    5.33E1.5   “how”
D: 058  12e−3  3.6    ‘d’
答案: 【−12.8   0x98   43.56e2   ‘n’ 】

3、单选题:
以下叙述不正确的是( )。
选项:
A: 在C语言中,%运算符的优先级高于/ 运算符
B: 在C语言中,area和AREA是两个不同的变量名
C: 在C语言中,可以使用二进制整数
D: 若a和b类型相同,在计算了赋值表达式a=b后,a得到b的值,而b的值不变
答案: 【 在C语言中,可以使用二进制整数】

4、单选题:
在C语言中,要求运算对象必须是整型的运算符是 ( )。
选项:
A: %
B: *
C: +
D: /
答案: 【 %】

5、单选题:
若有说明语句:char ch=’x41′; 则变量ch包含( )个字符。
选项:
A: 3
B: 说明不合法,ch的值不确定
C: 2
D: 1
答案: 【 1】

6、单选题:
若有定义:int a=7; float x=2.5,y=4.5; 则表达式x+a%3*(x+y)/2的值是 ( )。
选项:
A: 0.000000
B: 2.500000
C: 6.000000
D: 5.500000
答案: 【 6.000000 】

7、单选题:
设变量a是整型,f是实型,i是双精度型,则表达式10+’a’+i*f值的数据类型为( )。
选项:
A: double
B: float
C: int
D: 不确定
答案: 【 double】

8、单选题:
以下叙述正确的是 ( )。
选项:
A: 在C语言中,无论是整数还是实数,都能被准确无误地表示
B: 在C语言中,%是只能用于整数运算的运算符
C: 若a是实型变量,则在C语言中不允许用其他类型的数据对其赋值
D: 在C语言中,一行只能写一条语句
答案: 【 在C语言中,%是只能用于整数运算的运算符】

9、单选题:
在C语言中,int型数据在内存中的存储形式是( )。
选项:
A: 补码
B: 反码
C: ASCII码
D: 原码
答案: 【 补码】

10、单选题:
下列选项中可作为C语言的合法整数的是 ( )。
选项:
A: 101011B
B: a2
C: 0x4b5
D: 03845
答案: 【 0x4b5】

11、单选题:
字符型数据在内存中是以 ( )形式存储的。
选项:
A:补码
B: ASCII码
C: 原码
D: BCD码
答案: 【 ASCII码 】

12、单选题:
下列叙述正确的是( )。
选项:
A: 不同类型的变量所占内存单元是相同的
B: 赋值表达式的左边只能是变量名
C: 字符串常量”China!”在存储时,系统为其分配6个字节的空间
D: C语言中,变量可以不经定义而直接使用
答案: 【 赋值表达式的左边只能是变量名】

13、单选题:
#include <stdio.h>

int main()

{  char ch;

int i;

i=65;

ch=”a”;

printf(“%c,%c,%d,%d n”,i,ch,i,ch);

return 0;

}这段程序的运行结果是( )。
选项:
A: 编译错误,无法运行
B:  A,a,65,97
C: a,A, 65,97
D: a,A, 97,65
答案: 【 编译错误,无法运行】

14、单选题:
设整型变量a=2,则执行下列语句后,实型变量b的值不是0.5的是( )。
选项:
A: b=(float)(1/a)
B: b=1/(a*1.0)
C: b=1/(float)a
D: b=1.0/a
答案: 【 b=(float)(1/a)】

15、单选题:
#include <stdio.h>

int main()

{   int a=b=5,c;

c=a+b;

printf(“c=%dn”,c);

}这段程序的运行结果是( )。
选项:
A: 0
B: 编译错误,无法运行
C: 10
D: 不确定
答案: 【 编译错误,无法运行】

16、单选题:
C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。
选项:
A: 必须为字母或者下划线
B: 必须是字母
C: 可以是这三种字符中的任一种
D: 必须是下划线
答案: 【 必须为字母或者下划线】

17、单选题:
如果在一个C语言表达式中有多个运算符,则运算时应该( )。
选项:
A: 先考虑优先级,然后考虑结合性
B: 先考虑结合性,然后考虑优先级
C: 只考虑结合性
D: 只考虑优先级
答案: 【 先考虑优先级,然后考虑结合性】

18、单选题:
已知字符A的ASCII值是65,若定义int  i; 则执行语句i=’A’+3; 后,正确的叙述是 ( )。
选项:
A: i的值是字符A的ASCII值加上3,即68
B: 语句可以执行,但没有计算结果
C: i的值是字符E
D: 语句不合法
答案: 【 i的值是字符A的ASCII值加上3,即68 】

19、单选题:
在C语言中常量’n’和常量”ABC”在内存中占用的字节数分别是( )。
选项:
A: 1    3
B: 1    4
C: 2    3
D: 2    4
答案: 【 1    4 】

 

第三章 单元测试

1、单选题:
若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是 (     )。
选项:
A: d=(c=30)+b;
B: a*b;
C: a=b=c=d=100;
D: d=d-1;
答案:

2、单选题:
以下选项中不是C语句的是  (   )。
选项:
A:  ;
B:  a=5,c=10
C:  { ; }
D: {int i;printf(“%dn”,i);}
答案:

3、单选题:
以下程序的输出结果是 (    )。

#include   “stdio.h”

int main()

{   int x=100, y=30;

printf(“%dn”,y=x/y);

return(0);

}
选项:
A: 不确定的值
B: 3
C: 0
D: 1
答案:

4、单选题:
若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是  (    )。
选项:
A: get(“%d%d%d”,a,b,c);
B: read(a,b,c);
C:

scanf(“%d%d%d”,&a,&b,&c);

D: scanf(“%d%d%d”,a,b,c);
答案:

5、单选题:
以下程序段的输出结果是(     )

#include <stdio.h>

int main(void)

{   int i;      float x;  double y;

y=x=i=10/4;

printf(“y=%.2f,x=%.2f,i=%dn”,y,x,i);

return(0);

}
选项:
A: y=2.50,x=2.50,i=2
B: y=2.00,x=2.00,i=2
C: y=2.50, x=2.00, i=2
D: y=2.00, x=2.50, i=2
答案:

6、单选题:
若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是  (     )。
选项:
A: t=a, a=b, b=t;
B: t=b; b=a; a=t;
C: a=t; t=b; b=a;
D: a=a+b, b=a-b, a=a-b;
答案:

7、单选题:
以下程序的输出结果是 (    )。

#include <stdio.h>

int main(void)

{   int  a=4,b=8;

printf(“a=%%d,b=%%dn”,a,b);     /* 注意转义字符的作用 */

return(0);

}
选项:
A: a=%2,b=%5
B: a=%%d,b=%%d
C: a=2,b=5
D:a=%d,b=%d
答案:

8、单选题:
已知字母A的ASCII值为十进制数65,下面程序的输出是  (     )。

#include “stdio.h”

int main(void)

{   char ch1,ch2;

ch1=’A’+’5’−’3′;

ch2=’A’+’6’−’3′;

printf(“%d,%cn”,ch1,ch2);

return(0);

}
选项:
A:67,C
B: 67,D
C: C,D
D: B,C
答案:

9、单选题:
若从终端输入以下数据,要给变量c赋以340.25,则正确的输入语句是(   )。
选项:
A: scanf(%6.2f”, &c);
B: scanf(%4f”, &c);
C: scanf(%f”,&c)
D: scanf(%.2f”, &c);
答案:

10、单选题:
以下程序运行时输入:25<回车>,执行后输出的结果是 (      )。

#include <stdio.h>

int main(void)

{   char ch1,ch2;

int n1;

ch1=getchar();

ch2=getchar();

n1=ch2-ch1;

printf(“%d”,n1);

return(0);

}
选项:
A: 编译错误
B: 3
C: -3
D: 25
答案:

11、单选题:
有以下程序

#include<stdio.h>

int main(void)

{   char c1,c2,c3,c4,c5,c6;

scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4);

c5=getchar();

c6=getchar();

putchar(c1);

putchar(c2);

printf(“%c%cn”,c5,c6);

return(0);

}

程序运行后,若从键盘输入(从第一列开始)

abc<回车>

def<回车>则输出结果是(   )。
选项:
A: abcd
B: abef
C: cdef
D: abde
答案:

12、单选题:
以下程序段的输出结果是(     )。

#include <stdio.h>

int main(void)

{   char c1=’a’,c2=’c’;

printf(“%d,%cn”,c2-c1,c2-c1+’B’);

return(0);

}
选项:
A: 2,b
B: 类型不一致,出错
C: 2,D
D: 3,B
答案:

13、单选题:
若变量已正确定义为float类型,要通过语句scanf(“%f%f%f”,&a,&b,&c);给a赋值10.0,b赋值20.0,c赋值30.0,不正确的输入形式是(   )。
选项:
A: 10.0

20.0 30.0

B: 10

20

30

C: 10,20,30
D: 10,20

30

答案:

14、单选题:
以下程序的输出结果是( )。

#include <stdio.h>

int main(void)

{   int a,b;

a=10;

b=20;

printf(“a=%dnb=%dn”,a,b);

return(0);

}
选项:
A: a=10,b=20
B: a=10

b=20

C: 10

20

D: 10,20
答案:

15、单选题:
若变量已正确说明,要求用以下语句给a赋值2.0,给c1赋值字符#,给b赋值4.0,则不正确的输入形式是(   )。scanf(“%f%c%f”, &a, &c1, &b);
选项:
A: 2.0#4.0    ‘
B: 2#  4
C: 2.0# 4.0  ,
D: 2.0  #  4.0   ’
答案:

16、单选题:
以下说法错误的是 (        )。
选项:
A: 赋值表达式的功能是将赋值运算符右侧的值赋给其左侧的变量。
B:

复合语句是用一对花括号括起来的若干条语句,从语法作用上讲一条复合语句视为一条语句。

C: 若float x=5;可以对变量x进行%操作,如x%2的值是1。
D: 长整型(long int)变量,使用scanf函数输入时,需使用%ld格式符。
答案:

17、单选题:


结构化程序设计由三种基本结构组成,下面哪个选项不属于三种基本结构 (         )。
选项:
A:循环
B:顺序
C:回溯
D:选择
答案:

18、单选题:
下面程序段功能是先输入一个整数,然后将输入的整数输出,请指出哪部分有错(     )。  #include  <stdio.h>  // 1

int main(void)

{   int i;  // 2

scanf(“%d”, i); // 3

printf(“i=%dn “,i); // 4

return(0);

}
选项:
A: 2
B: 4
C: 3
D: 1
答案:

19、单选题:
设int a=10,b; ,执行下列语句后,b的值不是2的是(   )。
选项:
A: b=a-8
B: b=a%4
C:  b=a/4
D: b=a/4.0
答案:

20、单选题:
putchar() 函数可以向终端输出一个(    )。
选项:
A: 字符串
B: 整型
C: 实数
D: 字符
答案:

第四章 单元测试

1、单选题:
表示关系x≤y≤z的c语言表达式为(   )。
选项:
A: (x<=y)&(y<=z)
B: (x<=y<=z)
C: (x<=y)&&(y<=z)
D: (x<=y)AND(y<=z)
答案:

2、单选题:
若a=5;b=6;c=7;d=8;m=2;n=2;则执行 (m=a>b)&&(n=c>d)后,m和n的值分别为( )。
选项:
A: 2.0
B: 0,0
C:  2 ,2
D: 0,2
答案:

3、单选题:
在以下一组运算符中,优先级最高的运算符是(    )。
选项:
A: =
B: &&
C: <=
D: %
答案:

4、单选题:
若有int x,a,b;则下面if语句中,(       )是错误的。
选项:
A: if ( x )  x=x+1;
B: if (a-b)  x=x+1;
C: if (a<>b)  x=x+1;
D: if (a=b)  x=x+1;
答案:

5、单选题:
下列表达式中,(    )不满足“当x的值为偶数时值为真,为奇数时值为假”的要求。
选项:
A: !(x%2)
B: (x/2*2-x)==0
C: x%2==0
D: !x%2!=0
答案:

6、单选题:
关于以下程序,正确的说法是(   )。

#include <stdio.h>

int main(void)

{int x=0,y=0,z=0;

if(x=y+z)

printf(“***”);

else

printf(“###”);

return(0);

}

选项:
A: 输出:###
B: 输出:***
C: 可以编译,但不能通过连接,所以不能运行
D: 有语法错误,不能通过编译
答案:

7、单选题:
下列程序的输出结果是(   )。

#include <stdio.h>

int main(void)

{

float x=4,y=1;

if(x<0) y=0;

else if(x<10) y=1/x;

else y=10;

printf(“%fn”,y);

return(0);

}
选项:
A: 0.000000
B: 1.000000
C: 0.250000
D: 10.000000
答案:

8、单选题:
执行以下程序时,若输入3和4,则输出结果是(     )。

#include <stdio.h>

int main(void)

{

int  a,b,s;

scanf(“%d%d”,&a,&b);

s=a;

if(a<b)

s=b;

s=s*s;

printf(“%dn”,s);

return(0);

}
选项:
A: 16
B: 20
C: 18
D: 14
答案:

9、单选题:
下列程序的输出结果是(      )。

#include <stdio.h>

int main(void)

{

int x=1,a=0,b=0;

switch(x)

{

case 0: b=b+1;

case 1: a=a+1;

case 2: a=a+1;b=b+1;

}

printf(“a=%d,b=%dn”,a,b);

return(0);

}
选项:
A: a=2,b=2
B: a=1,b=0
C: a=2,b=1
D: a=1,b=1
答案:

10、单选题:
若有定义:int a=3,b=2,c=1; 并有表达式:①a%b、②a>b>c、③b&&c+1、④c+=1,则表达式值相等的是(   )。
选项:
A:②和③
B:③和④
C:①和③
D:①和②
答案:

11、单选题:
当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是(   )。   if(a<b)
if(c<d)   x=1;     else         if(a<c)             if(b<d)  x=2;             else  x=3;         else   x=6;   else  x=7;
选项:
A:4
B:3
C:1
D:2
答案:

12、单选题:
在下面的条件语句中(其中S1和S2表示C语言语句),只有一个在功能上与其他3个语句不等价(        )。
选项:
A: if(a!=0) S1;  else  S2;
B: if(a==0)  S2;  else  S1;
C: if(a==0)  S1;  else  S2;
D:

if(a)  S1; else  S2;

答案:

13、单选题:
若有int a=3,b; 则执行下面程序段后b的值是(        )  if(a>0)  b=1;  else  b=-1;  b=b+1;
选项:
A:0
B:1
C:2
D:-1
答案:

14、单选题:
假定所有变量均已正确定义,下面程序段执行后的x的值是(       )。 a=b=0;  x=35; if(!a) x=x-1; if(b) x=3; else x=4;
选项:
A:3
B:34
C:35
D:4
答案:

15、单选题:
若有说明语句int i=4, j=5, k=6; float f; 则执行f=( i>k)?i:(j<k)?j:k;语句后,f的值为(      )。
选项:
A:6.0
B:5.0

C:4.0
D:7.0
答案:

16、单选题:
下述程序的输出结果是(   )

#include <stdio.h>

int main (void)

{  int a=0,b=0,c=0;

if((a+1)>0 ||(b>0))

c=c+1;

printf(“%d,%d,%d”,a,b,c);

return(0);        }
选项:
A:1,0,1
B:1,1,1
C:0,0,1

D:0,0,0
答案:

17、单选题:
若x=0,则执行下面程序段后,屏幕上会显示(       )。  if(x=0) printf(“***”); else  printf(“&&&”);
选项:
A:&&&***
B:***&&&
C:***

***

D:&&&
答案:

18、单选题:

若有int a=10,b=20,c=30; ,执行下面程序段后a、b、c的值分别是()。 if(a>b)      c=a;  a=b;   b=c;

选项:
A:20、10、10
B:20、30、30

C:20、10、30
D:10、20、30

答案:

19、单选题:
下列程序的输出结果是(       )。 #include <stdio.h> int main(void) { int k=8;   switch(k)   {  case 7:k+=1;      case 8:k+=1;      case 9:k+=1;break;      default:k+=1;   }   printf(“%dn”,k);   return(0);  }
选项:
A:10
B:9
C:11
D:8
答案:

20、单选题:
若有float  x;  int  a,b; ,下面四条switch语句中正确的有(         )条。

switch(x)

{     case  x=1.0: printf(“Y”);                       case  x=2.0: printf(“N”);   }

switch(a)

{     case  a=1: printf(“Y”);                         case  a=2: printf(“N”);     }

switch(b)

{     case  b==1: printf(“Y”);                        case  b==2: printf(“N”);   }

switch(x)

{     case  1.0: printf(“Y”);                       case  2.0: printf(“N”);      }

选项:
A:1
B:4
C:3
D:2
答案:

第五章 单元测试

1、单选题:
以下程序段中while循环执行的次数是(  )。

int k=0;

while(k=1) k++;
选项:
A: 执行一次
B: 无限次
C: 一次也不执行
D: 有语法错不能执行
答案:

2、单选题:
以下描述中正确的是(  )。
选项:
A:do-while循环中,根据情况可以省略while
B:由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
C:do-while循环中由do开始,用while 结束,在while (表达式)后面不能写分号

D:在do-while循环中,循环体至少执行一次
答案:

3、单选题:
在C语言中有关for循环,以下正确的说法是(   )。
选项:
A:在 for循环不能break跳出循环体
B:for循环是先执行循环体语句,后判断表达式
C:for循环只能用于循环次数已经确定的情况
D:for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来
答案:

4、单选题:

以下下面程序的运行结果是(   )。

#include <stdio.h>

int main()

{  int a=1,b=2,c=2,t;

while(a<b<c)

{t=a;a=b;b=t;

c–;

}

printf(“%d,%d,%d”,a,b,c);

}
选项:
A:1,2,0
B:2,1,0
C:1,2,1
D:2,1,1
答案:

5、单选题:

若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是(   )。

for (i=5;i;i–)

for (j=0;j<4;j++){…}

选项:
A:25
B:30
C:20
D:24
答案:

6、单选题:

下面程序的输出结果是(   )。

#include <stdio.h>

int main()

{  int  i,j;

for(i=0,j=10;i<j;i+=2,j–)

;

printf(“%d %d”,i,j);

}

选项:
A:10  5
B:6  7
C:4  8
D:8  6
答案:

7、单选题:
下面关于switch语句和break语句的结论中,说法正确的是(   )。
选项:
A:break语句是switch语句的一部分
B:在switch语句中,必须使用break语句
C:在switch语句中,可以根据需要使用或者不使用break语句
D:break语句是for语句的一部分
答案:

8、单选题:
以下不是死循环的语句是(   )。
选项:
A:for(;;x+=i)
B:for(i=10;;i–)

sum+=i;

C:for( ;(c=getchar())!=’n’;)

printf(“%c”,c);

D:while(1) {x++;}
答案:

9、单选题:
与语句头while(!x)等价的语句头是(   )。
选项:
A:while(x!=1)
B:while(x==0)
C:while(x!=0)
D:while(~x)
答案:

10、单选题:
在while(x)语句中的x与下列条件表达式等价的是(   )。
选项:
A:x==0
B:x!=0
C:x!=1
D:x=1
答案:

11、单选题:

下面程序的功能是:在输入的一批正数中求最大者,输入0结束循环,选择(   )填空。

#include <stdio.h>

int main ( )

{  int a,max=0;

scanf(“%d”,&a);

while (        )

{   if (max<a) max=a ;

scanf (“%d”,&a);

}

printf(“%d”,max);

}

选项:
A:!a
B:a==0
C:a
D:!a==1
答案:

12、单选题:

下面程序的功能是从键盘输入一行字符,从中统计大写字母和小写字母的个数,选择(   ) 填空。

#include <stdio.h>

int main ( )

{  int m=0,n=0;

char c;

while ((         ) != ‘n’)

{   if (c>=’A’ && c<=’Z’) m++;

if (c>=’a’ && c<=’z’) n++;

}

printf(“m=%d,n=%dn”,m,n);

}

选项:
A:scanf(“%c”,&c)
B:c==getchar( )

C:c=getchar( )
D:getchar( )
答案:

13、单选题:

下面程序的输出结果是 (   )。

#include <stdio.h>

int main ( )

{  int k=0,m=0,i,j;

for (i=0; i<2; i++)

{   for (j=0; j<3; j++)

k++ ;

k-=j ;

}

m = i+j ;

printf(“k=%d,m=%d”,k,m) ;

}

选项:
A:k=1,m=5
B:k=1,m=3
C:k=0,m=3
D:k=0,m=5
答案:

14、单选题:

下面程序的输出结果是(   )。

#include <stdio.h>

int main ( )

{  char c=’A’;

int k=0;

do

{ switch (c++)

{case ‘A’: k++; break;

case ‘B’: k–;

case ‘C’: k+=2; break;

case ‘D’: k%=2; continue;

case ‘E’: k*=10; break;

default: k/=3;

}

k++;

} while (c<‘G’);

printf (“k=%d”,k);

}
选项:
A:k=0

B:k=2

C:k=3
D:k=4

答案:

15、单选题:

下面程序的运行结果是(   )。

#include <stdio.h>

int main()

{  int i;

for(i=1;i<=5;i++)

{  if(i%2) printf(“*”);

else    continue;

printf(“#”);

}

printf(“$n”);

}

选项:
A:***$
B:*#*#*$
C:*#*#$
D:*#*#*#$
答案:

16、单选题:

下面程序段的运行结果是 (   )。

int x=3;

do { printf(” %dn”,x -=2);} while(!(–x));

选项:
A:输出的是3和0
B:是死循环
C:输出的是 1
D:输出的是1和-2
答案:

17、单选题:

下面程序段的运行结果是(   )。

x=y=0;

while(x<15)

y++,x+=++y;

printf(“%d,%d”,y,x);

选项:
A:20,7
B:20,8
C:6,12
D:8,20
答案:

18、单选题:

下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择(   )填空:

#indude <Stdio.h>

int main()

{int a,b,t;

scanf(“%d%d”,&a,&b);

while( 【1】 )

{if(a>b)

{t=a;a=b;b=t;}

printf(“%d,%d”,a,b);

scahf(“%d%d”,&a,&b);人

}

选项:
A:a!=b
B:!a=b
C:a=b
D:a= =b
答案:

19、单选题:
对for(表达式1;;表达式3)可理解为(   )。
选项:
A:for(表达式1;表达式3;表达式3)
B:for(表达式1;1;表达式3)
C:for(表达式1; 0;表达式3)
D:for(表达式1;表达式1;表达式3)
答案:

20、单选题:

若i为整型变量,则以下循环执行次数是(   )。for (i=2;i==0;) printf(“%d”,i– );

选项:
A:无限次
B:0次
C:2次
D:1 次
答案:

第六章 单元测试

1、单选题:
在C语言中,引用数组元素时,其数组下标的数据类型允许是(  )。
选项:
A: 整型表达式
B: 任何类型的表达式
C: 整型常量
D: 整型常量或整型表达式
答案:

2、单选题:
以下程序的输出结果是(  )。

int main( )

{ int a[5]={1,2,3};

printf(“%dn”,a[3]); }
选项:
A: 3
B: 0
C: 随机值
D: 1
答案:

3、单选题:
以下程序的输出结果是(  )。
int main( ){ int i, k,a[10]={1,5,3,4,2,8,9,6,7,0};
for (i=0,k=0; i<10; i++) if(a[k]<a[i]) k=i; printf(“%d”,k);}
选项:
A:7
B:8
C:5
D:6
答案:

4、单选题:
以下程序的输出结果(  )。
int main( ){int i,j,s=0,a[2][3]={1,2,3,4,5,6};for (i=0; i<2; i++) for (j=0; j<3; j++) s=s+a[i][j];printf(“%d”,s);}

选项:
A:10

B:20
C:21
D:15
答案:

5、单选题:
有以下程序运行后的输出结果是(  )。int main( ){int aa[4][4]={{1,2,3,4},
{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0;for(i=0;i<4;i++)s+=aa[i][1];printf(“%d ”,s);}
选项:
A:20
B:13
C:19
D:11

答案:

6、单选题:
数组定义为 int a[3][2]={1,3,4,6,8,10},数组元素(       )的值为6。
选项:
A: a[2][2]
B:a[3][2]
C:a[1][1]
D:a[2][1]
答案:

7、单选题:
定义 int a[10][11],则数组a有(     )个元素。
选项:
A:90
B:11
C:110
D:132
答案:

8、单选题:
以下不能对二维数组a进行正确初始化的语句是(    ) 。
选项:
A:int a[][3]={{1,2},{0}};
B:int a[][3]={1,2,3,4,5,6};
C:int a[2][3]={0};
D:int a[2][3]={{1,2},{3,4},{5,6}};
答案:

9、单选题:
若有定义语句:int a[3][5];,按在内存中的存放顺序,a数组的第8个元素是(   )。
选项:
A:a[0][4]
B:a[0][3]
C:a[1][4]
D:a[1][2]
答案:

10、单选题:
若有定义 int a[10];则对a数组元素的正确应用是 (   )。

选项:
A:a[10]
B:a[10.0]
C:a(10)
D:a[1+2]
答案:

11、单选题:
以下能对一维数组a进行正确初始化的语句是( )。
选项:
A:int a[10]=(0,0,0,0,0)
B:int a[]={0};
C:int a[10]={}
D: int a[10]=10*1;
答案:

12、单选题:
以下对二维数组a的正确说明是( )。
选项:
A:int a[3][];
B:floatf a(3,4);
C:double a[1][4];
D:float a(3)(4);
答案:

13、单选题:
若有说明: int a[3][4]={0};则下面正确的叙述是 (   )。
选项:
A:数组a中每个元素均可得到初值0
B:此说明语句不正确。
C:只有元素a[0][0]可得到初值0
D:数组a中各元素都可得到初值,但其值不一定为0。
答案:

14、单选题:
若有定义:int s[3][4]={{1,2},{0},{3,4,5}};则s[2][1]的值为(  )。
选项:
A:4
B:3

C:1
D:0
答案:

15、单选题:
若有定义int a[2][3];则合法引用数组元素的是(  )。
选项:
A:a[1][2]
B:a[0][1/2]
C:a[1][3]
D:a[2][3]
答案:

16、单选题:
在以下数组定义中,错误的是(  )。
选项:
A:int a[2][]={1,2,3,4,5};
B:int a[2][2]={{1,2},{3}}
C:int a[][2]={1,2,3,4};
D:int a[][2]={{0},{1}};
答案:

17、单选题:

以下程序段执行后p的值是(  )。int a[3][3]={3,2,1,3,2,1,3,2,1}; int j,k,p=1;for(j=0;j<2;j++)for(k=j;k<3;k++)p*=a[j][k];

选项:
A:108

B:18
C:12
D:2
答案:

18、单选题:

以下程序段执行后p的值是(   )。 int a[3][3]={3,2,1,3,2,1,3,2,1}; int j,k,p=1;for(j=0;j<2;j++)for(k=j;k<4;k++)p*=a[j][k];

选项:
A:2
B:12
C:18

D:108

答案:

19、单选题:

以下程序段运行后s的值是(   )。 int a[3][3]={1,2,3,4,5,1,2,3,4};int i,j,s=1;for(i=0;i<3;i++)for(j=i+1;j<3;j++)s+=a[i][j];

选项:
A:7
B:240
C:6

D:120
答案:

20、单选题:

下面程序段的运行结果是(  )。 int m[]={5,8,7,6,9,2},i=1;for(i=0;i<6;i++) {if(i % 2 !=0) m[i]+=10; }for(i=0;i<6;i++) printf("%d ",m[i]);

选项:
A:15 18 17 16 19 12
B:5 8 7 6 9 2
C:5 18 7 16 9 12
D:15 8 17 6 19 2
答案:

第七章 单元测试

1、单选题:
变量的指针,其含义是指变量的(    )。
选项:
A: 名称
B: 值
C: 地址
D: 另一个名称
答案:

2、单选题:
以下叙述错误的是(    )。
选项:
A: 指针变量中存放的是地址值
B: 指针变量可以与整数进行加、减算术运算
C: 多个同类型的指针变量可以指向同一个普通变量。
D:指针变量不占用存储空间
答案:

3、单选题:
已知指针变量P的指向如图1所示,则表达式*P++的值是(    )。1.jpg
选项:
A:30

B:21

C:31

D:20

答案:

4、单选题:
已知指针变量P的指向如图1所示,则表达式*++P的值是(    )。1.jpg
选项:
A:20

B:30

C:31
D:21

答案:

5、单选题:
已知指针变量P的指向如图1所示,则表达式++(*P)的值(    )。1.jpg
选项:
A:20

B:31

C:30

D:21

答案:

6、单选题:

假设整型变量a的值为12,变量a的地址为2000,若欲使p为指向a的指针变量,则以下赋值正确的是(    )。

选项:
A:*p=12;
B:*p=2000
C:&a=p;
D:p=&a;
答案:

7、单选题:
若有定义:int b,*pb;则下面正确的赋值表达式是(    )。
选项:
A:pb=&b
B:pb=b
C:*pb=*b
D:*pb=&b

答案:

8、单选题:
设int a[10],*p=a; ,则下面(    )不是对a[3]的正确引用。
选项:
A:*(a+3)
B:*(p+3)
C:p[3]
D:p+3
答案:

9、单选题:
若有如下定义:int a[10]={10,20,30,40,50,60,70,80,90,100},*p=a; ,则执行p=p+5后,*p的值是(    )。

选项:
A:60

B:100
C:10

D:50

答案:

10、单选题:
若int *p,i;执行i=100; p=&i; i=*p+10; 后,*p的值是(    )。
选项:
A:0
B:10
C:110
D:100
答案:

11、单选题:

以下程序的输出结果是(    )。

#include <stdio.h>

int main()

{  int a[ ]={2,4,6,8,10},y=0,i,*p;

p=a;

for(i=0;i<3;i++)

y+=*(p+i);

printf(“%dn”,y);

}

选项:
A:12

B:17

C:20
D:19

答案:

12、单选题:

以下程序的输出结果是(    )。

#include <stdio.h>

int main()

{ int a=1,b=2,c=3,*p1,*p2,*p3;

p1=&a; p2=&b;      p3=&c;

*p3=*p1;  *p1=*p2;  *p2=*p3;

printf(“a=%d,b=%d,c=%dn”,a,b,c);

}

选项:
A:a=1,b=2,c=3
B:a=3,b=2,c=1
C:a=2,b=1,c=1
D:a=2,b=1,c=3
答案:

13、单选题:

以下程序的输出结果是    (    )。

#include <stdio.h>

int main()

{ int k=2,m=4,n=6;

int *pk=&k,*pm=&m,*p;

*(p=&n)=*pk*(*pm);

printf(“%dn”,n);

return 0;

}

选项:
A:10
B:4

C:8

D:6

答案:

14、单选题:

以下程序的输出结果是 (    )。

#include <stdio.h>

int main()

{ int **k, *a, b=100;

a=&b;k=&a;

printf(“%dn”,**k);

return 0;

}

选项:
A:a的地址
B:编译出错
C:b的地址
D:100

答案:

15、单选题:
对于基类型相同的两个指针变量之间,不能进行的运算时(    )。
选项:
A:–
B:+
C:<
D:=
答案:

16、单选题:
若有int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};  int (*p)[3]=a; ,则能正确表示数组元素a[1][2]的是(    )。
选项:
A:*(*(p+1)+2)
B:p[1]+2
C:*(p+1)+2
D:(p+1)[2]
答案:

17、单选题:

对于语句int *p[5]; 的正确描述是(    )。

选项:
A:p是一个指向数组的指针,所指向的数组含有5个int型元素。
B:定义不合法
C:p是一个指向数组中第5个元素的指针,该元素是int型。
D:p是一个具有5个元素的指针数组,每个元素都是一个指向int型对象的指针变量。
答案:

18、单选题:
若有int a[10],*p=a;,下列不能表示a数组首元素地址的是(    )。
选项:
A:a
B:&a[0]
C:*p
D:p
答案:

19、单选题:

下列程序的运行结果是(    )。

#include <stdio.h>

int main()

{ int a[5]={1,2,3,4,5},*p,**pp;

p=a;    pp=&p;

printf(“%d “,*(p+3));

printf(“%d”,**pp);

return 0;

}
选项:
A:4  1
B:4  4
C:3  1
D:3  4
答案:

20、单选题:
若有int a[10],*p;,则下列语句中正确的是(    )。
选项:
A:for(p=a; p<a+10 ; a++)
B:for(p=a; a<p+10 ; a++)
C:for(p=a; p<a+10 ; p++)
D:for(p=a; p<p+10 ; p++)
答案:

第八章 单元测试

1、单选题:
函数strcmp(“ABCDDCBA”,”ABCDE”)的返回值是(  )。
选项:
A:随机值
B:正数
C:负数
D:0
答案:

2、单选题:

以下程序运行后的输出结果是(  )。

int main( )

{

int i,j;

char a[ ]={‘a’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘’};

i=sizeof(a); // sizeof返回数组a在内存分配字节数

j=strlen(a);

printf(“%d,%dn”,i,j);

}

选项:
A:9,8
B:9,9
C:1,8
D:8,9
答案:

3、单选题:

下列选项中,不正确的赋值方式是(  )。

选项:
A:char str1[10]; str1=”string”;
B:char str[7]={‘s’,’t’,’r’,’i’,’n’,’g’};
C:char str1[ ]=”string”,str2[ ]=”12345678″;
D:char str[ ]={‘s’,’t’,’r’,’i’,’n’,’g’,”};
答案:

4、单选题:
若有以下的说明和语句, 则它与(   )中的说明是等价的。

char s[3][5]={“aaaa”,”bbbb”,”cccc”};

选项:
A:char s1[ ][ ] ={“aaaa”,”bbbb”,”cccc”};
B:char s3[ ][5]={“aaaa”,”bbbb”,”cccc”};

C:char s2[3][] ={“aaaa”,”bbbb”,”cccc”};
D:char s4[ ][4]={“aaaa”,”bbbb”,”cccc”};
答案:

5、单选题:

有以下程序:

#include “stdio.h”

#include “string.h”

int main()

{

int i,j;

char t[10],p[5][10]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”};

for(i=0;i<4;i++)

for(j=i+1;j<5;j++)

if(strcmp(p[i],p[j])>0)

{

strcpy(t,p[i]); strcpy(p[i],p[j]);  strcpy(p[j],t);

}

printf(“%dn”,strlen(p[0])); }

程序运行后的输出结果是(    )。

选项:
A:5
B:4
C:3
D:6
答案:

6、单选题:
下列选项正确的语句组是 (    )。
选项:
A:char *s; s=”China”;
B:char s[8]; s=”China”;
C:char *s; s={“China”};
D:char s[8]; s={“China”};
答案:

7、单选题:

下面程序的运行结果是 (    )。

char c[6]={‘a’,’b’,”,’c’,’d’,”};

printf(“%s”,c);

选项:
A:ab cd
B:ab
C:ab c
D:’a’ ‘b’
答案:

8、单选题:
有两个字符数组a、b,则以下正确的输入语句是(    )。
选项:
A:gets(a,b);
B:gets(“a”); gets(“b”);
C:scanf(“%s%s”,&a,&b);
D:scanf(“%s%s”,a,b);
答案:

9、单选题:

下面程序段的运行结果是(    )。

char a[7]= “abcdef”;

char b[4]= “ABC”;

strcpy(a,b);

printf(“%c”,a[5]);
选项:
A: c
B:e
C:空格
D:f
答案:

10、单选题:
下面程序段的输出结果是(    )。#include <stdio.h>int main(){  char str[]=”I like swimming! “,*p=str;  p=p+7;  printf(“%s”,p);}

选项:
A:like swimming!
B:程序有错误
C:I like swimming!
D:swimming!
答案:

11、单选题:
下面哪个选项不能将”hello”字符串存入字符数组str中(    )。

选项:
A:char str[30],*ps=str; strcpy(ps,”hello”);
B:char str[30]; strcpy(str, “hello”);
C:char str[]=”hello”   ;
D:char str[30];str=”hello”;
答案:

12、单选题:
有以下定义,不能表示字符 ‘C’ 的表达式是(    )。char str[]=”ABCDEFG”,*p=str;

选项:
A:str[2]
B:*(p+2)
C:*p+2
D:*(str+2)
答案:

13、单选题:
程序段char c[]=”abcdefg “; printf(“%s”,c+4);的运行结果是(    )。

选项:
A:defg
B:abcd
C:abcdefg
D:efg
答案:

14、单选题:
有如下定义,不能给数组a输入字符串的是(    )。char a[20],*p=a;

选项:
A:gets(p)
B:gets(a)
C:gets(a[0])
D:gets(&a[0])
答案:

15、单选题:
下面说法正确的是(  )。

选项:
A:当两个字符串所包含的字符个数相同时,才能比较两个字符串的大小。
B:定义char a[30], b[]=”China”; 后,可执行a=b; 将数组b中的字符串赋值给数组a。
C:

若定义char s[]=”well”; char t[]={‘w’,’e’,’l’,’l’};,则数组s与数组t中内容相同。

D:函数strcpy(str1,str2); 的功能是将str2中字符串复制到str1中。
答案:

16、单选题:
接受用户输入含有空格的字符串时,应使用(    )。

选项:
A:getchar( )
B:gets( )
C:scanf( )
D:printf ( )
答案:

17、单选题:
列描述中错误的是 (    )。

选项:
A:字符串可以存储在字符数组中。
B:不能使用赋值运算符“=”,直接对字符数组名进行赋值。
C:可以对字符数组进行整体输入、输出。
D:不能对字符数组存储的字符串进行更改。
答案:

18、单选题:
执行以下程序段后,输出结果是(   )。
char str[20]=”door”,t;   int i,j;   i=0; j=strlen(str)-1;   t=str[i]; str[i]=str[j]; str[j]=t;   puts(str);

选项:
A:dood

B: door
C: rood
D: roor
答案:

19、单选题:
若有如下定义char a[30],b[30],则以下正确的输入语句是(   )
选项:
A:scanf(“%s%s”&a,&b);
B:gets(a); gets(b);

C:scanf(“%s”,a,b);
D:gets(a,b);
答案:

20、单选题:

执行以下程序段后,输出结果是(    ) 。

char s[20]= “Good”,t[]=”Moring!”;

strcat(s,t);

puts(s);

选项:
A:Moring!Good
B:Moring!
C:Good
D:GoodMoring!
答案:

第九章 单元测试

1、单选题:
在c语言中以下不正确的说法是(   )。
选项:
A:形参应与其对应的实参类型一致
B:实参可以为任意类型
C:形参可以是常量、变量或表达式

D:实参可以是常量、变量、或表达式
答案:

2、单选题:

以下程序有语法性错误,有关错误原因的正确说法是(   )。

#include <stdio.h>

int main(void)

{  int G=5,k;

void  prt_char();

……

k=prt_char(G);

……

return 0;

}

选项:
A:语句void prt_char();有错,它是函数调用语句不能用void说明
B:变量名不能使用大写字母
C:函数名不能使用下划线
D:函数说明和函数调用语句之间有矛盾
答案:

3、单选题:
下述函数定义形式正确的是(   )。

选项:
A:int  f(int x;int y)
B:int  f(int x,int y)
C:int  f(int x,y)
D:int  f(x,y:int)
答案:

4、单选题:
以下所列的各函数首部中,正确的是(   )。
选项:
A:void play(var :Integer,var b:Integer)
B:void play(int a,int b)
C:void play(int a,b)
D:Sub play(a as integer,b as integer)
答案:

5、单选题:
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(   )。
选项:
A:函数调用可以出现在表达式中
B:函数调用可以作为一个函数的实参
C:函数调用可以作为一个函数的形参
D:函数调用可以作为独立的语句存在
答案:

6、单选题:
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(   )。
选项:
A:单向值传递
B:由实参传给形参,再由形参传回实参

C:传递方式由用户指定

D:地址传递
答案:

7、单选题:

有以下程序:

#include <stdio.h>

void fun(int a,int b,int c)

{ a=11; b=22; c=33;}

int main(void)

{  int x=10,y=20,z=30;

fun(x,y,z);

printf(“%d,%d,%dn”,x,y,z);

return 0;

}

该程序输出结果是(   )。
选项:
A:30,20,10
B:10,20,30
C:33,22,11
D:11,22,33
答案:

8、单选题:
关于函数参数,说法正确的是(   )。
选项:
A:形参是虚拟的,不占用内存单元
B:实参与其对应的形参共同占用一个内存单元
C:实参与其对应的形参各自占用独立的内存单元
D:只有当实参和形参同名时才占用同一个内存单元
答案:

9、单选题:
一个函数的返回值由(   )确定。
选项:
A:被调用函数的类型
B:调用函数的类型
C:系统默认的类型
D:return语句中的表达式
答案:

10、单选题:

下列程序的输出结果是(   )。

fun(int a,int b,int c)

{ c=a+b;}

int main(void)

{  int c;

fun(2,3,c);

printf(“%dn”,c);

return 0;

}

选项:
A:3
B:2
C:不定
D:5
答案:

11、单选题:

有以下程序:

#include <stdio.h>

int fun(int x)

{  printf(“x=%dn”,++x); }

int main()

{    fun(12+5);

return 0;

}

程序的输出结果是(   )。

选项:
A:x=17
B:x=13
C:x=18
D:x=12
答案:

12、单选题:

有如下程序:

#include <stdio.h>

int i=1;

int main()

{   int i=i;

printf(“%dn”,i);

return 0;

}程序的输出结果是(   )。

选项:
A:1

B:不确定
C:i

D:0

答案:

13、单选题:

有如下程序:

#include <stdio.h>

int f(int x) { return x+3;}

int main(void)

{  int a=1;

while(f(a)<10) a++;

return 0;

}

程序执行后,变量a的值是(   )。

选项:
A:10
B:7
C:11
D:9
答案:

14、单选题:
以下说法中正确的是(   )。
选项:
A:形参是全局变量,其作用范围从定义之处到文件结束
B:形参是全局变量,其作用范围仅限于函数内部
C:形参是局部变量,其作用范围仅限于函数内部

D:形参是局部变量,其作用范围从定义之处到文件结束
答案:

15、单选题:
定义为void类型的函数,其含义是(   )。
选项:
A:调用函数后,被调用的函数的返回值为任意类型
B:调用函数后,被调用的函数不返回
C:调用函数后,被调用的函数没有返回值
D:其余选项都不对
答案:

16、单选题:
当全局变量和函数内部的局部变量同名时,在函数内部(   )。
选项:
A:局部变量有效

B:全局变量和局部变量都无效
C:全局变量和局部变量都有效
D:全局变量有效
答案:

17、单选题:

有如下程序:

#include <stdio.h>

fun(int a)

{ auto int b=0;

static int c=3;

b=b+1;c=c+1;

return(a+b+c);

}

int main(void)

{  int a=2,i;

for(i=0;i<3;i++)  printf(“%d “,fun(a));

return 0;

}

它的输出结果是(   )。

选项:
A:7  8  9
B:9  9  9
C:7  7  7

D:8  9  10
答案:

18、单选题:

有如下程序:

#include <stdio.h>

void fun(int x,int y)

{ int t;

if(x>y) {t=x;x=y;y=t;}

}

int main(void)

{ int a=4,b=7,c=5;

fun(a,b);fun(a,c);fun(b,c);

printf(“%d,%d,%dn”,a,b,c);

return 0;

}

它的输出结果是(   )。

选项:
A:4,5,7
B:4,7,5
C:7,4,5
D:7,5,4

答案:

19、单选题:

有如下程序:

#include <stdio.h>

f(int a)

{ int b=0;

static int c=3;

a=c++; b++;

return(a);

}

int main(void)

{ int a=2,i,k;

for(i=0;i<2;i++) k=f(a++);

printf(“%dn”,k);

return 0;

}

该程序的输出结果是(   )。

选项:
A:5
B:3
C:6
D:4
答案:

20、单选题:
凡是未指明存储类别的局部变量,其隐含的存储类别是(   )。

选项:
A: static
B: register
C: auto
D: extern
答案:

第十章 单元测试

1、单选题:
若有数组名作为函数调用的实参,传递给形参的是(    )。
选项:
A:数组中全部元素的值
B:数组的首地址
C:数组第一个元素的值
D:数组元素的个数
答案:

2、单选题:
若使用一维数组名作为函数实参,则以下描述中正确的是 (    )。
选项:
A:实参数组类型与形参数组类型可以不匹配
B:实参数组名与形参数组名必须一致
C:在被调用函数中,不需要考虑形参数组的大小
D:必须在调用函数中说明此数组的大小
答案:

3、单选题:
以下叙述正确的是(    )
选项:
A:C语言中各函数(除主函数外)之间不允许直接递归调用允许间接递归调用
B:C语言中各函数(除主函数外)之间允许直接递归调用不允许间接递归调用
C:C语言中各函数(除主函数外)之间既允许直接递归调用也允许间接递归调用
D:C语言中各函数(除主函数外)之间既不允许直接递归调用也不允许间接递归调用
答案:

4、单选题:
下列程序的输出结果是(    )。

#include <stdio.h>

void sub(int x,int y,int *z)

{ *z=y-x; }

int main()

{    int a,b,c;

sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

printf(“%d,%d,%dn”,a,b,c);

return 0;

}

选项:
A:5,-2,-7
B:-5,-12,-7
C:5,2,3
D:-5,-12,7
答案:

5、单选题:
下列程序的输出结果是(    )。

#include <stdio.h>

void prtv(int *x)

{ printf (“%dn”,++*x); }

int main()

{   int a=25;

prtv(&a);

return 0;

}

选项:
A:25
B:24
C:23
D:26
答案:

6、单选题:

下列程序的输出结果是(  )。 #include <stdio.h>void fun(int  *a,int  *b){int w; *a=*a+*a; w=*a; *a=*b; *b=w;}int main(){ int x=2, y=3,*px=&x,*py=&y;;fun(px,py);printf("%d,%dn",x,y);return 0;}

选项:
A:4,3
B:3,4
C:2,3
D:3,2
答案:

7、单选题:
以下程序运行时,若输入5 10 3,则输出结果是(  )。#include <stdio.h>void swap(int *p1,int *p2){int t; t=*p1; *p1=*p2; *p2=t;


return;}int main(){int a,b,c; scanf(“%d%d%d”,&a,&b,&c); if(a>b) swap(&a,&b); if(a>c) swap(&a,&c); if(b>c) swap(&b,&c); printf(“%d,%d,%dn”,a,b,c); return 0;}

选项:
A:3,10,5
B:5,10,3
C:10,5,3
D:3,5,10
答案:

8、单选题:

以下程序运行时,若输入5,则输出结果是(  )。

#include <stdio.h>

int fac(int n)

{static int k=1;

k=k*n;

return k;

}

int main()

{int m,i,f;

scanf(“%d”,&m);

for(i=1;i<=m;i++)

{f=fac(i);

printf(“%d “,f);

}

}

选项:
A:1 2 3 4 5
B:1 2 6 24 120
C:5
D:120
答案:

9、单选题:
下列程序的输出结果是(    )。#include <stdio.h>int fun(int a){int b; if(a==0||a==1)   return 3; b=a*a-fun(a-2); return b;}int main(){int x,y; x=fun(3); y=fun(4); printf(“%d,%dn”,x,y); return 0;}

选项:
A:9,16
B:6,16
C:6,15
D:3,4
答案:

10、单选题:
下列程序的输出结果是(    )。#include <stdio.h>int fun(int (*p)[3]){int i,j,n; n=p[0][0]; for(i=0;i<2;i++)  for(j=0;j<3;j++)   if(p[i][j]>n)    n=p[i][j]; return n;}int main(){int a[2][3]={11,32,13,44,5,6},m; m=fun(a); printf(“%dn”,m); return 0;}

选项:
A:6
B:32
C:11

D:44
答案:

11、单选题:
下列程序的运行结果是(    )。#include <stdio.h>void fun(int x, int y, int *cp,int *dp){ *cp=x+y; *dp=x-y;}int main(){ int a,b,c,d; a=4;b=3; fun(a,b,&c,&d); printf(“%d,%dn”,c,d); return 0;}

选项:
A:4,3
B:3,4
C:1,7
D:7,1
答案:

12、单选题:

下列程序的运行结果是(    )。

#include <stdio.h>

void op(int (*p)[3])

{int i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(p[i][j]%3==0)

printf(“%d “,p[i][j]);

}

int main()

{int s[3][3]={1,2,3,4,5,6,7,8,9};

op(s);

return 0;

}

选项:
A:3 6 9
B:1 2 3
C:1 4 7
D:7 8 9
答案:

13、单选题:
以下程序运行时,若输入5,则程序的输出结果是(    )。#include <stdio.h>int fun(int n){if(n==1)  return 1; else  return n+fun(n-1);}int main(){int m; scanf(“%d”,&m); m=fun(m); printf(“%dn”,m); }

选项:
A:5
B:9
C:15
D:6

答案:

14、单选题:

以下程序运行时,若输入ab012kd99pk8,则程序的输出结果是(    )。#include <stdio.h>void fun(char s[]){int i,j;  for(i=0,j=0;s[i]!=”;i++)   if(s[i]>=’0’&&s[i]<=’9′)    s[j++]=s[i];   s[j]=”;}int main(){char str[80]; gets(str); fun(str); puts(str); return 0;}

选项:
A:8
B:99
C:012
D:012998

答案:

15、单选题:
若有以下程序:#include <stdio.h>void f(int *q,int n){int i; for(i=0;i<n;i++)  (*q)++; return;}int main(void){int a[5]={1,2,3,4,5},i; f(a,5); for(i=0;i<5;i++)     printf(“%d,”,a[i]); return 0;}则程序的输出结果是(  )。

选项:
A:6,2,3,4,5,
B:2,2,3,4,5,
C:2,3,4,5,6,
D:1,2,3,4,5,
答案:

16、单选题:
形参数组与实参数组,在内存空间中是(  )的。
选项:
A:完全重叠
B:相互独立
C:部分重叠
D:随机存储
答案:

17、单选题:
若有以下程序:

#include <stdio.h>

int *fun(int *s,int *t)

{if(*s<*t)

s=t;

return s;

}

int main(void)

{int a=3,b=6,*p=&a,*q=&b,*r;

r=fun(p,q);

printf(“%d,%d,%dn”,*p,*q,*r);

return 0;

}则程序的输出结果是(  )。

选项:
A:6,6,3
B:3,6,6
C:6,3,3
D:3,3,6
答案:

18、单选题:
若有以下程序:

#include <stdio.h>

int fun(int x)

{

if(x>10)

{printf(“%d-“,x%10);

fun(x/10);

}

else

printf(“%d”,x);

return;

}

int main(void)

{

int z=123456;

fun(z);

return 0;

}则程序的输出结果是(  )。
选项:
A:6-5-4-3-2-1-
B:1-2-3-4-5-6-
C:1-2-3-4-5-6
D:6-5-4-3-2-1
答案:

第十一章 单元测试

1、单选题:
以下叙述不正确的是(   )。
选项:
A:在程序中凡是以#号开始的语句都是预处理命令行
B:以下宏定义是正确的:#define IBM_PC
C:预处理命令行必须以#号开始
D:C程序在执行过程中对预处理命令行进行处理

答案:

2、单选题:
在宏定义#define PI 3.1415926 中,用宏名PI代替一个(   )。
选项:
A:单精度数
B:双精度数
C:字符串
D:常量
答案:

3、单选题:
以下叙述正确的是(   )。
选项:
A:使用带参数的宏时,参数的类型应与宏定义时一致
B:宏名必须用大写字母表示
C:在程序的一行上可以出现多个有效的预处理命令行
D:宏替换不占用运行时间,只占编译时间
答案:

4、单选题:
以下在任何情况下计算平方数时,都不会引起二义性的宏定义是(   )。
选项:
A:#define POWER(x)  (x*x)
B:#define POWER(x)  ((x)*(x))
C:#define POWER(x)  (x)*(x)
D:#define POWER(x)  x*x
答案:

5、单选题:
在“文件包含”预处理语句的使用形式中,当#include后面的文件名用” ”(双引号)括起时,寻找被包含文件的方式是(   )。
选项:
A:仅仅搜索当前目录
B:直接按系统设定的标准方式搜索目录
C:现在源程序所在目录搜索,再按系统设定的标准方式搜索
D:仅仅搜索源程序所在目录
答案:

6、单选题:

有以下程序:

#define ADD(x)  x+x

#include “stdio.h”

int main(void)

{   int m=1,n=2,k=3;

int sum=ADD(m+n)*k;

printf(“sum=%d”,sum);

return 0;

}

该程序的运行结果是(   )。

选项:
A:sum=12
B:sum=10
C:sum=18
D:sum=9
答案:

7、单选题:

若有如下宏定义:

#define  X  5

#define  Y  X+1

#define  Z  Y*X/2

则执行以下printf语句后,输出结果是(   )。

int a;  a=Y;

printf(“%d “,Z);

printf(“%d “,- -a);

选项:
A:12   6

B:7   5
C:7     6
D:12   5
答案:

8、单选题:
以下程序的运行结果是(      )。  #define  MAX(A,B)  (A)>(B)?(A): (B)        #define  PRINT(Y)   printf(“Y=%d ”,Y)        #include “stdio.h”       int main(void)      {   int a=1,b=2,c=3,d=4,t;          t=MAX(a+b,c+d)          PRINT(t);          return 0;       }
选项:
A:Y=0
B:Y=7
C:存在语法错误
D:Y=3
答案:

9、单选题:
以下程序的输出结果是(         )。#include <stdio.h>#define  MUL(x,y)  (x)*y#include “stdio.h”int main(void)
{  int a=3,b=4,c;   c=MUL(a++,b++);   printf(“%d”,c);   return 0;}

选项:
A:20
B:15
C:16
D:12
答案:

10、单选题:
用宏替代计算多项式4*x*x+3*x+2之值的函数f,正确的宏定义是(          )。
选项:
A:#define  f(x)  4*x*x+3*x+2
B:#define  (4*a*a+3*a+2)  f(a)
C:#define  f(a)  (4*(a)*(a)+3*(a)+2)
D:#define  f  4*x*x+3*x+2
答案:

第十二章 单元测试

1、单选题:
C语言规定结构体变量系统分配给它的存储空间是(  )。
选项:
A:该结构体中最后一个成员所需的存储空间
B:该结构体中所有成员所需存储空间的总和
C:该结构体中占用最大存储空间的成员所需的存储空间
D:该结构体中第一个成员所需的存储空间
答案:

2、单选题:

以下对结构体变量s 中成员age的合法法引用是(  )。

#include<string.h>

struct student

{int age;

int num;

} s,*p;

p=&s;

选项:
A:student.s.age
B:student.age
C:p->age
D:s->age
答案:

3、单选题:

有如下定义:

struct date

{int y ;

int m ;

int d ;};

struct person

{   char name[20];

char sex;

struct date birthday;

}a;

对结构体变量a的出生年份进行赋值时,下面正确的赋值语句是(  )。
选项:
A:a.birthday.y =1958
B:a.y =1958
C:y =1958
D:birthday.y=1958
答案:

4、单选题:

设有以下说明语句

struct  stu

{   int a;

float b;

}stutype;

则以下叙述不正确的是(  )。

选项:
A:struct stu 是用户定义的结构体类型名
B:a 和 b 都是结构体成员名
C:struct 是结构体类型的关键字
D:stutype 是用户定义的结构体类型名
答案:

5、单选题:
以下结构体类型说明和变量定义中正确的是(  )。
选项:
A:struct

{int n; char c;

} REC x,y;

B:typedef struct  REC ;

{int n=0; char c=’A’;

} x,y;

C:struct  REC;

{int n; char c;};

REC x,y;

D:typedef  struct

{int n; char c;} REC;

REC  x,y;

答案:

6、单选题:

下面程序的运行结果是(  )。

struct  st

{ int  n;

int  a[20];

};

void f(int  *a, int n)

{   int i;

for(i=0;i<n;i++)

a[i]+=I;

}

int main()

{   int i;  struct st  x={10,{2,3,1,6,8,7,5,4,10,9}};

f(x.a, x.n);

for(i=0;i<s.n;i++)

printf(”%d,”,x.a[i]);

}

选项:
A:3,4,2,7,9,8,6,5,11,10,
B:1,2,3,6,8,7,5,4,10,9,
C:2,4,3,9,12,12,11,11,18,18,
D:2,3,1,6,8,7,5,4,10,9,
答案:

7、单选题:
以下关于typedef 的叙述错误的是(  )。
选项:
A:用typedef为类型说明一个新名,通常可以增加程序的可读性
B:typedef只是将已存在的类型用一个新的名字来代表
C:用typedef可以增加新类型
D:用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名
答案:

8、单选题:

下面程序的运行结果是(  )。

#include <stdio.h>

#include <string.h>

typedef struct{ char name[9];char sex; float score[2]; } stu;

stu f(stu a)

{stu b={“zhao”,’m’,85.0,90.0};

int i;

strcpy(a.name,b.name);

a.sex=b.sex;

for(i=0;i<2;i++)

a.score[i]=b.score[i];

return a;

}

int main()

{stu c={“qian”,’f’,95.0,92.0},d;

d=f(c); printf(“%s,%c,%2.0f,%2.0fn”,d.name,d.sex,d.score[0],d.score[1]);

}
选项:
A:qian,f,95,92
B:qian,m,85,90
C:zhao,f,95,92
D:zhao,m,85,90
答案:

9、单选题:

以下程序运行后的输出结果是(  )。

#include <stdio.h>

struct S {int n; int a[20];};

void f(struct S *p)

{   int i,j,t;

for(i=0;i<p->n-1;i++)

for(j=i+1;j<p->n;j++)

if(p->a[i]>p->a[j])

{ t=p->a[i]; p->a[i]=p->a[j]; p->a[j]=t; }

}

int main()

{   int i; struct S s={10,{2,3,1,6,8,7,5,4,10,9}};

f(&s);

for(i=0;i<s.n;i++)

printf(”%d,”,s.a[i]);

}
选项:
A:10,9,8,7,6,1,2,3,4,5,
B:10,9,8,7,6,5,4,3,2,1,
C:2,3,1,6,8,7,5,4,10,9,
D:1,2,3,4,5,6,7,8,9,10,
答案:

10、单选题:

有以下程序段

typedef struct node

{   int data;

struct node *next; }NODE;

NODE  *p;

以下叙述正确的是(  )。
选项:
A:p 是指向struct node 结构体变量的指针的指针

B:p 是struct node 结构体变量

C:NODE *p;语句出错
D:p 是指向struct node 结构体变量的指针
答案:

11、单选题:

若定义如下结构,则能打印出字母M的语句是(  )。

struct person{ char name[9]; int age;};

struct person class[10]={“Wujun”,20, “Liudan”,23, “Maling”,21, “zhangming”,22};

选项:
A:printf(“%cn”,class[3].name[1]);
B:printf(“%cn”,class[2].name[0]);
C:printf(“%cn”,class[3].name);
D:printf(“%cn”,class[2].name[1]);
答案:

12、单选题:

以下程序段的运行结果是(  )。

union { int n; char str[2]; }t; t.n=80; t.str[0]=’a’; t.str[1]=0; printf(“%dn”, t.n);
选项:
A:a
B:0
C:80
D:97
答案:

13、单选题:
以下对C语言中共用体类型数据的叙述正确的是(  )。
选项:
A:共用体类型定义中不能出现结构体类型的成员
B:一个共用体变量中可以同时存放其所有的成员
C:可以对共用体变量名直接赋值
D:一个共用体变量中不能同时存放其所有成员
答案:

14、单选题:

若有以下说明和定义语句,则下面引用形式中不正确的是 (  )。

struct student

{ int age;

int num;

};

struct student stu[3]={{1001,20},{1002,19},{1003,21}};

struct student *p;

p=stu;

选项:
A:p=&stu.age
B:p++
C:(*p).num
D:(p++)->num
答案:

15、单选题:

以下scanf函数调用语句中,对结构体变量成员的不正确引用是(  )。

struct pupil

{char name[20 ];

int age ;

int sex;

}pup[5],*p;

p=pup;
选项:
A:scanf(“%d“,&sex);
B:scanf(“%s“,pup[0].name);
C:scanf(“%d“,&pup[0].age);
D:scanf(“%d“,P->age);

答案:

16、单选题:
当说明一个共用体变量时系统分配给它的内存是(  )。
选项:
A:结构中最后一个成员所需内存量
B:成员中占内存量最大者所需的容量
C:结构中第一个成员所需内存量
D:各成员所需内存量的总和
答案:

17、单选题:

设有以下说明,则下面不正确的叙述是(  )。

union data

{  int  i;

char c;

float f;

}un;

选项:
A:un所占的内存长度等于成员f的长度
B:不能对un赋值,但可以在定义un时对它初始化
C:un的地址和它的各成员地址都是同一地址
D:un可以作为函数参数
答案:

18、单选题:
定义结构体类型变量teach1,不正确的是(  )。
选项:
A:struct {int num; int age; }teacher;  struct teacher teach1;
B:struct teacher {int num; int age; };  struct teacher teach1;
C:struct {int num; int age; }teach1;
D:struct teacher {int num; int age; }teach1;
答案:

19、单选题:

下面程序的运行结果是(  )。

#include <stdio.h>

union data { int i; char c; double d; }a[2];

void main() {printf(“%dn”,sizeof(a)); }
选项:
A:4
B:2
C:8
D:16
答案:

20、单选题:

以下对结构体变量stul中成员age的非法引用是( )。

struct student

{int age;

int num;

}stul,*p;

p=&stul;

选项:
A:p->age
B:(*p).age
C:student.age
D:stul.age
答案:

第十三章 单元测试

1、单选题:

运行下列程序,输出结果为(     )。

#include <stdio.h>

int main()

{ int x=040;

printf(“%dn”,x=x<<1);

return 0;}

选项:
A:120
B:100
C:160
D:64
答案:

2、单选题:
如有short int a,b,若要通过a=a&b使a的低8位置0,高8位不变,则b应该是(    )。
选项:
A:0x00ff
B:0x0000
C:0xffff
D:0xff00
答案:

3、单选题:
下列描述正确的是(    )。
选项:
A:有表达式y=~5,则y的值等于-5.
B:参加位运算的数据可以是任何类型的数据。
C:用C语言可直接进行位运算,因此C语言是一种低级语言。
D:在一个数左移时被溢出的高位中不包含1的情况下,左移1位相当于该数乘以2。
答案:

4、单选题:
若有short int a=0x5566; 则执行a= a|0xff00 后,a的值是(    )。
选项:
A:0x5566
B:0x0066
C:0x5500
D:0xff66
答案:

5、单选题:
a为任意整数,能将变量a清零的表达式为(    )。
选项:
A:a=a^a
B:a=a|a
C:a=a&a

D:a=~a
答案:

6、单选题:

如有short int a,b; ,若要通过a=a|b使a的低8位置1,高8位不变,则b应该是 (    )。
选项:
A:0x0000
B:0xff00
C:0x00ff
D:0xffff
答案:

7、单选题:

运行下列程序,输出结果为(    )。

#include <stdio.h>

int main()

{  printf(“%dn”,12>>2);

return 0;

}

选项:
A:4
B:3
C:1
D:0
答案:

8、单选题:
若有short int a=0x5566; 则执行a= a&0x00ff 后,a的值是(    )
选项:
A:0x00ff
B:0x0066
C:0x5566
D:0x5500
答案:

9、单选题:
表达式5+3<<2的值为(    )。
选项:
A:16
B:32
C:17
D:11
答案:

10、单选题:
若有short int a=0x7700; ,则执行a=a^0x00ff后,a的值是(    )。
选项:
A:0x77ff
B:0x0000
C:0xffff
D:0x7700
答案:

第十四章 单元测试

1、单选题:
关于文件,下列理解不正确的是(   )。
选项:
A:C语言把文件看作是字节的序列,即由一个个字节数据顺序组成
B:系统自动在内存区为每一个正在使用的文件开辟一个缓冲区
C:所谓文件一般指存储在外部介质上数据的集合
D:每个打开的文件都和一个文件结构体变量相关联,程序通过该变量访问这个文件
答案:

2、单选题:
关于二进制文件和文本文件描述错误的是(   )。
选项:
A:二进制文件将数据按其在内存中的存储形式原样存放到文件中
B:文本文件存放时每一个字符对应一个字节的ASCII码
C:C语言处理文件时,并不区分类型,都看成是字符流,按字节处理
D:二进制文件比文本文件读写速度慢
答案:

3、单选题:
利用fopen(fname,mode)函数实现的操作不正确的是(   )。
选项:
A:文件顺利打开,则返回被打开文件的文件指针
B:若文件打开失败,则返回NULL
C:若找不到fname指定的相应文件,则按指定的名字建立一个
D:若找不到fname指定的相应文件,且mode规定按读方式打开文件,则产生错误
答案:

4、单选题:
若要用fopen函数打开一个新的二进制文件,该文件既能读也能写,则文件方式字符串应该是(   )。
选项:
A:“wb+”
B:”ab+”
C:“ab”
D:“rb+”
答案:

5、单选题:
关于fwrite(buffer,sizeof(Student),3,fp)函数,描述不正确的是(   )。
选项:
A:将由buffer指定的数据缓冲区内的3*sizeof(Student)个字节的数据写入指定的文件中
B:返回实际输出数据块的个数,若返回0,表示输出结束或发生错误
C:若由fp指定的文件不存在,则返回0
D:将3个学生的数据块按二进制形式写入文件
答案:

6、单选题:
关于fread(buffer,size,count,fp)函数,下列说法正确的是(   )。
选项:
A:返回值小于count,则说明发生了错误
B:从fp指向的文件中将size*count个字节的数据读到由buffer指出的数据区中
C:以二进制形式读取文件中的数据,返回值一定是count
D:从fp指向的文件中将count个字节的数据读到由buffer指出的数据区中
答案:

7、单选题:
如果需要打开一个已经存在的非空文件“memo.txt”并向其中添加内容,则下面正确的选项是(   )。
选项:
A:fp=fopen(“memo.txt”,r)
B:fp=fopen(“memo.txt”,w)
C:fp=fopen(“memo.txt”,a)
D:fp=fopen(“memo.txt”,w+)
答案:

8、单选题:
若fp是指向某文件的指针,且没有读到文件末尾,则函数feof(fp)的返回值是(   )。
选项:
A:EOF
B:NULL
C:0
D:-1
答案:

9、单选题:
若顺利执行了文件关闭操作,fclose函数的返回值是(   )。
选项:
A:-1
B:0
C:NULL
D:1
答案:

10、单选题:
以下可以作为fopen函数的第一个参数的正确格式是(   )。
选项:
A:”file1.txt”
B:file1.txt
C:”file1.txt,w”
D:file1.txt,w
答案:

11、单选题:
若fp是指向某文件的指针,文件操作结束后,关闭文件指针应使用下列(   )语句。
选项:
A:fclose(fp);
B:fp=fclose;
C:fp=fclose();
D:fclose;
答案:

12、单选题:
已有一个abc.txt文件,执行函数fopen(“abc.txt”,”w+”)的功能是(   )。
选项:
A:新建一个文本文件abc.txt,原文件不被删除,允许读写
B:新建一个文本文件abc.txt,原文件将被删除,允许读写
C:新建一个文本文件abc.txt,原文件将被删除,只允许读
D:新建一个文本文件abc.txt,原文件将被删除,只允许写
答案:

13、单选题:
fread(buf,64,2,fp)函数的功能是(   )。
选项:
A:从fp文件流中读出整数64,并存放在buf中
B:从fp文件流中读出整数64和2,并存放在buf中

C:从fp文件流中读出64个字节的数据,并存在在buf中
D:从fp文件流中读出2个64字节的数据,并存放在buf中
答案:

14、单选题:

以下程序的功能是(   )。

#include <stdio.h>

int main(void)

{  FILE *fp; char str[]=”hello”;

fp=fopen(“prn.txt”,”w”);

fprintf(fp,”%s”,str);

fclose(fp);

return 0;

}

选项:
A:将字符串hello打印出来
B:将字符串hello输出到显示器上
C:将字符串hello写入文件prn.txt中
D:其余选项都不对
答案:

15、单选题:

下面的程序用变量count统计文件中小写字母的个数。

#include <stdio.h>

#include <stdlib.h>

int main(void)

{  FILE *fp; char a;

int count=0;

if((fp=fopen(“d:letter.txt”,【  】))==NULL)

{  printf(“can not open filen”);

exit(0);}

while(!feof(fp))

{    【     】

if(【      】) count++;

}

fclose(fp);

printf(“字符个数是:%dn”,count);

return 0;

}

【】中应依次填入(   )。

选项:
A:”r”    fscanf(fp,”%c”,a);       a>=’a’ and a<=’z’
B:”r”    fscanf(fp,”%c”,&a);       a>=’a’ and a<=’z’
C:”r”    fscanf(fp,”%c”,&a);       a>=’z’ and a<=’a’
D:”w”    fscanf(fp,”%c”,&a);       a>=’a’ and a<=’z’
答案:

0
觉得这篇文章对你有用的话,就打赏一下支持文章作者

评论0

请先

站点公告

开放大学课程作业代写,有需要扫码加微信

显示验证码

社交账号快速登录