智慧树C语言编程新思路答案
知到app网课C语言编程新思路单元测试答案
第一章 单元测试
1、关于一个C语言程序执行的起点和终点,以下选项正确的是 ( )。
A:main main
B:main 最后一个
C:main 任意
D:第一个 最后一个
答案:【 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程序编译后生成.obj文件
B:C程序的每一条语句都必须用分号结束
C:一个C程序只有在编译、连接成.exe程序之后才能执行
D:只有一个分号的语句不是合法的C语句
答案:【 只有一个分号的语句不是合法的C语句】
8、计算机能够直接识别和执行的计算机语言 ( )。
A:汇编语言
B:机器语言
C:C语言
D:高级语言
答案:【 机器语言】
9、以下叙述错误的是 ( )。
A:C语言是一种函数型语言,每个C语言程序都是由若干个函数组成
B:一个C程序编译成功后在连接时发现错误,需要编辑修改,然后不必重新编译和连接即可直接运行。
C:机器语言和汇编语言都是低级语言
D:对于计算机而言,程序是指完成某一特定任务的一组指令序列
答案:【 一个C程序编译成功后在连接时发现错误,需要编辑修改,然后不必重新编译和连接即可直接运行。】
10、对C程序的注释说明信息必须写在 ( )之间。
A:/和/
B:’和’
C:{ 和 }
D:<和>
答案:【 /和/】
11、用C语言编写的源程序,必须翻译成用二进制指令表示的目标程序,才能被计算机识别,这个过程称为 ( )。
A:编译
B:解释
C:编辑
D:汇编
答案:【 编译】
12、关于C语言的特点,以下叙述错误的是 ( )。
A:C语言程序可以方便的在不同的计算机间和各种操作系统中实现程序的移植
B:C语言共有34种运算符,表达式类型多样化
C:C语言一共只有32个关键字,9种控制语句,程序书写自由
D:C语言不能直接对硬件进行操作
答案:【 C语言不能直接对硬件进行操作】
13、C语言程序的基本构成单位是 ( )。
A:函数
B:表达式
C:运算符
D:语句
答案:【 函数】
14、能够在编译过程中被检查出来,并给出提示信息的是 ( )。
A:注释错误
B:语法错误
C:运行错误
D:逻辑错误
答案:【 语法错误】
15、以下叙述错误的是 ( )。
A:计算机语言大致可以分为三大类:机器语言、汇编语言和高级语言
B:C语言是一种通用的、过程式编程语言,具有高效、灵活、可移植等优点
C:C语言属于汇编语言
D:高级语言比低级语言更贴近人类使用的语言,易于理解和使用
答案:【 C语言属于汇编语言】
16、C语言源程序文件的后缀名是 ( )。
A:.c
B:.vbp
C:.obj
D:.exe
答案:【 .c】
17、C语言编译程序是 ( )。
A:将C源程序编译成目标程序
B:一组机器语言指令
C:厂家提供的应用软件
D:C程序的机器语言版本
答案:【 将C源程序编译成目标程序】
18、以下叙述错误的是 ( )。
A:C语言的注释有两种类型:单行注释和多行注释
B:C语言的注释语句不影响编译结果
C:C程序的单行注释语句以“//”开始
D:C语言程序中只要出现在“/”和“/”之间的就一定是注释内容
答案:【 C语言程序中只要出现在“/”和“/”之间的就一定是注释内容】
19、C语言源程序文件经过编译后的目标文件后缀名是 ( )。
A:.exe
B:.obj
C:.vbp
D:.c
答案:【 .obj 】
20、C语言源程序编译、连接后的可执行文件后缀名是 ( )。
A:.exe
B:.c
C:.bak
D:.obj
答案:【.exe】
第二章 单元测试
1、下面4个选项中,均是不合法的用户标识符的选项的是( )。
A:Date sum do
B:b+a if float
C:_abc Temp Int
D:char pao _123
答案:【 b+a if float】
2、下面4个选项中均是合法常量的选项是( )。
A:"w" 034 0xa3 '\m'
B:4.45 076 5.33E1.5 "how"
C:−12.8 0x98 43.56e2 '\n'
D:058 12e−3 3.6 'd'
答案:【−12.8 0x98 43.56e2 '\n' 】
3、以下叙述不正确的是( )。
A:在C语言中,area和AREA是两个不同的变量名
B:在C语言中,%运算符的优先级高于/ 运算符
C:若a和b类型相同,在计算了赋值表达式a=b后,a得到b的值,而b的值不变
D:在C语言中,可以使用二进制整数
答案:【 在C语言中,可以使用二进制整数】
4、在C语言中,要求运算对象必须是整型的运算符是 ( )。
A:/
B:+
C:*
D:%
答案:【 %】
5、若有说明语句:char ch='\0x41'; 则变量ch包含( )个字符。
A:说明不合法,ch的值不确定
B:1
C:2
D:3
答案:【 1】
6、若有定义:int a=7; float x=2.5,y=4.5; 则表达式x+a%3*(x+y)/2的值是 ( )。
A:2.500000
B:0.000000
C:6.000000
D:5.500000
答案:【 6.000000 】
7、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( )。
A:float
B:int
C:double
D:不确定
答案:【 double】
8、以下叙述正确的是 ( )。
A:在C语言中,%是只能用于整数运算的运算符
B:若a是实型变量,则在C语言中不允许用其他类型的数据对其赋值
C:在C语言中,一行只能写一条语句
D:在C语言中,无论是整数还是实数,都能被准确无误地表示
答案:【 在C语言中,%是只能用于整数运算的运算符】
9、在C语言中,int型数据在内存中的存储形式是( )。
A:ASCII码
B:原码
C:反码
D:补码
答案:【 补码】
10、下列选项中可作为C语言的合法整数的是 ( )。
A:0x4b5
B:101011B
C:a2
D:03845
答案:【 0x4b5】
11、字符型数据在内存中是以 ( )形式存储的。
A:原码
B:ASCII码
C:补码
D:BCD码
答案:【 ASCII码 】
12、下列叙述正确的是( )。
A:C语言不允许混合类型数据间进行运算
B:在C语言中,'b'和"b"的含义是不同的
C:在C语言中,整型常量有二进制、八进制、十六进制和十进制4种表示形式
D:C语言中,任何类型的数据都可进行%运算
答案:【在C语言中,'b'和"b"的含义是不同的 】
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:A,a,65,97
B:编译错误,无法运行
C:a,A, 65,97
D:a,A, 97,65
答案:【 编译错误,无法运行】
14、设整型变量a=2,则执行下列语句后,实型变量b的值不是0.5的是( )。
A:b=1.0/a
B:b=1/(float)a
C:b=1/(a*1.0)
D:b=(float)(1/a)
答案:【 b=(float)(1/a)】
15、下列叙述正确的是( )。
A:不同类型的变量所占内存单元是相同的
B:C语言中,变量可以不经定义而直接使用
C:赋值表达式的左边只能是变量名
D:字符串常量"China!"在存储时,系统为其分配6个字节的空间
答案:【 赋值表达式的左边只能是变量名】
16、#include <stdio.h>
int main()
{ int a=b=5,c;
c=a+b;
printf("c=%d\n",c);
}
这段程序的运行结果是( )。
A:不确定
B:编译错误,无法运行
C:0
D:10
答案:【 编译错误,无法运行】
17、C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。
A:可以是这三种字符中的任一种
B:必须是下划线
C:必须是字母
D:必须为字母或者下划线
答案:【 必须为字母或者下划线】
18、如果在一个C语言表达式中有多个运算符,则运算时应该( )。
A:先考虑结合性,然后考虑优先级
B:只考虑结合性
C:先考虑优先级,然后考虑结合性
D:只考虑优先级
答案:【 先考虑优先级,然后考虑结合性】
19、已知字符A的ASCII值是65,若定义int i; 则执行语句i=’A’+3; 后,正确的叙述是 ( )。
A:语句可以执行,但没有计算结果
B:i的值是字符E
C:语句不合法
D:i的值是字符A的ASCII值加上3,即68
答案:【 i的值是字符A的ASCII值加上3,即68 】
20、在C语言中常量’\n’和常量”ABC”在内存中占用的字节数分别是( )。
A:1 3
B:1 4
C:2 4
D:2 3
答案:【 1 4 】
第三章 单元测试
1、若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是 ( )。
A:d=(c=30)+b;
B:d=d-1;
C:ab;
D:a=b=c=d=100;
答案:【 ab;】
2、以下选项中不是C语句的是 ( )。
A:{ ; }
B:;
C:a=5,c=10
D:{int i;printf("%d\n",i);}
答案:【 a=5,c=10】
3、以下程序的输出结果是 ( )。
#include "stdio.h"
int main()
{ int x=100, y=30;
printf("%d\n",y=x/y);
return(0);
}
A:不确定的值
B:0
C:1
D:3
答案:【 3】
4、若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是 ( )。
A:scanf("%d%d%d",&a,&b,&c);
B:read(a,b,c);
C:scanf("%d%d%d",a,b,c);
D:get("%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=%d\n",y,x,i);
return(0);
}
A:y=2.00,x=2.00,i=2
B:y=2.50, x=2.00, i=2
C:y=2.00, x=2.50, i=2
D:y=2.50,x=2.50,i=2
答案:【 y=2.00,x=2.00,i=2】
6、若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是 ( )。
A:t=b; b=a; a=t;
B:t=a, a=b, b=t;
C:a=a+b, b=a-b, a=a-b;
D:a=t; t=b; b=a;
答案:【 a=t; t=b; b=a;】
7、以下程序的输出结果是 ( )。
#include <stdio.h>
int main(void)
{ int a=4,b=8;
printf("a=%%d,b=%%d\n",a,b); / 注意转义字符的作用 /
return(0);
}
A:a=2,b=5
B:a=%%d,b=%%d
C:a=%d,b=%d
D:a=%2,b=%5
答案:【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,%c\n",ch1,ch2);
return(0);
}
A:C,D
B:67,D
C:67,C
D:B,C
答案:【 67,D】
9、若从终端输入以下数据,要给变量c赋以340.25,则正确的输入语句是( )。
A:scanf(%4f”, &c);
B:scanf(%f”,&c)
C:scanf(%6.2f”, &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:-3
B:25
C:3
D:编译错误
答案:【 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%c\n",c5,c6);
return(0);
}
程序运行后,若从键盘输入(从第一列开始)
abc<回车>
def<回车>
则输出结果是( )。
A:cdef
B:abef
C:abcd
D:abde
答案:【 abde】
12、以下程序段的输出结果是( )。
#include <stdio.h>
int main(void)
{ char c1='a',c2='c';
printf("%d,%c\n",c2-c1,c2-c1+'B');
return(0);
}
A:类型不一致,出错
B:2,D
C:2,b
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=%d\nb=%d\n",a,b);
return(0);
}
A:10,20
B:a=10,b=20
C:a=10
b=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# 4
B:2.0 # 4.0 ’
C:2.0#4.0 ‘
D:2.0# 4.0 ,
答案:【 2.0 # 4.0 ’】
16、 以下说法错误的是 ( )。
A:长整型(long int)变量,使用scanf函数输入时,需使用%ld格式符。
B:赋值表达式的功能是将赋值运算符右侧的值赋给其左侧的变量。
C:复合语句是用一对花括号括起来的若干条语句,从语法作用上讲一条复合语句视为一条语句。
D:若float x=5;可以对变量x进行%操作,如x%2的值是1。
答案:【 若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=%d\n ",i); // 4
return(0);
}
A:1
B:2
C:3
D:4
答案:【 3】
19、设int a=10,b; ,执行下列语句后,b的值不是2的是( )。
A:b=a/4
B:b=a-8
C:b=a/4.0
D:b=a%4
答案:【 b=a/4.0】
20、putchar() 函数可以向终端输出一个( )。
A:实数
B:字符串
C:整型
D:字符
答案:【 字符】
第四章 单元测试
1、表示关系x≤y≤z的c语言表达式为( )。
A:(x<=y)&(y<=z)
B:(x<=y)AND(y<=z)
C:(x<=y<=z)
D:(x<=y)&&(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,2
C:2 ,2
D:0,0
答案:【 0,2】
3、在以下一组运算符中,优先级最高的运算符是( )。
A:&&
B:=
C:<=
D:%
答案:【 %】
4、若有int x,a,b;则下面if语句中,( )是错误的。
A:if (a-b) x=x+1;
B:if ( x ) 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*2-x)==0
B:!(x%2)
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("%f\n",y);
return(0);
}
A:0.250000
B:10.000000
C:1.000000
D:0.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("%d\n",s);
return(0);
}
A:14
B:18
C:16
D:20
答案:【 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=%d\n",a,b);
return(0);
}
A:a=2,b=1
B:a=2,b=2
C:a=1,b=1
D:a=1,b=0
答案:【 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:2
B:1
C:3
D:4
答案:【2】
12、在下面的条件语句中(其中S1和S2表示C语言语句),只有一个在功能上与其他3个语句不等价( )。
A:if(a==0) S2; else S1;
B:if(a==0) S1; else S2;
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:2
B:1
C:-1
D:0
答案:【2】
14、假定所有变量均已正确定义,下面程序段执行后的x的值是( )。
a=b=0;
x=35;
if(!a) x=x-1;
if(b) x=3;
else x=4;
A:34
B:3
C:4
D:35
答案:【4】
15、若有说明语句int i=4, j=5, k=6; float f; 则执行f=( i>k)?i:(j<k)?j:k;语句后,f的值为( )。
A:5.0
B:6.0
C:7.0
D:4.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:0,0,1
B:0,0,0
C:1,1,1
D:1,0,1
答案:【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:10、20、30
C:20、30、30
D:20、10、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("%d\n",k);
return(0);
}
A:11
B:9
C:8
D:10
答案:【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:4
B:2
C:3
D:1
答案:【1】
第五章 单元测试
1、以下程序段中while循环执行的次数是( )。
int k=0;
while(k=1) k++;
A:执行一次
B:有语法错不能执行
C:一次也不执行
D:无限次
答案:【 无限次】
2、问题:以下描述中正确的是( )。A:do-while循环中由do开始,用while 结束,在while (表达式)后面不能写分号
B:do-while循环中,根据情况可以省略while
C:由于do-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,1
B:2,1,1
C:1,2,0
D:2,1,0
答案:【1,2,0】
5、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( )。
for (i=5;i;i–)
for (j=0;j<4;j++){…}
A:25
B:24
C:30
D:20
答案:【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:4 8
B:6 7
C:8 6
D:10 5
答案:【8 6】
7、下面关于switch语句和break语句的结论中,说法正确的是( )。
A:在switch语句中,可以根据需要使用或者不使用break语句
B:break语句是switch语句的一部分
C:在switch语句中,必须使用break语句
D:break语句是for语句的一部分
答案:【在switch语句中,可以根据需要使用或者不使用break语句】
8、以下不是死循环的语句是( )。
A:for(i=10;;i–)
sum+=i;
B:while(1) {x++;}
C:for( ;(c=getchar())!=’\n’;)
printf(“%c”,c);
D:for(;;x+=i)
答案:【for( ;(c=getchar())!=’\n’;)
printf(“%c”,c);
】
9、与语句头while(!x)等价的语句头是( )。
A:while(x!=0)
B:while(~x)
C:while(x==0)
D:while(x!=1)
答案:【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==1
B:a==0
C:a
D:!a
答案:【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=%d\n",m,n);
}
A:c=getchar( )
B:c==getchar( )
C:getchar( )
D:scanf("%c",&c)
答案:【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=4
D:k=3
答案:【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(" %d\n",x -=2);} while(!(–x));
A:输出的是1和-2
B:是死循环
C:输出的是 1
D:输出的是3和0
答案:【输出的是1和-2】
17、下面程序段的运行结果是( )。
x=y=0;
while(x<15)
y++,x+=++y;
printf("%d,%d",y,x);
A:8,20
B:20,8
C:6,12
D:20,7
答案:【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; 0;表达式3)
C:for(表达式1;表达式1;表达式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(“%d\n”,a[3]); }
A:1
B:随机值
C:0
D:3
答案:【 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:8
B:6
C:5
D:7
答案:【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:20
B:21
C:10
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:13
B:11
C:20
D:19
答案:【19】
6、数组定义为 int a[3][2]={1,3,4,6,8,10},数组元素( )的值为6。
A:a[1][1]
B:a[3][2]
C:a[2][2]
D:a[2][1]
答案:【a[1][1] 】
7、定义 int a[10][11],则数组a有( )个元素。
A:110
B:132
C:90
D:11
答案:【110】
8、以下不能对二维数组a进行正确初始化的语句是( ) 。
A:int a[][3]={1,2,3,4,5,6};
B:int a[2][3]={0};
C:int a[][3]={{1,2},{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][3]
B:a[1][2]
C:a[1][4]
D:a[0][4]
答案:【a[1][2]】
10、若有定义 int a[10];则对a数组元素的正确应用是 ( )。
A:a[10]
B:a(10)
C:a[10.0]
D:a[1+2]
答案:【a[1+2]】
11、以下能对一维数组a进行正确初始化的语句是( )。
A:int a[]={0};
B:int a[10]=(0,0,0,0,0)
C:int a[10]=10*1;
D:int a[10]={}
答案:【int a[]={0}; 】
12、以下对二维数组a的正确说明是( )。
A:floatf a(3,4);
B:float a(3)(4);
C:double a[1][4];
D:int a[3][];
答案:【double a[1][4]; 】
13、若有说明:int a[3][4]={0};则下面正确的叙述是 ( )。
A:只有元素a[0][0]可得到初值0
B:数组a中各元素都可得到初值,但其值不一定为0。
C:此说明语句不正确。
D:数组a中每个元素均可得到初值0
答案:【数组a中每个元素均可得到初值0 】
14、若有定义:int s[3][4]={{1,2},{0},{3,4,5}};则s[2][1]的值为( )。
A:0
B:1
C:4
D:3
答案:【4】
15、若有定义int a[2][3];则合法引用数组元素的是( )。
A:a[0][1/2]
B:a[1][2]
C:a[1][3]
D:a[2][3]
答案:【a[1][2]】
16、在以下数组定义中,错误的是( )。
A:int a[][2]={{0},{1}};
B:int a[][2]={1,2,3,4};
C:int a[2][]={1,2,3,4,5};
D:int a[2][2]={{1,2},{3}}
答案:【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:18
B:108
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:240
B:6
C:120
D:7
答案:【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 8 17 6 19 2
B:5 8 7 6 9 2
C:15 18 17 16 19 12
D:5 18 7 16 9 12
答案:【5 18 7 16 9 12】
第七章 单元测试
1、变量的指针,其含义是指变量的( )。
A:地址
B:名称
C:值
D:另一个名称
答案:【 地址】
2、以下叙述错误的是( )。
A:指针变量不占用存储空间
B:指针变量中存放的是地址值
C:指针变量可以与整数进行加、减算术运算
D:多个同类型的指针变量可以指向同一个普通变量。
答案:【指针变量不占用存储空间 】
3、已知指针变量P的指向如图1所示,则表达式*P++的值是( )。
1.jpg
A:20
B:31
C:21
D:30
答案:【20
】
4、已知指针变量P的指向如图1所示,则表达式*++P的值是( )。
1.jpg
A:20
B:30
C:21
D:31
答案:【30
】
5、已知指针变量P的指向如图1所示,则表达式++(*P)的值( )。
1.jpg
A:31
B:20
C:30
D:21
答案:【21
】
6、假设整型变量a的值为12,变量a的地址为2000,若欲使p为指向a的指针变量,则以下赋值正确的是( )。
A:&a=p;
B:p=2000
C:p=12;
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:p[3]
B:p+3
C:(a+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:50
B:100
C:60
D:10
答案:【60
】
10、问题:若int p,i;执行i=100; p=&i; i=p+10; 后,*p的值是( )。A:0
B:100
C:110
D:10
答案:【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("%d\n",y);
}
A:17
B:19
C:12
D:20
答案:【12】