0.0714

五煦查题

快速找到你需要的那道考题与答案

moocC语言程序设计_17答案(慕课2023课后作业答案)

73 min read

moocC语言程序设计_17答案(慕课2023课后作业答案)

第一周:程序设计与C语言

1.1 计算机和编程语言随堂测验

1、语言程业答计算机本身最擅长的序设能力是?
A、推理
B、计答想像
C、案慕案重复
D、课课分析

2、后作编程语言是语言程业答和计算机交谈的语言

3、计算机(CPU)可以直接运行人类编写的序设程序

1.2 C语言随堂测验

1、关于C语言,计答以下说法错误的案慕案有:
A、C语言是课课和Unix操作系统一同发展起来的
B、C语言不能写图形界面的后作软件
C、C语言一般是语言程业答编译执行的
D、C语言诞生于1970年代

2、序设轻量级的计答编程软件,如Geany+MinGW或Sublime Text+MinGW,与专门的IDE如Dev C++相比,什么功能没有了?(提示:上课没有直接讲,但是间接提到了)
A、单步调试
B、源代码编辑时的语法高亮
C、编译程序
D、运行程序

3、IDE的中文翻译是什么?

第二周:计算

2.1 变量随堂测验

1、以下哪些是有效的变量名?
A、main
B、4ever
C、monkey-king
D、__int

2、给定: int a,b; scanf("%d %d", &a, &b); 则以下哪些输入方式是正确的?
A、1 2
B、1,2
C、1(回车)2
D、1、2

3、给定: int a,b; 以下哪些scanf的使用是正确的?
A、scanf("%d", &a); scanf("%d", &b);
B、scanf("%d %d", &a, &b);
C、scanf("%d, %d", &a, &b);
D、scanf("%d %d", a, b);

4、给定以下代码段: int a,b=0; 则a的初始值是0

5、写出下式的运算结果: 10/3.0*3

6、写出下式的运算结果: 10/3*3.0

2.2 表达式随堂测验

1、写出以下代码执行后,t1和t2的值,以空格隔开: int a=14; int t1 = a++; int t2 = ++a;

2、写出以下表达式的结果,一个结果一行: 6 + 5 / 4 - 2 2 + 2 * (2 * 2 - 2) % 2 / 3 10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3 1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10

第三周:判断

3.1 判断随堂测验

1、以下语句是否可以通过编译: if ( 1<=n<=10 );

2、以下语句是否表示n属于[1,10]: if ( 1<=n<=10 );

3、写出程序的输出结果: int i,j,k; i=5; j=10; k=1; printf("%d", k>i<j);

4、写出程序的输出结果: int i,j,k; i=2;j=3; k = i*j==6; printf("%d\n", k);

5、写出程序的输出结果: int i,j,k; i=3;j=2;k=1; printf("%d", i<j == j<k);

3.2 分支随堂测验

1、写出程序的输出: int i=1; switch ( i%3 ) { case 0: printf("zero"); case 1: printf("one"); case 2: printf("two"); }

2、写出程序的输出: int a = 58; if ( a>50 ) printf("A"); if ( a>40 ) printf("B"); if ( a>30 ) printf("C");

第四周:循环

4.1 循环随堂测验

1、while循环的条件满足的时候循环继续,而do-while的条件满足的时候循环就结束了

2、以下代码片段执行结束后,变量i的值是多少? int i =10; while ( i>0 ) { i /=2; }

3、以下代码片段执行结束后,变量i的值是多少? int i = 1; do { i += 5; } while (i<17);

4.2 循环应用随堂测验

1、以下哪种运算能从变量x中取得十进制最低位的数字
A、x / 10
B、x % 10
C、x * 10
D、10 / x

2、当需要累加一些值的时候,用来记录累加结果的变量应该被初始为:

第五周:循环控制

5.1 第三种循环随堂测验

