程序设计(C)作业一
1. [endif]C语言程序的执行,总是起始于( )。
A.程序中的第一条可执行语句
B.程序中的第一个函数
C.main函数
D.包含文件中的第一个函数
2. [endif]以下叙述不正确的是( )。
A.一个C源程序必须包含一个main函数
B.一个C源程序可由一个或多个函数组成
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
3. [endif]一个C语言程序是由( )。
A.一个主程序和若干个子程序组成 B.若干函数组成
C.若干过程组成 D.若干子程序组成
4. [endif]C语言程序能够在不同的操作系统下运行,这说明C语言具有很好的( )。
A.适应性 B.移植性
C.兼容性 D.操作性
5. [endif]C语言规定,在一个源程序中,main函数的位置( )。
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
6. [endif]下列说法中正确的是( )。
A.C语言程序书写时,不区分大小写字母
B.C语言程序书写时,一行只能写一个语句
C.C语言程序书写时,一个语句可分成几行书写
D.C语言程序书写时每行必须有行号
7. [endif]下面对C语言特点,不正确描述的是( )。
A.C语言兼有高级语言和低级语言的双重特点,执行效率高
B.C语言既可以用来编写应用程序,又可以用来编写系统软件
C.C语言的可移植性较差
D.C语言是一种结构化模块化程序设计语言
8. [endif]C语言程序的注释是( )。
A.由“/*”开头,“*/”结尾
B.由“/*”开头,“/*”结尾
C.由“//”开头
D.由“*/”或“//”开头
[if !supportLists]9. [endif]C语言程序的语句都是以( )结尾。
A.“.” B.“;” C.“,” D.都不是
[if !supportLists]10. [endif]标准C语言程序的文件名的后缀为( )。
A..c B..cpp C..obj D..exe
[if !supportLists]11. [endif]C语言程序经过编译以后生成的文件名的后缀为( )。
A..c B..obj C..exe D..cpp
[if !supportLists]12. [endif]C语言程序经过链接以后生成的文件名的后缀为( )。
A..c B..obj C..exe D..cpp
[if !supportLists]13. [endif]C语言编译程序的首要工作是( )。
A.检查C语言程序的语法错误
B.检查C语言程序的逻辑错误
C.检查程序的完整性
D.生成目标文件
[if !supportLists]14. [endif]下面四个选项中,均是不合法的用户标识符的选项是( )。
A.A P_0 do B.float la0 _A
C.b–a sizeof int D._123 temp int
[if !supportLists]15. [endif]下面四个选项中,均是合法整型常量的选项是( )。
A.160 –0xffff 011 B.–0xcdf 01a 0xe
C.–01 986,012 0668 D.–0x48a 2e5 0x
[if !supportLists]16. [endif]下面四个选项中,均是不合法的浮点数的选项是( )。
A.160. 0.12 e3 B.123 2e4.2 .e5
C.–.18 123e4 0.0 D.–e3 .234 1e3
[if !supportLists]17. [endif]以下不合法的字符常量是( )
A. ‘\018’ B. ‘\’’’ C. ‘\\’ D. ‘\xcc’
[if !supportLists]18. [endif]下面四个选项中,均是正确的数值常量或字符常量的选项是( )。
A.0.0 0f 8.9e '&' B."a" 3.9e–2.5 1e1 '\"'
C.'3' 011 0xff00 0a D.+001 0xabcd 2e2 50.
[if !supportLists]19. [endif]若有说明语句:char c = '\72';则变量c( )。
A.包含1个字符 B.包含2个字符
C.包含3个字符 D.说明不合法,c的值不确定
[if !supportLists]20. [endif]若有定义:int a = 7; float x = 2.5, y = 4.7; 则表达式x + a % 3 * (int)(x + y) % 2 / 4的值是( )。
A.2.500000 B.2.750000 C.3.500000 D.0.000000
[if !supportLists]21. [endif]设变量a是整型,f是实型,i是双精度型,则表达式
10 + 'a' + i * f值的数据类型为( )。
A.int B.float C.double D.不确定
[if !supportLists]22. [endif]在C语言中,要求运算数必须是整型的运算符是( )。
A./ B.++ C.!= D.%
[if !supportLists]23. [endif]若变量已正确定义并赋值,下面符合C语言语法的表达式是( )。
A.a:=b+1 B.a=b=c+2
C.int 18.5%3 D.a=a+7=c+b
[if !supportLists]24. [endif]若变量a、i已正确定义,且i已正确赋值,则合法的语句是( )。
A.a==1 B.++i; C.a=a++=5; D.a=int(i);
[if !supportLists]25. [endif]下面正确的字符常量是( )。
A.”c” B.’\\” C.’W’ D.”
[if !supportLists]26. [endif]假设变量a,b均为整型,则表达式 (a=2, b=5, b++, a+b) 的值是( )。
A.7 B.8 C.6 D.2
[if !supportLists]27. [endif]假设变量x,y均为double型,则表达式 x=2, y=x+3/2 的值是( )。
A.3.500000 B.3 C.2.000000 D.3.000000
[if !supportLists]28. [endif]判断char型变量ch是否为大写字母的正确表达式是( )。
A.‘A’<=ch<=‘Z’
B. (ch>=‘A’)&(ch<=‘Z’)
C. (ch>=‘A’)&&(ch<=‘Z’)
D. (‘A’<= ch)AND(‘Z’>= ch)
[if !supportLists]29. [endif]选出正确的输入格式()。
int a; float b; char c;
scanf(“a = %d,b = %f,c = %c”,&a ,&b ,&c );
A. 1,2.0,n B. a = 1,b = 2.0,c = n
C. 1 2.0 n D. 12.0n
[if !supportLists]30. [endif]已知函数abc的定义为:void abc( ) {……} 则函数中void的含义是( )
[if !supportLists]A. [endif]执行函数abc 后,函数没有返回值
[if !supportLists]B. [endif]执行函数abc 后,函数不再返回
[if !supportLists]C. [endif]执行函数abc 后,可以返回任意类型
[if !supportLists]D. [endif]以上答案都不对
参考答案:
CDBBC CCABA BCACA BADAA CDBBC BDCBA
第2次作业指南
1. 在C 语言中,复合语句要用一对()括起来。
A. 方括号 B. 圆括号 C. 大括号 D. 尖括号
[提示]参考讲稿3.1.1-4
2. C 语言中,下面哪项是不合法的标识符?()
A. user B. switch C. _345 D. Abc
[提示]参考讲稿2.1.1
3. 以下说法中正确的是()
A. C 语言比其他语言高级
B. C 语言不用编译就能被计算机执行
C. C 语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D. C 语言出现的最晚,具有其他语言的一切优点
[提示]这个留给自己发挥吧,你觉得不用翻书考证就能看出来的就是答案啦
4. 若变量x、y 已正确定义并赋值,以下符合C 语言语法规则的语句是()
A. ++x, y = x--;
B. x + 1 = y;
C. x = x + 10 = x + y;
D. double(x)/10
[提示]自己编个小程序,包含上述语句,然后编译一下,编译器报错的地方就是不对的。以后涉及程序、程序段、语句、表达式的题目都可以这样做。
5. 下列程序的输出结果为()
void main()
{
int x, y, z;
x = y = 1;
z = x++, y++, ++y;
printf(“%d, %d, %d\n”, x, y, z);
}
[if !supportLists]A. [endif]2, 3, 3 B. 2, 3, 2 C. 2, 3, 1 D. 2, 2, 1
[提示]这个不用提示吧,上机运行一下就知道了。程序设计课要动手,干看是学不会的哟。
6. 数值029 是一个()
A. 八进制数 B. 十六进制 C. 十进制 D. 非法数
[提示]参考讲稿2.2.2
7. 逻辑运算符两侧运算对象的数据类型()
A. 只能是0 或1 B. 只能是0 或非0 正数
C. 可以是整型或字符型数据 D. 可以是任何类型的数据
[提示]自己编个小程序,写几个逻辑表达式,将C语言中所有的数据类型都放到逻辑表达式中试一试。
8. 对于int a, 表达式1 <= a <= 5 的值是()
A. 0 B. 1 C. 不定 D. 表达式语法有误
[提示]自己编个小程序,……
9. 执行下列语句段后x 的值为()
int a = 14, b = 15, x;
char c = ‘A’;
x = (a && b) && (c < ‘a’)
[if !supportLists]A. [endif]TRUE B. FALSE C. 0 D. 1
[提示]自己编个小程序,包含上述程序段,然后在debug中观察一下x的值。如果不会用debug,请看3月5日的课程,老师有很多演示。
10、x, y, z 被定义为int 型变量,若从键盘为其输入数据,则正确的输入语句是()
A. input x, y, z
B. scanf(“%d%d%d”, &x, &y, &z);
C. scanf(“%d%d%d”, x, y, z);
D. read(“%d%d%d”, &x, &y, &z);
提示:此题考察格式化输入函数scanf 的用法。
11、若w=1, x = 2, y=3, z = 4 ,则条件表达式w < x ? w: y < z ? y : z 的值是()
A. 1 B. 2 C. 3 D. 4
提示:此题考察条件运算符的结合性。
12、给定如下程序
#include
void main()
{
char c1 = ‘A’, c2 = ‘a’;
printf(“%c\n”, (c1, c2));
}
则以下叙述正确的是()
A. 程序输出大写字母A B. 程序输出小写字母a
C. 格式说明符不足,编译出错 D. 程序编译通过,但运行时出错
提示:此题考察对标准输出函数和逗号运算符的理解。
13、下列程序的输出结果是()
#include
void main()
{
int a = 2, b = 3, c = 0, d;
d = ! a && !b || !c;
printf(“%d\n”, d);
}
A. 1 B. 0 C. 编译出错 D. -1
提示:此题考察逻辑运算符的优先级。
14、下列程序的输出结果是()
#include
void main()
{
int a = 55, b = 50, c = 60, d;
d = a > 20 ? b : c;
switch(d) {
case 40:printf(“%d”, a);
case 50: printf(“%d”, b);
case 60: printf(“%d”, c);
default: printf(“$\n”);
}
}
A. 50, 60 B. 50, $ C. 60, $ D. 50, 60, $
提示:此题考察switch-case 结构跳转规律。
15、给定如下程序段,请选择描述正确的说法()
int i = 9;
while(i = 0) i--;
A. while 循环执行9 次 B. 循环体语句执行一次
C. 循环体语句一次也不执行 D. 循环是无限循环
提示:此题考察循环结构,特别是循环条件的判断。
16、设n 为整型变量,则for(n = 10; n >= 0; n--) 循环的次数为()
A. 9 B. 10 C. 11 D. 12
提示:此题考察对for 循环中三个表达式的理解。
17、对表达式for( 表达式1; ; 表达式3)可以理解为()
A. for(表达式1; 0; 表达式3)
B. for(表达式1; 1; 表达式3)
C. for(表达式1; 表达式1; 表达式3)
D. for(表达式1; 表达式3; 表达式3)
提示:此题考察对for 循环中三个表达式的理解。
18、以下能正确定义一维数组的选项是()
A. int a[5] = {0, 1, 2, 3, 4, 5}; B. char a[] = {0, 1, 2, 3}
C. char a = {‘A’, ‘B’, ‘D’} D. int a[5] = “0123”;
提示:此题考察一维数组初始化的规定。
19. 已有定义int x[3][2],以下能正确引用数组元素的选项是()
A. x[2][2] B. x[1][2] C. x[2][1] D. x[0][2]
提示:此题考察数组下标的合法取值范围。
20. 有以下语句,int x; char c[10]; 则正确的输入语句是()
A. scanf(“%d%s”, x, &c); B. scanf(“%d%s”, &x, &c);
C. scanf(“%d%s”, x, c); D. scanf(“%d%s”, &x, c);
提示:此题考察标准输入函数scanf 对普通变量和数组变量的输入约定。
参考答案:
CBCAC DCBDB ABADC CBACD
第3次作业答案(红字为答案)
1. 下列叙述中错误的是( )
A. 对于double 类型数组,不可直接用数组名对数组进行整体输入或输出
B. 数组名代表数组所占存储区的首地址,其值不可变
C. 在程序执行过程中,当数组元素下标超出定义的下标范围时,系统将给出“下标”越界的错误提示
D. 可以通过赋初值的方式确定数组元素个数
提示:请从数组下标的合法取值范围来考虑。
2. 已有定义char a[] = “xyz”,b[]={‘x’, ‘y’, ‘z’} ,以下叙述正确的是( )
A. 数组a 和b 的长度相同 B. 数组a 的长度小于数组b 的长度
C. 数组a 的长度大于数组b 的长度 D. 上述说法均不正确
提示:此题考察字符数组长度和字符串长度之间的关系。
3. 以下能正确定义一维数组的选项是( )
A. int num[]; B. #define N 100 int num[N]
C. int num[0..100]; D. int N = 100; int num[N];
提示:此题考察一维数组的维数界定问题。
4. 下列程序的输出结果是( )
#include
void main()
{
char a[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘\0’};
int i, j;
i = sizeof(a); j = strlen(a);
printf(“%d, %d\n”, i, j);
}
A. 9,9 B. 8, 9 C. 1, 8 D. 9,8
提示:此题考察字符数组长度和字符串长度之间的关系。
5. 以下不能正确定义二维数组的选项是( )
A. int a[2][] = {{1, 2}, {3, 4}}; B. int a[][2] = {1, 2, 3, 4};
C. int a[2][2] = {{1}, {2}}; D. int a[2][2] = {{1}, 2, 3};
提示:此题考察二维数组初始化的规定。
6、C 语言规定,若未对函数返回类型加以说明,则函数的隐含类型为( )
A. void B. double C. int D. char
分析:教材中有答案,但我们不推荐大家在编程时省略函数返回类型。
7、若已定义的函数有返回值,则以下关于该函数调用的叙述错误的是( )
A. 函数调用可以作为独立语句存在
B. 函数调用可以作为一个函数的实参
C. 函数调用可以出现在表达式中
D. 函数调用可以作为左值而被赋值
分析:基本概念题,可查书或上机验证。
8、下列说法中错误的是( )
A. 在不同的函数中可以使用相同名字的变量
B. 函数中的形参是局部变量
C. 在一个函数内定义的变量只在本函数范围内有效
D. 在一个函数的复合语句中定义的变量只在本函数范围内有效
分析:基本概念题。考察变量的作用域和生命期。
9、下列说法中正确的是( )
A. 定义函数时,形参的类型说明可以放在函数体内
B. return 后面的值不能为表达式
C. 如果函数值类型与return 后的返回值类型不一致,则以函数值类型为准
D. 如果形参与实参的类型不一致,则以实参类型为准
分析:基本概念题,可查书或上机验证。
10、阅读下列程序段,其执行结果为( )
#include
void fun(int a)
{
int x = 5;
x += a++;
printf(“%d,”, x);
}
void main()
{
int a = 3, x = 1;
fun(a);
x += a++;
printf(“%d\n”, x);
}
A. 8,2 B. 8,3 C. 8,4 D. 8,5
分析:考察大家对传值调用和传址调用的理解。
11、阅读下列程序段,其执行结果为()
#include
void main()
{
int a = 4, b = 6, c = 7;
double d;
double fun(int, int, int);
printf(“d = %lf\n”, fun(a, b, c));
}
double fun(int a, int b, int c)
{
return a % b * c;
}
A. 27 B. 27.000000 C. 28 D. 28.000000
分析:可上机验证,留意一下函数声明的方式,以及输出语句中对函数返回值的处理。
12、下列说法中不正确的是( )
A. C 语言规定,不能在一个函数的内部再定义函数
B. 在没有声明函数返回值类型的情况下,默认函数返回值类型为int 型
C. 函数的类型可以是整型、实型、字符型,但不能是指针类型
D. 函数可以没有形参,但函数名后的括号不能省略
分析:基本概念题。
13、一个变量的指针就是( )
A. 变量的名称 B. 变量的地址 C. 变量的类型 D. 变量的值
分析:基本概念题。
14. 两个指针变量不能( )
A. 相加 B. 相减 C. 比较 D. 指向同一地址
分析:基本概念题。查书或上机验证。
15. 在C 语言中,对变量的访问方式是()
A. 能直接访问,也能间接访问 B. 能直接访问,不能间接访问
C. 不能直接访问,能间接访问 D. 直接、间接均不能
分析:基本概念题。
16. C 语句: int (* pa)[5]; 中,pa 表示的是一个( )
A. 指针数组的名称
B. 指向整型变量的指针
C. 指向包含5 个整型元素的一维数组的指针
D. 指向函数的指针
分析:基本概念题。
17. C 语句int * func(); 中,func 表示的是()
A. 返回值为指针的函数名称
B. 指向整型变量的指针
C. 指向数组的指针
D. 指向函数的指针
分析:基本概念题。
18. 给定下列程序,假定从键盘输入数据1、2,则执行结果为( )
#include
void swap(int * p1, int p2)
{
* p1 = * p1 + p2;
p2 = p2 + * p1;
}
void main()
{
int a, b, * p1;
scanf("%d, %d", &a, &b);
p1 = &a;
swap(p1, b);
printf("a = %d, b = %d\n", a, b);
}
A. 3,5 B. a = 3, b = 5 C. 3, 2 D. a = 3,b = 2
分析:考察传值与传址的区别。
19. 给定下列程序,则运行结果为( )
#include
void fun(int x, int y, int * z)
{
* z = x – y;
}
void main()
{
int a, b, c;
fun(11, 5, &a);
fun(8, a, &b);
fun(a, b, &c);
printf(“%d, %d, %d\n”, a, b, c);
}
A. 2,4,6 B. 2, 6, 4 C. 6, 2, 4 D. 6,4,2
分析:传址与传值。
20. 给定下列程序,则其运行结果为()
#include
void main()
{
static int array[][4] = {{1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19 ,21, 23}};
int (* p)[4], i, j, sum[3];
p = array;
for(i = 0; i < 3; i++)
{
sum[i] = 0;
for(j = 0; j < 4; j++)
sum[i] += *(*(p + i) + j);
printf(“%d, ”, sum[i]);
}
}
A. 16, 48, 80 B. 164880 C. 144 D. 80
分析:考察用指针变量遍历二维数组的方法。重点在理解,否则考试时不可能有机会上机验证。