中国大学高级C语言程序设计答案(mooc完整答案)

分类: 文学习题发布于:2024-06-02 12:03:46ė98656次浏览641条评论

中国大学高级C语言程序设计答案(mooc完整答案)

第1章 C语言概述

章节习题

1、中国整答下列关于C语言的大学说法错误的是( )
A、C程序的高级工作过程是编辑、编译、语言程链接、序设执行
B、计答C语言不区分大小写
C、案m案C程序的中国整答三种基本结构是顺序、选择、大学循环
D、高级C程序从main函数开始执行

2、语言程以下叙述中错误的序设是( )
A、C语言源程序经编译后生成后缀为obj的计答目标程序
B、C程序经过编译、案m案链接步骤之后才能形成一个真正可执行的中国整答二进制机器指令文件
C、C语言源程序经编译后生成后缀为exe的目标程序
D、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

3、以下叙述中正确的是( )
A、C程序中注释部分可以出现在程序中任意合适的地方
B、花括号"{ "和"}"只能作为函数体的定界符
C、分号是C语句之间的分隔符,不是语句的一部分
D、构成C程序的基本单位是函数,所有函数名都可以由用户命名

4、C程序编译时,程序中的注释部分( )
A、不参加编译,但会出现在目标程序中
B、不参加编译,也不会出现在目标程序中
C、参加编译,并会出现在目标程序中
D、参加编译,但不会出现在目标程序中

5、用C语言编写的代码程序( )
A、可立即执行
B、是一个源程序
C、经过编译即可执行
D、经过编译解释才能执行

6、计算机能够直接识别和执行的语言是( )
A、高级语言
B、自然语言
C、汇编语言
D、机器语言

7、C语言源程序名的后缀是( )
A、.exe
B、.c
C、.obj
D、.cpp

8、一个完整的C语言程序,是由一个主函数和若干(或0个)其它函数组合而成的。

9、C语言是一种具有某些低级语言特征的高级语言。

10、预处理指令以“#”开头,在编译C程序之前,预处理器会首先对其进行处理。

第1章 实验

1、This is my first C program

第2章 简单C程序设计

第2章 实验

1、三位数的数位分离

2、鸡兔同笼

第3章 选择控制结构

章节习题

1、设整型变量x的值是10,则表达式2<x<5的值是( )。
A、不确定
B、1
C、0
D、表达式非法

2、在while(!a)中,其中!a与表达式( )等价。
A、a==0
B、a==1
C、a!=1
D、a!=0

3、如果int a=3,b=4,则条件表达式“a<b?a:b”的值是( )。
A、3
B、4
C、0
D、1

4、下面关于if与switch比较的叙述中不正确的是( )。
A、switch执行效率高,if效率低
B、switch只能是基于一个整型值进行分支选择
C、使用if的分支,都可以通过switch实现
D、使用switch的分支,都可以通过if实现

5、为避免if_else语句二义性,规定else总是与( ) 组成配对关系。
A、缩排位置相同的if
B、在其之前未配对的if
C、在其之前最近的未配对的if
D、同一行上的if

6、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{ }括起来组成一个复合语句。

7、在switch语句中,每一个的case常量表达式的值可以相同。

8、逻辑表达式的值只能为1或0。

9、判断整数a即能被3整除又能被5整除的合法表达式为___________________。

10、编程:从键盘输入一个英文字母,判断大小写,若是大写,输出“upper case ”,否则输出 “lower case”。部分程序如下: #include<stdio.h> int main(void) { char ch; ch = getchar( ); if( ) printf("upper case %c\n", ch); else printf("lower case %c\n", ch); return 0; }

11、读下列程序,写出程序的运行结果。 #include<stdio.h> int main(void) { char ch; ch = getchar( ); if(ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z') printf("字母\n"); else if (ch >= '0' && ch <= '9') printf("数字\n"); else if(ch == ' ' || ch == '\n') printf("分隔符\n"); else printf("其他\n"); return 0; } 输入: A

12、读下列程序,写出程序的运行结果 #include<stdio.h> int main() { int a=2,b=3,c; c=a; if(a>b) c=1; else if(a==b) c=0; else c=-1; printf("%d\n",c); return 0; }

