精华内容
下载资源
问答
  • 1、C语言是一种( ) A:低级语言 B:高级语言 C:机器语言 D:汇编语言 正确答案:【高级语言】 2、下列各项中,不是C语言的特点是()。 A:能实现汇编语言的大部分功能 B:语言简洁、紧凑,使用方便 C:数据类型丰富,可移植...

    第一章 单元测试

    1、C语言是一种(  )

    A:低级语言
    B:高级语言
    C:机器语言
    D:汇编语言
    正确答案:【高级语言】

    2、下列各项中,不是C语言的特点是()。

    A:能实现汇编语言的大部分功能
    B:语言简洁、紧凑,使用方便
    C:数据类型丰富,可移植性好
    D:有较强的网络操作功能
    正确答案:【有较强的网络操作功能】

    3、下列叙述错误的是(  )。

    A:C程序中的变量必须先定义,后使用
    B:C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写
    C:C程序中的每条语句都用一个分号作为结束符
    D:C程序中的每条命令都用一个分号作为结束符
    正确答案:【C程序中的每条命令都用一个分号作为结束符】

    4、一个C程序的执行是从(  )。

    A:本程序文件的第一个函数开始,到本程序main函数结束
    B:本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
    C:本程序的main函数开始,到本程序文件的最后一个函数结束
    D:本程序的main函数开始,到main函数结束
    正确答案:【本程序的main函数开始,到main函数结束】

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

    A:在C程序中,注释说明只能位于一条语句的后面
    B:一个C源程序必须包含一个main函数
    C:一个C源程序可由一个或多个函数组成
    D:C程序的基本组成单位是函数
    正确答案:【在C程序中,注释说明只能位于一条语句的后面】

    第二章 单元测试

    1、已知定义整形变量a,b,c的值分别是2、3、4,运算表达式a*=16+(b++) - (++c)以后,a值为(  )

    A:29
    B:28
    C:31
    D:30
    正确答案:【28】

    2、在C语言中,要求参加运算的数必须是整数的运算符是(  )。

    A:%
    B: 

    C:! 
    D:++
    正确答案:【%】

    3、合法的c标识符是(  )。

    A:5dm
    B:$s
    C:h1
    D:a>b
    正确答案:【h1】

    4、执行下列程序后,显示的结果是( )        main ( )                                   { int a;                           printf (“%d ”,(a=3*5,a*4, a+5));}


    A:10
    B:15

    C:65
    D:20
    正确答案:【20】

    5、执行下列程序中的输出语句后,x的值是( )。main() {int x ; printf(“%d ”,(x=4*5,x*2,x+20));}


    A:80
    B:20
    C:40
    D:60
    正确答案:【20】

    6、判断:表达式1/4+2.75的值是3。

    A:对
    B:错
    正确答案:【错】

    7、下列转义字符不正确的是( )。

    A:’-’
    B:’+’
    C:’’
    D:'/'
    正确答案:【’’】

    8、对于int   n=3;执行n+=n-=n*n;后n的值是9。

    A:错
    B:对
    正确答案:【错】

    9、在C语言中8.9e1.2是不正确的实型常量。

    A:错
    B:对
    正确答案:【对】

    10、对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。

    A:错
    B:对
    正确答案:【对】

    11、若x为整型变量、j为实型变量,当执行语句:x=(int)j;后,j也变为整型变量。

    A:对
    B:错
    正确答案:【错】

    12、“!”的优先级可以比“/”高。

    A:对
    B:错
    正确答案:【对】

    13、两个char 型数据相加,其结果为char型。

    A:对
    B:错
    正确答案:【错】

    14、若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。

    A:对
    B:错
    正确答案:【错】

    15、在C程序中,%是只能用于整数运算的运算符。

    A:错
    B:对
    正确答案:【对】

    16、以下各数均不是合法的八进制数:256、03A2、-0127。

    A:对
    B:错
    正确答案:【错】

    17、C语言程序中,任何英语单词均可以作标识符。

    A:对
    B:错
    正确答案:【错】

    18、若有宏定义:#define  M(x,y,z)  x*y+z,则宏引用M(2+3,4+5,6+7)通过宏展开后的表达式应为(2+3)*(4+5)+6+7。

    A:错
    B:对
    正确答案:【错】

    19、C语言中不区分大小写英文字母。

    A:对
    B:错
    正确答案:【错】

    20、程序中的变量代表内存中的一个存储单元,它的值不可以随时修改。

    A:对
    B:错
    正确答案:【错】

    21、0x173是正确的十六进制常数。

    A:对
    B:错
    正确答案:【对】

    22、逻辑表达式-5&&!8的值为1。

    A:错
    B:对
    正确答案:【错】

    23、下面程序的输出是____

    #include<stdio.h>

    int main()

    { int k=11;

      printf("k=%d,k=%o,k=%x\n",k,k,k);

      return 1;

    }

    A:k=11,k=13,k=b
    B:k=11,k=13,k=13
    C:k=11,k=12,k=11
    D:k=11,k=013,k=0xb
    正确答案:【k=11,k=13,k=b】

    24、在下列选项中,不正确的赋值语句是____.

    A:a=b+c=1;
    B:++t;
    C:n1=(n2=(n3=0));
    D:k=i=j;
    正确答案:【a=b+c=1;】

    25、下面程序的输出的是_____.

    #include<stdio.h>

    void main()

    {int x=10,y=3;

     printf("%d\n",y=x/y);}

    A:1
    B:不确定的值
    C:3
    D:0
    正确答案:【3】

    26、已知字母A的ASCII码为十进制的65,下面程序的输出是_____.

    #include<stdio.h>

    void main()

    {char ch1,ch2;

     ch1='A'+'5'-'3';

     ch2='A'+'6'-'3';

     printf("%d,%c\n",ch1,ch2);}

    A:C,D
    B:67,D
    C:B,C
    D:不确定的值
    正确答案:【67,D】

    27、为表示关系x≥y≥z,应使用C语言表达式__.

    A:(x>=y)&&(y>=z)
    B:(x>=y) & (y>=z)
    C:(x>=y>=z)
    D:(x>=y)AND(y>=z)
    正确答案:【(x>=y)&&(y>=z)】

    28、下面程序的输出结果是____.

    #include<stdio.h>

    void  main()

    {

     int a=-1, b=4, k;

     k=(++a<=0)&&(b--<=0);

     printf("%d,%d,%d\n",k,a,b);}

    A:0,1,2
    B:0,0,3
    C:1,1,2
    D:1,0,3
    正确答案:【0,0,3】

    29、若有以下定义和语句:    int a=010, b=0x10, c=10;    printf("%d,%d,%d\n",a,b,c);则输出结果是____.

    A:8,8,10
    B:10,10,10
    C:8,16,10
    D:8,10,10
    正确答案:【8,16,10】

    30、已知有double型变量x=2.5,y=4.7,整型变量a=7,则表达式 x+a%3*(int)(x+y)%2/4 的值是____.

    A:2.75
    B:0
    C:2.4
    D:2.5
    正确答案:【2.5】

    31、假定w、x、y、z、m均为int型变量,有如下程序段:  w=1;x=2;y=3;z=4;   m=(w<x)?w:x;  m=(m<y)?m:y;  m=(m<z)?m:z;则该程序段执行后,m的值是____.假定w、x、y、z、m均为int型变量,有如下程序段:  w=1;x=2;y=3;z=4;   m=(w<x)?w:x;  m=(m<y)?m:y;  m=(m<z)?m:z;则该程序段执行后,m的值是____.

    A:1
    B:3
    C:4
    D:2
    正确答案:【1】

    32、有以下程序,其中k的初值为八进制数  #include <stdio.h>  main()  {int k=011;  printf("%d\n",k++);  }程序运行后的输出结果是____

    A:9
    B:11
    C:10
    D:12
    正确答案:【9】

    33、有以下程序  #include    #define SUB(a) (a)-(a)  main()  { int a=2,b=3,c=5,d;  d=SUB(a+b)*c;  printf("%d\n",d);  }  程序运行后的输出结果是____

    A:-20
    B:-12
    C:10
    D:0
    正确答案:【-20】

    34、有以下定义语句,编译时会出现编译错误的是____

    A:char a=’\x2d’
    B:char a=’a’;
    C:char a=’\n’;
    D:char a=’aa’;
    正确答案:【char a=’aa’;】

    35、以下选项中,不正确的 C 语言浮点型常量是____ 

    A:0.12
    B:160.
    C:0.0
    D:2e4.2
    正确答案:【2e4.2】

    36、以下选项中,____是不正确的 C 语言字符型常量。

    A:'a'
    B:'\101'
    C:'\x41'
    D:"a"
    正确答案:【"a"】

    37、以下合法的标识符是____。

    A:3ce
    B:_a12
    C:int
    D:stu#
    正确答案:【_a12】

    38、已知int  x=023,表达式++x的值是____。

    A:18
    B:19
    C:20
    D:17
    正确答案:【20】

    39、已知int  x=10,表达式x+=x-=x-x的值是____。

    A:40
    B:20
    C:10
    D:30
    正确答案:【20】

    40、在 C 语言中,字符型数据在计算机内存中,以字符的____形式存储。

    A:BCD码
    B:原码
    C:ASCII 码
    D:反码
    正确答案:【ASCII 码】

    41、若变量x、i、j和k都是int型变量,则计算下面表达式后,x的值是____。x=(i=4,j=16,k=32)

    A:16
    B:52
    C:32
    D:4
    正确答案:【32】

    42、下列不正确的转义字符是____。

    A:'074'
    B:'\0'
    C:'\\'
    D:'\' '
    正确答案:【'074'】

    43、

    A:3*a*e/b/c
    B:a*e/c/b*3
    C:3*a*e/b*c
    D:a/b/c*e*3
    正确答案:【3*a*e/b*c】

    44、要为字符型变量 a赋初值,下列语句中哪一个是正确的____。

    A:char a=%;
    B:char a="3";
    C:char a=‘3’;
    D:char a=*;
    正确答案:【char a=‘3’;】

    45、字符串"ABC"在内存占用的字节数是____。

    A:6
    B:4
    C:8
    D:3
    正确答案:【4】

    46、若有说明语句:char c='\72';则变量c在内存占用的字节数是____。

    A:4
    B:2
    C:3
    D:1
    正确答案:【1】

    47、C语言中,要求运算对象只能为整数的运算符是____。

    A:*
    B:%
    C:>
    D:/
    正确答案:【%】

    48、若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是____。

    A:2.5
    B:2
    C:2.0
    D:1
    正确答案:【2.0】

    49、sizeof (double)的结果值是____。

    A:2
    B:4
    C:8
    D:出错
    正确答案:【8】

    50、以下用户标识符中,合法的是____。

    A:int
    B:123
    C:a+b
    D:nit
    正确答案:【nit】

    51、表达式18/4*sqrt(4.0)/8值的数据类型是____。

    A:不确定
    B:float
    C:double
    D:int
    正确答案:【double】

    第三章 单元测试

    1、以下选项中不是C语句的是(  )

    A:; 
    B:k=i=j; 
    C:{a/=b=1;b=a%2;}
    D:++t 
    正确答案:【++t 】

    2、以下语句的输出结果是 (   )  printf("%d ",strlen(" "65xff "));

    A:14
    B:输出项不合法,无法正常输出
    C:8
    D:5
    正确答案:【5】

    3、若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是(   )

    A:10.0,22.0,33.0<回车>
    B:10<回车>22<回车>33<回车>
    C:10.0<回车>22.0  33.0<回车>
    D:10   22<回车>33<回车>
    正确答案:【10.0,22.0,33.0<回车>】

    4、调用getchar和putchar函数时,必须包含的头文件是(   )。

    A:define
    B:stdlib.h 
    C:stdio.h 
    D:以上都不对
    正确答案:【stdio.h 】

    5、使用scanf("a=%d,b=%d",&a,&b)为变量a,b赋值。要使a,b均为50,正确的输入是(   )

    A:a=50,b=50
    B:50  50 
    C:50,50
    D:a=50  b=50
    正确答案:【a=50,b=50】

    6、“putchar(70); ” 这一C语句输出的结果为( )

    A:提示语法错误
    B:F
    C:C 
    D:70
    正确答案:【F】

    7、C 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。

    A:对
    B:错
    正确答案:【对】

    8、表达式语句和表达式没有什么区别。

    A:错
    B:对
    正确答案:【错】

    9、C 语言标准输入操作中 ,gets() 函数一次只可读取一个字符。

    A:错
    B:对
    正确答案:【错】

    10、C 语言程序中可以有多个函数 , 但只能有一个主函数。

    A:错
    B:对
    正确答案:【对】

    11、C 语言标准输出操作中 ,putchar() 函数可以输出显示一个字符串。

    A:错
    B:对
    正确答案:【错】

    12、C 语言标准格式输出函数 printf() 的参数表是由若干个表达式组成。

    A:对
    B:错
    正确答案:【对】

    13、以下叙述中正确的是

    A:用C程序实现的算法可以没有输出但必须要有输入
    B:用C程序实现的算法必须要有输入和输出操作
    C:用C程序实现的算法可以没有输入但必须要有输出
    D:用C程序实现的算法可以既没有输入也没有输出
    正确答案:【用C程序实现的算法可以没有输入但必须要有输出】

    14、在C语言中,执行下面两个语句后,输出的结果为(    )。 char c1=97, c2=98;printf("%d %c",c1,c2);

    A:a  b
    B:97  b
    C:97  98
    D:a  98
    正确答案:【97  b】

    15、下列语句中符合C语言语法的赋值语句是

    A:a=7+b,b++,a+7
    B:a=7+b++=a+7;
    C:a=7+b,c=a+7;
    D:a=7+b+c=a+7;
    正确答案:【a=7+b,c=a+7;】

    16、在C语言语言中,退格符是 (     )

    A:\t
    B:\f
    C:\n
    D:\b
    正确答案:【\b】

    17、putchar()函数可以向终端输出一个

    A:字符或字符型变量值
    B:实型变量值
    C:整型变量表达式值
    D:字符串
    正确答案:【字符或字符型变量值】

    18、以下选项中不是C语句的是(  )。

    A:k=i=j;
    B:;
    C:{a/=b=1;b=a%2;}
    D:++t
    正确答案:【++t】

    19、有定义语句:int a=5,b,不能给b赋2的赋值语句是(   )。

    A:b=2%a;
    B:b=a/2;
    C:b=5;b=2;
    D:b=b+2;
    正确答案:【b=b+2;】

    20、已有定义int a=-2;和输出语句printf("%8lx",a);以下正确的叙述是(   )。

    A:%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
    B:%x是格式符的一种,它可以适用于任何一种类型的数据
    C:整型变量的输出形式只有%d一种
    D:%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
    正确答案:【%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的】

    21、以下语句的输出结果是 (   )。

      printf("%d\n",strlen("\t\"\065\xff\n"));

    A:输出项不合法,无法正常输出
    B:8
    C:14
    D:5
    正确答案:【5】

    22、若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是(   )。

    A:10.0<回车>22.0  33.0<回车>
    B:10<回车>22<回车>33<回车>
    C:10.0,22.0,33.0<回车>
    D:10   22<回车>33<回车>
    正确答案:【10.0,22.0,33.0<回车>】

    23、使用scanf("a=%d,b=%d",&a,&b)为变量a,b赋值。要使a,b均为50,正确的输入是(   )。

    A:50  50
    B:a=50,b=50
    C:a=50  b=50
    D:50,50
    正确答案:【a=50,b=50】

    24、调用getchar和putchar函数时,必须包含的头文件是(   )。

    A:define
    B:以上都不对
    C:stdio.h
    D:stdlib.h
    正确答案:【stdio.h】

    25、以下叙述中不正确的是( )。

    A:使用putchar函数时,必须在之前包含头文件stdio.h
    B:使用putchar函数可以不要输出项
    C:在C语言中,整数可以以十进制、八进制或十六进制的形式输出
    D:调用printf函数时,必须要有输出项
    正确答案:【调用printf函数时,必须要有输出项】

    26、putchar()函数可以向终端输出一个(   )。

    A:字符串
    B:实型变量值
    C:字符或字符型变量
    D:整型变量表达式值
    正确答案:【字符或字符型变量】

    27、用getchar()函数可以从键盘读入一个(   )。

    A:字符串
    B:实型变量值
    C:整型变量表达式值
    D:字符或字符型变量
    正确答案:【字符或字符型变量】

    第四章 单元测试

    1、若要求在if后的圆括号中表示a不等于0的关系,能正确表示这一关系的表达式是( )。

    A:a<>0
    B:a=0
    C:!a
    D:a
    正确答案:【!a】

    2、以下程序段,运行后的输出结果是( )char m='b'; if(m++>'b')  printf("%c ",m); else printf("%c ",m--); 


    A:a
    B:c
    C:d
    D:b
    正确答案:【c】

    3、设a=1,b=2,c=3,d=4,则表达式a<b?b:c<d?a:b的结果为( )。

    A:3
    B:1
    C:2

    D:4
    正确答案:【2

    4、下列叙述中正确的是(  )。

    A:break语句必须与switch语句中的case配对使用
    B:break语句只能用于switch语句
    C:在switch语句中,不一定使用break语句
    D:在switch语句中必须使用default
    正确答案:【在switch语句中,不一定使用break语句】

    5、以下程序段的输出结果是( )。 int a=13,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf("%d",m); 


    A:3
    B:1
    C:2
    D:4
    正确答案:【3】

    6、逻辑表达式的值只能为1或0。

    A:错
    B:对
    正确答案:【对】

    7、在switch语句中,每一个的case常量表达式的值可以相同。

    A:对
    B:错
    正确答案:【错】

    8、在switch语句中,多个case可以共用一组执行语句。

    A:错
    B:对
    正确答案:【对】

    9、下列关于运算符优先顺序的描述中正确的是(  )。

    A:赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符
    B:逻辑运算符< 关系运算符< 算术运算符< 赋值运算符
    C:关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符
    D:算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符
    正确答案:【赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符】

    10、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是( )。

    A:(x>=1)||(x<=10)&&(x>=200)||(x<=210)
    B:(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
    C:(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
    D:(x>=1)||(x<=10)||(x>=200)||(x<=210)
    正确答案:【(x>=1)&&(x<=10)||(x>=200)&&(x<=210)】

    11、在C语言中,设有如下定义:   int  a=1,b=2,c=3,d=4,m=2,n=2;  则执行表达式:(m=a>b)&&(n=c>d)后,n的值为(   )。

    A:3
    B:2
    C:0
    D:1
    正确答案:【2】

    12、设有如下定义: int  a=2,b; 则执行b=a&&1;语句后,b的结果是(   )。

    A:3
    B:1
    C:0
    D:2
    正确答案:【1】

    13、设a=3,b=4,c=5,则表达式 !(a>b)&&!c||1的结果是(   )。

    A:4
    B:1
    C:0
    D:2
    正确答案:【1】

    14、能正确表示a 和 b同时为正或同时为负的逻辑表达式是(   )。

    A:(a+b>0)&&(a+b<=0)
    B:(a>=0&&b>=0)&&(a<0&&b<0)
    C:(a>=0||b>=0)&&(a<0||b<0)
    D:a*b>0
    正确答案:【a*b>0】

    15、以下程序段的输出结果是(   )。 
    int a=10,b=50,c=30;
    if(a>b)
    a=b;
    b=c;
    c=a;
    printf("a=%d b=%d c=%d\n",a,b,c);

    A:a=50 b=30 c=50
    B:a=10 b=30 c=10
    C:a=10 b=50 c=10
    D:a=50 b=30 c=10
    正确答案:【a=10 b=30 c=10】

    16、有如下程序 
    int main( ) 
    { float x=2.0,y; 
      if(x<0) y=0.0; 
      else if(x<10.0) y=1.0/x; 
      else y=1.0; 
      printf(“%f\n”,y);   return 0;

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

    A:0.250000
    B:1.000000
    C:0.000000
    D:0.500000
    正确答案:【0.500000】

    17、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( )。

    A:a=0
    B:!a
    C:a<>0
    D:a
    正确答案:【a】

    18、有如下程序段:
    int x =1, y=1 ;
    int m , n;
    m=n=1;
    switch (m)
    { case 0 : x=x*2;
      case 1:  {
      switch (n)
    { case 1 : x=x*2;
     case 2 : y=y*2;break;
     case 3 : x++;
    }
      }
    case 2 : x++;y++;
    case 3 : x*=2;y*=2;break;
    default:x++;y++;
    }
    执行完成后,x和y 的值分别为( )。

    A:x=7 y=7
    B:x=2 y=1
    C:x=6 y=6
    D:x=2 y=2
    正确答案:【x=6 y=6】

    19、以下程序的输出结果是( )
    int main()
    { int 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;
     printf(“x=%d”,x); return 0;
    }

    A:6
    B:3
    C:1
    D:2
    正确答案:【2】

    20、在C语言中,设x=1, y=2, 执行表达式 (x>y)?x++:++y以后x和y的值分别为(  )。

    A:1和3
    B:1和2
    C:2和3
    D:2和2
    正确答案:【1和3】

    21、以下程序段,运行后的输出结果是( )。 char m='b'; if(m++>'b')  printf("%c\n",m); else printf("%c\n",m--);

    A:b
    B:d
    C:c
    D:a
    正确答案:【c】

    22、以下程序段的输出结果是( )。 int a=13,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++;case 0:m++;break; } } printf("%d",m);

    A:2
    B:1
    C:4
    D:3
    正确答案:【3】

    第五章 单元测试

    1、若i为整型变量,则以下循环执行的次数是( )。(单选)for(i=0;i<=5;i++)  printf("%d",i++);


    A:3次
    B:2次

    C:5次
    D:6次
    正确答案:【3次】

    2、下面的程序对输入的每一个数字出现的次数进行计数,下划线处应填入的正确语句为( )。#include "stdio.h"main(){int i,ch, n[10];  for(i=0;i<10;++i) n[i]=0;   while((ch=getchar())!=‘ ’)   if(ch>=‘0’ && ch<=‘9’)   ____;   for(i=0;i<10;++i)   printf("数字%d出现的次数是:%d ",i,n[i]);}


    A:n[i]++
    B:n[ch-‘0’]++
    C:i++
    D:n[ch]++
    正确答案:【n[ch-‘0’]++】

    3、下列程序段的输出结果是( )。int x=3;  do {printf(“%3d”,x-=2);}   while(!(--x));


    A:0
    B:死循环
    C:1

    D:-2
    正确答案:【-2】

    4、若x是int型变量,且有下面的程序片段: for(x=5;x<8;x++)  printf((x/2)?(“**%d”):(“##%d”),x);该程序片段的输出结果是( )。


    A:**5##6**7
    B:**5##6**7##8
    C:**5**6**7 
    D:##5**6##7**8
    正确答案:【**5**6**7 】

    5、C 语言中(    )。

    A:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
    B:不能使用do-while语句构成的循环 
    C:do-while语句构成的循环必须用break语句才能退出
    D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环
    正确答案:【do-while语句构成的循环,当while语句中的表达式值为零时结束循环】

    6、break语句只能用于循环语句中。

    A:对
    B:错
    正确答案:【错】

    7、continue语句可以用于switch结构中。

    A:对
    B:错
    正确答案:【错】

    8、在C语言中,为了结束由do-while语句构成的循环, while后一对圆括号中表达式的值应该能够为0

    A:错
    B:对
    正确答案:【对】

    9、三种循环(while语句、 for语句、 do-while语句)都可以用来处理同一个问题,一般它们可以相互代替。

    A:对
    B:错
    正确答案:【对】

    10、for(i=0,k=-1;k=1;k++,i++)printf("*\n"); 循环体一次也不执行。

    A:对
    B:错
    正确答案:【错】

    11、for(i=4;i>1;i--)for(j=1;j<i;j++)putchar('#');输出为######。

    A:对
    B:错
    正确答案:【对】

    12、对下面程序段描述正确的是___.

      int x=0,s=0;

       while (!x!=0) s+=++x;   printf("%d",s);

    A:程序段中的控制表达式是非法的
    B:程序段循环无数次
    C:运行程序段后输出1
    D:运行程序段后输出0
    正确答案:【运行程序段后输出1】

    13、下面程序段的输出结果是___.

      x=3;

       do { y=x--;

            if (!y) {printf("*");continue;}

            printf("#");

          } while(x=2);

    A:输出错误信息
    B:##
    C:死循环
    D:##*
    正确答案:【死循环】

    14、下面程序的输出结果是____.

     #include<stdio.h>

     void  main( )

      { int n=4;

        while (n--) printf("%d ",n--);  }

    A:2 0
    B:2 1 0
    C:3 2 1
    D:3 1
    正确答案:【3 1】

    15、以下程序运行后的输出结果是____.

     #include<stdio.h>

     void main()

      { int i=10,j=0;

        do

        { j=j+1;  i--;

        }while(i>2);

        printf("%d\n",j);  }

    A:51
    B:8
    C:50
    D:52
    正确答案:【8】

    16、下面程序的输出结果是____.

      main( )

      {

        int i,k=0, a=0, b=0;

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

    {

     k++;

          if (k%2==0) {a=a+k; continue;}

          b=b+k;

          a=a+k;

        }

        printf("k=%d a=%d b=%d\n",k,a,b);  }

    A:k=4 a=10 b=3
    B:k=5 a=10 b=4
    C:k=3 a=6 b=4
    D:k=4 a=10 b=4
    正确答案:【k=4 a=10 b=4】

    17、下面程序的输出结果是____.

      #include<stdio.h>

      void main( )

      {int y=9;

       for(;y>0;y--)

        {if(y%3==0)

          {printf("%d",--y);

            continue;}

         }  }

    A:963
    B:852
    C:875421
    D:741
    正确答案:【852】

    18、有以下程序#include<stdio.h>main(){int i,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--)  {if(i*j>3) break;   m=i*j;  }}printf("m=%d\n",m);}程序运行后的输出结果是____.

    A:m=4
    B:m=1
    C:m=5
    D:m=2
    正确答案:【m=1】

    19、有以下程序

     #include <stdio.h>

     main()

     { int c=0,k;

       for (k=1;k<3;k++)

       switch (k)

       { default: c+=k;

     case 2: c++;break;

     case 4: c+=2;break;

       }

       printf(“%d\n”,c);

     }

     程序运行后的输出结果是____

    A:3
    B:5
    C:7
    D:9
    正确答案:【3】

    20、for(i=1;i<9;i+=1);该循环共执行了____次。

    A:9
    B:8
    C:7
    D:10
    正确答案:【8】

    21、int a=2;while(a=0) a--;该循环共执行了____次。

    A:3
    B:0
    C:2
    D:1
    正确答案:【0】

    22、执行完循环 for(i=1;i<100;i++);后,i 的值为____。

    A:101
    B:100
    C:99
    D:102
    正确答案:【100】

    23、以下 for语句中,书写错误的是____。

    A:for(i=1;i<5;i++);
    B:for(i=1;i<5;) i++;
    C:i=1;for(;i<5;i++);
    D:for(i=1;i<5;i++)
    正确答案:【for(i=1;i<5;i++)】

    24、 ____语句,在循环条件初次判断为假,还会执行一次循环体。

    A:以上都不是
    B:while
    C:for
    D:do-while
    正确答案:【do-while】

    25、有以下程序段,其运行结果是____int i=5;do{if(i%3==1)if(i%5==2){printf("*%d",i);break;}i++;}while(i!=0);

    A:*7
    B:*3*5
    C:*2*6
    D:*5
    正确答案:【*7】

    26、i、j已定义为 int 类型,则以下程序段中内循环体的执行次数是____。 for(i=5;i;i--)  for(j=0;j<4;j++){…}

    A:24
    B:30
    C:20
    D:25
    正确答案:【20】

    27、以下不构成无限循环的语句或语句组是____。

    A:n=0;  do{++n;}while(n<=0);
    B:n=0;  while(1){n++;}
    C:n=10;  while(n);{n--;}
    D:for(n=0,i=1;;i++)n+=i;
    正确答案:【n=10;  while(n);{n--;}】

    28、有以下程序段,其运行结果是____。Int  y=9;for(;y>0;y--)if(y%3==0)  printf("%d",--y);

    A:852
    B:963
    C:875421
    D:741
    正确答案:【852】

    29、有以下程序段,其运行结果是____。int i,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}

    A:2  3

    3  4

    4  5

    B:4  5

    3  4

    2  3

    C:4  3  2

    5  4  3

    D:2  3  4

    3  4  5

    正确答案:【4  5

    3  4

    2  3

    第六章 单元测试

    1、以下不能对一维数组a进行正确初始化的语句是()

    A:int a[] = {0};
    B:int a[10]={10*1} ;
    C:int a[10]={0,0,0,0,0};
    D:int a[10]={};
    正确答案:【int a[10]={};】

    2、在C语言中,引用数组元素时,其数组下标的数据类型允许是( )

    A:任何类型的表达式
    B:整型表达式
    C:整型常量或整型表达式
    D:整型常量
    正确答案:【整型常量或整型表达式】

    3、对以下说明语句,理解正确的是(  )。    int a[10]={6,7,8,9,10};


    A:因为数组长度与初值的个数不相同,所以此语句不正确
    B:将5个初值依次赋给a[6]到a[10]
    C:将5个初值依次赋给a[0]到a[4]
    D:将5个初值依次赋给a[1]到a[5]
    正确答案:【将5个初值依次赋给a[0]到a[4]】

    4、若有以下语句,则正确的描述是()。   char a[]="toyou";   char b[]={'t','o','y','o','u'};


    A:a数组长度小于b数组长度
    B:a数组等价于b数组
    C:a数组长度大于b数组长度
    D:a数组和b数组的长度相同
    正确答案:【a数组长度大于b数组长度】

    5、若有说明int a[3][4];则a数组元素的非法引用是( )

    A:a[0][2*1]
    B:a[1][3]
    C:a[4-2][0]
    D:a[0][4]
    正确答案:【a[0][4]】

    6、以下能对二维数组a进行正确初始化的语句是(  )。

    A:int a[][3]={{1,0,1},{},{1,1}} ;
    B:int a[2][4]={{1,2,3},{4,5},{6}} ;
    C:int a[2][]={{1,0,1},{5,2,3}} ;
    D:int a[][3]={{1,2,3},{4,5,6}} ;
    正确答案:【int a[][3]={{1,2,3},{4,5,6}} ;】

    7、下面叙述正确的是(   )

    A:字符串”STOP ”与”STOP”相等
    B:字符个数多的字符串比字符个数少的字符串大
    C:字符串”That”小于字符串”The”
    D:两个字符串所包含的字符个数相同时,才能比较字符串
    正确答案:【字符串”That”小于字符串”The”】

    8、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。

    A:错
    B:对
    正确答案:【对】

    9、在对数组全部元素赋初值时,可以省略行数,但不能省略列数

    A:对
    B:错
    正确答案:【对】

    10、数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。

    A:错
    B:对
    正确答案:【对】

    11、C 语言中 , 字符串常量存放在字符数组中要有一个结束符 , 该结束符是0 。

    A:错
    B:对
    正确答案:【错】

    12、C语言允许用字符串的方式对数组作初始化赋值。

    A:对
    B:错
    正确答案:【对】

    13、在对数组全部元素赋初值时,不可以省略行数,但能省略列数

    A:错
    B:对
    正确答案:【错】

    14、对二维数组的正确说明是

    A:int a[][3]={1,2,3,4,5,6};
    B:int a[2][]={1,2,3,4,5,6};
    C:int a[2,3]={1,2,3,4,5,6};
    D:int a[][]={1,2,3,4,5,6};
    正确答案:【int a[][3]={1,2,3,4,5,6};】

    15、以下关于数组的描述正确的是

    A:数组的大小是可变的,但可以有不同的类型的数组元素;
    B:数组的大小是固定的,但所有数组元素的类型必须相同;
    C:数组的大小是固定的,但可以有不同的类型的数组元素;
    D:数组的大小是可变的,但所有数组元素的类型必须相同;
    正确答案:【数组的大小是固定的,但所有数组元素的类型必须相同;】

    16、在定义int a[10];之后,对a的引用正确的是

    A:a[9] 
    B:a[10]
    C:a(6)
    D:a[6.3]
    正确答案:【a[9] 】

    17、以下对一维数组a进行不正确初始化的是

    A:int a[10]=(0,0,0,0);
    B:int a[10]={10*2};
    C:int a[10]={};
    D:int a[]={0}; 
    正确答案:【int a[10]=(0,0,0,0);】

    18、以下不能对一维数组a进行正确初始化的语句是()。

    A:int a[10]={10*1} ;
    B:int a[] = {0};
    C:int a[10]={0,0,0,0,0};
    D:int a[10]={};
    正确答案:【int a[] = {0};】

    19、在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。

    A:整型表达式
    B:任何类型的表达式
    C:整型常量或整型表达式
    D:整型常量
    正确答案:【整型常量或整型表达式】

    20、对以下说明语句,理解正确的是(  )。    int a[10]={6,7,8,9,10};

    A:将5个初值依次赋给a[6]到a[10]
    B:将5个初值依次赋给a[1]到a[5]
    C:因为数组长度与初值的个数不相同,所以此语句不正确
    D:将5个初值依次赋给a[0]到a[4]
    正确答案:【将5个初值依次赋给a[0]到a[4]】

    21、若有说明:int a[][4]={0,0};则下面不正确的叙述是(  )。

    A:当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
    B:数组a的每个元素都可得到初值0
    C:二维数组a的第一维大小为1
    D:只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
    正确答案:【数组a的每个元素都可得到初值0】

    22、若有说明int a[3][4];则a数组元素的非法引用是( )。

    A:a[0][2*1]
    B:a[0][4]
    C:a[1][3]
    D:a[4-2][0]
    正确答案:【a[0][4]】

    23、以下能对二维数组a进行正确初始化的语句是(  )。

    A:int a[][3]={{1,0,1},{},{1,1}} ;
    B:int a[2][4]={{1,2,3},{4,5},{6}} ;
    C:int a[][3]={{1,2,3},{4,5,6}} ;
    D:int a[2][]={{1,0,1},{5,2,3}} ;
    正确答案:【int a[][3]={{1,2,3},{4,5,6}} ;】

    24、设有数组定义:char arr[]="China";则数组arr所占空间为( )。

    A:7个字节
    B:6个字节
    C:4个字节
    D:5个字节
    正确答案:【6个字节】

    25、若有以下语句,则正确的描述是()。

       char a[]="toyou";   char b[]={'t','o','y','o','u'};

    A:a数组长度大于b数组长度
    B:a数组长度小于b数组长度
    C:a数组和b数组的长度相同
    D:a数组等价于b数组
    正确答案:【a数组长度大于b数组长度】

    26、下面叙述正确的是(   )。

    A:两个字符串所包含的字符个数相同时,才能比较字符串
    B:字符串”STOP ”与”STOP”相等
    C:字符个数多的字符串比字符个数少的字符串大
    D:字符串”That”小于字符串”The”
    正确答案:【字符串”That”小于字符串”The”】

    27、在定义int a[5][4];之后,对数组元素的引用正确的是

    A:a[5][0]
    B:a[2][4]
    C:a[0][0]
    D:a[0,0]
    正确答案:【a[0][0]】

    28、在执行int a[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是

    A:4
    B:5
    C:1
    D:2
    正确答案:【4】

    29、在定义int a[3][4][2];后,第10个元素是( )

    A:a[1][0][1]
    B:a[2][2][1]
    C:a[2][1][2]
    D:a[2][0][1]
    正确答案:【a[1][0][1]】

    30、在C语言中,引用数组元素时,其数组下标的数据类型允许是

    A:整型常量
    B:整型表达式或整型常量
    C:任何类型 的表达式
    D:实型常量
    正确答案:【整型表达式或整型常量】

    31、有字符数组a[80],b[80],则正确的输出语句是

    A:printf(“%s,%s”,a[],b[]);
    B:puts(a);puts(b);
    C:puts(a,b);
    D:putchar(a,b);
    正确答案:【puts(a);puts(b);】

    32、以下不能正确进行字符串赋初值的语句是

    A:char str[]="good!";
    B:char str[5]="good!";
    C:char *str="good!";
    D:char str[5]={''g'',''o'',''o'',''d''};
    正确答案:【char str[5]="good!";】

    33、已有定义:char a[]="xyz",b[]={''x'',''y'',''z''};,以下叙述中正确的是 ( )。

    A:a数组长度小于b数组长度
    B:上述说法都不对
    C:a数组长度大于b数组长度
    D:数组a和b的长度相同
    正确答案:【a数组长度大于b数组长度】

    34、在C语言中,能实现字符串连接的函数是(   )

    A:strcmp()
    B:strcat()
    C:strcpy() 
    D:strlen()
    正确答案:【strcat()】

    35、在C语言中,有:char str[]="abcd"; printf(%d\n",strlen(str)); 上面程序片段的输出结果是(   )

    A:3
    B:12
    C:4
    D:6
    正确答案:【4】

    36、在C语言中,不能把字符串 "Hello!" 赋给数组b的语句是(   )。

    A:char b[10];strcpy(b,"Hello!");
    B:char b[10]="Hello!";
    C:char b[10];b="Hello!";
    D:char b[10]={''H'',''e'',''l'',''l'',''o'',''!''};
    正确答案:【char b[10];b="Hello!";】

    37、函数调用:strcat(strcpy(str1,str2),str3)的功能是

    A:将串str1复制到串str2中后再连接到串str3之后
    B:将串str2复制到串str1中后再将串str3连接到串str1之后
    C:将串str2连接到串str1之后再将串str1复制到串str3中
    D:将串str1连接到串str2之后再复制到串str3之后
    正确答案:【将串str2复制到串str1中后再将串str3连接到串str1之后】

    38、不能把字符串:Hello!赋给数组b的语句是

    A:char b[10]="Hello!";
    B:char b[10];b="Hello!";
    C:char b[10];strcpy(b,"Hello!");
    D:char b[10]={'H','e','l','l','o','!',0};
    正确答案:【char b[10];b="Hello!";】

    第七章 单元测试

    1、以下叙述中正确的是()

    A:在C语言的函数内部,可以定义局部嵌套函数
    B:实用的C语言源程序总是由一个或多个函数组成
    C:用户自己定义的函数只能调用库函数
    D:不同函数的形式参数不能使用相同名称的标识符
    正确答案:【实用的C语言源程序总是由一个或多个函数组成】

    2、以下程序的输出结果是( )。 #include   <stdio.h> void  funA (int  n)  { n++; } int main() {  int  a=1 ;    funA (a) ;    printf( "%d  ", a );    funA (a) ;    printf( "%d ", a );    return 0; }


    A:2  2
    B:2  1
    C:1  1
    D:1  2
    正确答案:【1  1】

    3、以下程序的输出结果是( )。#include "stdio.h"int f(int x){      int y;    if (x == 0 || x== 1)  return (3);    y = x*x - f(x-2);    return  y;}
    int main(){    int z;    z = f(3);     printf("%d ", z); return 0;}


    A:9
    B:6
    C:0
    D:8
    正确答案:【6】

    4、以下程序的输出结果是( )。#include <stdio.h>int fun(int  x){     int  p;    if(x==0||x==1)          return(3);    p=x-fun(x-2);    return p;}
    int main( ){      printf("%d ",fun(7));     return 0;}


    A:2
    B:3
    C:0
    D:7
    正确答案:【2】

    5、以下程序的输出结果是( )。#include <stdio.h>int fun(int a,int b){    static int m=0, i=2;   i +=m+1;      m = i + a + b;   return  m;}
    int main( ){     int  k=4, m=1, p;   p = fun( k,m );      printf("%d,", p);   p = fun( k,m );      printf("%d " ,p );   return 0;}


    A:8,17
    B:8,16
    C:8,20
    D:8,8
    正确答案:【8,17】

    6、函数的实参传递到形参有两种方式值传递和地址传递。

    A:对
    B:错
    正确答案:【对】

    7、如果函数定义出现在函数调用之前,可以不必加函数声明。

    A:错
    B:对
    正确答案:【对】

    8、函数的实参可以是常量,变量或表达式。

    A:错
    B:对
    正确答案:【对】

    9、以下叙述中正确的是()。

    A:不同函数的形式参数不能使用相同名称的标识符
    B:在C语言的函数内部,可以定义局部嵌套函数
    C:C语言源程序总是由一个或多个函数组成
    D:用户自己定义的函数只能调用库函数
    正确答案:【C语言源程序总是由一个或多个函数组成】

    10、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(   )。

    A:函数调用可以作为一个函数的实参
    B:函数调用可以作为独立的语句存在
    C:函数调用可以作为一个函数的形参
    D:函数调用可以出现在表达式中
    正确答案:【函数调用可以作为一个函数的形参】

    11、以下程序的输出结果是( )。 #include   <stdio.h> void  funA (int  n)  { n++; } int main() {  int  a=1 ;    funA (a) ;    printf( "%d  ", a );    funA (a) ;    printf( "%d\n", a );    return 0; }

    A:2  1
    B:1  2
    C:2  2
    D:1  1
    正确答案:【1  1】

    12、问题:

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

    #include   <stdio.h>

    int new_div(double  a, double  b)

    {    return a/b + 0.5;   }

    int main( )

    {   printf("%d", new_div(7.8, 3.1));  

    return 0; }

    A:1
    B:2
    C:3
    D:0
    正确答案:【3】

    13、在一个C语言程序中,下列说法正确的是(   )。

    A:main函数必须出现在所有函数之前
    B:main函数必须出现在所有函数之后
    C:main函数可以出现在其它函数之外的任何位置
    D:main函数必须出在固定位置
    正确答案:【main函数可以出现在其它函数之外的任何位置】

    14、以下叙述中正确的是(   )。

    A:调用函数时,函数名必须与被调用的函数名完全一致
    B:函数调用时,不必区分函数名称的大小写
    C:在函数体中只能出现一次return语句
    D:函数名允许用数字开头
    正确答案:【调用函数时,函数名必须与被调用的函数名完全一致】

    15、以下程序的输出结果是( )。#include "stdio.h"int f(int x){      int y;    if (x == 0 || x== 1)  return (3);    y = x*x - f(x-2);    return  y;} int main(){    int z;    z = f(3);     printf("%d\n", z); return 0;}

    A:9
    B:6
    C:8
    D:0
    正确答案:【6】

    16、有以下程序    #include <stdio.h>    int main()    {  int findmax(int,int,int),m;            ┋       m=findmax(a,b,c);            ┋    }    int findmax(int x,int y,int z)    {       …          }则以下叙述正确的是( )。

    A:在main函数中两次调用了findmax函数
    B:在main函数中声明了findmax函数
    C:在main函数内、外重复定义了findmax函数
    D:在main函数中定义了findmax函数
    正确答案:【在main函数中声明了findmax函数】

    17、设有函数定义:void sub(int k,char ch){ … } 则以下对函数sub的调用语句中,正确的是( )。

    A:sub(4,"a");
    B:sub(2,'97');
    C:sub(1,97);
    D:n=sub(3,'a');
    正确答案:【sub(1,97);】

    18、下列叙述中错误的是( )。

    A:在其它函数中定义的变量在主函数中也不能使用。
    B:主函数中定义的变量在整个程序中都是有效的。
    C:形式参数也是局部变量。
    D:复合语句中定义的变量只在该复合语句中有效。
    正确答案:【主函数中定义的变量在整个程序中都是有效的。】

    19、凡是函数中未指定存储类别的局部变量,其隐含的存储类型是( )。

    A:外部(extern)
    B:自动(auto)
    C:寄存器(register)
    D:静态(static)
    正确答案:【自动(auto)】

    20、下面程序的输出结果是( )。
    #include <stdio.h>
    int main( )
    { int x=10;
    { int x=20;
      printf ("%d,", x);
    }
    printf("%d\n", x);return 0;
    }

    A:10,20
    B:20,10
    C:10,10
    D:20,20
    正确答案:【20,10】

    21、以下程序的输出结果是( )。#include <stdio.h>int fun(int a,int b){    static int m=0, i=2;   i +=m+1;      m = i + a + b;   return  m;} int main( ){     int  k=4, m=1, p;   p = fun( k,m );      printf("%d,", p);   p = fun( k,m );      printf("%d\n" ,p );   return 0;}

    A:8,20
    B:8,17
    C:8,16
    D:8,8
    正确答案:【8,17】

    22、下面程序的输出结果是( )。
    int main()
    { int a=2,i;
      for(i=0;i<3;i++)
      printf("%4d",f(a));  return 0;
    }
    f(int a)
    { int b=0;
      static int c=3;
      b++;
      c++;
      return(a+b+c);
    }

    A:7 8 9
    B:7 7 7
    C:7 9 11
    D:7 10 13
    正确答案:【7 8 9】

    23、函数返回值的类型是由(   )决定的。

    A:return语句的表达式类型
    B:调用该函数的主调函数类型
    C:调用函数时临时
    D:定义函数时,所指定的函数类型
    正确答案:【定义函数时,所指定的函数类型】

    24、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是(   )。

    A:函数的形参和实参分别占用不同的存储单元
    B:形参只是形式上的存在,不占用具体存储单元
    C:函数的实参和其对应的形参共占同一存储单元
    D:同名的实参和形参占同一存储单元
    正确答案:【函数的形参和实参分别占用不同的存储单元】

    25、问题:

    有如下函数定义:

    #include  <stdio.h>

    int  fun( int  k )

    { if (k<1)  return  0;

    else  if (k==1)  return  1;

    else  return  fun(k-1)+1;

    }若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是(   )。

    A:5
    B:1
    C:2
    D:3
    正确答案:【3】

    第八章 单元测试

    1、下列程序的输出结果是( )。main(){int k=4,m=5,n=7;int *pk=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf(“%d ”,n);}


    A:7
    B:21
    C:5
    D:20
    正确答案:【20】

    2、对于类型相同的指针变量,不能进行的运算是( )。

    A:=
    B:+
    C:-
    D:==
    正确答案:【+】

    3、以下程序的输出结果是( )。#include <stdio.h>int main(){    char str[100]="ABCDEFG", *p=str;    int i;    for(i = 0; *p != ’’; p++,i++);    printf("%d ",i);    return 0;}


    A:7
    B:99
    C:100
    D:8
    正确答案:【7】

    4、已知有以下的说明, int a[]={8,1,2,5,0,4,7,6,3,9}; 那么a[*(a+a[3])]的值为( )。


    A:4
    B:5
    C:7
    D:0
    正确答案:【0】

    5、有以下程序:main(){ char str[ ][10]={“China”,“Beijing”},*p=str; printf(“%s ”,p+10);}该程序运行后的输出结果是( )。


    A:ing
    B:Beijing
    C:China
    D:ng
    正确答案:【Beijing】

    6、下列关于指针定义的描述正确的有( )。

    A:在定义指针时,”*”号表示指针变量的指向
    B:指针变量是一种变量,该变量是用来存放某个变量的地址值的
    C:指针变量的类型与它所指向的变量类型一致
    D:指针变量的命名规则与标识符相同
    正确答案:【在定义指针时,”*”号表示指针变量的指向;
    指针变量是一种变量,该变量是用来存放某个变量的地址值的;
    指针变量的类型与它所指向的变量类型一致;
    指针变量的命名规则与标识符相同】

    7、设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组中6个元素中的值,下列选项中能完成此操作的语句有( )。


    A:for(i=0;i<6;i++)printf(“%2d”,*(p++));
    B:for(i=0;i<6;i++)printf(“%2d”,*(p+i));
    C:for(i=0;i<6;i++)printf(“%2d”,(*p)++);
    D:for(i=0;i<6;i++)printf(“%2d”,*p++);
    正确答案:【for(i=0;i<6;i++)printf(“%2d”,*(p++));;
    for(i=0;i<6;i++)printf(“%2d”,*(p+i));;
    for(i=0;i<6;i++)printf(“%2d”,*p++);】

    8、int i=3,*p;p=&i;printf("%d",*p);是正确的。

    A:错
    B:对
    正确答案:【对】

    9、C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。

    A:错
    B:对
    正确答案:【对】

    10、在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。

    A:错
    B:对
    正确答案:【对】

    11、对同一类型的两个指针变量而言,一个变量向另外一个变量赋值的结果是使得两个指针指向同一个对象。

    A:对
    B:错
    正确答案:【对】

    12、将一维数组a的第i个元素的地址赋给指针变量p的语句是p=&a[i-1];

    A:错
    B:对
    正确答案:【对】

    13、char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。

    A:错
    B:对
    正确答案:【错】

    14、int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则p+5相当于a[5] 。

    A:对
    B:错
    正确答案:【错】

    15、有如下说明:int  a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 *(p+8) 。

    A:对
    B:错
    正确答案:【对】

    16、若有int a[3][4];*(a+1)+2表示a[1][2]元素的地址。

    A:对
    B:错
    正确答案:【对】

    17、C语言程序中,当调用函数时实参和形参各占一个独立的存储单元。

    A:错
    B:对
    正确答案:【错】

    18、若有定义:int a[5],*p;,则操作p=a;是合法的操作。

    A:错
    B:对
    正确答案:【对】

    19、若有定义:int a[5],*p;,则操作p=&a[2];是合法的操作。

    A:对
    B:错
    正确答案:【对】

    20、若有定义:int a[5][5],*p;,则操作p=a;是合法操作。

    A:对
    B:错
    正确答案:【错】

    21、若有定义:int a[5][5], (*p)[5];,则操作p=*a;是合法操作。

    A:错
    B:对
    正确答案:【错】

    22、若有定义:int a[5][5], (*p)[5];,则操作p=a[0];是合法操作。

    A:错
    B:对
    正确答案:【错】

    23、凡是整型变量可以参加的运算,指针变量都可以参加。

    A:错
    B:对
    正确答案:【错】

    24、对于指向同一个数组的两个变量而言,两个指针变量相减的操作是有意义的。

    A:对
    B:错
    正确答案:【对】

    25、对数组各元素的存取完全可以不用下标变量而用指针来代替。

    A:对
    B:错
    正确答案:【对】

    26、下列关于指针概念的描述中,错误的是(   )

    A:指针的值是可以改变的
    B:指针是变量,它也具有一个内存地址值
    C:指针中存放的是某变量或对象的地址值
    D:指针的类型是它所存放的数值的类型
    正确答案:【指针的类型是它所存放的数值的类型】

    27、已知:int a[5],*p=a;则与++*p相同的是(   )。

    A:a[0]
    B:*p++
    C:*++p
    D:++a[0]
    正确答案:【++a[0]】

    28、已知:int a[ ]={1,2,3,4,5},*p=a;在下列数组元素地址的表示中,正确的是(    )。

    A:&(p+1)
    B:*p++
    C:&(a+1)
    D:&p[2]
    正确答案:【&p[2]】

    29、若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则(     )不是对a数组元素的正确引用(其中0≤i<10)。

    A:a[p-a]
    B:*(&a[i])
    C:p[i]
    D:*(*(a+i))
    正确答案:【*(*(a+i))】

    30、下列语句组中,正确的是(    )

    A:char *s;s="Olympic";
    B:char s[7];s="Olympic";
    C:char *s;s={"Olympic"};
    D:char s[7];s={"Olympic"};
    正确答案:【char *s;s="Olympic";】

    31、若有定义int(*pt)[3];,则下列说法正确的是(   )

    A:定义了基类型为int的具有三个元素的指针数组pt
    B:定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
    C:定义了一个名为*pt、具有三个元素的整型数组
    D:定义了基类型为int的三个指针变量
    正确答案:【定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组】

    32、问题:

    有以下程序

     #include <stdio.h>

    int f(int t[],int n);

    main()

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

    s=f(a,4);

    printf("%d\n",s);

    }

    int f(int t[],int n)

    { if(n>0) return t[n-1]+f(t,n-1);

      else return 0;}  程序运行后的输出结果是(    )

    A:14
    B:4
    C:1O
    D:6
    正确答案:【1O】

    33、问题:

    有以下程序

     #include <stdio.h>

     main()

     { int m=1,n=2,*p=&m,*q=&n,*r;

       r=p;p=q;q=r;

       printf(“%d,%d,%d,%d\n”,m,n,*p,*q);

     }

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

    A:1,2,1,2
    B:2,1,1,2
    C:1,2,2,1
    D:2,1,2,1
    正确答案:【1,2,2,1】

    34、若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是(    )

    A:p=&a[2][1]
    B:p=a
    C:q[i]=a[i]
    D:p=a[i]
    正确答案:【p=a】

    35、问题:

    有以下程序

     #include <stdio.h>

     #include <string.h>

     main()

     { char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];

       printf(“%d,”,strlen(p));printf(“%s\n”,p);

     }

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

    A:10,One*Dream
    B:9,One*World
    C:9,One*Dream
    D:10,One*World
    正确答案:【10,One*Dream】

    36、问题:

    下列函数的功能是(    )

     fun(char * a,char * b)

     { while((*b=*a)!=’\0’) {a++,b++;} }

    A:检查a和b所指字符串中是否有’\0’
    B:使指针b指向a所指字符串
    C:将a所指字符串和b所指字符串进行比较
    D:将a所指字符串赋给b所指空间
    正确答案:【将a所指字符串赋给b所指空间】

    37、设有定义:char  *c;,以下选项中能够使字符型指针c正确指向一个字符串的是(    )

    A:*c=”string”;
    B:char str[ ]=”string”;c=str;
    C:c=getchar();
    D:scanf(“%s”,c);
    正确答案:【char str[ ]=”string”;c=str;】

    38、有以下程序
    #include <stdio.h>void fun(int *a,int *b){int *c;c=a;a=b;b=c;}main(){int x=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}
    程序运行后的输出结果是(    )

    A:3,5,5,3
    B:5,3,3,5
    C:5,3,5,3
    D:3,5,3,5
    正确答案:【3,5,3,5】

    39、已知char s[10],*p=s;,则在下列语句中,错误的语句是(  )。

    A:s=p+s;
    B:s[2]=p[4]
    C:p=s+5;
    D:*p=s[0]
    正确答案:【s=p+s;】

    40、已知char b[5],*p=b;,则正确的赋值语句是(  )。

    A:p=”abcd”;
    B:b=””;
    C:*b=”abcd”;
    D:*p=”abcd”;
    正确答案:【p=”abcd”;】

    41、已知char s[20]=”programming”,*ps=s;则不能引用字母o的表达式是(  )。

    A:ps+=2,*ps
    B:ps+2
    C:s[2]
    D:ps[2]
    正确答案:【ps+2】

    42、下列选项中,正确的语句组是(  )。

    A:char s[8];s="Beijing";
    B:char s[8];s={"Beijing"};
    C:char *s;s={"Beijing"};
    D:char *s;s="Beijing";
    正确答案:【char *s;s="Beijing";】

    43、已知char *p,*q;下面语句正确的是(  )。

    A:p+=q;
    B:p+=3;
    C:p/=q;
    D:p*=3;
    正确答案:【p+=3;】

    44、若说明int *p,n;则通过语句scanf能够正确读入数据n的程序段是(  )。

    A:p=&n;scanf("%d",&p);
    B:p=&n;scanf("%d",p);
    C:scanf("%d",n);
    D:p=&n;scanf("%d",*p);
    正确答案:【p=&n;scanf("%d",p);】

    45、若有定义:int x,*pb;则以下正确的表达式是(  )

    A:*pb=&x
    B:pb=x
    C:pb=&x
    D:*pb=*x
    正确答案:【pb=&x】

    46、以下程序的输出结果是(  )#include<stdio.h>void main(){printf(“%d\n”,NULL);}

    A:-1
    B:因变量无定义输出不定值
    C:0
    D:1
    正确答案:【0】

    47、已知指针p的指向如图所示的a[1],则执行语句*p++;后,*p的值是(  )。

    A:21
    B:20
    C:30
    D:31
    正确答案:【30】

    48、已知指针p的指向如图所示的a[1],则表达式*++p的值是(  )。

    A:31
    B:21
    C:30
    D:20
    正确答案:【30】

    49、已知指针p的指向如图所示的a[1],则表达式++*p的值是(  )。 

    A:21
    B:31
    C:30
    D:20
    正确答案:【21】

    50、若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是(  )。

    A:*&point,*point,&a
    B:&*a,&a,*point
    C:&a,&*point,point
    D:a,point,*&a
    正确答案:【&a,&*point,point】

    51、若有下面的程序段:char s[]="china";char *p; p=s;则下列叙述正确的是(  )。

    A:s和p完全相同
    B:数组s中的内容和指针变量p中的内容相等
    C:s数组长度和p所指向的字符串长度相等
    D:*p与s[0]相等
    正确答案:【*p与s[0]相等】

    52、已定义以下函数fun(char *p2, char *p1){ while((*p2=*p1)!=’\0’){p1++;p2++;}}函数的功能是(  )。

    A:将p1所指字符串的地址赋给指针p2
    B:检查p1和p2两个指针所指字符串中是否有’\0’
    C:对p1和p2两个指针所指字符串进行比较
    D:将p1所指字符串复制到p2所指内存空间
    正确答案:【将p1所指字符串复制到p2所指内存空间】

    53、下面程序段中,输出*的个数是(  )。char *s="\ta\018bc";for(;*s!=′\0′;s++)printf("*");

    A:7
    B:9
    C:5
    D:6
    正确答案:【6】

    54、阅读下列程序,则执行后的结果为(  )。#include "stdio.h"int main(){ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}

    A:3e,6
    B:62,5
    C:56,5
    D:3E,6
    正确答案:【3e,6】

    55、现有int a,*b;,b=&a;,则下列运算错误的是(  )。

    A:*&b
    B:&*b
    C:&*a
    D:*&a
    正确答案:【&*a】

    56、现有如下定义语句,表示数组元素s[i]的表达式不正确的是(  )。int*p,s[20],i;p=s;

    A:*(s=s+i)
    B:*(p=p+i)
    C:*(s+i)
    D:*(p+i)
    正确答案:【*(s=s+i)】

    第九章 单元测试

    1、若有以下语句    typedef  struct  S    {  int  g;  char  h;  } T;以下叙述中正确的是()。


    A:T是struct S类型的变量
    B:可用T定义结构体变量
    C:S是struct 类型的变量
    D:可用S定义结构体变量
    正确答案:【可用T定义结构体变量】

    2、若已经定义: struct  stu { int a, b; } student ; 则下列输入语句中正确的是( )


    A:scanf("%d",&a);
    B:scanf("%d",&stu.a); 
    C:scanf("%d",&student); 
    D:scanf("%d",&student.a);
    正确答案:【scanf("%d",&student.a);】

    3、有以下程序#include <stdio.h>struct  ball{    char  color[10];    int  dim;};int main( ){   struct ball list[2] = {{"white", 2}, {"yellow", 3}}; printf("%s:%d ", (list+1)->color, list->dim); return 0;}程序运行后的输出结果是( )


    A:white:2
    B:yellow:3
    C:white:3
    D:yellow:2
    正确答案:【yellow:2】

    4、以下叙述中正确的是()。

    A:即使是同类型的结构体变量,也不能进行整体赋值
    B:结构体变量的地址不能作为实参传给函数
    C:结构体数组名不能作为实参传给函数
    D:结构体中可以含有指向本结构体的指针成员
    正确答案:【结构体中可以含有指向本结构体的指针成员】

    5、有以下程序#include <stdio.h>#include <string.h>struct S{    char  name[10];};void change(struct S  *data, int  value){    strcpy(data->name, "#");    value = 6;}int main( ){       struct S  input;     int  num = 3;    strcpy(input.name, "OK");    change(&input, num);    printf("%s,%d ", input.name, num);    return 0;}程序运行后的输出结果是( )


    A:8,17
    B:8,16 
    C:8,8
    D:8,20
    正确答案:【8,20】

    6、结构体成员的类型必须是基本数据类型。

    A:对
    B:错
    正确答案:【错】

    7、结构体数组中可以包含不同结构体类型的结构体变量。

    A:错
    B:对
    正确答案:【错】

    8、结构体类型本身不占用内存空间,结构体变量占用内存空间。

    A:错
    B:对
    正确答案:【对】

    9、以下关于C语言数据类型使用的叙述中错误的是(  )。

    A:若要准确无误差的表示自然数,应使用整数类型
    B:若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
    C:若只处理“真”和“假”两种逻辑值,应使用逻辑类型
    D:若要保存带有多位小数的数据,应使用双精度类型
    正确答案:【若只处理“真”和“假”两种逻辑值,应使用逻辑类型】

    10、下面有关typedef语句的叙述中,正确的是( )

    A:typedef语句用于定义新类型
    B:typedef语句用于给已定义变量取别名
    C:typedef语句用于定义新变量
    D:typedef语句用于给已定义类型取别名
    正确答案:【typedef语句用于给已定义类型取别名】

    11、问题:

    若已经定义

    typedef  struct  stu { int a, b; } student ; 则下列叙述中正确的是( )

    A:a和 b是结构体变量
    B:student 是结构体类型
    C:stu 是结构体变量
    D:student 是结构体变量
    正确答案:【student 是结构体类型】

    12、C语言中结构体类型变量在程序执行期间( )

    A:所有成员一直驻留在内存中
    B:没有成员驻留在内存中
    C:部分成员驻留在内存中
    D:只有一个成员驻留在内存中
    正确答案:【所有成员一直驻留在内存中】

    13、以下叙述中正确的是( )

    A:结构体中的成员不能是结构体类型
    B:在定义结构体类型时就给结构体分配存储空间
    C:结构体中成员的名字可以和结构体外其他变量的名称相同
    D:结构体的类型不能是指针类型
    正确答案:【结构体中成员的名字可以和结构体外其他变量的名称相同】

    14、问题:

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

    #include<stdio.h>

    int main()

    {

    struct date

    {  int year,month,day; }today;

    printf("%d",sizeof(struct date));

    return 0;}

    A:12
    B:6
    C:8
    D:10
    正确答案:【12】

    15、问题:

    已知:

    struct sk

    { int a; float b;}data,*p; 若有p=&data,则对data中的成员a的正确引用是( )

    A:p->data.a
    B:(*p).data.a
    C:(*p).a
    D:p.data.a
    正确答案:【(*p).a】

    16、问题:

    若有以下定义语句:

    struct student

    { int num,age;};

    struct student stu[3]={{101,20},{102,19},{103,18}},*p=stu; 则以下错误的引用是( )

    A:p=&stu.age
    B:(*p).num
    C:(p++)->num
    D:p++
    正确答案:【p=&stu.age】

    17、问题:

    设有一结构体类型变量定义如下:

    struct date

    {  int year;

    int month;

    int day;

    };

    struct worker

    {  char name[20];

    char sex;

    struct date birthday;

    }w1; 若对结构体变量w1的出生年份进行赋值,下面正确的赋值语句是( )

    A:w1.year=1976
    B:year=1976
    C:birthday.year=1976
    D:w1.birthday.year=1976
    正确答案:【w1.birthday.year=1976】

    18、问题:

    已知:

    struct person

    {

    char name[10];

    int age;

    }class[10]={"LiMing",29,"ZhangHong",21,"WangFang",22}; 下述表达式中,值为72的一个是( )

    A:person[1].name[5]
    B:class[1].name[5]
    C:clase->name[5]
    D:class[0]->age + class[1]->age+ class[2]->age
    正确答案:【class[0]->age + class[1]->age+ class[2]->age】

    19、问题:

    若已经定义:

    struct  stu { int a, b; } student ; 则下列输入语句中正确的是( )

    A:scanf("%d",&student.a);
    B:scanf("%d",&stu.a);
    C:scanf("%d",&student);
    D:scanf("%d",&a);
    正确答案:【scanf("%d",&student.a);】

    20、问题:

    已知:

    struct st

    { int n;

    struct st *next;

    };

    static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p;

    如果下述语句的显示是2,则对p的赋值是( ) printf("%d",++(p->next->n));

    A:p=&a[1];
    B:p=&a[3];
    C:p=&a[2];
    D:p=&a[0];
    正确答案:【p=&a[2];】

    21、问题:

    有如下定义:

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

    struct person class[10]={"John",17, "Paul",19, "Mary",18, "Jack",19}; 根据上述定义,能输出字母M的语句是( )

    A:printf("%c\n",class[3].name);
    B:printf("%c\n",class[2].name[1]);
    C:printf("%c\n",class[2].name[0]);
    D:printf("%c\n",class[3].name[1]); 
    正确答案:【printf("%c\n",class[2].name[0]);】

    22、链表不具有的特点是( )

    A:插入、删除不需要移动元素
    B:可随机访问任一元素
    C:所需空间与线性长度成正比
    D:不必事先估计存储空间
    正确答案:【可随机访问任一元素】

    23、设有以下链表,则不能将q所指的结点插入到链表末尾的是( )

    A:p=(*p).next;(*q).next=(*p).next;(*p).next=q;
    B:q->next=NULL;p=p->next;p->next=q;
    C:p=p->next;q->next=p;p->next=q;
    D:p=p->next;q->next=p->next;p->next=q;
    正确答案:【p=p->next;q->next=p;p->next=q;】

    24、在单链表指针为p的结点之后插入指针为 s的结点, 正确的操作是 ( )

    A:s->next=p->next;p->next=s; 
    B:p->next=s;p->next=s->next;
    C:p->next=s->next;p->next=s;
    D:p->next=s;s->next=p->next; 
    正确答案:【s->next=p->next;p->next=s; 】

    25、问题:

    对于一个头指针为 head 的带头结点的单链表,判定该表为空表的条件 是( )

    A:head==NULL
    B:head->next==head 
    C:head->next==NULL 
    D:head!=NULL
    正确答案:【head->next==NULL 】

    第十章 单元测试

    1、C语言中,系统的标准输入文件是指(   )

    A:键盘
    B:显示器

    C:硬盘
    D:软盘
    正确答案:【键盘】

    2、C语言中,文件组成的基本单位为(  )

    A:数据行
    B:字符序列
    C:数据块
    D:记录
    正确答案:【字符序列】

    3、C语言中,能识别处理的文件为(    )

    A:数据文件和二进制文件
    B:文本文件和数据块文件
    C:文本文件和二进制文件
    D:流文件和文本文件
    正确答案:【流文件和文本文件】

    4、若调用fputc函数输出字符成功,则其返回值是(    )

    A:EOF
    B:1

    C:0
    D:输出的字符
    正确答案:【输出的字符】

    5、已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是(    )

    A:一个整型变量,代表要读入的数据项总数
    B:一个文件指针,指向要读的文件
    C:一个存储区,存放要读的数据项
    D:一个指针,指向要读入数据的存放地址
    正确答案:【一个指针,指向要读入数据的存放地址】

    6、当顺利执行了文件关闭操作时,fclose函数的返回值是(    )

    A:TRUE
    B:0

    C:1
    D:-1
    正确答案:【0

    7、如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是(    )

    A:fp=fopen("Demo","r+");
    B:fp=fopen("Demo","r"); 
    C:fp=fopen("Demo","ab+");
    D:fp=fopen("Demo","w+"); 
    正确答案:【fp=fopen("Demo","r+");】

    8、函数fseek(pf, OL,SEEK_END)中的SEEK_END代表的起始点是(    )

    A:文件开始
    B:文件当前位置
    C:以上都不对
    D:文件末尾
    正确答案:【文件末尾】

    展开全文
  • 之前已经写过序言中的理论部分内容,以下是每章节的习题答案程序运行环境为vc++6.0。之所以选择vc++6.0是因为电脑配置的原因,虽然已经很OUT了,但对于程序来讲能跑就满足。 习题1-1:在自己的系统中运行“hello ...

    之前已经写过序言中的理论部分内容,以下是每章节的习题答案,程序运行环境为vc++6.0。之所以选择vc++6.0是因为电脑配置的原因,虽然已经很OUT了,但对于程序来讲能跑就满足。

    习题1-1:在自己的系统中运行“hello world”程序,再有意去掉程序中部分内容,看看会到到什么出错信息。

    hello world
    1 #include <stdio.h>
    2 
    3 /* K&R最为经典的程序设计 */
    4 void main()
    5 {
    6     printf("hello world");
    7 }

    程序中将'\n'去掉,'\n'表示换行。有兴趣童鞋可将双引号去除或者程序末尾的分号去除再运行试试有无报错。

    RT:

    习题1-2:做个实验,但printf函数的参数字符中包含\c(其中c是上面的转义字符序列中未曾列出的某一个字符时,观察一下会出现什么情况。

    View Code
    1 #include <stdio.h>
    2 
    3 void main()
    4 {
    5     printf("hello world\c\n");
    6 }

    此程序在编译时会有警告:warning C4129: 'c' : unrecognized character escape sequence。出现警告是因为'\c'不是转义字符,如果要转义就得使用C的转义序列,如果要单纯的输出'\'则需进行转义'\\',这样就可以输出'\'。

    注意:'\n'只代表一个字符,类似于'\n'的转义字符序列为表示无法输入的字符或不可见字符提供了一种通用可扩充的机制。如:'\t'表示制表符;'\b'表示回退符;'\"'表示双引号;'\\'表示反斜杠本身。

    习题1-3:修改温度转换程序,使之能在转换表的顶部打印一个标题。

    View Code
     1 #include <stdio.h>
     2 #define MAXHIGH 300 /* 温度表的上限 */
     3 
     4 /* 在温度转换程序的顶部增加一个标题 */
     5 void main()
     6 {
     7     int low, temp, celsius;
     8     low = 0;     /* 温度表的下限 */
     9     temp = 20;   /* 步长 */
    10     printf("The following is printed with degrees Celsius temperature Fahrenheit table:\n");
    11     for (; low <= MAXHIGH; low += temp) {
    12         celsius = 5 * (low-32) /9;  /* 转换后的温度 */
    13         printf("%d\t%d\n", low, celsius);
    14     }
    15 }

    RT:

    习题1-4:编写一个程序打印摄氏温度转换为相应华氏温度的转换表。

    View Code
     1 #include <stdio.h>
     2 #define MAXHIGH 300 /* 温度表的上限 */
     3 
     4 /* 打印华氏温度到摄氏温度的对照表 */
     5 void main()
     6 {
     7     float fahr, celsius;  /* 声明更具体的浮点型 */
     8     int low, temp;
     9     low = 0;     /* 温度表的下限 */
    10     temp = 20;   /* 步长 */
    11     celsius = low; /* 摄氏温度 */
    12     while (celsius <= MAXHIGH) {
    13         fahr = (9.0*celsius) / 5.0 + 32.0;
    14         printf("%3.0f\t%6.1f\n", celsius, fahr);
    15         celsius += temp;
    16     }
    17 }

    RT:

    由于此程序使用了float,编译过程中会出现警告,可忽略直接看结果。警告如下,11行:conversion from 'int' to 'float', possible loss of data;13行:conversion from 'double' to 'float', possible loss of data,int到float是窄到宽的转型不应该出现丢失数据的现象,不解,第二个也不明白为什么,如果有了解其机制的还望指点一下。

    习题1-5:修改温度转换程序,要求以逆序(即按照从300度到0度的顺序)打印温度转换表。

    View Code
     1 #include <stdio.h>
     2 
     3 /* 逆序打印摄氏温度到华氏温度的对照表 */
     4 void main()
     5 {
     6     int high, temp, celsius;
     7     high = 300;     /* 温度表的上限 */
     8     temp = 20;   /* 步长 */
     9     printf("fahr\tcelsius\n");
    10     while (high >= 0) {
    11         celsius = 5 * (high-32) / 9;
    12         printf("%d\t%d\n", high, celsius);
    13         high -= temp;
    14     }
    15 }

    RT:

    习题1-6:验证表达式getchar() != EOF的值是0还是1。

    View Code
     1 #include <stdio.h>
     2 
     3 /* 验证getchar() != EOF的值 */
     4 void main()
     5 {
     6     char c;
     7     while ((c=getchar()) != EOF)
     8         ;
     9     printf("EOF value: %d\n", c);
    10 }

    RT:

    习题中让验证getchar() != EOF的值是0还是1,其实这个值和你的开发环境有关,我使用的vc++6.0,它的环境即是vc98,STDIO.H头文件中默认值其实是:#define EOF     (-1),大家可以在你的开发环境的include文件下来查看此值,然后可以使用此程序进行验证。

    注:结束程序则用【ctrl+z】键即可

    习题1-7:编写一个打印EOF值的程序。

    View Code
    1 #include <stdio.h>
    2 
    3 /* 打印EOF的值 */
    4 void main()
    5 {
    6     printf("EOF value: %d\n", EOF);
    7 }

    RT:

    习题1-8:编写一个统计空格、制表符与换行符个数的程序。

    View Code
     1 #include <stdio.h>
     2 
     3 /* count blanks,tabs,and newlines */
     4 void main()
     5 {
     6     int c, nb, nt, nl;
     7     nb = 0; /* number of blanks */
     8     nt = 0; /* number of tabs */    
     9     nl = 0; /* number of newlines */
    10     while((c = getchar()) != EOF)
    11         if (c == ' ')
    12             ++nb;
    13         else if (c == '\t')
    14             ++nt;
    15         else if (c == '\n')
    16             ++nl;
    17     printf("%d\t%d\t%d\n",nb, nt, nl);
    18 }

    RT:

    习题1-9:编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。

    View Code
     1 #include <stdio.h>
     2 #define NONBLANK 'a'  /* 定义一个区别空格符的字符 */
     3 
     4 /* 将输入复制到输出,并将多个连续的空格用一个空格代替 */
     5 void main()
     6 {
     7     char c, nextchar;
     8     nextchar = NONBLANK; /* 用来保存下一个输入的字符是否为空字符 */
     9     while ((c=getchar()) != EOF) {
    10         if (c == ' ') {
    11             if (nextchar != ' ')
    12                 putchar(c);
    13         } else
    14             putchar(c);
    15         nextchar = c;
    16     }
    17 }

    RT:

    习题1-10:编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,把回退符替换为\b,把反斜杠替换为\\。这样可以将制表符和回退符以可见的方式显示出来。

    View Code
     1 #include <stdio.h>
     2 
     3 /*  releace tabs and backspace with visible characters */
     4 void main()
     5 {
     6     int c;
     7     while ((c = getchar()) != EOF) {
     8         if (c == '\t')
     9             printf("\\t");
    10         else if (c == '\b')
    11             printf("\\b");
    12         else if (c == '\\')
    13             printf("\\\\");
    14         else
    15             putchar(c);
    16     }
    17 }

    程序中测试回退符无任何效果,还请高人指点下。

    习题1-11:略...

    习题1-12:编写一个程序,以每行一个单词的形式打印其输入。

    View Code
     1 #include <stdio.h>
     2 
     3 /* 以每行一个单词的形式打印输入 */
     4 void main()
     5 {
     6     char c;
     7     while ((c=getchar()) != '\n' ) {
     8         if ((c>='a'&&c<='z' || (c>='A'&&c<='Z'))) {
     9             putchar(c);
    10             printf("\n");
    11         }
    12     }
    13 }

    RT:

    习题1-13:编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易,垂直方向的直方图要困难些。

    View Code
     1 #include <stdio.h>
     2 #define IN 1     /* 在单词内部 */
     3 #define OUT 0    /* 在单词外部 */
     4 #define MAXLEN  15 /* 单词的最大长度 */
     5 #define MAXHIST 20 /* 直方图的最大长度 */
     6 #define MAXWORD 100 /* 限制输入单词的上限 */
     7 
     8 int wl[MAXWORD];    /* 用于存放单词长度的数组 */
     9 
    10 /* 打印水平方向的直方图 */
    11 void main()
    12 {
    13     char c;
    14     int len = 0;    /* 当前单词的长度 */
    15     int wc = 0; /* 统计单词的个数 */
    16     int state = OUT;  /* 状态初始化为在单词外部 */
    17     for (int k=0; k<MAXWORD; k++)
    18         wl[MAXWORD] = 0;            /* 数组进行初始化 */
    19     while ((c=getchar()) != EOF) {
    20         if (c == ' ' || c == '\t' || c == '\n') {
    21             if (state == IN) {
    22                 if (len > MAXLEN)
    23                     len = MAXLEN;
    24                 wl[wc++] = len;
    25             }
    26             len = 0;
    27             state = OUT;
    28         } else if (state == OUT) {
    29             state = IN;
    30             len++;
    31         } else
    32             len++;
    33     }
    34     if (wc <= 0) {
    35         printf("no words!\n");
    36         return;
    37     }else if (wc > MAXWORD)
    38         wc = MAXWORD;
    39     for (int j=0; j<wc; j++) {
    40         while (wl[j] > 0) {
    41             printf("*");
    42             wl[j]--;
    43         }
    44         printf("\n");
    45     }
    46 }

    RT:

    先到这里吧,后续章节会陆续补上。都是本人亲测亲写的代码,如有错误还请不吝赐教。由于能力有限,还望各位看客手下留情,切勿拍砖哈!

    后续答案

     

    转载于:https://www.cnblogs.com/chanboo/archive/2012/06/13/c_code.html

    展开全文
  • 是我自己整理出来的 相对比较详细 里面的章节我已全部划分好 在手机上也可以看哦 我感觉要比PDF好一些
  • 语言程账户的本期发生额说明特定资金项目在某一会计期间增加或减少变动的状况,提供该资金项目变化的动态信息。...( )序设资本的扩大再生产的追加过程是从第一部类开始的。计基节答商品拜物教是自人类出现以来就一直存在...

    语言程账户的本期发生额说明特定资金项目在某一会计期间增加或减少变动的状况,提供该资金项目变化的动态信息。因此,账户的本期发生额属于“静态”经济指标范畴。( )

    序设资本的扩大再生产的追加过程是从第一部类开始的。

    计基节答商品拜物教是自人类出现以来就一直存在的现象。

    310522.jpg

    股份制形式实现了资本集中,础章增大了社会资本总额。

    语言程价值规律的内容是商品交换必须实行等价交换。

    序设资本主义商业利润是贱买贵卖创造的。

    在资本主义条件下,计基节答工人的劳动和劳动产品都属于资本家。

    劳动力作为一种特殊的商品,础章只有价值没有使用价值。

    语言程劳动力天然就是流动资本。

    货币体现了商品生产者之间的社会生产关系。

    序设具体劳动是人类社会永恒的生存条件。

    从资本主义简单再生产的过程可以看出,雇佣工人的生活消费是个人的事,与资本家无关。

    计基节答价值规律的作用机制主要包括( )

    础章实现个别资本增大的形式是( )

    语言程劳动力价值包括( )

    序设商品的使用价值的特点包括( )

    计基节答纯粹流通费用( )

    平均利润率的形成意味着社会各部门的利润率差别消失。

    信用货币的发行一定会引发通货膨胀。

    展开全文
  • C语言程序设计课后习题答案共有八个章节答案,这是第6章答案
  • C语言程序设计课后习题答案共有八个章节答案,这是第3章答案
  • C语言程序设计题典c

    2010-02-25 13:32:29
    C语言程序设计题典》根据国家计算机二级等级考试要求,精心选编了700道c语言程序设计及相关的DOS基础知识模拟试题、详解及答案,并配有上机试题 和5套完整的模拟试卷。模拟试题部分按照最新考试大纲章节进行分类...
  • 在此本人想致谢50no ,在此书的前面章节学习过程中曾多次参考50no 写的课后编程题答案 。 12.1 (a) 14 (b) 15 (c) 4 (d)真 (e) 假 12.2 此处粘贴原版答案 The statement is illegal because pointers cannot...

    作为C语言初学者,以下内容为自己学习时所记,内容如有错误之处欢迎指出,非常感谢。 在此本人想致谢50no ,在此书的前面章节学习过程中曾多次参考50no 写的课后编程题答案 。


    12.1
    (a) 14 (b) 34 © 4 (d)真 (e) 假
    12.2
    此处粘贴原版答案

    The statement is illegal because pointers cannot be added. Here’s a legal statement that has the desired effect:

    middle = low + (high - low) / 2;
    The value of (high - low) / 2 is an integer, not a pointer, so it can legally be added to low.

    12.3
    a[N] = {10, 9 , 8, 7, 6, 5, 4, 3, 2, 1}

    12.4
    此处粘贴原版答案

    int *top_ptr;
    
    void make_empty(void)
    {
      top_ptr = &contents[0];
    }
    
    bool is_empty(void)
    {
      return top_ptr == &contents[0];
    }
    
    bool is_full(void)
    {
      return top_ptr == &contents[STACK_SIZE];
    }
    
    

    12.5
    b c d为真
    假设int a[n] = {1, 2, 3}
    其在内存中的储存假设为

    a[n] 地址
    a[0] 2000
    a[1] 2004
    a[2] 2008

    其中(a)中P为指针(其值为a[0]的地址——2000)类型为 int*,而a[0]的值为1 类型为int, 二者类型不同,值也不同。

    12.6

    int sum_array(const int *p, int n)
    	{
    		int sum;
    
    		sum = 0;
    		for (; p < p + n; p++)
    			sum += *p;
    		return sum;		
    	}
    

    12.7

    bool search(const int a[], int n, int key)
    {
    	bool i = false;
    
    	for (int j = 0 ; j < n; j++)
    	{
    		if (key == *(a + j))
    			i = true;
    	}
    	return i;
    }
    

    12.14

    # include <cstdio>
    # include <iostream>
    # define ROW 7
    # define COL 24
    bool search(const int a[ROW][COL], int );
    
    int main(void)
    {
    	int key;
    	bool k;
    	int a[ROW][COL] = { 1, 2, 3, 4, 5 };
    	
    	printf("Enter a number for search:");
    	scanf_s(" %d", &key);
    	
    	k = search(a,key);
    
    	if (k)
    	{
    		printf("123");
    	}
    	else
    		printf("456");
    
    	system("pause");
    	return 0;
    }
    
    bool search(const int a[ROW][COL], int key)
    {
    	for (int i = 0 ; i < ROW; i++)
    	{
    		for (int j = 0; j < COL; j++)
    		{
    			if (key == *(a[i] + j))
    				return true;
    		}
    	}
    	return false;
    }
    
    
    展开全文
  • 其余章节还没有学习,持续稳定缓慢更新中.. 5.1 #include &lt;stdio.h&gt; int main (void) { int num = 0; int dig = -1; // 初始化-1便于发现错误 printf ("Enter a number: "); ...
  • 自己练习时手写,难免会有些疏忽遗漏等各种各样...后续章节慢慢更新中 2.1 #include &lt;stdio.h&gt; int main (void) { printf (" *\n"); printf (" *\n"); printf (" ...
  • 章节MOOC第1周编程练习1 输出“Hello World”第2周编程练习1 逆序的三位数第3周编程练习1 时间换算2 分队列 MOOC 非官方提供答案,只是记录一下笔者自己写的通过OJ的答案,有更好方法可一起探讨。 第1周编程练习 1 ...
  • C语言第1、2章练习题 一、选择题 下列运算符中,()结合性从左到右。 A. 三目 B. 赋值 C. 比较 D. 单目 下列for循环的次数为():for ( i=0,x=0;! x && i<=5;i++) A. 5 B. 6 C. 1 D. 无限 下述...
  • 窒息迅速死亡,到C大学答案吸麻可引痹起呼,度为氢浓硫化以上时。程序测试功抄作先小路雄斩下被华以下于抢于马锋反谁急。而与系不的关大力)(压,高而的密度随的升减少其中气体,关和(的密度与流体)有,高而主要的...
  • C语言章节习题及答案(无指针)解读《C程序设计》复习题集第2章 基础概念一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的)2.1以下叙述中正确的是A)C语言比其他语言高级B)C语言可以不用编译就...
  • PAGE PAGE 3 欢迎下载 1.1 程序和程序设计 1[单选题] 数据库概念设计的过程中以下各项中不属于视图设计设计次序的是( ) A.自顶向下 B.由整体到个体 C.由内向外 D.由底向上 参考答案B 参考解析数据库概念设计的过程中...
  • C语言习题_答案.doc

    2020-04-13 10:49:13
    C语言章节习题 目录 TOC \o "1-3" \h \z \u C语言章节习题 10MuO4z0uNXnWa5Oziekcy 第一章 C语言概述 2n7gbRkF9QieghQilP5IGn 第三章 数据类型运算符和表达式 3cJpGauxYJckhfrbmQRH3L 第四章 顺序结构程序设计 4Dg12...
  • C语言谭浩强版 答案

    2012-10-29 23:03:52
    这是C程序设计语言,谭浩强版,第十章到第十五章答案,很全名的,还有前面几章节的下次再传。
  • 语言章节习题 目录 C 语言章节习题 1 第一章 C 语言概述 2 第三章 数据类型运算符和表达式 3 第四章 顺序结构程序设计 4 第五章 选择结构程序设计 10 第六章 循环结构程序设计 17 第 7 章 数组习题 25 第 8 章 函数...
  • c语言习题_答案.pdf

    2020-05-13 06:20:11
    C 语言章节习题 目录 C 语言章节习题 1 第一章 C 语言概述 2 第三章 数据类型运算符和表达式3 第四章 顺序结构程序设计4 第五章 选择结构程序设计11 第六章 循环结构程序设计21 第 7 章 数组习题33 第 8 章 函数习题...
  • 其中实验部分是配合《程序设计基础(c语言)》中各章节教学内容所安排的,它具有覆盖相应章节教学内容、突出各知识点、实验指导细致的特点。基本概念测试提供与教材中各个章节相对应的测试题,...
  • 最新C语言题库.docx

    2020-12-23 14:47:13
    C C语言程序设计试题库 PAGE PAGE # C C语言程序设计试题库 PAGE PAGE # 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 题号知识点所在章节...
  • C程序设计语言学习笔记,课本源码,练习题答案 笔记 笔记按章节附在目录下 课本源码 附在code的目录下 练习题答案 附在代码的目录下 交流 入门新人,如有错误,欢迎发起新刊 所以笔记均由本人记录,代码均在Windows...
  •  《数据结构》(C语言版)是为“数据结构”课程编写的教材,也可作为学习数据结构及其算法的C程序设计的参考教材。本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和...
  •  程序设计  高级编程语言  操作系统  编译程序 · · · · · · (更多) 第1章 入门 第2章 基础知识  程序设计  高级编程语言  操作系统  编译程序  集成开发环境  解释型语言 第3章 编译并运行第...
  • 第一章 程序设计C语言 (1)手绘章节思维导图 (2)课后习题答案及解题思路 1.1、1.3 题的答案都在书中第一章,可以通过仔细阅读找到答案,对c语言能做到很好的入门与进阶。 1.2 (我觉得这道题挺有意义的...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

c语言程序设计章节答案

c语言 订阅