moocC语言程序设计精髓_2答案(慕课2023完整答案)

行业知识2024-05-19 09:35:0731368抢沙发
moocC语言程序设计精髓_2答案(慕课2023完整答案)摘要: 第1周——初识C语言从认识变量和常量开始1.2 C 语言集成开发环境简介16分钟)随堂测验1、#include <stdio.h>是A、编译预处理指令B、语句C、函数D、程序入口1.2 C ...

moocC语言程序设计精髓_2答案(慕课2023完整答案)

第1周——初识C语言从认识变量和常量开始

1.2 C 语言集成开发环境简介(16分钟)随堂测验

1、语言程#include <stdio.h>是序设
A、编译预处理指令
B、计精语句
C、髓答函数
D、案慕案程序入口

1.2 C 语言集成开发环境简介(16分钟)随堂测验

1、课完codeblocks中运行到下一步(next line)的整答快捷键是
A、F7
B、语言程F5
C、序设F8
D、计精F11

1.4 变量的髓答表数范围和存储形式(29分钟)随堂测验

1、C语言用sizeof计算变量在内存中的案慕案字节数,其中sizeof是课完()
A、函数
B、整答运算符
C、语言程标识符
D、语句

1.5 宏常量与const常量(13分钟)随堂测验

1、宏定义是()
A、一条语句
B、一种编译预处理指令
C、一个标识符
D、一个变量

2、const常量有数据类型。

第1周测验

1、下列选项中,合法的C语言标识符是
A、_a1
B、width.x
C、#abc123
D、123abc
E、o*k
F、a?
G、a+b
H、%a
I、b!

2、以下不适合定义为用户标识符的是
A、int
B、a2
C、def2
D、_3com_
E、PI
F、Source
G、abc

3、#include <stdio.h>是
A、编译预处理指令
B、语句
C、函数
D、什么都不是
E、有语法错误

4、在windows下,程序编译链接后形成的可执行文件是
A、.obj文件
B、.exe文件
C、.o文件
D、.c文件
E、.h文件

5、程序编译链接后显示" 0 error,0 warning" 代表
A、程序中没有语法错误
B、程序是正确的
C、程序是不正确的
D、程序中可能存在语法错误
E、程序中有语义错误

6、用8位无符号二进制数能表示的最大十进制数为
A、255
B、127
C、128
D、256

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、不允许字符型和浮点型相加

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

11、程序的开发步骤中不包括
A、撰写文档
B、运行程序
C、编译链接
D、程序测试
E、编辑(编写代码)

12、下列说法中错误的是()
A、尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B、内存是按位编址的。
C、有符号和无符号整数的表数范围是相同的。
D、int型在所有的计算机上都占4个字节的存储单元。
E、编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F、内存是按字节编址的。
G、对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H、sizeof是编译时执行的运算符,不会导致额外的运行时间开销。

13、若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
A、1
B、1.4
C、2.0
D、2

14、在C语言中,字符型数据在内存中以字符的( )形式存放
A、ASCII码
B、国标码
C、BCD码
D、反码

15、以下符合C语言语法的实型常量是
A、5e-3
B、3.14.159e
C、1.2e0.5
D、e15

16、以下选项中可作为C语言合法整数的是
A、0xffa
B、10110B
C、038x
D、x2a2

17、下列说法正确的是
A、在C语言中,变量必须先定义后使用。
B、一条变量定义语句可定义多个同类型的变量。
C、C89规定所有变量必须在第一条可执行语句前定义。
D、const常量只能在定义时赋值。
E、实型常量的默认类型是double类型。
F、一条变量定义语句不可以同时定义多个变量。
G、不同类型的变量分配的存储空间大小都是相同的。
H、在C语言中,所有变量都必须在定义时进行初始化。
I、变量在没有初始化的时候,其值都是0
J、宏常量有数据类型,编译器在宏替换时可以进行类型检查。

18、下列变量定义中合法的是
A、long ao=0xfdaL;
B、short _a=1-.1e-1;
C、double b=1+5e2.5;
D、float 2_and=1-e-3;

练兵区——单选题——不计入总分

1、下列选项中,合法的C语言标识符是
A、_a1
B、width
C、#abc123
D、123abc
E、o*k
F、a?
G、a+b
H、%a
I、b!

