溯坤瓮孙梅同奴镣慌菱封吩喜
第1周——初识C语言
codeblocks介绍——从Hello World开始
1、单选题:
#include <stdio.h>是
A: 编译预处理指令
B: 语句
C: 函数
D: 程序入口
答案: 编译预处理指令
debug
1、单选题:
codeblocks中运行到下一步(next line)的快捷键是
A: F7
B: F5
C: F8
D: F11
答案: F7
变量在内存中所占的字节数
1、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
A: 函数
B: 运算符
C: 标识符
D: 语句
答案: 运算符
宏常量与const常量
1、单选题:
宏定义是()
A: 一条语句
B: 一种编译预处理指令
C: 一个标识符
D: 一个变量
答案: 一种编译预处理指令
2、判断题:
const常量有数据类型。
A: 正确
B: 错误
答案: 正确
第1周测验
1、单选题:
下列选项中,合法的C语言标识符是
A: _a1
B: width.x
C: #abc123
D: 123abc
E: o*k
F: a?
G: a+b
H: %a
I: b!
答案: _a1
2、单选题:
以下不适合定义为用户标识符的是
A: int
B: a2
C: def2
D: _3com_
E: PI
F: Source
G: abc
答案: int
3、单选题:
#include <stdio.h>是
A: 编译预处理指令
B: 语句
C: 函数
D: 什么都不是
E: 有语法错误
答案: 编译预处理指令
4、单选题:
程序编译后形成的文件是
A: .obj文件
B: .exe文件
C: 可执行文件
D: .c文件
E: .h文件
答案: .obj文件
5、单选题:
程序编译链接后显示” 0 error,0 warning” 代表
A: 程序中没有语法错误
B: 程序是正确的
C: 程序是不正确的
D: 程序中可能存在语法错误
E: 程序中有语义错误
答案: 程序中没有语法错误
6、单选题:
用8位无符号二进制数能表示的最大十进制数为
A: 255
B: 127
C: 128
D: 256
答案: 255
7、单选题:
关于可执行文件说法正确的是
A: 可执行文件是编译链接后生成的文件
B: 可执行文件就是源代码文件
C: 可执行文件后缀为.obj
D: 可执行文件就是main.c文件
答案: 可执行文件是编译链接后生成的文件
8、单选题:
若变量a是int类型,并执行了语句:a=’A’+1.6;,则正确的叙述是
A: ‘A’+1.6的结果是浮点型
B: a的值还是整型
C: a的值是字符C
D: a的值是浮点型
E: 不允许字符型和浮点型相加
答案: ‘A’+1.6的结果是浮点型;
a的值还是整型
9、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
A: 运算符
B: 一元运算符
C: 只需要一个操作数的运算符
D: 函数
E: 语句
F: 标识符
G: 变量
答案: 运算符;
一元运算符;
只需要一个操作数的运算符
10、单选题:
以下不属于Codeblocks中用于调试程序的工具是
A: run
B: build
C: run to cursor
D: next line
E: stop debugger
F: watches
答案: run;
build
11、单选题:
程序的开发步骤中不包括
A: 撰写文档
B: 运行程序
C: 编译链接
D: 程序测试
E: 编辑(编写代码)
答案: 撰写文档
12、单选题:
下列说法中错误的是()
A: 尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B: 内存是按位编址的。
C: 有符号和无符号整数的表数范围是相同的。
D: int型在所有的计算机上都占4个字节的存储单元。
E: 编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F: 内存是按字节编址的。
G: 对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H: sizeof是编译时执行的运算符,不会导致额外的运行时间开销。
答案: 尾数决定了实数的表数范围,阶码决定了实数的表数精度。;
内存是按位编址的。;
有符号和无符号整数的表数范围是相同的。;
int型在所有的计算机上都占4个字节的存储单元。
13、单选题:
若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
A: 1
B: 1.4
C: 2.0
D: 2
答案: 1
14、单选题:
在C语言中,字符型数据在内存中以字符的( )形式存放
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: ASCII码
15、单选题:
以下符合C语言语法的实型常量是
A: 5e-3
B: 3.14.159e
C: 1.2e0.5
D: e15
答案: 5e-3
16、单选题:
以下选项中可作为C语言合法整数的是
A: 0xffa
B: 10110B
C: 038x
D: x2a2
答案: 0xffa
17、单选题:
下列说法正确的是
A: 在C语言中,变量必须先定义后使用。
B: 一条变量定义语句可定义多个同类型的变量。
C: C89规定所有变量必须在第一条可执行语句前定义。
D: const常量只能在定义时赋值。
E: 实型常量的默认类型是double类型。
F: 一条变量定义语句不可以同时定义多个变量。
G: 不同类型的变量分配的存储空间大小都是相同的。
H: 在C语言中,所有变量都必须在定义时进行初始化。
I: 变量在没有初始化的时候,其值都是0
J: 宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 在C语言中,变量必须先定义后使用。;
一条变量定义语句可定义多个同类型的变量。;
C89规定所有变量必须在第一条可执行语句前定义。;
const常量只能在定义时赋值。;
实型常量的默认类型是double类型。
18、单选题:
下列变量定义中合法的是
A: long ao=0xfdaL;
B: short _a=1-.1e-1;
C: double b=1+5e2.5;
D: float 2_and=1-e-3;
答案: long ao=0xfdaL;
练兵区——单选题——不计入总分
1、单选题:
下列选项中,合法的C语言标识符是
A: _a1
B: width
C: #abc123
D: 123abc
E: o*k
F: a?
G: a+b
H: %a
I: b!
答案: _a1;
width
2、单选题:
以下不适合定义为用户标识符的是
A: float
B: main
C: define
D: _3com_
E: PI
F: Source
G: abc
答案: float ;
main;
define
3、单选题:
#include <stdio.h>是
A: 编译预处理指令
B: 语句
C: 函数
D: 什么都不是
E: 有语法错误
答案: 编译预处理指令
4、单选题:
程序编译后形成的文件是
A: .obj文件
B: .exe文件
C: 可执行文件
D: .c文件
E: .h文件
答案: .obj文件
5、单选题:
程序编译链接后显示” 0 error,0 warning” 代表
A: 程序中没有语法错误
B: 程序是正确的
C: 程序是不正确的
D: 程序中可能存在语法错误
E: 程序中有语义错误
答案: 程序中没有语法错误
6、单选题:
用8位无符号二进制数能表示的最大十进制数为
A: 255
B: 127
C: 128
D: 256
答案: 255
7、单选题:
关于可执行文件说法正确的是
A: 可执行文件是编译链接后生成的文件
B: 可执行文件就是源代码文件
C: 可执行文件后缀为.obj
D: 可执行文件就是main.c文件
答案: 可执行文件是编译链接后生成的文件
8、单选题:
若变量a是int类型,并执行了语句:a=’A’+1.6;,则正确的叙述是
A: ‘A’+1.6的结果是浮点型
B: a的值还是整型
C: a的值是字符C
D: a的值是浮点型
E: 不允许字符型和浮点型相加
答案: ‘A’+1.6的结果是浮点型;
a的值还是整型
9、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
A: 运算符
B: 一元运算符
C: 只需要一个操作数的运算符
D: 函数
E: 语句
F: 标识符
G: 变量
答案: 运算符;
一元运算符;
只需要一个操作数的运算符
10、单选题:
以下不属于Codeblocks中用于调试程序的工具是
A: run
B: build
C: run to cursor
D: next line
E: stop debugger
F: watches
答案: run;
build
11、单选题:
程序的开发步骤中不包括
A: 撰写文档
B: 运行程序
C: 编译链接
D: 程序测试
E: 编辑(编写代码)
答案: 撰写文档
12、单选题:
下列说法中错误的是()
A: 尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B: 内存是按位编址的。
C: 有符号和无符号整数的表数范围是相同的。
D: int型在所有的计算机上都占4个字节的存储单元。
E: 编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F: 内存是按字节编址的。
G: 对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H: sizeof是编译时执行的运算符,不会导致额外的运行时间开销。
答案: 尾数决定了实数的表数范围,阶码决定了实数的表数精度。;
内存是按位编址的。;
有符号和无符号整数的表数范围是相同的。;
int型在所有的计算机上都占4个字节的存储单元。
13、单选题:
若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
A: 1
B: 1.4
C: 2.0
D: 2
答案: 1
14、单选题:
在C语言中,字符型数据在内存中以字符的( )形式存放
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: ASCII码
15、单选题:
以下符合C语言语法的实型常量是
A: 5e-3
B: 3.14.159e
C: 1.2e0.5
D: e15
答案: 5e-3
16、单选题:
以下选项中可作为C语言合法整数的是
A: 0xffa
B: 10110B
C: 038x
D: x2a2
答案: 0xffa
17、单选题:
下列说法正确的是
A: 在C语言中,变量必须先定义后使用。
B: 一条变量定义语句可定义多个同类型的变量。
C: C89规定所有变量必须在第一条可执行语句前定义。
D: const常量只能在定义时赋值。
E: 实型常量的默认类型是double类型。
F: 一条变量定义语句不可以同时定义多个变量。
G: 不同类型的变量分配的存储空间大小都是相同的。
H: 在C语言中,所有变量都必须在定义时进行初始化。
I: 变量在没有初始化的时候,其值都是0
J: 宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 在C语言中,变量必须先定义后使用。;
一条变量定义语句可定义多个同类型的变量。;
C89规定所有变量必须在第一条可执行语句前定义。;
const常量只能在定义时赋值。;
实型常量的默认类型是double类型。
18、单选题:
下列变量定义中合法的是
A: long ao=0xfdaL;
B: short _a=1-.1e-1;
C: double b=1+5e2.5;
D: float 2_and=1-e-3;
答案: long ao=0xfdaL;
第2周——做点计算
不同类型数据的运算
1、判断题:
通常情况下,不同类型数据的运算结果的类型是取值范围较大的那种类型。
A: 正确
B: 错误
答案: 正确
在定义变量的时候对变量进行初始化
1、单选题:
下列语句中错误的是()。
A: int a, b, c;a=b=c=0;
B: int a, b, c;a=0;b=0;c=0;
C: int a=0;int b=0;int c=0;
D: int a=b=c=0;
答案: int a=b=c=0;
强制类型转换
1、判断题:
强制类型转换运算符就是强制改变一个变量原有的数据类型。
A: 正确
B: 错误
答案: 错误
第2周测验
1、单选题:
下列程序的输出结果是#include <stdio.h>
int main()
{
int a=7,b=5;
printf(“%dn”,b/a);
return 0;
}
A: 0
B: 5
C: 1
D: 0.7
答案: 0
2、单选题:
下列关于单目运算符++、–的叙述中正确的是
A: a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B: ++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C: a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D: a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
3、单选题:
以下程序的输出结果是:#include <stdio.h>
int main()
{
int a=1, b=2;
a=a+b;
b=a-b;
a=a-b;
printf(“%d,%dn”, a, b );
return 0;
}
A: 2,1
B: 3,1
C: 3,2
D: 1,2
答案: 2,1
4、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int m=3,n=4,x;
x=m++;
++n;
x=x+8/n;
printf(“%d,%dn”,x,m);
return 0;
}
A: 4,4
B: 4,3
C: 5,4
D: 5,3
答案: 4,4
5、单选题:
下面程序的运行结果是#include <stdio.h>
int main()
{
int a = 2, b = 3 ;
float x = 3.5, y = 2.5 ;
printf(“%f”, (float)(a+b) / 2 + (int)x % (int)y) ;
return 0;
}
A: 3.500000
B: 3.000000
C: 3.5
D: 3
答案: 3.500000
6、单选题:
以下非法的赋值语句是
A: ++(i+1);
B: x=(j–);
C: n=++i;
D: j++;
答案: ++(i+1);
7、单选题:
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
A: 6.000000
B: 6.500000
C: 6
D: 5.500000
答案: 6.000000
8、单选题:
以下程序的运行结果是#include <stdio.h>
int main()
{
int a = 12, b = 3;
float x = 18.5, y = 4.5;
printf(“%fn”, (float)(a * b) / 2);
printf(“%dn”, (int)x %(int)y);
return 0;
}
A: 18.0000002
B: 182
C: 182.000000
D: 18.0000002.000000
答案: 18.0000002
9、单选题:
设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
A: -12
B: 3
C: 0
D: 9
答案: -12
10、单选题:
在C语言中,要求操作数必须是整型的运算符是
A: %
B: /
C: *
D: +
E: –
答案: %
11、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
char a=’a’;
printf(“%c,”,++a);
printf(“%cn”,a++);
return 0;
}
A: b,b
B: b,c
C: a,b
D: a,c
答案: b,b
12、单选题:
下面哪条语句可以生成0-9之间的随机数
A: magic=rand()%10;
B: magic=rand()%10+1;
C: magic=rand()/10;
D: magic=rand()/10+1;
答案: magic=rand()%10;
13、单选题:
在下面的C语言语句中,存在错误的是
A: int a=b=10;
B: int a=10,b=10;
C: int a,b;a=b=10;
D: int a,b;a=10;b=10;
答案: int a=b=10;
14、单选题:
若以下选项中的变量已正确定义,则正确的赋值语句是
A: x3=x2=x1=0;
B: x1=26.8%3;
C: 1+2=x2;
D: x4=1+2=3;
答案: x3=x2=x1=0;
15、单选题:
若有以下定义,则表达式“a * b + d – c”的值的类型为#incluce <stdio.h>
int main()
{
char a;
int b;
float c;
double d;
….
return 0;
}
A: double
B: int
C: float
D: char
答案: double
16、单选题:
在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
A: #include <math.h>
B: #include <stdio.h>
C: #define <math.h>
D: #define <stdio.h>
答案: #include <math.h>
17、单选题:
十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
A: d=(x-(x/100)*100)/10;
B: d=(x%100)/10;
C: d=(x/10)%10;
D: d=x%10;
E: d=(x-x%10)/10;
F: d=x%100;
答案: d=(x-(x/100)*100)/10;;
d=(x%100)/10;;
d=(x/10)%10;
18、单选题:
在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
A: 变量a和b中的值都是0
B: 变量a和b中都没有数值
C: 变量a和b中的值都是未知的随机数
D: a和b都是整型变量
E: 变量a和b占用的内存空间的大小是相同的
答案: 变量a和b中的值都是0;
变量a和b中都没有数值
19、单选题:
已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是( )。
A: 2和1
B: 0和1.67
C: 3和1
D: 5和1
E: 0和1
F: 3和1.67
G: 5和1.67
答案: 2和1
20、单选题:
设有以下定义,则下面给出的语句中错误的是int a=0;
float b=1.25;
char c=’A’;
#define d 2
A: d++;
B: (a+b)++;
C: (-a)++;
D: (a+1)++;
E: a++;
F: b++;
G: c++;
答案: d++;;
(a+b)++;;
(-a)++;;
(a+1)++;
练兵区——单选题——不计入总分
1、单选题:
设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
A: -12
B: 3
C: 0
D: 9
答案: -12
2、单选题:
在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
A: #include <math.h>
B: #include <stdio.h>
C: #define <math.h>
D: #define <stdio.h>
答案: #include <math.h>
3、单选题:
设有以下定义,则下面给出的语句中错误的是int a=0;
float b=1.25;
char c=’A’;
#define d 2
A: d++;
B: (a+b)++;
C: (-a)++;
D: (a+1)++;
E: a++;
F: b++;
G: c++;
答案: d++;;
(a+b)++;;
(-a)++;;
(a+1)++;
4、单选题:
下列关于单目运算符++、–的叙述中正确的是
A: a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B: ++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C: a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D: a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
5、单选题:
以下程序的输出结果是:#include <stdio.h>
int main()
{
int a=1, b=2;
a=a+b;
b=a-b;
a=a-b;
printf(“%d,%dn”, a, b );
return 0;
}
A: 2,1
B: 3,1
C: 3,2
D: 1,2
答案: 2,1
6、单选题:
下面哪条语句可以生成0-9之间的随机数
A: magic=rand()%10;
B: magic=rand()%10+1;
C: magic=rand()/10;
D: magic=rand()/10+1;
答案: magic=rand()%10;
7、单选题:
在下面的C语言语句中,存在错误的是
A: int a=b=10;
B: int a=10,b=10;
C: int a,b;a=b=10;
D: int a,b;a=10;b=10;
答案: int a=b=10;
8、单选题:
若有以下定义,则表达式“a * b + d – c”的值的类型为#include <stdio.h>
int main()
{
char a;
int b;
float c;
double d;
….
return 0;
}
A: double
B: int
C: float
D: char
答案: double
9、单选题:
十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
A: d=(x-(x/100)*100)/10;
B: d=(x%100)/10;
C: d=(x/10)%10;
D: d=x%10;
E: d=(x-x%10)/10;
F: d=x%100;
答案: d=(x-(x/100)*100)/10;;
d=(x%100)/10;;
d=(x/10)%10;
10、单选题:
在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
A: 变量a和b中的值都是0
B: 变量a和b中都没有数值
C: 变量a和b中的值都是未知的随机数
D: a和b都是整型变量
E: 变量a和b占用的内存空间的大小是相同的
答案: 变量a和b中的值都是0;
变量a和b中都没有数值
11、单选题:
下列程序的输出结果是#include <stdio.h>
int main()
{
int a=7,b=5;
printf(“%dn”,b/a);
return 0;
}
A: 0
B: 5
C: 1
D: 0.7
答案: 0
12、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int m=3,n=4,x;
x=m++;
++n;
x=x+8/n;
printf(“%d,%dn”,x,m);
return 0;
}
A: 4,4
B: 4,3
C: 5,4
D: 5,3
答案: 4,4
13、单选题:
下面程序的运行结果是#include <stdio.h>
int main()
{
int a = 2, b = 3 ;
float x = 3.5, y = 2.5 ;
printf(“%f”, (float)(a+b) / 2 + (int)x % (int)y) ;
return 0;
}
A: 3.500000
B: 3.000000
C: 3.5
D: 3
答案: 3.500000
14、单选题:
以下非法的赋值语句是
A: ++(i+1);
B: x=(j–);
C: n=++i;
D: j++;
答案: ++(i+1);
15、单选题:
已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是
A: 2和1
B: 0和1.67
C: 3和1
D: 5和1
E: 0和1
F: 3和1.67
G: 5和1.67
答案: 2和1
16、单选题:
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
A: 6.000000
B: 6.500000
C: 6
D: 5.500000
答案: 6.000000
17、单选题:
以下程序的运行结果是#include <stdio.h>
int main()
{
int a = 12, b = 3;
float x = 18.5, y = 4.5;
printf(“%fn”, (float)(a * b) / 2);
printf(“%dn”, (int)x %(int)y);
return 0;
}
A: 18.0000002
B: 182
C: 182.000000
D: 18.0000002.000000
答案: 18.0000002
18、单选题:
在C语言中,要求操作数必须是整型的运算符是
A: %
B: /
C: *
D: +
E: –
答案: %
19、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
char a=’a’;
printf(“%c,”,++a);
printf(“%cn”,a++);
return 0;
}
A: b,b
B: b,c
C: a,b
D: a,c
答案: b,b
20、单选题:
若以下选项中的变量已正确定义,则正确的赋值语句是
A: x3=x2=x1=0;
B: x1=26.8%3;
C: 1+2=x2;
D: x4=1+2=3;
答案: x3=x2=x1=0;
运算符的优先级和结合性
1、判断题:
二元的算术运算符的结合性都是左结合。一元运算符的结合性都是右结合。
A: 正确
B: 错误
答案: 正确
第3周——开始输入和输出啦
%c格式转换说明
1、判断题:
用c格式符输入字符型数据的时候,为了避免将输入缓冲区中的空白字符(空格、回车换行符、Tab键)作为有效字符读入,可以在%c前面加一个空格。
A: 正确
B: 错误
答案: 正确
单个字符的输入输出
1、判断题:
单个字符既可以以c格式符也可以以d格式符输出,前者是输出这个字符,后者是输出这个字符的ASCII码值。
A: 正确
B: 错误
答案: 正确
格式字符
1、判断题:
在调用printf函数输出数据时,当数据的实际位宽大于printf函数中的指定位宽时,将按照数据的实际位宽输出数据。
A: 正确
B: 错误
答案: 正确
第3周测验
1、单选题:
分析下列程序,写出程序运行结果#include <stdio.h>
int main()
{
char c1 = ‘a’, c2 = ‘b’, c3 = ‘c’;
printf(“a%cb%cc%cabcn”, c1, c2, c3);
return 0;
}
A: aabbccabc
B: acbcabc
C: aabcabc
D: acbbcabc
答案: aabbccabc
2、单选题:
有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf(“a=%d,b=%d”,&a,&b);
A: a=1,b=2
B: 1 2
C: 1,2
D: a=1 b=2
答案: a=1,b=2
3、单选题:
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf(“%c%c%d,%d”,&a,&b,&c,&d);
printf(“%c,%c,%c,%cn”,a,b,c,d);
return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
A: 6,5,A,B
B: 6,5,65,66
C: 6,5,6,5
D: 6,5,6,6
答案: 6,5,A,B
4、单选题:
给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{
int a,b,s;
scanf(“%2d%2d”,&a,&b);
s=a/b;
printf(“s=%d”,s);
return 0;
}
A: 1
B: 1.6875
C: 2
D: 0
答案: 1
5、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
float a = 1234.567,b = 55.32;
printf(“a = %4.2f, b = %5.1fn”, a,b);
return 0;
}
A: a = 1234.57, b = 55.3
B: a =1234, b =55
C: a = 1234.6, b = 5.32
D: a =1234.567, b = 55.32
答案: a = 1234.57, b = 55.3
6、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
int a=2, c=5;
printf(“a = %%d, b = %%dn”, a, c);
return 0;
}
A: a = %d, b = %d
B: a = %2, b = %5
C: a = 2, b = 5
D: a = %%d, b = %%d
答案: a = %d, b = %d
7、单选题:
有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
{
char ch;
ch=getchar();
ch=ch+32;
printf(“%c”,ch);
return 0;
}
A: b
B: 98
C: 32
D: 66
答案: b
8、单选题:
在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
A: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
9、单选题:
设有语句“char c=’72’;”,则变量c
A: 包含1个字符
B: 包含2个字符
C: 包含3个字符
D: 不合法
答案: 包含1个字符
10、单选题:
在下列语句中存在错误的是
A: int a,b;scanf(“%d %f”,&a,&b);
B: int a,b;scanf(“%d %d”,a,b);
C: int a,b;scanf(“%d%dn”,&a,&b);printf(“%d %d”,a,b);
D: float a,b;scanf(“%3.2f %4.2f”,&a,&b);printf(“%f %f”,a,b);
E: float a,b;scanf(“%f %f”,&a,&b);printf(“%f %f”,a,b);
F: float a,b;scanf(“%f %f”,&a,&b);printf(“a=%4.3f,b=%4.3f”,a,b);
G: int a,b;scanf(“%2d%2d”,&a,&b);printf(“a=%d,b=%d”,a,b);
H: int a,b;scanf(“%d,%d”,&a,&b);printf(“a=%2d,b=%2d”,a,b);
I: int a,b;scanf(“a=%d,b=%d”,&a,&b);printf(“a=%d,b=%d”,a,b);
答案: int a,b;scanf(“%d %f”,&a,&b);;
int a,b;scanf(“%d %d”,a,b);;
int a,b;scanf(“%d%dn”,&a,&b);printf(“%d %d”,a,b);;
float a,b;scanf(“%3.2f %4.2f”,&a,&b);printf(“%f %f”,a,b);
11、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=666,b=888;
printf(“%dn”,a,b);
return 0;
}
A: 666
B: 错误信息
C: 888
D: 666,888
答案: 666
12、单选题:
有以下语句段#include <stdio.h>
int main()
{
int n1=10,n2=20;
printf(“_________”,n1,n2);
return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
A: n1=%dnn2=%d
B: n1=%dn2=%dn
C: n1=%d,n2=%d
D: n1=%d n2=%dn
答案: n1=%dnn2=%d
13、单选题:
以下选项中合法的字符常量是
A: ’10’
B: “B”
C: 68
D: D
答案: ’10’
14、单选题:
写出下面程序的输出结果#include<stdio.h>
int main()
{
int x=6,y,z;
x*=18+1;
printf(“%d,”,x–);
x+=y=z=11;
printf(“%d”,x);
return 0;
}
A: 114,124
B: 113,124
C: 109,116
D: 110,116
答案: 114,124
15、单选题:
给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{
int a,b,sum;
scanf(“%d%*c%d”,&a,&b);
sum=a+b;
printf(“sum=%d”,sum);
return 0;
}
A: 57
B: 输出报错
C: 33
D: 输出一个随机数
答案: 57
16、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,s;
char op;
scanf(“%d %c%d”,&a,&op,&b);
s=a%b;
printf(“s=%d”,s);
return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
A: 0
B: 程序报错
C: 输出一个随机数
D: 3
答案: 0
17、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,c,d;
char op1,op2,op3;
int sum;
printf(“please input:a+b+c+dn”);
scanf(“%d%c%d%c%d%c%d”,&a,&op1,&b,&op2,&c,&op3,&d);
sum=a+b+c+d;
printf(“sum=%d”,sum);
return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
A: 7
B: 1
C: 3
D: 6
答案: 7
18、单选题:
在C语言中,字符型数据在内存中以( )形式存放
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: ASCII码
19、单选题:
以下程序的执行结果是#include <stdio.h>
int main()
{
int a = 5, b = 4, x, y;
x = 2 * a++;
y = –b * 2;
printf(“a=%d, x=%dn”, a, x);
printf(“b=%d, y=%dn”, b, y);
return 0;
}
A: a=6, x=10b=3, y=6
B: a=6, x=10b=3, y=8
C: a=6, x=12b=3, y=6
D: 以上均不对
答案: a=6, x=10b=3, y=6
20、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a;
int c=10;
float f=100.0;
double x;
a=f/=c*=(x=6.5);
printf(“%d,%d,%3.1f,%3.1fn”,a,c,f,x);
return 0;
}
A: 1,65,1.5,6.5
B: 1,65,1,6.5
C: 1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 1,65,1.5,6.5
21、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
char a,b;
int s;
printf(“please input a and b:n”);
a=getchar();
b=getchar();
s=a+b;
printf(“a=%c,b=%c”,a,b);
return 0;
}程序运行时从键盘输入:1<空格>2<回车>
A: a=1,b=
B: a=1,b=2
C: a= ,b=2
D: 输出乱码
答案: a=1,b=
22、单选题:
以下程序的输出结果是#include <stdio.h>
int main()
{
int a=1234;
printf(“%2dn”,a);
return 0;
}
A: 1234
B: 12
C: 34
D: 提示出错、无结果
答案: 1234
练兵区——单选题——不计入总分
1、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
float a = 1234.567,b = 55.32;
printf(“a = %4.2f, b = %5.1fn”, a,b);
return 0;
}
A: a = 1234.57, b = 55.3
B: a =1234, b =55
C: a = 1234.6, b = 5.32
D: a =1234.567, b = 55.32
答案: a = 1234.57, b = 55.3
2、单选题:
以下选项中合法的字符常量是
A: ’10’
B: “B”
C: 68
D: D
答案: ’10’
3、单选题:
给出程序的运行结果程序运行时从键盘输入:1<空格>2<回车>#include <stdio.h>
int main()
{
char a,b;
int s;
printf(“please input a and b:n”);
a=getchar();
b=getchar();
s=a+b;
printf(“a=%c,b=%c”,a,b);
return 0;
}
A: a=1,b=
B: a=1,b=2
C: a= ,b=2
D: 输出乱码
答案: a=1,b=
4、单选题:
有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf(“a=%d,b=%d”,&a,&b)
A: a=1,b=2
B: 1 2
C: 1,2
D: a=1 b=2
答案: a=1,b=2
5、单选题:
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf(“%c%c%d,%d”,&a,&b,&c,&d);
printf(“%c,%c,%c,%cn”,a,b,c,d);
return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
A: 6,5,A,B
B: 6,5,65,66
C: 6,5,6,5
D: 6,5,6,6
答案: 6,5,A,B
6、单选题:
给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{
int a,b,s;
scanf(“%2d%2d”,&a,&b);
s=a/b;
printf(“s=%d”,s);
return 0;
}
A: 1
B: 1.6875
C: 2
D: 0
答案: 1
7、单选题:
在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
A: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
8、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=666,b=888;
printf(“%dn”,a,b);
return 0;
}
A: 666
B: 错误信息
C: 888
D: 666,888
答案: 666
9、单选题:
在C语言中,字符型数据在内存中以( )形式存放
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: ASCII码
10、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a;
int c=10;
float f=100.0;
double x;
a=f/=c*=(x=6.5);
printf(“%d,%d,%3.1f,%3.1fn”,a,c,f,x);
return 0;
}
A: 1,65,1.5,6.5
B: 1,65,1,6.5
C: 1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 1,65,1.5,6.5
11、单选题:
以下程序的输出结果是#include <stdio.h>
int main()
{
int a=1234;
printf(“%2dn”,a);
return 0;
}
A: 1234
B: 12
C: 34
D: 提示出错、无结果
答案: 1234
12、单选题:
设有语句“char c=’72’;”,则变量c
A: 包含1个字符
B: 包含2个字符
C: 包含3个字符
D: 不合法
答案: 包含1个字符
13、单选题:
有以下语句段#include <stdio.h>
int main()
{
int n1=10,n2=20;
printf(“_________”,n1,n2);
return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
A: n1=%dnn2=%d
B: n1=%dn2=%dn
C: n1=%d,n2=%d
D: n1=%d n2=%dn
答案: n1=%dnn2=%d
14、单选题:
给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{
int a,b,sum;
scanf(“%d%*c%d”,&a,&b);
sum=a+b;
printf(“sum=%d”,sum);
return 0;
}
A: 57
B: 输出报错
C: 33
D: 输出一个随机数
答案: 57
15、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,s;
char op;
scanf(“%d %c%d”,&a,&op,&b);
s=a%b;
printf(“s=%d”,s);
return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
A: 0
B: 程序报错
C: 输出一个随机数
D: 3
答案: 0
16、单选题:
分析下列程序,写出程序运行结果#include <stdio.h>
int main()
{
char c1 = ‘a’, c2 = ‘b’, c3 = ‘c’;
printf(“a%cb%cc%cabcn”, c1, c2, c3);
return 0;
}
A: aabbccabc
B: acbcabc
C: aabcabc
D: acbbcabc
答案: aabbccabc
17、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
int a=2, c=5;
printf(“a = %%d, b = %%dn”, a, c);
return 0;
}
A: a = %d, b = %d
B: a = %2, b = %5
C: a = 2, b = 5
D: a = %%d, b = %%d
答案: a = %d, b = %d
18、单选题:
有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
{
char ch;
ch=getchar();
ch=ch+32;
printf(“%c”,ch);
return 0;
}
A: b
B: 98
C: 32
D: 66
答案: b
19、单选题:
在下列语句中存在错误的是
A: int a,b;scanf(“%d %f”,&a,&b);
B: int a,b;scanf(“%d %d”,a,b);
C: int a,b;scanf(“%d%dn”,&a,&b);printf(“%d %d”,a,b);
D: float a,b;scanf(“%3.2f %4.2f”,&a,&b);printf(“%f %f”,a,b);
E: float a,b;scanf(“%f %f”,&a,&b);printf(“%f %f”,a,b);
F: float a,b;scanf(“%f %f”,&a,&b);printf(“a=%4.3f,b=%4.3f”,a,b);
G: int a,b;scanf(“%2d%2d”,&a,&b);printf(“a=%d,b=%d”,a,b);
H: int a,b;scanf(“%d,%d”,&a,&b);printf(“a=%2d,b=%2d”,a,b);
I: int a,b;scanf(“a=%d,b=%d”,&a,&b);printf(“a=%d,b=%d”,a,b);
答案: int a,b;scanf(“%d %f”,&a,&b);;
int a,b;scanf(“%d %d”,a,b);;
int a,b;scanf(“%d%dn”,&a,&b);printf(“%d %d”,a,b);;
float a,b;scanf(“%3.2f %4.2f”,&a,&b);printf(“%f %f”,a,b);
20、单选题:
写出下面程序的输出结果#include<stdio.h>
int main()
{
int x=6,y,z;
x*=18+1;
printf(“%d,”,x–);
x+=y=z=11;
printf(“%d”,x);
return 0;
}
A: 114,124
B: 113,124
C: 109,116
D: 110,116
答案: 114,124
21、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,c,d;
char op1,op2,op3;
int sum;
printf(“please input:a+b+c+dn”);
scanf(“%d%c%d%c%d%c%d”,&a,&op1,&b,&op2,&c,&op3,&d);
sum=a+b+c+d;
printf(“sum=%d”,sum);
return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
A: 7
B: 1
C: 3
D: 6
答案: 7
22、单选题:
以下程序的执行结果是#include <stdio.h>
int main()
{
int a = 5, b = 4, x, y;
x = 2 * a++;
y = –b * 2;
printf(“a=%d, x=%dn”, a, x);
printf(“b=%d, y=%dn”, b, y);
return 0;
}
A: a=6, x=10b=3, y=6
B: a=6, x=10b=3, y=8
C: a=6, x=12b=3, y=6
D: 以上均不对
答案: a=6, x=10b=3, y=6
第4周——无处不在的抉择
判断ch是英文字母(大写或者小写)
1、判断题:
下面判断ch是大写或者小写英文字母的表达式是否正确?ch >= ‘A’ && ch <= ‘Z’ || ch >= ‘a’ && ch <= ‘z’
A: 正确
B: 错误
答案: 正确
条件运算符
1、单选题:
下列关于if-else语句的说法中哪个是正确的。
A: else总是和离它最近的if配对
B: else总是和前面离它最近的且还未和其他else匹配的在同一语句块内同一层次的if配对
C: else总是和前面离它最近的且位于花括号内的if配对
D: else可以和它前面的尚未与其他else匹配的任何一个if配对
答案: else总是和前面离它最近的且还未和其他else匹配的在同一语句块内同一层次的if配对
2、判断题:
条件运算符是C语言中唯一的一个三元运算符.
A: 正确
B: 错误
答案: 正确
浮点数的表数精度
1、单选题:
下列说法错误的是()。
A: 浮点数并非真正意义上的实数,只是其在某种范围内的近似。
B: 浮点数能精确表示的数字位数取决于这种类型的浮点数的有效数字位数。
C: 使用更多的位来存储阶码,将会扩大浮点数的表数精度。
D: 受浮点数表数精度的限制,因此对于浮点数不能直接比较其是否相等,应该比较其是否近似相等。
答案: 使用更多的位来存储阶码,将会扩大浮点数的表数精度。
程序测试
1、单选题:
下列说法错误的是()。
A: 软件测试的目的就是证明程序的正确性,即给定特定的输入,通过运行被测程序,检查程序的输出是否与预期结果一致,进而验证程序的正确性。
B: 白盒测试就是在完全了解程序的结构和处理过程的情况下,按照程序内部的逻辑测试程序,检验程序中的每条逻辑路径是否都能按预定要求正确工作。黑盒测试就是把系统看成一个黑盒子,不考虑程序内部的逻辑结构和处理过程,只根据需求规格说明书的要求,设计测试用例,检查程序的功能是否符合它的功能说明。
C: 在选择测试用例时,不仅要选取合理的输入数据,还要选取一些不合理的输入数据,以及某些极端的边界点或临界点等,对程序进行测试
D: 由于修复了旧的bug的同时,往往又会产生新的bug,因此往往还需要对所有出现过的bug重新测试一遍,看其是否会重新出现,并给确认代码修改后没有引入新的bug,即修改代码后需要进行回归测试。
答案: 软件测试的目的就是证明程序的正确性,即给定特定的输入,通过运行被测程序,检查程序的输出是否与预期结果一致,进而验证程序的正确性。
第4周测验
1、单选题:
程序代码如下:#include <stdio.h>
int main()
{
int a,b;
printf(“please input a and b:n”);
scanf(“%d%d”,&a,&b);
printf(“the output data is %dn”,a<b?b:a);
return 0;
}从键盘输入以下数据:2<回车>7<回车>则程序输出为
A: the output data is 7
B: the output data is 2
C: the output data is 1
D: the output data is 0
答案: the output data is 7
2、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{ int a,b,c;
a=10;
b=20;
c=(a%b<1)||(a/b>1);
printf(“%d,%d,%d”,a%b,a/b,c);
return 0;
}
A: 10,0,0
B: 10,1,0
C: 10,0,1
D: 10,1,1
答案: 10,0,0
3、单选题:
从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。
程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c;
float s, area;
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c && b+c>a && a+c>b)
{
s = 1/2 * (a + b + c);
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("area=%.2fn", area);
}
else
{
printf("It is not a trianglen");
}
return 0;
}
A: 第11行: s = 1/2 * (a + b + c);
B: 第9行: if (a+b>c && b+c>a && a+c>b)
C: 第12行: area = sqrt(s * (s – a) * (s – b) * (s – c));
D: 第8行: scanf(“%f,%f,%f”,&a,&b,&c);
答案: 第11行: s = 1/2 * (a + b + c);
4、单选题:
编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式: 操作数1 运算符op 操作数2然后,计算并输出表达式的值指定的运算符为: 加(+) 减(-) 乘(*) 除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
float data1, data2;
char op;
printf(“Please enter the expression:”);
scanf(“%f %c%f”, &data1, &op, &data2); /* %c前有一个空格 */
switch (op)
{
case ‘+’:
printf(“%f + %f = %fn”, data1, data2, data1 + data2);
break;
case ‘-‘:
printf(“%f – %f = %fn”, data1, data2, data1 – data2);
break;
case ‘*’:
printf(“%f * %f = %fn”, data1, data2, data1 * data2);
break;
case ‘/’:
printf(“%f/%f = %fn”, data1, data2,data1/data2);
break;
default:
printf(“Invalid operator!n”);
}
return 0;
}
A: 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf(“Division by zero!n”);else printf(“%d/%d = %dn”, data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6
B: default分支缺少break语句
C: 没有错误
D: 第20行语句有错误,改成:if (data2=0) printf(“Division by zero!n”);else printf(“%d/%d = %dn”, data1, data2, data1/data2);
答案: 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf(“Division by zero!n”);else printf(“%d/%d = %dn”, data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6
5、单选题:
若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
A: (x-y)<-10||!(y-x)>10
B: fabs(x-y)<10
C: x-y>-10 && x-y<10
D: (x-y)*(x-y)<100
答案: (x-y)<-10||!(y-x)>10
6、单选题:
下列复合语句中,不能实现两数交换的是
A: {
a=b;
b=a;
}
B: {
b = a * b;
a = b / a;
b = b / a;
}
C: {
t=a;
a=b;
b=t;
}
D: {
a = a + b;
b = a – b;
a = a – b;
}
答案: {
a=b;
b=a;
}
7、单选题:
写出下面程序的输出结果#include <stdio.h>
int main()
{
int x=1, y=0, a=0, b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++;
case 1: b++;
}
case 2: a++;
b++;
}
printf(“a=%d, b=%dn”, a, b) ;
return 0;
}
A: a=2, b=2
B: a=2, b=1
C: a=1, b=1
D: a=1, b=0
答案: a=2, b=2
8、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=5,b=4,c=3,d;
d=(a>b>c);
printf(“%dn”,d);
return 0;
}
A: 0
B: 1
C: 5
D: 4
E: 3
答案: 0
9、单选题:
执行以下程序后的输出结果为#include <stdio.h>
int main()
{
int a=1,b=0;
switch (a)
{
case 1:
switch (b)
{
case 0: printf(“**0**”);break;
case 1: printf(“**1**”);break;
}
case 2: printf(“**2**”);break;
}
return 0;
}
A: **0****2**
B: **0**
C: **0****1****2**
D: 有语法错误
答案: **0****2**
10、单选题:
下面程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=3,b=4,c=5,d=2;
if(a>b)
{
if(b>c)
{
printf(“%d”,d++ +1);
}
else
{
printf(“%d”,++d +1);
}
}
printf(“%dn”,d);
return 0;
}
A: 2
B: 3
C: 43
D: 44
答案: 2
11、单选题:
下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
int m;
printf(“Input m: “);
scanf(“%d”, &m); //输入一个整数
if (m > 0) //是否为正数
{
if (m % 2 == 0) //是正数,且能被2整除,则是正偶数
{
printf(“%d is a positive evenn”, m);
}
else //不能被2整除,则是正奇数
{
printf(“%d is a positive oddn”, m);
}
}
_______________ //判断是否为负数
{
_______________
{
printf(“%d is a negative evenn”, m); //是负偶数
}
else
{
printf(“%d is a negative oddn”, m); //是负奇数
}
}
else
{
printf(“%d is zero.It is an evenn”, m);
}
return 0;
}
A: 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B: 第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C: 第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D: 第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
12、单选题:
程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h>
int main()
{
char c;
printf(“Please input a character:”);
scanf(“%c”,&c);
if(c >=’A’&&c <= ‘Z’)
c =_______________;
printf(“%cn”,c);
return 0;
}
A: c+32
B: c+48
C: C+65
D: C+97
答案: c+32
13、单选题:
执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()
{
int k;
scanf(“%d”,&k);
switch(k)
{
case 1: printf(“%d”,k++);
case 2: printf(“%d”,k++);
case 3: printf(“%d”,k++);
break;
default: printf(“Full!”);
}
return 0;
}
A: 123
B: 1
C: 2
D: 3
答案: 123
14、单选题:
编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。
程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。
#include <stdio.h>
#include <math.h>
int main()
{
int x;
double y;
printf("Input x: ");
scanf("%d", &x); // 输入一个整数
if (x > 0)
{
y = exp(-x); //如果大于0,计算y=exp(-x)的值
}
_____________
{
y = 1; //x=0,则y=1
}
else
{
y = -exp(x); //x<0,则y=-exp(x)
}
printf("y=%fn", y);
return 0;
}
A: else if (x == 0)
B: else if (x = 0)
C: if (x == 0)
D: if (x = 0)
答案: else if (x == 0)
15、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf(“%d,%dn”,k,m);
return 0;
}
A: 1,0
B: 0,0
C: 0,1
D: 1,1
答案: 1,0
16、单选题:
以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPS 1e-6
int main()
{
float a, b, c, disc, p, q;
printf("Please enter the coefficients a,b,c:");
scanf("%f,%f,%f", &a, &b, &c);
_________________________________ /* a=0时,输出"不是二次方程" */
{
printf(“It is not a quadratic equation!n”);
exit(0); /* C标准库函数,用于终止整个程序的执行,强制返回操作系统 */
}
disc = b * b – 4 * a * c; /* 计算判别式 */
p = – b / (2 * a);
q = sqrt(fabs(disc)) / (2 * a);
if (fabs(disc) <= EPS) /* 判别式等于0时,输出两相等实根 */
{
printf(“x1 = x2 = %.2fn”, p);
}
else
{
if (disc > EPS) /* 判别式大于0时,输出两不等实根 */
{
printf(“x1 = %.2f, x2 = %.2fn”, p+q, p-q);
}
else /* 判别式小于0时,输出两共轭复根 */
{
printf(“x1 = %.2f+%.2fi, “, p, q);
printf(“x2 = %.2f-%.2fin”, p, q);
}
}
return 0;
}
A: if (fabs(a) <= EPS)
B: if (a <= EPS)
C: if (a=0)
D: if (a<= EPS || a>=-EPS)
答案: if (fabs(a) <= EPS)
17、单选题:
下列说法错误的是()。
A: case后的“常量表达式”的类型只能是整型。
B: 若case后面的语句省略不写,则表示它什么也不做。
C: switch语句中的break和default可有可无。
D: 每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E: 程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F: 若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不再合理区间内的非法数据。
G: 每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且改变case常量出现的次序,不影响程序的运行结果。
H: case后面的表达式不能是关系表达式和逻辑表达式,它不能起到判断表达式真假的作用。
答案: case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。
练兵区——单选题——不计入总分
1、单选题:
下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
int m;
printf(“Input m: “);
scanf(“%d”, &m); //输入一个整数
if (m > 0) //是否为正数
{
if (m % 2 == 0) //是正数,且能被2整除,则是正偶数
{
printf(“%d is a positive evenn”, m);
}
else //不能被2整除,则是正奇数
{
printf(“%d is a positive oddn”, m);
}
}
_______________ //判断是否为负数
{
_______________
{
printf(“%d is a negative evenn”, m); //是负偶数
}
else
{
printf(“%d is a negative oddn”, m); //是负奇数
}
}
else
{
printf(“%d is zero.It is an evenn”, m);
}
return 0;
}
A: 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B: 第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C: 第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D: 第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
2、单选题:
执行以下程序后的输出结果为#include <stdio.h>
int main()
{
int a=1,b=0;
switch (a)
{
case 1:
switch (b)
{
case 0: printf(“**0**”);break;
case 1: printf(“**1**”);break;
}
case 2: printf(“**2**”);break;
}
return 0;
}
A: **0****2**
B: **0**
C: **0****1****2**
D: 有语法错误
答案: **0****2**
3、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf(“%d,%dn”,k,m);
return 0;
}
A: 1,0
B: 0,0
C: 0,1
D: 1,1
答案: 1,0
4、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a,b,c;
a=10;
b=20;
c=(a%b<1)||(a/b>1);
printf(“%d,%d,%d”,a%b,a/b,c);
return 0;
}
A: 10,0,0
B: 10,1,0
C: 10,0,1
D: 10,1,1
答案: 10,0,0
5、单选题:
编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式: 操作数1 运算符op 操作数2然后,计算并输出表达式的值指定的运算符为: 加(+) 减(-) 乘(*) 除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
float data1, data2;
char op;
printf(“Please enter the expression:”);
scanf(“%f %c%f”, &data1, &op, &data2); /* %c前有一个空格 */
switch (op)
{
case ‘+’:
printf(“%f + %f = %fn”, data1, data2, data1 + data2);
break;
case ‘-‘:
printf(“%f – %f = %fn”, data1, data2, data1 – data2);
break;
case ‘*’:
printf(“%f * %f = %fn”, data1, data2, data1 * data2);
break;
case ‘/’:
printf(“%f/%f = %fn”, data1, data2,data1/data2);
break;
default:
printf(“Invalid operator!n”);
}
return 0;
}
A: 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf(“Division by zero!n”);else printf(“%d/%d = %dn”, data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6
B: default分支缺少break语句
C: 没有错误
D: 第20行语句有错误,改成:if (data2=0) printf(“Division by zero!n”);else printf(“%d/%d = %dn”, data1, data2, data1/data2);
答案: 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf(“Division by zero!n”);else printf(“%d/%d = %dn”, data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6
6、单选题:
下列复合语句中,不能实现两数交换的是
A: {
a=b;
b=a;
}
B: {
b = a * b;
a = b / a;
b = b / a;
}
C: {
t=a;
a=b;
b=t;
}
D: {
a = a + b;
b = a – b;
a = a – b;
}
答案: {
a=b;
b=a;
}
7、单选题:
写出下面程序的输出结果#include <stdio.h>
int main()
{
int x=1, y=0, a=0, b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++;
case 1: b++;
}
case 2: a++;
b++;
}
printf(“a=%d, b=%dn”, a, b) ;
return 0;
}
A: a=2, b=2
B: a=2, b=1
C: a=1, b=1
D: a=1, b=0
答案: a=2, b=2
8、单选题:
执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()
{
int k;
scanf(“%d”,&k);
switch(k)
{
case 1: printf(“%d”,k++);
case 2: printf(“%d”,k++);
case 3: printf(“%d”,k++);
break;
default: printf(“Full!”);
}
return 0;
}
A: 123
B: 1
C: 2
D: 3
答案: 123
9、单选题:
编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。
程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。
#include <stdio.h>
#include <math.h>
int main()
{
int x;
double y;
printf("Input x: ");
scanf("%d", &x); // 输入一个整数
if (x > 0)
{
y = exp(-x); //如果大于0,计算y=exp(-x)的值
}
_____________
{
y = 1; //x=0,则y=1
}
else
{
y = -exp(x); //x<0,则y=-exp(x)
}
printf("y=%fn", y);
return 0;
}
A: else if (x == 0)
B: else if (x = 0)
C: if (x == 0)
D: if (x = 0)
答案: else if (x == 0)
10、单选题:
以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPS 1e-6
int main()
{
float a, b, c, disc, p, q;
printf("Please enter the coefficients a,b,c:");
scanf("%f,%f,%f", &a, &b, &c);
_________________________________ /* a=0时,输出"不是二次方程" */
{
printf("It is not a quadratic equation!n");
exit(0); /* C标准库函数,用于终止整个程序的执行,强制返回操作系统 */
}
disc = b * b - 4 * a * c; /* 计算判别式 */
p = - b / (2 * a);
q = sqrt(fabs(disc)) / (2 * a);
if (fabs(disc) <= EPS) /* 判别式等于0时,输出两相等实根 */
{
printf("x1 = x2 = %.2fn", p);
}
else
{
if (disc > EPS) /* 判别式大于0时,输出两不等实根 */
{
printf("x1 = %.2f, x2 = %.2fn", p+q, p-q);
}
else /* 判别式小于0时,输出两共轭复根 */
{
printf("x1 = %.2f+%.2fi, ", p, q);
printf("x2 = %.2f-%.2fin", p, q);
}
}
return 0;
}
A: if (fabs(a) <= EPS)
B: if (a <= EPS)
C: if (a=0)
D: if (a<= EPS || a>=-EPS)
答案: if (fabs(a) <= EPS)
11、单选题:
从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。
程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c;
float s, area;
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c && b+c>a && a+c>b)
{
s = 1/2 * (a + b + c);
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("area=%.2fn", area);
}
else
{
printf("It is not a trianglen");
}
return 0;
}
A: 第11行: s = 1/2 * (a + b + c);
B: 第9行: if (a+b>c && b+c>a && a+c>b)
C: 第12行: area = sqrt(s * (s – a) * (s – b) * (s – c));
D: 第8行: scanf(“%f,%f,%f”,&a,&b,&c);
答案: 第11行: s = 1/2 * (a + b + c);
12、单选题:
若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
A: (x-y)<-10||!(y-x)>10
B: fabs(x-y)<10
C: x-y>-10 && x-y<10
D: (x-y)*(x-y)<100
答案: (x-y)<-10||!(y-x)>10
13、单选题:
程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h>
int main()
{
char c;
printf(“Please input a character:”);
scanf(“%c”,&c);
if(c >=’A’&&c <= ‘Z’)
c =_______________;
printf(“%cn”,c);
return 0;
}
A: c+32
B: c+48
C: c+65
D: c+97
答案: c+32
14、单选题:
程序代码如下:#include <stdio.h>
int main()
{
int a,b;
printf(“please input a and b:n”);
scanf(“%d%d”,&a,&b);
printf(“the output data is %dn”,a<b?b:a);
return 0;
}从键盘输入以下数据:2<回车>7<回车>则程序输出为
A: the output data is 7
B: the output data is 2
C: the output data is 1
D: the output data is 0
答案: the output data is 7
15、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=5,b=4,c=3,d;
d=(a>b>c);
printf(“%dn”,d);
return 0;
}
A: 0
B: 1
C: 5
D: 4
E: 3
答案: 0
16、单选题:
下面程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=3,b=4,c=5,d=2;
if(a>b)
{
if(b>c)
{
printf(“%d”,d++ +1);
}
else
{
printf(“%d”,++d +1);
}
}
printf(“%dn”,d);
return 0;
}
A: 2
B: 3
C: 43
D: 44
答案: 2
17、单选题:
下列说法错误的是()。
A: case后的“常量表达式”的类型只能是整型。
B: 若case后面的语句省略不写,则表示它什么也不做。
C: switch语句中的break和default可有可无。
D: 每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E: 程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F: 若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不再合理区间内的非法数据。
G: 每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且改变case常量出现的次序,不影响程序的运行结果。
H: case后面的表达式不能是关系表达式和逻辑表达式,它不能起到判断表达式真假的作用。
答案: case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。
赋值中的自动类型转换
1、单选题:
在赋值操作中,当赋值表达式左侧的变量的类型与右侧的表达式的类型不一致的时候,下面说法正确的是()。
A: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,会发生自动类型转换,赋值表达式的结果类型是赋值运算符左侧变量的类型。
B: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,赋值表达式的结果类型是赋值运算符右侧表达式的类型。
C: 在赋值操作中,只要赋值运算符左侧的变量的类型与右侧的表达式的类型不一致,就会发生数值溢出。
D: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,要么发生数值溢出,要么发生数值精度的损失。
答案: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,会发生自动类型转换,赋值表达式的结果类型是赋值运算符左侧变量的类型。
第5周——如影随形的循环
嵌套循环
1、单选题:
下列说法错误的是( )。
A: 执行嵌套循环时是先执行内层循环,后执行外层循环。
B: 嵌套循环的内层和外层循环的循环控制变量不能同名。
C: 嵌套循环的循环次数等于外层循环的循环次数与内层循环的循环次数之积。
D: 如果一个循环的循环体中又完整地包含了另一个循环,则称为嵌套循环。
答案: 执行嵌套循环时是先执行内层循环,后执行外层循环。
流程的转移控制
1、单选题:
下面程序段中的break语句是转移到哪里去执行()。for(…)
{
for(…)
{
switch(…)
{
case 1: …
break;
case 2:…
…
}
A: //code
}
B: //code
}
C: //code
A: 转到标号A所在的语句行与执行
B: 转到标号B所在的语句行与执行
C: 转到标号C所在的语句行与执行
D: 不进行流程转移,而是继续执行break后面的语句
答案: 转到标号A所在的语句行与执行
程序调试
1、单选题:
下列说法错误的是()。
A: 程序测试的目的就是验证程序的正确性。
B: 程序中常见的错误有三种:编译错误,链接错误,以及运行时错误。
C: 编译错误通常是由语法错误造成的。
D: 运行时错误是指在程序运行时发生的错误,运行时错误有两种:一种是导致程序的运行结果与预期的不一致,另一种是导致程序无法正常运行。
答案: 程序测试的目的就是验证程序的正确性。
第5周测验
1、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0: printf(“%d”,i);
case 2: printf(“%d”,i);
default: printf(“%d”,i);
}
return 0;
}
A: 000122
B: 022111
C: 021021
D: 012
答案: 000122
2、单选题:
若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是
A: for( i=1; i<=5; i++ )
{
p=1;
p*=i;
}
B: for(i=1,p=1;i<=5;i++) p*=i;
C: i=1;
p=1;
while ( i<=5 )
{
p*=i;
i++;
}
D: i=1;
p=1;
do {
p*=i;
i++;
} while ( i<=5 );
答案: for( i=1; i<=5; i++ )
{
p=1;
p*=i;
}
3、单选题:
以下程序执行后的输出结果是#include <stdio.h>
int main( )
{
int x=0,y=5,z=3;
while(z–>0 && ++x<5)
{
y=y-1;
}
printf(“%d,%d,%dn”,x,y,z);
return 0;
}
A: 3,2,-1
B: 3,2,0
C: 4,3,-1
D: 5,-2,-5
答案: 3,2,-1
4、单选题:
下面程序的输出是#include <stdio.h>
int main()
{
int y=9;
for( ; y>0; y–)
{
if(y%3==0)
{
printf(“%d”, –y);
continue;
}
}
return 0;
}
A: 852
B: 741
C: 963
D: 875421
答案: 852
5、单选题:
爱因斯坦数学题。爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。请问,这条阶梯共有多少阶?代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
int x = 1, find = 0;
while (__________)
{
if (______________________)
{
printf(“x = %dn”, x);
find = 1;
}
x++;
}
return 0;
}
A: 第5行: !find第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
B: 第5行: find==1第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
C: 第5行: find!=1第7行: x/2==1 && x/3==2 && x/5==4 && x/6==5 && x/7==0
D: 第5行: find!=0第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
答案: 第5行: !find第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
6、单选题:
鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include <stdio.h>
int main()
{
int x, y;
for (x=1; _______; x++)
{
____________;
if (____________)
{
printf(“x = %d, y = %d”, x, y);
}
}
return 0;
}
A: 第5行: x<=97第7行: y = 98 – x第8行: 2*x+4*y == 386
B: 第5行: x<97第7行: x = 98 – y第8行: 2*x+4*y == 386
C: 第5行: x<97第7行: y = 98 – x第8行: 2x+4y == 386
D: 第5行: x<=97第7行: x = 98 – y第8行: 2*x+4*y <= 386
答案: 第5行: x<=97第7行: y = 98 – x第8行: 2*x+4*y == 386
7、单选题:
以下能正确计算1×2×3×4…×10的程序段是
A: i=1;
s=1;
do {
s=s*i;
i++;
} while(i<=10);
B: do
{
i=1;
s=1;
s=s*i;
i++;
} while(i<=10);
C: do
{
i=1;
s=0;
s=s*i;
i++;
} while(i<=10);
D: i=1;
s=0;
do {
s=s*i;
i++;
} while(i<=10);
答案: i=1;
s=1;
do {
s=s*i;
i++;
} while(i<=10);
8、单选题:
以下程序执行后的输出结果是#include <stdio.h>
int main( )
{
int i,n=0;
for(i=2;i<5;i++)
{
do
{
if(i%3) continue;
n++;
}while(!i);
n++;
}
printf(“n=%dn”,n);
return 0;
}
A: n=4
B: n=5
C: n=2
D: n=3
答案: n=4
9、单选题:
以下正确的描述是
A: 只能在循环体内和switch语句体内使用break语句
B: continue语句的作用是结束整个循环的执行
C: 在循环体内使用break语句或continue语句的作用相同
D: continue语句可以写在循环体之外
答案: 只能在循环体内和switch语句体内使用break语句
10、单选题:
计算
直到最后一项的绝对值小于为止。
代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。
#include <stdio.h>
#include <math.h>
int main()
{
int n = 1;
float term = 1, sum = 0;
______________;
while (fabs(term) >= 1e-4) //判末项大小
{
term = sign / n; //求出累加项
sum = sum + term; //累加
________________; //改变项的符号
n++; //分母加1
}
printf("sum = %fn", sum);
return 0;
}
A: 第7行代码: float sign=1第13行代码: sign = -sign
B: 第7行代码: float sign= -1第13行代码: sign = -sign
C: 第7行代码: float sign=1第13行代码: term = -term
D: 第7行代码: float sign= -1第13行代码: term = -term
答案: 第7行代码: float sign=1第13行代码: sign = -sign
11、单选题:
设已定义i和k为int类型变量,则以下for循环语句for(i=0,k=-1;k=1; i++,k++)
printf( “* * * *n”);
A: 是无限循环
B: 判断循环结束的条件不合法
C: 循环一次也不执行
D: 循环只执行一次
答案: 是无限循环
12、单选题:
有以下程序,若从键盘给n输入的值是-3,则程序的输出结果是#include <stdio.h>
int main()
{
int s=0,a=1,n;
scanf(“%d”,&n);
do
{
s+=1;
a=a-2;
} while(a!=n);
printf(“%dn”,s);
return 0;
}
A: 2
B: -1
C: 3
D: 0
答案: 2
13、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int i=0,s=0;
for (;;)
{
if(i==3||i==5) continue;
if (i==6) break;
i++;
s+=i;
}
printf(“%dn”,s);
return 0;
}
A: 程序进入死循环
B: 10
C: 13
D: 21
答案: 程序进入死循环
14、单选题:
下面程序的功能是输出以下形式的图案,则在下划线处应填入的是 * *** ***** *******#include <stdio.h>
int main( )
{ int i,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=__________;j++)
{
printf(“*”);
}
printf(“n”);
}
return 0;
}
A: 2*i-1
B: 2*i+1
C: i+2
D: i
答案: 2*i-1
15、单选题:
程序执行后的输出结果是#include <stdio.h>
int main( )
{
int i,s=0;
for(i=1;i<10;i+=2)
{
s+=i+1;
}
printf(“%dn”,s);
return 0;
}
A: 自然数1~10中的偶数之和
B: 自然数1~9的累加和
C: 自然数1~10的累加和
D: 自然数1~9中的奇数之和
答案: 自然数1~10中的偶数之和
16、单选题:
以下程序的输出结果是#include <stdio.h>
int main()
{
int a, b;
for(a=1, b=1; a<=100; a++)
{
if(b>=10) break;
if (b%3==1)
{
b+=3;
continue;
}
}
printf(“%dn”,a);
return 0;
}
A: 4
B: 101
C: 6
D: 5
答案: 4
17、单选题:
三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配?代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include <stdio.h>
int main()
{
int i, j, k;
for (i=0; i<=3; i++)
{
for (j=0; j<=3; j++)
{
for (________________)
{
if (__________________)
{
printf(“i=%d, j=%d, k=%dn”, i, j, k);
}
}
}
}
return 0;
}
A: 第9行: k=0; k<=6; k++第11行: i + j + k == 8
B: 第9行: k=0; k<=6; k++第11行: i + j + k = 8
C: 第9行: k=0; k<=6; k++第11行: i + j + k <= 8
D: 第9行: k=0; k<6; k++第11行: i + j + k == 8
答案: 第9行: k=0; k<=6; k++第11行: i + j + k == 8
18、单选题:
我国古代的《张丘建算经》中有这样一道著名的百鸡“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只?代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include <stdio.h>
int main()
{
int x, y, z;
for (x=0; x<=20; x++)
{
for (y=0; _________; y++)
{
_______________;
if (_______________)
{
printf(“x=%d, y=%d, z=%dn”, x, y, z);
}
}
}
return 0;
}
A: 第7行: y<=33第9行: z = 100 – x – y第10行: 5*x + 3*y + z/3.0 == 100
B: 第7行: y<=33第9行: z + y + x = 100第10行: 5*x + 3*y + z/3.0 = 100
C: 第7行: y<=33第9行: z = 100 – x – y第10行: 5x + 3y + z/3.0 == 100
D: 第7行: y<33第9行: z = 100 – x – y第10行: 5*x + 3*y + z/3.0 <= 100
答案: 第7行: y<=33第9行: z = 100 – x – y第10行: 5*x + 3*y + z/3.0 == 100
19、单选题:
以下不是死循环的程序段是
A: int s=36;
while (s)
{
–s;
}
B: int i=100;
while(1)
{
i=i%100+1;
if (i>100) break;
}
C: for( ; ;);
D: unsigned int k=0;
do{
++k;
} while (k>=0);
答案: int s=36;
while (s)
{
–s;
}
20、单选题:
以下程序的功能是计算:s= 1+1/2+1/3+……+1/10,程序运行后输出结果错误,导致错误结果的程序行是#include <stdio.h>
int main()
{
int n;
float s;
s=1.0;
for(n=10;n>1;n–)
{
s=s+1/n;
}
printf(“%6.4fn”,s);
return 0;
}
A: s=s+1/n;
B: printf(“%6.4fn”,s);
C: for(n=10;n>1;n–)
D: s=1.0;
答案: s=s+1/n;
21、单选题:
以下程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是#include <stdio.h>
int main( )
{
char k;
int i;
for(i=1;i<3;i++)
{
scanf(“%c”,&k);
switch(k)
{
case ‘0’: printf(“anothern”);
case ‘1’: printf(“numbern”);
}
}
return 0;
}
A: anothernumbernumber
B: numbernumber
C: anothernumber
D: anothernumberanother
答案: anothernumbernumber
22、单选题:
华氏和摄氏温度的转换公式为C=5/9×(F-32)。式中,C表示摄氏温度,F表示华氏温度。要求:华氏0℉~300℉,每隔20℉输出一个华氏温度对应的摄氏温度值。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
int upper = 300, step = 20;
float fahr = 0, celsius;
while (fahr < upper)
{
_________________;
printf(“%4.0ft%6.1fn”, fahr, celsius);
________________ ;
}
return 0;
}
A: 第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr + step
B: 第8行代码: celsius = 5 / 9 * (fahr – 32)第10行代码: fahr = fahr + step
C: 第8行代码: celsius = 5.0 / (9 * (fahr – 32))第10行代码: fahr = fahr + step
D: 第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr – step
答案: 第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr + step
23、单选题:
利用泰勒级数:
计算e的近似值,当最后一项的绝对值小于时认为达到了精度要求,要求统计总共累加了多少项。
代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。
#include <math.h>
#include <stdio.h>
int main()
{
int n = 1, count = 1;
________________;
double term = 1.0;
while (fabs(term) >= 1e-5) //判末项大小
{
______________; //求出累加项
e = e + term; //累加
n++; // 计算下一项
_______________; //统计累加项数
}
printf("e = %f, count = %dn", e, count);
return 0;
}
A: 第6行代码: double e = 1.0第10行代码: term = term / n第13行代码: count++
B: 第6行代码: double e = 0第10行代码: term = term / n第13行代码: count++
C: 第6行代码: double e = 1.0第10行代码: term = term *n第13行代码: count++
D: 第6行代码: double e = 0第10行代码: term = term *n第13行代码: count++
答案: 第6行代码: double e = 1.0第10行代码: term = term / n第13行代码: count++
24、单选题:
打印所有的“水仙花数”。所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,因为
代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。
#include <stdio.h>
int main()
{
int i, j, k, n;
printf("result is:");
for (n=100; ________; n++)
{
i = n / 100; //分离出百位
j = ____________; //分离出十位
k = ____________; //分离出个位
if (_________________________)
{
printf("%dt ",n); //输出结果
}
}
printf("n");
return 0;
}
A: 第6行: n<1000第9行: (n – i * 100) / 10第10行:n % 10第11行:i*100+j*10+k == i*i*i+j*j*j+k*k*k
B: 第6行: n<1000第9行: (n – i * 100) / 10第10行:n % 10第11行:i*100+j*10+k = i*i*i+j*j*j+k*k*k
C: 第6行: n<=1000第9行: n % 100第10行:n % 10第11行:i*100+j*10+k == i*i*i+j*j*j+k*k*k
D: 第6行: n<1000第9行: (n – i * 100) / 10第10行:n /10第11行:i*100+j*10+k == i*i*i+j*j*j+k*k*k
答案: 第6行: n<1000第9行: (n – i * 100) / 10第10行:n % 10第11行:i*100+j*10+k == i*i*i+j*j*j+k*k*k
练兵区——单选题——不计入总分
1、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0: printf(“%d”,i);
case 2: printf(“%d”,i);
default: printf(“%d”,i);
}
return 0;
}
A: 000122
B: 022111
C: 021021
D: 012
答案: 000122
2、单选题:
若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是
A: for( i=1; i<=5; i++ ){ p=1; p*=i;}
B: for(i=1,p=1;i<=5;i++) p*=i;
C: i=1;
p=1;
while ( i<=5 )
{
p*=i;
i++;
}
D: i=1;
p=1;
do {
p*=i;
i++;
} while ( i<=5 );
答案: for( i=1; i<=5; i++ ){ p=1; p*=i;}
3、单选题:
下面程序的输出是#include <stdio.h>
int main()
{
int y=9;
for( ; y>0; y–)
{
if(y%3==0)
{
printf(“%d”, –y);
continue;
}
}
return 0;
}
A: 852
B: 741
C: 963
D: 875421
答案: 852
4、单选题:
爱因斯坦数学题。爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。请问,这条阶梯共有多少阶?代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
int x = 1, find = 0;
while (__________)
{
if (______________________)
{
printf(“x = %dn”, x);
find = 1;
}
x++;
}
return 0;
}
A: 第5行: !find第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
B: 第5行: find==1第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
C: 第5行: find!=1第7行: x/2==1 && x/3==2 && x/5==4 && x/6==5 && x/7==0
D: 第5行: find!=0第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
答案: 第5行: !find第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
5、单选题:
鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
int x, y;
for (x=1; _______; x++)
{
____________;
if (____________)
{
printf(“x = %d, y = %d”, x, y);
}
}
return 0;
}
A: 第5行: x<=97第7行: y = 98 – x第8行: 2*x+4*y == 386
B: 第5行: x<97第7行: x = 98 – y第8行: 2*x+4*y == 386
C: 第5行: x<97第7行: y = 98 – x第8行: 2x+4y == 386
D: 第5行: x<=97第7行: x = 98 – y第8行: 2*x+4*y <= 386
答案: 第5行: x<=97第7行: y = 98 – x第8行: 2*x+4*y == 386
6、单选题:
以下正确的描述是
A: 只能在循环体内和switch语句体内使用break语句
B: continue语句的作用是结束整个循环的执行
C: 在循环体内使用break语句或continue语句的作用相同
D: continue语句可以写在循环体之外
答案: 只能在循环体内和switch语句体内使用break语句
7、单选题:
华氏和摄氏温度的转换公式为C=5/9×(F-32)。式中,C表示摄氏温度,F表示华氏温度。要求:华氏0℉~300℉,每隔20℉输出一个华氏温度对应的摄氏温度值。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
int upper = 300, step = 20;
float fahr = 0, celsius;
while (fahr < upper)
{
_________________;
printf(“%4.0ft%6.1fn”, fahr, celsius);
________________ ;
}
return 0;
}
A: 第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr + step
B: 第8行代码: celsius = 5 / 9 * (fahr – 32)第10行代码: fahr = fahr + step
C: 第8行代码: celsius = 5.0 / (9 * (fahr – 32))第10行代码: fahr = fahr + step
D: 第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr – step
答案: 第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr + step
8、单选题:
利用泰勒级数:
计算e的近似值,当最后一项的绝对值小于时认为达到了精度要求,要求统计总共累加了多少项。
代码如下,按要求在空白处填写适当的表达式或语句,使程序完整
上方为免费预览版答案,如需购买完整答案,请点击下方红字:
为了方便下次阅读,建议在浏览器添加书签收藏本网页
添加书签方法:
1.电脑按键盘的Ctrl键+D键即可收藏本网页
2.手机浏览器可以添加书签收藏本网页
点击浏览器底部菜单-【添加书签】-收藏本网页
点击浏览器底部菜单-【书签/历史】-可查看本网页
获取更多慕课答案,欢迎在浏览器访问我们的网站:
http://mooc.mengmianren.com
注:请切换至英文输入法输入域名,如果没有成功进入网站,请输入完整域名:http://mooc.mengmianren.com/
我们的公众号
打开手机微信,扫一扫下方二维码,关注微信公众号:萌面人APP
本公众号可查看各种网课答案,还可免费查看大学教材答案
点击这里,可查看公众号功能介绍
APP下载
APP功能说明
1.可查看各种网课答案
点击【萌面人官网】,可查看知到智慧树,超星尔雅学习通,学堂在线等网课答案
点击【中国大学慕课答案】,可查看mooc慕课答案
2.可一键领取淘宝/天猫/京东/拼多多无门槛优惠券
如图所示,点击对应图标即可领取淘宝/天猫/京东/拼多多无门槛优惠券
票接滑凡涸囤洪钡彻手芒角哆