第一章 单元测试
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;
正确答案:【 a*b;】
2、单选题:以下选项中不是C语句的是 ( )。
A: ;
B: a=5,c=10
C: { ; }
D: {int i;printf(“%dn”,i);}
正确答案:【 a=5,c=10】
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
正确答案:【 3】
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);
正确答案:【
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
正确答案:【 y=2.00,x=2.00,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;
正确答案:【 a=t;t=b;b=a;】
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
正确答案:【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
正确答案:【 67,D】
9、单选题:若从终端输入以下数据,要给变量c赋以340.25,则正确的输入语句是( )。
A: scanf(%6.2f”, &c);
B: scanf(%4f”, &c);
C: scanf(%f”,&c)
D: scanf(%.2f”, &c);
正确答案:【 scanf(%f”,&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
正确答案:【 3】
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
正确答案:【 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
正确答案:【 2,D】
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
正确答案:【 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
正确答案:【 a=10
b=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 ’
正确答案:【 2.0 # 4.0 ’】
16、单选题:以下说法错误的是 ( )。
A: 赋值表达式的功能是将赋值运算符右侧的值赋给其左侧的变量。
B:
复合语句是用一对花括号括起来的若干条语句,从语法作用上讲一条复合语句视为一条语句。
C: 若float x=5;可以对变量x进行%操作,如x%2的值是1。
D: 长整型(long int)变量,使用scanf函数输入时,需使用%ld格式符。
正确答案:【 若float x=5;可以对变量x进行%操作,如x%2的值是1。】
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
正确答案:【 3】
19、单选题:设int a=10,b; ,执行下列语句后,b的值不是2的是( )。
A: b=a-8
B: b=a%4
C: b=a/4
D: b=a/4.0
正确答案:【 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)
正确答案:【 (x<=y)&&(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
正确答案:【 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;
正确答案:【 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
正确答案:【 !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
正确答案:【 0.250000】
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
正确答案:【 16】
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
正确答案:【 a=2,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
正确答案:【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;
正确答案:【 if(a==0) 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
正确答案:【2】
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
正确答案:【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
正确答案:【5.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
正确答案:【0,0,1
】
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
正确答案:【20、30、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
正确答案:【10】
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】
第五章 单元测试
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循环中,循环体至少执行一次
正确答案:【在do-while循环中,循环体至少执行一次】
3、单选题:在C语言中有关for循环,以下正确的说法是( )。
A:在 for循环不能break跳出循环体
B:for循环是先执行循环体语句,后判断表达式
C:for循环只能用于循环次数已经确定的情况
D:for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来
正确答案:【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
正确答案:【1,2,0】
5、单选题:
若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( )。
for (i=5;i;i–)
for (j=0;j<4;j++){…}
A:25
B:30
C:20
D:24
正确答案:【20】
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
正确答案:【8 6】
7、单选题:下面关于switch语句和break语句的结论中,说法正确的是( )。
A:break语句是switch语句的一部分
B:在switch语句中,必须使用break语句
C:在switch语句中,可以根据需要使用或者不使用break语句
D:break语句是for语句的一部分
正确答案:【在switch语句中,可以根据需要使用或者不使用break语句】
8、单选题:以下不是死循环的语句是( )。
A:for(;;x+=i)
B:for(i=10;;i–)
sum+=i;
C:for( ;(c=getchar())!=’n’;)
printf(“%c”,c);
D:while(1) {x++;}
正确答案:【for( ;(c=getchar())!=’n’;)
printf(“%c”,c);
】
9、单选题:与语句头while(!x)等价的语句头是( )。
A:while(x!=1)
B:while(x==0)
C:while(x!=0)
D:while(~x)
正确答案:【while(x==0)】
10、单选题:在while(x)语句中的x与下列条件表达式等价的是( )。
A:x==0
B:x!=0
C:x!=1
D:x=1
正确答案:【x!=0】
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
正确答案:【a】
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( )
正确答案:【c=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
正确答案:【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
正确答案:【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
正确答案:【输出的是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
正确答案:【20,8】
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
正确答案:【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)
正确答案:【for(表达式1;1;表达式3)】
20、单选题:
若i为整型变量,则以下循环执行次数是( )。for (i=2;i==0;) printf(“%d”,i– );
A:无限次
B:0次
C:2次
D:1 次
正确答案:【0次】
第六章 单元测试
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
正确答案:【 0】
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
正确答案:【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
正确答案:【21】
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
正确答案:【19】
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]
正确答案:【a[1][1] 】
7、单选题:定义 int a[10][11],则数组a有( )个元素。
A:90
B:11
C:110
D:132
正确答案:【110】
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}};
正确答案:【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]
正确答案:【a[1][2]】
10、单选题:若有定义 int a[10];则对a数组元素的正确应用是 ( )。
A:a[10]
B:a[10.0]
C:a(10)
D:a[1+2]
正确答案:【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;
正确答案:【int a[]={0}; 】
12、单选题:以下对二维数组a的正确说明是( )。
A:int a[3][];
B:floatf a(3,4);
C:double a[1][4];
D:float a(3)(4);
正确答案:【double a[1][4]; 】
13、单选题:若有说明: int a[3][4]={0};则下面正确的叙述是 ( )。
A:数组a中每个元素均可得到初值0
B:此说明语句不正确。
C:只有元素a[0][0]可得到初值0
D:数组a中各元素都可得到初值,但其值不一定为0。
正确答案:【数组a中每个元素均可得到初值0 】
14、单选题:若有定义:int s[3][4]={{1,2},{0},{3,4,5}};则s[2][1]的值为( )。
A:4
B:3
C:1
D:0
正确答案:【4】
15、单选题:若有定义int a[2][3];则合法引用数组元素的是( )。
A:a[1][2]
B:a[0][1/2]
C:a[1][3]
D:a[2][3]
正确答案:【a[1][2]】
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}};
正确答案:【int a[2][]={1,2,3,4,5};】
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
正确答案:【12】
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
正确答案:【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
正确答案:【7】
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
正确答案:【5 18 7 16 9 12】
第七章 单元测试
1、单选题:变量的指针,其含义是指变量的( )。
A: 名称
B: 值
C: 地址
D: 另一个名称
正确答案:【 地址】
2、单选题:以下叙述错误的是( )。
A: 指针变量中存放的是地址值
B: 指针变量可以与整数进行加、减算术运算
C: 多个同类型的指针变量可以指向同一个普通变量。
D:指针变量不占用存储空间
正确答案:【指针变量不占用存储空间 】
3、单选题:已知指针变量P的指向如图1所示,则表达式*P++的值是( )。
A:30
B:21
C:31
D:20
正确答案:【20
】
4、单选题:已知指针变量P的指向如图1所示,则表达式*++P的值是( )。
A:20
B:30
C:31
D:21
正确答案:【30
】
5、单选题:已知指针变量P的指向如图1所示,则表达式++(*P)的值( )。
A:20
B:31
C:30
D:21
正确答案:【21
】
6、单选题:
假设整型变量a的值为12,变量a的地址为2000,若欲使p为指向a的指针变量,则以下赋值正确的是( )。
A:*p=12;
B:*p=2000
C:&a=p;
D:p=&a;
正确答案:【p=&a;】
7、单选题:若有定义:int b,*pb;则下面正确的赋值表达式是( )。
A:pb=&b
B:pb=b
C:*pb=*b
D:*pb=&b
正确答案:【pb=&b】
8、单选题:设int a[10],*p=a; ,则下面( )不是对a[3]的正确引用。
A:*(a+3)
B:*(p+3)
C:p[3]
D:p+3
正确答案:【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
正确答案:【60
】
10、单选题:若int *p,i;执行i=100; p=&i; i=*p+10; 后,*p的值是( )。
A:0
B:10
C:110
D:100
正确答案:【110】
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
】
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
正确答案:【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
正确答案:【8
】
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
正确答案:【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]
正确答案:【*(*(p+1)+2)】
17、单选题:
对于语句int *p[5]; 的正确描述是( )。
A:p是一个指向数组的指针,所指向的数组含有5个int型元素。
B:定义不合法
C:p是一个指向数组中第5个元素的指针,该元素是int型。
D:p是一个具有5个元素的指针数组,每个元素都是一个指向int型对象的指针变量。
正确答案:【p是一个具有5个元素的指针数组,每个元素都是一个指向int型对象的指针变量。】
18、单选题:若有int a[10],*p=a;,下列不能表示a数组首元素地址的是( )。
A:a
B:&a[0]
C:*p
D:p
正确答案:【*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
正确答案:【4 1 】
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++)
正确答案:【for(p=a; p<a+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
正确答案:【9,8】
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’,”};
正确答案:【char str1[10]; str1=”string”;】
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”};
正确答案:【char s3[ ][5]={“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)
如有任何疑问请及时联系QQ 50895809