13、读下列程序,写出程序的运行结果。 #include <stdio.h> int main() { int x, y, z; x = y = z = -1; ++x && ++y || ++z; printf ("x=%d y=%d z=%d\n", x, y, z); x = y = z = -1; ++x || y++ && z; printf ("x=%d y=%d z=%d\n", x, y, z); return 0; }

第3章 编程作业

1、节日促销

2、大小写字母转换

3、三个数求最大值

4、五级制成绩

第4章 循环控制结构

章节习题

1、退出一个循环语句(不终止循环的执行)的有效措施是( )。
A、用break语句
B、用continue语句
C、用return语句
D、用exit

2、C语言中while和do_while循环的主要区别是( )。
A、do_while的循环体至少无条件执行一次
B、while的循环控制条件比do_while的循环控制条件严格
C、do_while允许从外部转到循环体内
D、do_while的循环体不能是复合语句

3、continue不是结束本次循环,而是终止整个循环的执行。

4、C语言的三种循环不可以互相嵌套。

5、在多层循环中,一个break语句只向外跳一层。

6、continue语句只能用在__________结构中。

7、对n个数进行排序,最多需要进行__________趟冒泡排序。

8、编程:求n个数的和。首先输入一个整数n,然后输入n个整数,求它们的和。部分程序如下: #include<stdio.h> int main(void) { int number, sum; int i, n; sum = 0; scanf("%d", &n); for(i = 1; i <= n; i++) { scanf("%d", &number); } printf("%d\n", sum); return 0; }

9、编程:求数列1-1/3+1/5-1/7+1/9…的前n项和。结果保留两位小数。部分程序如下: #include <stdio.h> int main(void) { int i, n, deno; double sum, flag; scanf("%d\n", &n); sum = 0; deno = 1; flag = 1.0; for(i = 1; i <= n; i++) { deno = deno+2; flag = -flag; } printf("%.2f\n", sum); return 0; }

10、编程:求两个整数的和。要求输入包含多组数据,每组数据包含两个整数a和b,对每组数据输出a+b的结果。当a和b同时为0时表述输入结束。部分程序如下: #include <stdio.h> int main(void) { int a, b; while( ) printf("%d\n", a + b); return 0; }

11、经典的百钱买百鸡问题是:公鸡五文钱一只,母鸡三文钱一只,鸡仔一文钱三只,用100文钱买100只鸡,公鸡、母鸡、鸡仔各买多少只? 编程解决如下问题:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、鸡仔各买多少只?如果问题有解,输出所有解,每个解占一行,每个整数用空格隔开;如果问题无解,则输出“No answer”。 部分程序如下: #include <stdio.h> int main(void) { int i, j, k, n, noAnswer; scanf("%d", &n); noAnswer = 1; for(i = 0; i <= n/5; i++) for(j =0 ; j <= n/3; j++) { k = n – i - j; if( ) { printf(“%d %d %d\n”, i, j, k); noAnswer = 0; } } if (noAnswer == 1) printf("No answer\n"); return 0; }

12、编程:输入m,若m是素数,则输出“yes”,否则输出“no”。素数的定义:除了1和m,不能被其它数整除。注意,1不是素数。部分程序如下: #include<stdio.h> #include<math.h> int main() { int m,k,flag; int i; scanf("%d",&m); k = (int)sqrt(m); flag = 0; for(i = 2; i <= k; i++) { if( ) { flag = 1; break; } } if(m==1) flag=1; if( flag == 0 ) printf("yes\n"); else printf("no\n"); return 0; }

13、编程:输出阶乘表。输入一个整数n(n<=20),输出1-n的阶乘表。部分程序如下: #include <stdio.h> int main(void) { int i, n; double fact; printf("input n: \n"); scanf ("%d", &n) ; for (fact=1, i = 1; i <= n; i++ ) { printf ( "%d %.0f \n", i, fact ); } return 0; }

14、编程:输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。部分程序如下: #include<stdio.h> int main() { int i,j,k,n; for (n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n % 10; if ( ) printf("%d ",n); } printf("\n"); return 0; }

15、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int n=10; while (n>7) { n--; printf("%d\n",n); } return 0; }

16、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int i,j; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) putchar(' '); for(j=1;j<=2*i-1;j++) printf("%c",'A'+j-1); putchar('\n'); } return 0; }

17、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } printf("%d\n",a); return 0; }