2、以下不适合定义为用户标识符的是
A、float
B、main
C、define
D、_3com_
E、PI
F、Source
G、abc

3、#include <stdio.h>是
A、编译预处理指令
B、语句
C、函数
D、什么都不是
E、有语法错误

4、在windows下,程序编译链接后形成的可执行文件是
A、.obj文件
B、.exe文件
C、.o文件
D、.c文件
E、.h文件

5、程序编译链接后显示" 0 error,0 warning" 代表
A、程序中没有语法错误
B、程序是正确的
C、程序是不正确的
D、程序中可能存在语法错误
E、程序中有语义错误

6、用8位无符号二进制数能表示的最大十进制数为
A、255
B、127
C、128
D、256

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、不允许字符型和浮点型相加

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

11、程序的开发步骤中不包括
A、撰写文档
B、运行程序
C、编译链接
D、程序测试
E、编辑(编写代码)

12、下列说法中错误的是()
A、尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B、内存是按位编址的。
C、有符号和无符号整数的表数范围是相同的。
D、int型在所有的计算机上都占4个字节的存储单元。
E、编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F、内存是按字节编址的。
G、对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H、sizeof是编译时执行的运算符,不会导致额外的运行时间开销。

13、若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
A、1
B、1.4
C、2.0
D、2

14、在C语言中,字符型数据在内存中以字符的( )形式存放
A、ASCII码
B、国标码
C、BCD码
D、反码

15、以下符合C语言语法的实型常量是
A、5e-3
B、3.14.159e
C、1.2e0.5
D、e15

16、以下选项中可作为C语言合法整数的是
A、0xffa
B、10110B
C、038x
D、x2a2

17、下列说法正确的是
A、在C语言中,变量必须先定义后使用。
B、一条变量定义语句可定义多个同类型的变量。
C、C89规定所有变量必须在第一条可执行语句前定义。
D、const常量只能在定义时赋值。
E、实型常量的默认类型是double类型。
F、一条变量定义语句不可以同时定义多个变量。
G、不同类型的变量分配的存储空间大小都是相同的。
H、在C语言中,所有变量都必须在定义时进行初始化。
I、变量在没有初始化的时候,其值都是0
J、宏常量有数据类型,编译器在宏替换时可以进行类型检查。

18、下列变量定义中合法的是
A、long ao=0xfdaL;
B、short _a=1-.1e-1;
C、double b=1+5e2.5;
D、float 2_and=1-e-3;

练兵区——编程题——不计入总分

1、hello world!

2、在屏幕上输出多行信息

3、计算半圆弧长及半圆的面积。

4、计算长方体体积

第2周——数字间的那些事儿,做点计算哈

2.1 算术运算(20分钟)随堂测验

1、二元的算术运算符的结合性都是左结合。

2.2 赋值运算(15分钟)随堂测验

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;

2.4 自动类型转换(5分钟)随堂测验

1、通常情况下,不同类型数据的运算结果的类型是取值范围较大的那种类型。

2.5 强制类型转换(7分半)随堂测验

1、强制类型转换运算符就是强制改变一个变量原有的数据类型。

第2周测验

1、下列程序的输出结果是 #include <stdio.h> int main() { int a=7,b=5; printf("%d\n",b/a); return 0; }
A、0
B、5
C、1
D、0.7

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;),两种情况下表达式的最终运算结果一定是相同的。

3、以下程序的输出结果是: #include <stdio.h> int main() { int a=1, b=2; a=a+b; b=a-b; a=a-b; printf("%d,%d\n", a, b ); return 0; }
A、2,1
B、3,1
C、3,2
D、1,2

4、程序运行后的输出结果是#include <stdio.h> int main() { int m=3,n=4,x; x=m++; ++n; x=x+8/n; printf("%d,%d\n",x,m); return 0; }
A、4,4
B、4,3
C、5,4
D、5,3

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

6、以下非法的赋值语句是
A、++(i+1);
B、x=(j--);
C、n=++i;
D、j++;

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

8、以下程序的运行结果是 #include <stdio.h> int main() { int a = 12, b = 3; float x = 18.5, y = 4.5; printf("%f\n", (float)(a * b) / 2); printf("%d\n", (int)x %(int)y); return 0; }
A、18.000000 2
B、18 2
C、18 2.000000
D、18.000000 2.000000

9、设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
A、-12
B、3
C、0
D、9

