week 4 C语言概述
-
如果想和计算机直接交流,那么我们要用的语言是:
A.英语
B.C语言
C.汇编语言
D.机器语言 -
由于人的记忆力是有限的,所以人们又将机器指令翻译成了_______,这种人类可以理解的助记符。
A.自然语言
B.C语言
C.汇编语言
D.机器语言 -
由于汇编语言还是太过低级,不够抽象,于是人们又发明了_______,也就是我们这个课程要学习的内容。
A.python语言
B.C++语言
C.Java语言
D.C语言 -
什么是集成开发环境(IDE,Intergrated Development Environment)
A.用于提供程序开发环境的应用程序,一般包括代码编辑器,编译器,调试器和图形用户界面等工具
B.用于学习程序开发,自动生成代码示例的高级人工智能教学程序
C.用于网络学习,提供面向网络搜索引擎的自动编程工具,可以输入自然语言后自动提供备选程序
D.用于离线开发,提供局域网内多人协作完成代码作业,咨询助教的教学软件 -
一般计算机教学上,学到的最经典的第一个程序,一般都是:
A.输出hello world!
B.计算a+b
C.计算平均数
D.输出!dlrow olleh -
C语言中,整份代码的入口是
A.printf函数
B.main函数
C.#include<stdio.h>
D.return 0; -
通常一个函数结束的时候,会使用的语句是
A.printf
B.while
C.return
D.if -
C语言中,每一个代码语句的结束,都是要用什么符号来表示的?
A. ;
B. .
C. }
D. , -
(不定项) 想要在C语言代码中写一个句子“这里是注释”,来方便自己理解而不用计算机执行,那么就可以用
A./* 这里是注释 */
B.{这里是注释}
C.//这里是注释
D.(这里是注释) -
printf是一个函数,它是在____ 头文件中定义的
A.stdlib.h
B.math.h
C.string.h
D.stdio.h
week 5 变量、常量、存储与类型转换
-
在C语言中,各类型所占字节数与数值范围分别是:
-
(不定项) 在C语言中,以下哪些是有效的声明(declaration):
A.int _hello_word, sysu12;
B.char 12sysu, sysu;
C.double extern, sysu@er;
D.float sysu, SYSU;
-
(不定项) 在C语言中,以下哪些是有效的赋值(assignment)语句(statement):
int a, b, c, d, e;
A.a=b+c*d=e;
B.a=b=c*d+e;
C.a=30;
D.20=a; -
(不定项) 在C语言中,以下哪些整数常量(const)是合法的:
A.123
B.0xFFF
C.0b101
D.0678 -
(不定项) 在C语言中,以下哪些浮点常量(const)是合法的:
A. .1415
B. 3.
C. .e5
D. 1e-5 -
在C语言中,若有以下代码段,则变量(variable)c, d的值分别为:
#define a 1+2
const int b=1+2;
int c, d;
c=2*a*2;
d=2*b*2;
A.12; 12
B.12 ;6
C.6; 12
D.6; 6
- (不定项) 在C语言中,输出
\(^o^)/
的语句是:
A.puts("\(\^o^)/");
B.puts("\\(^o^)//");
C.puts("\(^o^)\/");
D.puts("\\(^o^)/");
- 以下代码的输出是:
int a=10, b=4;
double c, d;
c=(double)a/b;
d=(double)(a/b);
printf("%.2f %.2f", c, d);
A. 2.50 2.50
B. 2.50 2.00
C. 2.00 2.50
D. 2.00 2.00
- 以下代码的输出是:
int a=10, b=4;
double c=0.5, d, e;
d=a/b/c;
e=(double)a/b/c;
printf("%.2f %.2f", d, e);
A.4.00 5.00
B.4.00 4.00
C.5.00 4.00
D.5.00 5.00
-
在C语言中,以下哪个关键字可以用于引用其他文件中已定义的变量或函数:
A.auto
B.static
C.extern
D.register -
以下哪个不是C语言的基本数据类型?
A.int
B.float
C.string
D.double -
在C语言中,以下说法不正确的是:
A.变量定义时给变量分配存储空间
B.使用extern修饰的变量声明时,引用已有的变量,不分配存储空间
C.变量只能有一次定义
D.变量只能有一次声明 -
下面程序的运行结果为:
#include<stdio.h>
int main() {
const int a = 3;
a = 5;
printf("%d", a);
return 0;
}
A. 3
B. 5
C. 编译错误(Compile error)
D. 运行时错误(Runtime error)
-
在C语言中,关于数据类型char, short, int, long所占存储空间的大小关系,正确的是:
A.char <= short <= long <= int
B.short <= long <= char <= int
C.short <= char <= int <= long
D.char <= short <= int <= long -
在C语言中,下面程序的输出为:
#include<stdio.h>
int main() {
double pi = 3.14159;
printf("%.2f %.5f", pi, pi);
return 0;
}
A. 3.1 3.1415
B. 3.14 3.14159
C. 3.14159 3.14159
D. 3.14 3.14
-
在C语言中,输出一个long类型变量a,要求输出类型也是long,正确的是:
A.printf("%hd", a);\\短整数
B.printf("%d", a);\\整数
C.printf("%ld", a);\\双精度浮点数
D.printf("%lld", a);\\long long整数
-
在C语言中,有变量
int a; float b;
。输入这两个变量并输出他们的值,正确的语句是:
A.
scanf("%d%f", a, b);
printf("%d %f", a, b);
B.
scanf("%d%f", &a, &b);
printf("%d %f", &a, &b);
C.
scanf("%d%f", &a, &b);
printf("%d %f", a, b);
D.
scanf("%d%f", a, b);
printf("%d %f", &a, &b);
- (不定项) 在C语言中,以下哪些是合法的字符常量:
A.‘\n’
B.‘de’
C.‘c’
D.‘\t’
在 C语言中,字符常量有以下特点:
- 字符常量只能用单引号括起来,不能用双引号或其他括号.
- 字符常量只能是单个字符,不能是字符串。
- 字符可以是字符集中任意字符。
- (不定项) 在C语言中,以下哪些是合法的字符串常量:
A."bdhf"
B."cn"d"
C."a\\d"
D.""
字符串常量通常用双引号(" “)来表示,例如"hello world”。
在C语言中,字符串常量中可以包含任何字符,但有一些字符具有特殊含义,需要使用转义序列来表示:
- \n表示换行符
- \t表示制表符
- "表示双引号
- \\表示反斜杠
例如,下面是一个合法的字符串常量:
"hello\nworld"
这个字符串常量包含一个换行符,所以它会在输出时显示为两行。
需要注意的是,字符串常量在C语言中是以null字符(\0)结尾的,所以在定义字符串常量时不能包含null字符。
- (不定项) 在C语言中,输出一个单引号’,正确的语句是:
A.printf("'");
B.printf("\'");
C.printf(""");
D.printf("\"");
week 6 进制转换与二进制、浮点数的表示、内存与溢出
- (数与变量)阅读以下代码,判断哪个选项是正确输出:
#include <stdio.h>
int main() {
// Add two int.
unsigned int i,j;
i = 1;
j = 2;
// details - https://zh.cppreference.com/w/c/io/fprintf
printf("%u add %u equal %u\n",i,j,i+j);
return 0;
}
A. 1 add 2 equal 3
B. 1 + 2 equal 3
C. 1u add 2u equal 3u
D. 1.0 add 2.0 equal 3.0
- (进制转换)计算(122) 2 =(说明:十进制数122用二进制怎么表示)
A.1111011
B.1111010
C.1111110
D.1011111
短除法
-
(进制转换)计算(122) 3 =(说明:十进制数122用三进制怎么表示)
A. 11222
B. 11122
C. 11112
D. 10112 -
(进制转换)计算(1011011) 2 = (____) 8
A. 133
B. 132
C. 135
D. 129 -
(进制转换)计算(965) 10 = (____) 16
A. a12
B. 3b4
C. 3c5
D. 3c4 -
(进制转换)计算(1011101010) 2 = (____) 16
A. 2eb
B. 2ec
C. 2fa
D. 2ea -
(进制转换)阅读下方代码,判断输出结果:
#include <stdio.h>
int main() {
unsigned int i = 0xDAF;
unsigned int j = 06057;
printf("i in Decimal is %u\n", i);
printf("j in Decimal is %u\n", j);
return 0;
}
A.
i in Decimal is 3503
j in Decimal is 3119
B.
i in Decimal is 3503
j in Decimal is 06057
C.
i in Decimal is 3504
j in Decimal is 3119
D.
i in Decimal is 3503
j in Decimal is 13651
%u-无符号10进制整数
%X-16进制整数
%o-8进制整数
- (字节与字)阅读下方代码,判断输出:
#include <stdio.h>
#define UINT_MAX -1
typedef unsigned char byte;
typedef unsigned short word;
int main() {
byte b = UINT_MAX;
word w = UINT_MAX;
printf("Maxmum byte is %X , %u\n", b, b);
printf("Maxmum word is %X , %u\n", w, w);
return 0;
}
A.
Maxmum byte is FF , 256
Maxmum word is FFFF , 65535
B.
Maxmum byte is FF , 255
Maxmum word is FFFF , 65535
C.
Maxmum byte is FF , 255
Maxmum word is FFFF , 65536
D.
Maxmum byte is FF , 256
Maxmum word is FFFF , 65536
- (二进制补的计算)25 =(00011001) 2 的负数的表示是
A. 11100111
B. 11100110
C. 11110111
D. 11111110
全部取补码就好
-
(二进制补的计算)在定点二进制运算器中,减法运算一般通过______来实现。
A.原码运算的二进制减法器
B.补码运算的二进制减法器
C.补码运算的十进制加法器
D.补码运算的二进制加法器 -
(溢出)计算下方代码输出
unsigned char x = 0xff;
x++;
printf("%d\n",++x);
A. 257
B. 1
C. 0
D. -256
- (溢出)下方代码的输出为:
#include<stdio.h>
int main()
{
int a, b;
a = 2147483647;//2^31
a = a+1;
b = a+a;
printf("%d,%d\n",a,b);
}
A. -2147483648,0
B. 2147483648,4294967296
C. -2147483648,2147483647
D. 2147483648,0
- (溢出)下方代码的输出为:
#include <stdio.h>
int main()
{
char x= 0xff;
x = x + 1;
x = x - 1;
printf("%d\n", x);
return 0;
}
#include <stdio.h>
int main()
{
char x= 0xff;
x = x + 1;
x = x - 1;
printf("%d\n", x);
return 0;
}
A. 255
B. 0
C. -1
D. -256
-
(溢出)以下关于数据溢出说法不正确的是:
A.有符号整数运算发生溢出的话会发生未定义行为
B.所有溢出后的数会以2^(8*sizeof(type))作模运算
C.表达式赋值仅根据转换规则,不做任何检查
D.C语言对于int型数据的超范围处理,只有截断处理,即超出int位长度范围的高字节被自动截断。 -
(浮点数与格式化)下方代码的输出为:
#include<stdio.h>
int main(){
double a, b;
a = 1.0;
b = -3.123;
printf("%.2f %-3.2f",a,b);
return 0;
}
A. 1 -3.12
B. 1.00 -3.12
C. 1.00 3.12
D. 1 3.12
- (浮点数与格式化)下方代码的输出为:
#include <stdio.h>
int main()
{
printf("%010.3e\n", 3.12e5);
return 0;
}
A. 3.12e+05
B. 3.120e+05
C. 03.120e+05
D. 3.120e+005
-
(浮点数与格式化)以下说法正确的是
A.double在机内存占8个字节,有效数字最少为15位。
B.float在机内存占4个字节,精度8位。
C.double精度更高,因此编程时较少考虑float。
D.在C语言中,为提高运算速度,不同类型的变量在进行算术运算时,double类型的变量会无条件的转化为float类型。 -
(不定项)(内存)以下说法正确的是
A. 位是计算机内部数据储存的最小单位,一个二进制位只能表示0和1两种状态。
B. 字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成。
C. 计算机进行数据处理时,一次存取、加工和传送的数据长度称为字。一个字通常由一个或多个字节构成。
D. 在32位计算机种:1字=4字节=32位 -
(不定项)(内存)以下说法不正确的是:
A. 内存地址在32位计算机中用四位十六进制表示。
B. 计算机内存中的各个存储单元都是有序的,比特是计算机存储单元的最小存储单位。
C. 对于值相同的不同存储单元,内存地址也相同。
D. 数据类型是用来定义变量的,而这些变量需要存储、运算在内存中。 -
(不定项)(内存)以下说法正确的是:
A. 内存映射到物理空间一定连续,数据都按顺序处理。
B. 变量是内存中具有特定属性的一个存储单元,变量的地址用于寻找存储空间,存储空间存放变量的值,该值的类型由变量类型来定义。
C. 地址空间表示一个计算机实体所占用的内存大小。
D. 内存地址只是一个编号,代表一个内存空间。内存地址所执行的内存单元大小与内存地址位数无关。