18、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int n=0,fact=1,sum=0; do { n++; fact=fact*n; sum+=fact; } while (n<4); printf("%d\n",sum); return 0; }

19、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int x=2, y=3, m, n; m = x++*5; n = ++y*5; printf ("%d,%d,%d,%d\n", x, y, m, n); return 0; }

20、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int j , k , p, s; s=0; for (j=1; j<=3; j++) { p=1; for(k=1; k<=j; k++) p=p*k; s=s+p; } printf("s=%d\n",s); return 0; }

第4章 章节测验

1、退出一个循环语句(不终止循环的执行)的有效措施是( )。
A、用break语句
B、用continue语句
C、用return语句
D、用exit

2、C语言中while和do_while循环的主要区别是( )。
A、do_while的循环体至少无条件执行一次
B、while的循环控制条件比do_while的循环控制条件严格
C、do_while允许从外部转到循环体内
D、do_while的循环体不能是复合语句

3、求两个整数的和。要求输入包含多组数据,每组数据包含两个整数a和b,对每组数据输出a+b的结果。当a和b同时为0时表述输入结束。横线处应填写( ) #include <stdio.h> int main(void) { int a, b; while( ) printf("%d\n", a + b); return 0; }
A、a!=0||b!=0
B、a!=0&&b!=0
C、scanf("%d %d", &a, &b), (a != 0 || b != 0)
D、scanf("%d%d",&a,&b)

4、经典的百钱买百鸡问题是:公鸡五文钱一只,母鸡三文钱一只,鸡仔一文钱三只,用100文钱买100只鸡,公鸡、母鸡、鸡仔各买多少只? 编程解决如下问题:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、鸡仔各买多少只?如果问题有解,输出所有解,每个解占一行,每个整数用空格隔开;如果问题无解,则输出“No answer”。 横线处应填写( ) #include <stdio.h> int main(void) { int i, j, k, n, noAnswer; scanf("%d", &n); noAnswer = 1; for(i = 0; i <= n/5; i++) for(j =0 ; j <= n/3; j++) { k = n – i - j; if( ) { printf(“%d %d %d\n”, i, j, k); noAnswer = 0; } } if (noAnswer == 1) printf("No answer\n"); return 0; }
A、i*15+j*9+k==n*3
B、i+k+j=100
C、i*15+9*j+k=3*n
D、15i+9j+k=3n

5、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int i,j; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) putchar(' '); for(j=1;j<=2*i-1;j++) printf("%c",'A'+j-1); putchar('\n'); } return 0; }
A、A ABC ABCDE ABCDEFG
B、A BBB CCCCC DDDDDDD
C、A AB ABC ABCD
D、A ABC ABCD ABCDE

6、下面程序的循环次数是:( ) int?k=0;???? while(k<10)? { if(k<1)?? continue;? if(k==5)?? break;? k++;? }?
A、4
B、5
C、死循环,不能确定循环次数
D、6

7、continue不是结束本次循环,而是终止整个循环的执行。

8、C语言的三种循环不可以互相嵌套。

9、在多层循环中,一个break语句只向外跳一层。

10、continue语句只能用在__________结构中。

11、对n个数进行排序,最多需要进行__________趟冒泡排序。

12、程序填空:求n个数的和。首先输入一个整数n,然后输入n个整数,求它们的和。 #include<stdio.h> int main(void) { int number, sum; int i, n; sum = 0; scanf("%d", &n); for(i = 1; i <= n; i++) { scanf("%d", &number); } printf("%d\n", sum); return 0; }

13、程序填空:输入m,若m是素数,则输出“yes”,否则输出“no”。素数的定义:除了1和m,不能被其它数整除。注意,1不是素数。部分程序如下: #include<stdio.h> #include<math.h> int main() { int m,k,flag; int i; scanf("%d",&m); k = (int)sqrt(m); flag = 0; for(i = 2; i <= k; i++) { if( ) { flag = 1; break; } } if(m==1) flag=1; if( flag == 0 ) printf("yes\n"); else printf("no\n"); return 0; }

14、程序填空:输出阶乘表。输入一个整数n(n<=20),输出1-n的阶乘表。部分程序如下: #include <stdio.h> int main(void) { int i, n; double fact; printf("input n: \n"); scanf ("%d", &n) ; for (fact=1, i = 1; i <= n; i++ ) { printf ( "%d %.0f \n", i, fact ); } return 0; }