10、在C语言中,要求操作数必须是整型的运算符是
A、%
B、/
C、*
D、+
E、-

11、程序运行后的输出结果是#include <stdio.h> int main() { char a='a'; printf("%c,",++a); printf("%c\n",a++); return 0; }
A、b,b
B、b,c
C、a,b
D、a,c

12、下面哪条语句可以生成0-9之间的随机数
A、magic=rand()%10;
B、magic=rand()%10+1;
C、magic=rand()/10;
D、magic=rand()/10+1;

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;

14、若以下选项中的变量已正确定义,则正确的赋值语句是
A、x3=x2=x1=0;
B、x1=26.8%3;
C、1+2=x2;
D、x4=1+2=3;

15、若有以下定义,则表达式“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

16、在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
A、#include <math.h>
B、#include <stdio.h>
C、#define <math.h>
D、#define <stdio.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;

18、在C语言中对下面的语句而言,哪个说法是错误的? int a, b;
A、变量a和b中的值都是0
B、变量a和b中都没有数值
C、变量a和b中的值都是未知的随机数
D、a和b都是整型变量
E、变量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

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++;

练兵区——单选题——不计入总分

1、设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
A、-12
B、3
C、0
D、9

2、在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
A、#include <math.h>
B、#include <stdio.h>
C、#define <math.h>
D、#define <stdio.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++;

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;),两种情况下表达式的最终运算结果一定是相同的。

5、以下程序的输出结果是:#include <stdio.h> int main() { int a=1, b=2; a=a+b; b=a-b; a=a-b; printf("%d,%d\n", a, b ); return 0; }
A、2,1
B、3,1
C、3,2
D、1,2

6、下面哪条语句可以生成0-9之间的随机数
A、magic=rand()%10;
B、magic=rand()%10+1;
C、magic=rand()/10;
D、magic=rand()/10+1;

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;

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

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;

10、在C语言中对下面的语句而言,哪个说法是错误的? int a, b;
A、变量a和b中的值都是0
B、变量a和b中都没有数值
C、变量a和b中的值都是未知的随机数
D、a和b都是整型变量
E、变量a和b占用的内存空间的大小是相同的

11、下列程序的输出结果是#include <stdio.h> int main() { int a=7,b=5; printf("%d\n",b/a); return 0; }
A、0
B、5
C、1
D、0.7

12、程序运行后的输出结果是#include <stdio.h> int main() { int m=3,n=4,x; x=m++; ++n; x=x+8/n; printf("%d,%d\n",x,m); return 0; }
A、4,4
B、4,3
C、5,4
D、5,3

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

14、以下非法的赋值语句是
A、++(i+1);
B、x=(j--);
C、n=++i;
D、j++;

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

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

17、以下程序的运行结果是#include <stdio.h> int main() { int a = 12, b = 3; float x = 18.5, y = 4.5; printf("%f\n", (float)(a * b) / 2); printf("%d\n", (int)x %(int)y); return 0; }
A、18.000000 2
B、18 2
C、18 2.000000
D、18.000000 2.000000

18、在C语言中,要求操作数必须是整型的运算符是
A、%
B、/
C、*
D、+
E、-

19、程序运行后的输出结果是 #include <stdio.h> int main() { char a='a'; printf("%c,",++a); printf("%c\n",a++); return 0; }
A、b,b
B、b,c
C、a,b
D、a,c

20、若以下选项中的变量已正确定义,则正确的赋值语句是
A、x3=x2=x1=0;
B、x1=26.8%3;
C、1+2=x2;
D、x4=1+2=3;

练兵区——编程题——不计入总分

1、输出逆序数

2、计算总分和平均分

3、存款利率计算器V1.0

4、数位拆分v1.0

5、求正/负余数

6、身高预测

7、求一元二次方程的根

第3周——从键盘中来,到键盘中去,开始输入和输出啦

3.1 数据的格式化屏幕输出(15分钟)随堂测验

1、在调用printf函数输出数据时,当数据的实际位宽大于printf函数中的指定位宽时,将按照数据的实际位宽输出数据。

3.3 单个字符的输入输出(15分半)随堂测验

1、单个字符既可以以c格式符也可以以d格式符输出,前者是输出这个字符,后者是输出这个字符的ASCII码值。

3.5 进阶:用%c输入数据存在的问题(含错误案例分析)(10分)随堂测验