1、以下哪个循环和其他三条循环不等价(假设循环体都是一样的)?
A、for ( i=0; i<10; i++ ) { ...}
B、for ( i=0; i<10; ++i ) { ...}
C、for ( i=0; i++<10; ) { ...}
D、for ( i=0; i<=9; i++ ) { ...}

2、以下代码段的输出是什么? for ( int i=10; i> 1; i /=2 ) { printf("%d ", i++); }

5.2 循环控制随堂测验

1、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) continue; sum += i; } printf("%d\n", sum);

2、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) break; sum += i; } printf("%d\n", sum);

第六周:数据类型

6.1 数据类型随堂测验

1、以下哪个字母不能在数字后面表示类型?
A、F
B、U
C、L
D、X

2、以下哪个数字的值最大?
A、10
B、010
C、0x10
D、10.0

3、以下哪个数字占据的空间最大?
A、32768
B、‘3’
C、32768.0
D、32768.0F

4、以下哪种类型不能用在switch-case的判断变量中:
A、char
B、short
C、int
D、double

5、下列哪些是有效的字符?
A、‘ ’
B、‘\’‘
C、''
D、'\'

6、以下表达式的结果是: '1'+3

6.2 其他运算:逻辑、条件、逗号随堂测验

1、以下哪个表达式,当a和b都是true或者都是false的时候,表达式的结果为true。
A、a && b
B、a || b
C、a == b
D、a ^ b

2、以下哪个表达式与!(a&&b)是等价的
A、!a && !b
B、!a || !b
C、a && b
D、a || b

3、以下哪个表达式的结果是true?
A、!(4<5)
B、2>2||4==4&&1<0
C、34==33&&!false
D、!false

4、以下哪个表达式,当a和b中只有一个是true的时候结果为true,而如果两个都是false或都是true的时候,结果为false
A、a && b
B、a || b
C、a != b
D、!a && !b

5、以下代码执行后,i的值是: i = 3/2,3*2;

第八周:数组

8.2 数组运算随堂测验

1、若有定义: int a[2][3]; 则以下选项中不越界的正确的访问有:
A、a[2][0]
B、a[2][3]
C、a[1>2][0]
D、a[0][3]

2、以下程序片段的输出结果是:int m[][3] = { 1,4,7,2,5,8,3,6,9,}; int i,j,k=2; for ( i=0; i<3; i++ ) { printf("%d", m[k][i]); }
A、369
B、不能通过编译
C、789
D、能编译,但是运行时数组下标越界了

3、假设int类型变量占用4个字节,定义数组 int x[10] = { 0,2,4}; 则x在内存中占据几个字节?

4、若有: int a[][3] = { { 0},{ 1},{ 2}}; 则 a[1][2] 的值是?

第七周:函数

7.2 函数的参数和变量随堂测验

1、以下哪句不是正确的原型?
A、int f();
B、int f(int i);
C、int f(int);
D、int f(int i) { }

2、以下哪个函数的定义是错误的?
A、void f() { }
B、void f(int i) { return i+1; }
C、void f(int i) { }
D、int f() { return 0; }

3、对于不返回值而且只有一个int类型的参数的函数,以下哪些函数原型是正确的?
A、void f(int x);
B、void f();
C、void f(int);
D、void f(x);

4、以下程序的输出是什么? #include <stdio.h> void swap(int a, int b); int main() { int a = 5; int b = 6; swap(a,b); printf("%d-%d\n", a, b); return 0; } void swap(int a, int b) { int t = a; a = b; b = t; }

第十周:字符串

第二次单元测验

1、下面的代码段执行后,输出的结果是:int i=0; if ( i==0 ) { int i=3; } printf("%d\n", i);
A、0
B、3
C、1
D、2
E、4

2、下面哪个选项可以交换指针p和q所指的int型变量的值?
A、temp = *p; *p = *q; *q = temp;
B、temp = p; p = q; q = temp;
C、temp = p; *p = *q; q = temp;
D、temp = &p; *p = *q; q = *temp;