15、程序填空:输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。部分程序如下: #include<stdio.h> int main() { int i,j,k,n; for (n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n % 10; if ( ) printf("%d ",n); } printf("\n"); return 0; }

16、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int n=10; while (n>7) { n--; printf("%d ",n); //注意%d后有一个空格 } return 0; }

17、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } printf("%d\n",a); return 0; }

18、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int n=0,fact=1,sum=0; do { n++; fact=fact*n; sum+=fact; } while (n<4); printf("%d\n",sum); return 0; }

19、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int x=2, y=3, m, n; m = x++*5; n = ++y*5; printf ("%d,%d,%d,%d\n", x, y, m, n); return 0; }

20、读下列程序,写出程序的运行结果。 #include<stdio.h> int main() { int j , k , p, s; s=0; for (j=1; j<=3; j++) { p=1; for(k=1; k<=j; k++) p=p*k; s=s+p; } printf("s=%d\n",s); return 0; }

第4章 编程作业

1、数列求和

2、n个数求和

3、数值统计

4、百钱买百鸡

第5章 函数

第5章 章节测验

1、( )是构成C语言程序的基本单位。
A、函数
B、过程
C、子程序
D、子例程

2、在C语言中,函数的数据类型是指( )
A、函数返回值的数据类型
B、函数形参的数据类型
C、调用该函数时实参的数据类型
D、任意指定的数据类型

3、在C语言中,表示静态存储类别的关键字是( )
A、auto
B、register
C、static
D、extern

4、未指定存储类别的变量,其隐含的存储类别是( )
A、auto
B、register
C、static
D、extern

5、所有的C函数都必须在被( )时才能执行其函数体,从而完成函数的功能。
A、调用
B、定义
C、声明
D、嵌套调用

6、以下程序的运行结果是( ) #include <stdio.h> void PrintStar (int m); int main (void) { int i; for(i = 1; i <= 5; i++) PrintStar(i); return 0; } void PrintStar (int m) { int i; for (i = 1; i <= m; i++) putchar('*'); putchar ('\n'); }
A、* ** *** **** *****
B、*****
C、* *** ***** 慕课答案大全

*
D、* *** ***** 慕课答案大全

* 慕课答案大全

***

7、输出100以内的全部素数,每个素数占3列。横线处填以下哪个选项不能实现此功能( ) #include <stdio.h> #include <math.h> int IsPrime (int m); int main() { int m; for(m = 2; m <= 100; m++) { if ( ) printf("%3d", m ); } printf ("\n"); return 0; } int IsPrime (int m) { int i, k; if ( m == 1 ) return 0; k = (int)sqrt (m); for( i = 2; i <= k; i++) { if (m % i == 0) return 0; } return 1; }
A、IsPrime(m) != 0
B、IsPrime(m)
C、IsPrime(m)==1
D、IsPrime(m)=1

8、验证哥德巴赫猜想,任意输入一个不小于6的偶数,将其表示成两个素数的和,如:6=3+3;8=3+5;18=7+13。横线处填以下哪个选项能实现此功能( ) #include <stdio.h> #include <math.h> int IsPrime (int m); int main() { int n, i; scanf("%d", &n); for(i = 3;i <= n/2;i = i+2) { if( ) printf("%d %d\n", i, n-i); } return 0; } int IsPrime (int m) { int i, k; if ( m == 1 ) return 0; k = (int)sqrt (m); for( i = 2; i <= k; i++) { if (m % i == 0) return 0; } return 1; }
A、IsPrime(i) && IsPrime(n-i)
B、IsPrime(i)=1&&IsPrime(n-i)=1
C、IsPrime(i)==1
D、IsPrime(i)==0

9、若程序中定义函数float myadd(float a, float b){ return a+b;}并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是( )
A、float myadd( float a,b);
B、float myadd(float b, float a);
C、float myadd(float, float);
D、float myadd(float a, float b);

10、下列函数定义不正确的是( )
A、int max(){ }
B、int max() { int x,y,z; z=x>y?x:y; return z;}
C、int max(int x,int y) { int z;z=x>y?x:y; return(z);}
D、int max(x,y){ int z; z=x>y?x:y; return z;}

11、函数的实参传递到形参有两种方式:值传递和地址传递。