1、用c格式符输入字符型数据的时候,为了避免将输入缓冲区中的空白字符(空格、回车换行符、Tab键)作为有效字符读入,可以在%c前面加一个空格。

第3周测验

1、分析下列程序,写出程序运行结果 #include <stdio.h> int main() { char c1 = 'a', c2 = 'b', c3 = 'c'; printf("a%cb%cc%cabc\n", c1, c2, c3); return 0; }
A、aabbccabc
B、acbcabc
C、aabcabc
D、acbbcabc

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

3、#include <stdio.h> int main() { int a,b,c,d; scanf("%c%c%d,%d",&a,&b,&c,&d); printf("%c,%c,%c,%c\n",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

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

5、以下程序的输出结果为 #include <stdio.h> int main() { float a = 1234.567,b = 55.32; printf("a = %4.2f, b = %5.1f\n", 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

6、以下程序的输出结果为 #include <stdio.h> int main() { int a=2, c=5; printf("a = %%d, b = %%d\n", a, c); return 0; }
A、a = %d, b = %d
B、a = %2, b = %5
C、a = 2, b = 5
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

8、在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
A、如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B、如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C、如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D、如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。

9、设有语句“char c='\72';”,则变量c
A、包含1个字符
B、包含2个字符
C、包含3个字符
D、不合法

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%d\n",&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);

11、程序运行后的输出结果是#include <stdio.h> int main() { int a=666,b=888; printf("%d\n",a,b); return 0; }
A、666
B、错误信息
C、888
D、666,888

12、有以下语句段#include <stdio.h> int main() { int n1=10,n2=20; printf("_________",n1,n2); return 0; }要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是 运行结果示例如下: n1=10 n2=20
A、n1=%d\nn2=%d
B、n1=%dn2=%d\n
C、n1=%d,n2=%d
D、n1=%d n2=%d\n

13、以下选项中合法的字符常量是
A、'\010'
B、"B"
C、68
D、D

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

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、输出一个随机数

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

17、给出程序的运行结果 #include <stdio.h> int main() { int a,b,c,d; char op1,op2,op3; int sum; printf("please input:a+b+c+d\n"); 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

18、在C语言中,字符型数据在内存中以( )形式存放
A、ASCII码
B、国标码
C、BCD码
D、反码

19、以下程序的执行结果是 #include <stdio.h> int main() { int a = 5, b = 4, x, y; x = 2 * a++; y = --b * 2; printf("a=%d, x=%d\n", a, x); printf("b=%d, y=%d\n", b, y); return 0; }
A、a=6, x=10 b=3, y=6
B、a=6, x=10 b=3, y=8
C、a=6, x=12 b=3, y=6
D、以上均不对

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.1f\n",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

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、输出乱码

22、以下程序的输出结果是 #include <stdio.h> int main() { int a=1234; printf("%2d\n",a); return 0; }
A、1234
B、12
C、34
D、提示出错、无结果

练兵区——单选题——不计入总分

1、以下程序的输出结果为 #include <stdio.h> int main() { float a = 1234.567,b = 55.32; printf("a = %4.2f, b = %5.1f\n", 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

2、以下选项中合法的字符常量是
A、'\010'
B、"B"
C、68
D、D

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、输出乱码

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

5、#include <stdio.h> int main() { int a,b,c,d; scanf("%c%c%d,%d",&a,&b,&c,&d); printf("%c,%c,%c,%c\n",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、给出程序的运行结果,程序运行时从键盘输入: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

7、在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
A、如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B、如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C、如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D、如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。

8、程序运行后的输出结果是#include <stdio.h> int main() { int a=666,b=888; printf("%d\n",a,b); return 0; }
A、666
B、错误信息
C、888
D、666,888

9、在C语言中,字符型数据在内存中以( )形式存放
A、ASCII码
B、国标码
C、BCD码
D、反码

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.1f\n",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

11、以下程序的输出结果是 #include <stdio.h> int main() { int a=1234; printf("%2d\n",a); return 0; }
A、1234
B、12
C、34
D、提示出错、无结果

12、设有语句“char c='\72';”,则变量c
A、包含1个字符
B、包含2个字符
C、包含3个字符
D、不合法