3、若有变量定义: int a = 5, *p = &a, *q = &a;则下面不能做的运算是:
A、p=a;
B、q=a;
C、p=q;
D、a=p-q;
E、a=(*p)*(*q);

4、若有变量定义 int x, y=5, *p=&x; 则能完成x=y的选项是:
A、*p=y;
B、x=y;
C、x=*p;
D、x=&y;
E、*p = &y;

5、若有变量定义: int a[][3] = { 1,2,3,4,5,6,7}; 则数组a的第一维的大小是:
A、3
B、2
C、4
D、5
E、6
F、7
G、1

6、若二维数组a有m列,则在a[i][j]之前的元素个数是
A、i*m+j
B、j*m+i
C、i*m+j-1
D、j*m+i-1

7、若有以下数组定义和函数调用,则函数fun的原型为:int a[3][4] = { 1}; fun(a);
A、fun(int a[][4]);
B、fun(int a[][]);
C、fun(int a[]);
D、fun(int a[3][]);

8、若函数的参数是数组,则传递给这个参数的值是:
A、数组的首地址
B、数组的第一个元素的地址
C、整个数组被拷贝过去
D、数组元素的个数
E、数组第一个元素的值

9、以下数组初始化错误的是:
A、int d[2][3] = { { 1,2},{ 3,4},{ 5,6}};
B、int a[2][3] = ;
C、int b[][3] = { { 1,2},};
D、int a[][3] = { 1,2,3,4,5,6};

10、假如int类型变量占据4个字节,变量 int x[10] = { 0,2,4}; 则x在内存中占据的字节数是:
A、40
B、sizeof(int)*10
C、sizeof(x)
D、12
E、4
F、3

11、若有数组: char x[] = "China"; 则x所占据的空间为:
A、6个字节
B、sizeof(x)
C、4个字节
D、5个字节
E、8个字节
F、7个字节

12、如果i是变量,而p是指向i的指针,则下列哪个表达式可以代替i?
A、*p
B、*&i
C、p
D、&i
E、&p
F、*&p
G、&*p
H、*i
I、&i
J、&*i

13、以下不能正确进行字符串初始化的语句是:
A、char str[5] = "good!";
B、char str[5] = { 'g', 'o', 'o', 'd', '!'};
C、char str[] = { 'g', 'o', 'o', 'd', '!'};
D、char str[] = "good!";
E、char str[8] = "good!";
F、char *str = "good!";
G、char str[8] = { 'g', 'o', 'o', 'd', '!'};

14、若有如下变量定义,则正确的叙述为:char x[] = "abcd"; char y[] = { 'a', 'b', 'c', 'd'};
A、数组x的长度大于数组y的长度
B、两个数组的长度相同
C、数组x的长度小于数组y的长度
D、数组x和数组y的值相同

15、如有以下定义: char str1[8], str2[8] = "good"; 则不能将str2的内容交给str1数组的是:
A、str1 = str2;
B、strcpy(str1, str2);
C、strncpy(str1,str2,6);
D、str1[0] = 0; strcat(str1, str2);

16、下列哪个表达式能判断str1和str2的内容是否相同?
A、strcmp(str1, str2)==0
B、strncmp(str1, str2, strlen(str1))==0
C、str1 == str2
D、str1 = str2
E、strcmp(str1, str2)

17、若有变量定义: int a = 512, *p = &a; 则*p的值为:
A、512
B、无确定值
C、0
D、变量a的地址

18、两个指针变量,所指的类型相同,则它们之间不能进行的运算是
A、+
B、>
C、<
D、==
E、!=
F、-

19、以下正确的函数原型是:
A、double fun(int x, int y);
B、double fun(int, int);
C、double fun(int x, int y)
D、double fun(int x; int y);
E、double fun(int x, y)

20、如果i是int型的变量,且p和q都是指向i的指针,那么下列哪个赋值是有效的:
A、p=q
B、*p=*q
C、p=&*q
D、p=i
E、*p=&i
F、&p=q
G、p=&q
H、p=&p
I、p=*q
J、*p=q