12、函数形参的存储单元是动态分配的。

13、如果函数定义出现在函数调用之前,可以不必加函数原型声明。

14、函数的实参可以是常量、变量或表达式。

15、凡在函数中未指定存储类别的局部变量,其默认的存储类别为static。

16、如果某一函数直接或间接地调用自身,这样的调用称为递归调用。

17、外部变量是指在函数外部定义的变量。

18、读下列程序,写出程序的运行结果。 #include <stdio.h> void Func(void); int main() { int i; for (i=0; i<5; i++) { Func(); } } void Func(void) { static int a = 1; int b = 2, c; c = a + b; a++; b++; printf("%d ", c); //注意%d后有一个空格 }

19、读下列程序,写出程序的运行结果。 #include <stdio.h> void fun(int x, int y); int a=5, b=8; int main( ) { int a=15; fun(a, b); printf("a=%d,b=%d\n", a, b); } void fun(int x, int y) { int temp; if(a>b) { temp=a; x=y; y=temp; } }

20、读下列程序,写出程序的运行结果。 #include <stdio.h> double fact(int n); int main() { printf ("%.0f\n", fact (5) ); return 0; } double fact(int n) { double result; if (n==1 || n == 0) result = 1; else result = n * fact(n-1); return result; }

第5章 编程作业

1、数根

2、逆序数字

第6章 数组

第6章 编程作业

1、一维数组排序

2、查找数组元素

学习通高级C语言程序设计

在计算机编程领域中,C语言是一门被广泛应用的高级语言,它已经被证明是一种高效、灵活、且易于学习的编程语言。在这种情况下,学习C语言已经成为了几乎所有计算机科学家和软件工程师的必修课程。而在这门C语言的学习中,高级C语言程序设计更是一个必须要掌握的重点。

高级C语言程序设计的重要性

在C语言的学习过程中,我们可以学到许多基础知识,例如:变量的定义、条件语句、循环语句、函数的使用等等。然而,这些基础知识在实际应用中并不能满足我们的需求,因此我们需要学习高级C语言程序设计技巧,以完成更为复杂的编程任务。

高级C语言程序设计不仅可以让我们编写更为灵活、高效的程序,还可以让我们更好地理解计算机系统的工作原理。例如,在学习指针和内存管理时,我们可以更好地理解计算机中的数据结构和算法。

高级C语言程序设计的难点

高级C语言程序设计在难度上与基础知识相比,存在一定的差别。主要体现在以下几个方面:

指针和内存管理

指针和内存管理是高级C语言程序设计中的重点难点。指针是一种非常强大的工具,但也很容易出现错误,例如指针越界、野指针等,需要我们有很高的抽象思维能力和较强的编程经验。在内存管理方面,我们需要深入地理解计算机的内存管理机制,掌握动态内存分配和释放的方法。

数据结构和算法

高级C语言程序设计中的另一个重点难点是数据结构和算法。数据结构是一种用来组织和存储数据的方式,算法则是针对数据结构的操作方法。掌握数据结构和算法可以让我们编写更为高效的程序,但这也需要我们具备一定的数学和逻辑思维能力。

如何学习高级C语言程序设计

对于高级C语言程序设计的学习,我们可以参考以下几个方面:

学习数据结构和算法

学习数据结构和算法是高级C语言程序设计的基础,可以通过阅读相关书籍、参加课程等方式进行学习。在学习过程中,我们可以尝试编写一些基本的数据结构和算法,例如:栈、队列、排序等,以便更好地理解和掌握相关知识。

深入理解指针和内存管理

指针和内存管理是高级C语言程序设计的重点难点,需要我们进行深入的学习和理解。我们可以通过编写一些包含指针和动态内存分配的程序进行练习,例如:链表、二叉树等。

多阅读相关代码和书籍

阅读相关代码和书籍是学习高级C语言程序设计的一种很好的方式。通过阅读优秀的代码和书籍,我们可以学习到许多高级的编程技巧和实践经验。同时,我们也可以借此机会对自己的编程思路进行改进和完善。

总结

高级C语言程序设计是C语言学习中的一个重要环节,需要我们具备较强的抽象思维能力、数学和逻辑思维能力以及编程经验。我们可以通过多方面的练习和学习来掌握相关知识和技巧,以便在实际的编程工作中能够得心应手。



Ɣ回顶部