13、有以下语句段#include <stdio.h> int main() { int n1=10,n2=20; printf("_________",n1,n2); return 0; } 要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是 运行结果示例如下: n1=10 n2=20
A、n1=%d\nn2=%d
B、n1=%dn2=%d\n
C、n1=%d,n2=%d
D、n1=%d n2=%d\n

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、输出一个随机数

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

16、分析下列程序,写出程序运行结果#include <stdio.h> int main() { char c1 = 'a', c2 = 'b', c3 = 'c'; printf("a%cb%cc%cabc\n", c1, c2, c3); return 0; }
A、aabbccabc
B、acbcabc
C、aabcabc
D、acbbcabc

17、以下程序的输出结果为#include <stdio.h> int main() { int a=2, c=5; printf("a = %%d, b = %%d\n", a, c); return 0; }
A、a = %d, b = %d
B、a = %2, b = %5
C、a = 2, b = 5
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

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%d\n",&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);

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

21、给出程序的运行结果#include <stdio.h> int main() { int a,b,c,d; char op1,op2,op3; int sum; printf("please input:a+b+c+d\n"); 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

22、以下程序的执行结果是#include <stdio.h> int main() { int a = 5, b = 4, x, y; x = 2 * a++; y = --b * 2; printf("a=%d, x=%d\n", a, x); printf("b=%d, y=%d\n", b, y); return 0; }
A、a=6, x=10 b=3, y=6
B、a=6, x=10 b=3, y=8
C、a=6, x=12 b=3, y=6
D、以上均不对

第4周——无处不在的抉择

4.1 关系运算符和逻辑运算符(23分钟)随堂测验

1、下面判断ch是大写或者小写英文字母的表达式是否正确? ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z'

4.2 条件语句(14分钟)随堂测验

1、下列关于if-else语句的说法中哪个是正确的。
A、else总是和离它最近的if配对
B、else总是和前面离它最近的且还未和其他else匹配的在同一语句块内同一层次的if配对
C、else总是和前面离它最近的且位于花括号内的if配对
D、else可以和它前面的尚未与其他else匹配的任何一个if配对

2、条件运算符是C语言中唯一的一个三元运算符.

4.4 进阶:数值溢出和精度损失问题(34分半)随堂测验

1、在赋值操作中,当赋值表达式左侧的变量的类型与右侧的表达式的类型不一致的时候,下面说法正确的是()。
A、在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,会发生自动类型转换,赋值表达式的结果类型是赋值运算符左侧变量的类型。
B、在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,赋值表达式的结果类型是赋值运算符右侧表达式的类型。
C、在赋值操作中,只要赋值运算符左侧的变量的类型与右侧的表达式的类型不一致,就会发生数值溢出。
D、在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,要么发生数值溢出,要么发生数值精度的损失。

4.4 进阶:数值溢出和精度损失问题(34分半)随堂测验

1、下列说法错误的是()。
A、浮点数并非真正意义上的实数,只是其在某种范围内的近似。
B、浮点数能精确表示的数字位数取决于这种类型的浮点数的有效数字位数。
C、使用更多的位来存储阶码,将会扩大浮点数的表数精度。
D、受浮点数表数精度的限制,因此对于浮点数不能直接比较其是否相等,应该比较其是否近似相等。

4.5 进阶:软件测试与错误实例分析(20分半)随堂测验

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 %d\n",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

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

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=%.2f\n", area); } else { printf("It is not a triangle\n"); } 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);

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 = %f\n", data1, data2, data1 + data2); break; case '-': printf("%f - %f = %f\n", data1, data2, data1 - data2); break; case '*': printf("%f * %f = %f\n", data1, data2, data1 * data2); break; case '/': printf("%f/%f = %f\n", 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("%f/%f = %f\n", 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("%f/%f = %f\n", data1, data2, data1/data2);

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

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; }

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=%d\n", a, b) ; return 0; }
A、a=2, b=2
B、a=2, b=1
C、a=1, b=1
D、a=1, b=0

8、以下程序运行后的输出结果是 #include <stdio.h> int main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); return 0; }
A、0
B、1
C、5
D、4
E、3

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、有语法错误

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("%d\n",d); return 0; }
A、2
B、3
C、43
D、44

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 even\n", m); } else //不能被2整除,则是正奇数 { printf("%d is a positive odd\n", m); } } _______________ //判断是否为负数 { _______________ { printf("%d is a negative even\n", m); //是负偶数 } else { printf("%d is a negative odd\n", m); //是负奇数 } } else { printf("%d is zero.It is an even\n", 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)