21、假如str是字符数组,下面哪个选项与其他选项不等价
A、strcat(str,"");
B、strcpy(str,"");
C、str[0] = '\0';
D、*str = 0;

第九周:指针

9.1 指针随堂测验

1、对于:int a[] = { 5, 15, 34, 54, 14, 2, 52, 72}; int *p = &a[5]; 则: p[-2]的值是?
A、编译出错,因为数组下标越界了
B、运行出错,因为数组下标越界了
C、54
D、2

2、如果:int a[] = ; int *p = a; 则以下哪些表达式的结果为真?
A、p == a[0]
B、p == &a[0]
C、*p == a[0]
D、p[0] == a[0]

3、以下变量定义: int* p,q; 中,p和q都是指针。

4、对于:int a[] = { 5, 15, 34, 54, 14, 2, 52, 72}; int *p = &a[1]; 则: p[2]的值是?

9.2 指针运算随堂测验

1、对于以下代码段,正确的说法是:char *p; while (1) { p = malloc(1); *p = 0; }
A、最终程序会因为没有没有空间了而退出
B、最终程序会因为向0地址写入而退出
C、程序会一直运行下去
D、程序不能被编译

2、对于以下代码段:int a[] = { 1,2,3,4,5,}; int *p = a; int *q = &a[5]; printf("%d", q-p); 当sizeof(int)为4时,以下说法正确的是:
A、因为第三行的错误不能编译
B、因为第三行的错误运行时崩溃
C、输出5
D、输出20

3、使用malloc就可以做出运行时可以随时改变大小的数组

第十二周:程序结构

12.2 编译预处理和宏随堂测验

1、假设宏定义: #define DOUBLE(x) 2*x 则DOUBLE(1+2)的值是

2、假设宏定义如下: #define TOUPPER(c) ('a'<=(c)&&(c)<='z'?(c)-'a'+'A':(c)) 设s是一个足够大的字符数组,i是int型变量,则以下代码段的输出是: strcpy(s, "abcd"); i = 0; putchar(TOUPPER(s[++i]));

第十一周:结构类型

11.2 结构随堂测验

1、有下列代码段,则输出结果是:struct { int x,y; } s[2] = { { 1,3}, { 2,7}, }; printf("%d\n", s[0].y/s[1].x);
A、0
B、1
C、2
D、3

2、有如下变量定义,则对data中的a的正确引用是:struct sk { int a; float b; } data, *p=&data;
A、(*p).data.a
B、(*p).a
C、p->data.a
D、p.data.a

3、以下两行代码能否出现在一起? struct { int x; int y; } x; struct { int x; int y; } y;

中国大学C语言程序设计_17

作为计算机科学专业的学生,C语言程序设计是必修的一门课程。在这门课程中,我们深入学习了该语言的语法、结构和应用,通过实践掌握了程序设计的基本方法和技巧,为以后的工作和学习打下了坚实的基础。

在学习C语言程序设计的过程中,我们首先要掌握语言的基础知识,包括变量、常量、数据类型、运算符等。这些知识是编写程序的基础,只有掌握了它们,才能在编写程序时避免一些低级错误。

接下来,我们学习了C语言的控制语句,包括if语句、switch语句、for循环、while循环等。掌握了这些控制语句之后,我们就可以编写一些简单的程序了。

除此之外,C语言还有一些高级特性,比如指针、数组、结构体、函数等。这些特性需要我们花费更多的时间去学习和掌握,但是一旦掌握,我们就可以编写出更加复杂和高效的程序。

在学习C语言程序设计的过程中,我们还需要加强对算法和数据结构的理解和应用。因为算法和数据结构是程序设计的基础,程序的性能和效率很大程度上取决于所使用的算法和数据结构。

总之,中国大学C语言程序设计_17是一门非常重要的课程,通过学习和实践,我们可以掌握C语言的基础知识和高级特性,编写出高效、优美的程序,为以后的工作和学习打下坚实的基础。