12、程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。 #include<stdio.h> int main() { char c; printf("Please input a character:"); scanf("%c",&c); if(c >='A'&&c <= 'Z') c =_______________; printf("%c\n",c); return 0; }
A、c+32
B、c+48
C、C+65
D、C+97

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

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=%f\n", y); return 0; }
A、else if (x == 0)
B、else if (x = 0)
C、if (x == 0)
D、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,%d\n",k,m); return 0; }
A、1,0
B、0,0
C、0,1
D、1,1

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 = %.2f\n", p); } else { if (disc > EPS) /* 判别式大于0时,输出两不等实根 */ { printf("x1 = %.2f, x2 = %.2f\n", p+q, p-q); } else /* 判别式小于0时,输出两共轭复根 */ { printf("x1 = %.2f+%.2fi, ", p, q); printf("x2 = %.2f-%.2fi\n", p, q); } } return 0; }
A、if (fabs(a) <= EPS)
B、if (a <= EPS)
C、if (a=0)
D、if (a<= EPS || 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的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H、case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。

练兵区——单选题——不计入总分

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 even\n", m); } else //不能被2整除,则是正奇数 { printf("%d is a positive odd\n", m); } } _______________ //判断是否为负数 { _______________ { printf("%d is a negative even\n", m); //是负偶数 } else { printf("%d is a negative odd\n", m); //是负奇数 } } else { printf("%d is zero.It is an even\n", 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)

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、有语法错误

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,%d\n",k,m); return 0; }
A、1,0
B、0,0
C、0,1
D、1,1

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

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 = %f\n", data1, data2, data1 + data2); break; case '-': printf("%f - %f = %f\n", data1, data2, data1 - data2); break; case '*': printf("%f * %f = %f\n", data1, data2, data1 * data2); break; case '/': printf("%f/%f = %f\n", 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("%f/%f = %f\n", 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("%f/%f = %f\n", data1, data2, data1/data2);

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; }

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=%d\n", a, b) ; return 0; }
A、a=2, b=2
B、a=2, b=1
C、a=1, b=1
D、a=1, b=0

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

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=%f\n", y); return 0; }
A、else if (x == 0)
B、else if (x = 0)
C、if (x == 0)
D、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 = %.2f\n", p); } else { if (disc > EPS) /* 判别式大于0时,输出两不等实根 */ { printf("x1 = %.2f, x2 = %.2f\n", p+q, p-q); } else /* 判别式小于0时,输出两共轭复根 */ { printf("x1 = %.2f+%.2fi, ", p, q); printf("x2 = %.2f-%.2fi\n", p, q); } } return 0; }
A、if (fabs(a) <= EPS)
B、if (a <= EPS)
C、if (a=0)
D、if (a<= EPS || 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=%.2f\n", area); } else { printf("It is not a triangle\n"); } 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);

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

13、程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h> int main() { char c; printf("Please input a character:"); scanf("%c",&c); if(c >='A'&&c <= 'Z') c =_______________; printf("%c\n",c); return 0; }
A、c+32
B、c+48
C、c+65
D、c+97

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 %d\n",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

15、以下程序运行后的输出结果是#include <stdio.h> int main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); return 0; }
A、0
B、1
C、5
D、4
E、3

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("%d\n",d); return 0; }
A、2
B、3
C、43
D、44

17、下列说法错误的是()。
A、case后的“常量表达式”的类型只能是整型。
B、若case后面的语句省略不写,则表示它什么也不做。
C、switch语句中的break和default可有可无。
D、每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E、程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F、若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。
G、每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且在每个case的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H、case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。

第5周——周而复始的循环之道

5.1 计数控制的循环(31分钟)随堂测验

1、下列说法错误的是()。
A、逗号运算符也称为顺序求值运算符,由逗号运算符构成的表达式称为逗号表达式。
B、多数情况下,我们并不使用整个逗号表达式的值,主要用它来顺序求得到各个子表达式的值。
C、逗号表达式主要用在循环语句中同时对多个变量赋初值等。
D、在逗号表达式中,其第一个表达式的值就是整个逗号表达式的值。

5.3 条件控制的循环(32分钟)随堂测验

1、下列说法错误的是()。
A、函数rand()用于生成一个[0,RAND_MAX]间的随机数,RAND_MAX是不大于双字节整数的最大值32767的宏常量。使用函数rand()必须在程序开头加上这样一条编译预处理指令:#include <stdio.h>
B、magic = rand()%100 + 1用于生成[1,100]之间的随机数。
C、事实上,函数rand()产生的都是伪随机数。
D、函数srand()用于为rand()设置随机数种子,使rand()产生的随机数“随机化”。

5.4 嵌套循环(17分钟)随堂测验

1、下列说法错误的是( )。
A、执行嵌套循环时是先执行内层循环,后执行外层循环。
B、嵌套循环的内层和外层循环的循环控制变量不能同名。
C、嵌套循环的循环次数等于外层循环的循环次数与内层循环的循环次数之积。
D、如果一个循环的循环体中又完整地包含了另一个循环,则称为嵌套循环。

5.5 穷举(39分钟)随堂测验

1、下面程序段中的break语句是转移到哪里去执行()。for(...) { for(...) { switch(...) { case 1: ... break; case 2:... ... } A: //code } B: //code } C: //code
A、转到标号A所在的语句行与执行
B、转到标号B所在的语句行与执行
C、转到标号C所在的语句行与执行
D、不进行流程转移,而是继续执行break后面的语句

5.6 进阶:软件调试与错误实例分析(27分钟)随堂测验

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

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 );

3、以下程序执行后的输出结果是 #include <stdio.h> int main( ) { int x=0,y=5,z=3; while(z-->0 && ++x<5) { y=y-1; } printf("%d,%d,%d\n",x,y,z); return 0; }
A、3,2,-1
B、3,2,0
C、4,3,-1
D、5,-2,-5

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

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 = %d\n", 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

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

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);

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=%d\n",n); return 0; }
A、n=4
B、n=5
C、n=2
D、n=3

9、以下正确的描述是
A、只能在循环体内和switch语句体内使用break语句
B、continue语句的作用是结束整个循环的执行
C、在循环体内使用break语句或continue语句的作用相同
D、continue语句可以写在循环体之外

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 = %f\n", 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

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("%d\n",s); return 0; }
A、2
B、-1
C、3
D、0

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("%d\n",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

15、程序执行后的输出结果是 #include <stdio.h> int main( ) { int i,s=0; for(i=1;i<10;i+=2) { s+=i+1; } printf("%d\n",s); return 0; }
A、自然数1~10中的偶数之和
B、自然数1~9的累加和
C、自然数1~10的累加和
D、自然数1~9中的奇数之和

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("%d\n",a); return 0; }
A、4
B、101
C、6
D、5

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=%d\n", 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

18、我国古代的《张丘建算经》中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几

学习通C语言程序设计精髓_2

在学习C语言程序设计时,我们需要掌握以下几个方面的知识:

  1. 数据类型
  2. 运算符
  3. 控制语句
  4. 函数

数据类型

在C语言中,数据类型可以分为基本数据类型和派生数据类型。

基本数据类型

基本数据类型包括:

  • 整型(int)
  • 字符型(char)
  • 浮点型(float)
  • 双精度浮点型(double)
  • 空类型(void)

派生数据类型

派生数据类型包括:

  • 数组
  • 结构体
  • 共用体
  • 枚举类型

运算符

运算符是C语言中一种重要的表达式元素,用于描述变量、常量和表达式之间的关系。

算术运算符

算术运算符包括:

  • 加法运算符(+)
  • 减法运算符(-)
  • 乘法运算符(*)
  • 除法运算符(/)
  • 取余运算符(%)

关系运算符

关系运算符用于比较两个值的大小关系,包括:

  • 大于运算符(>)
  • 小于运算符(<)
  • 大于等于运算符(>=)
  • 小于等于运算符(<=)
  • 等于运算符(==)
  • 不等于运算符(!=)

逻辑运算符

逻辑运算符用于对布尔表达式进行计算,包括:

  • 逻辑与运算符(&&)
  • 逻辑或运算符(||)
  • 逻辑非运算符(!)

控制语句

C语言中的控制语句有:

  • if语句
  • switch语句
  • while语句
  • do-while语句
  • for语句
  • break语句
  • continue语句
  • goto语句

函数

函数是C语言中的一个重要组成部分,它可以封装重复使用的代码,并且可以接受参数和返回值。

函数的组成部分包括:

  • 函数头
  • 参数列表
  • 函数体
  • 返回语句

函数的声明和定义

函数的声明和定义可以分开进行,声明函数可以让其他函数在调用时知道该函数的存在,而定义函数则包括函数的实现代码。

递归函数

递归函数是指在函数的定义中调用函数本身的情况,它可以让代码更加简洁,但也需要注意避免死循环。

中国大学C语言程序设计精髓_2

随着计算机技术的迅速发展,C语言已经成为了一门非常重要的编程语言。在中国大学里,C语言程序设计也成为了计算机专业学生必修的课程之一。本文将介绍中国大学C语言程序设计的精髓。

1. C语言基础知识

C语言基础知识是学习C语言程序设计的基础,包括数据类型、变量、运算符、表达式、流程控制语句、函数等。在学习C语言程序设计之前,必须要先学好这些基础知识。

1.1 数据类型

C语言的数据类型包括基本数据类型和构造数据类型。其中,基本数据类型包括:整型、浮点型、字符型和布尔型。构造数据类型包括:数组、结构体和枚举。

1.2 变量

C语言中的变量是指在程序运行时可以改变数值的存储空间。变量的命名规则为:由字母、数字和下划线组成,但是不能以数字开头。

1.3 运算符

C语言中的运算符包括算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符等。这些运算符对于程序设计非常重要。

1.4 表达式

表达式是由运算符和操作数组成的有意义的组合。C语言中的表达式包括算术表达式、关系表达式、逻辑表达式等。

1.5 流程控制语句

流程控制语句是C语言中的重要语法结构,包括条件语句、循环语句和跳转语句。这些语句可以控制程序的执行顺序。

1.6 函数

函数是C语言中的重要组成部分,可以将一个大的问题分解成若干个小的问题,每个小问题由一个函数解决。函数可以提高程序的可读性和可维护性。

2. C语言程序设计技巧

除了掌握好C语言的基础知识外,还需要掌握一些C语言程序设计技巧。

2.1 数组

数组是C语言中非常常用的数据结构,可以用于存储一组相同类型的数据。在定义数组时,可以通过数组名和下标访问数组中的元素。

2.2 字符串

字符串是由一串字符组成的。在C语言中,字符串以‘\\0’结束。可以使用字符串库函数进行字符串的操作。

2.3 指针

指针是C语言中比较难理解的概念之一,但是指针在C语言程序设计中非常重要。指针变量可以存储一个变量的地址,可以使用指针变量访问该变量。

2.4 结构体

结构体是C语言中比较高级的数据类型,可以将不同类型的数据组合成一个整体。结构体可以用于定义自己的数据类型。

2.5 文件操作

文件操作是C语言程序设计中非常重要的一部分。可以使用文件操作函数对文件进行操作,如打开、读取、写入、关闭等。

3. C语言程序设计实例

为了更好地学习C语言程序设计,我们可以通过实例进行练习。下面是一些C语言程序设计实例。

3.1 求最大公约数

#include <stdio.h>int main(){     int a,b,c,i;    scanf(\d%d\a,&b);    if(a=1;i--)    if(a%i==0&&b%i==0)break;    printf(\d\i);    return 0;}

3.2 冒泡排序

#include <stdio.h>int main(){     int i,j,t,a[10];    for(i=0;i<10;i++)    scanf(\d\a[i]);    for(i=0;i<9;i++)    for(j=0;j<9-i;j++)    if(a[j]>a[j+1])    {         t=a[j];a[j]=a[j+1];a[j+1]=t;    }    for(i=0;i<10;i++)    printf(\d\a[i]);    return 0;}

3.3 计算阶乘

#include <stdio.h>int main(){     int i,n,s=1;    scanf(\d\n);    for(i=1;i<=n;i++)    s=s*i;    printf(\d\s);    return 0;}

4. 总结

本文介绍了中国大学C语言程序设计的精髓,包括C语言基础知识、C语言程序设计技巧和C语言程序设计实例。通过学习本文内容,可以对C语言程序设计有更深入的了解。

文章版权及转载声明

本文地址:http://www.zzxhsh.org/46d799687.html发布于 2024-05-19 09:35:07
文章转载或复制请以超链接形式并注明出处五煦查题

评论列表 (暂无评论,44人围观)参与讨论