当前位置:文档之家› c语言程序设计何钦铭颜晖第10章函数与程序结构

c语言程序设计何钦铭颜晖第10章函数与程序结构

c语言程序设计何钦铭颜晖第10章函数与程序结构
c语言程序设计何钦铭颜晖第10章函数与程序结构

第10章函数与程序结构

【练习10-1】使用递归函数计算1到n之和:若要用递归函数计算sum=1+2+3+…+n(n为正整数),请写出该递归函数的递归式子及递归出口。试编写相应程序。

解答:

递归式子: sum(i) = sum(i-1) + i;

递归出口: sum(i) = 0;

【练习10-2】请完成下列宏定义:

① MIN(a,b) 求 a,b 的最小值

② ISLOWER(c) 判断 c 是否为小写字母

③ ISLEAP(y) 判断 y 是否为闰年

④ CIRFER(r) 计算半径为 r 的圆周长

解答:

① MIN(a, b):求a,b的最小值。

#define MIN(a,b) (a

② ISLOWER(c):判断c是否为小写字母。

#define ISLOWER(c) (c>='a'&&c<='z')

③ ISLEAP(y):判断y是否为闰年。

#define ISLEAP(y) (y%4==0&&y%100!=0)||y%400==0)

④ CIRFER(r):计算半径为r的圆周长。

#define PI

#define CIRFER(r) 2*PI*(r)

【练习10-3】分别用函数和带参宏实现从 3 个数中找出最大数,请比较两者在形式上和使用上的区别。

解答:

(1)函数实现

int max(int x,int y,int z)

{

int t;

if(x>=y)

if(x>=z) t=x;

else t=z;

else

if(y>=z) t=y;

else t=z;

return t;

}

(2)宏实现

#define MAX( x, y, z ) x>=y (x>=z x:z) : (y>=z y:z)两者在定义形式上

完全不同。使用上函数是在执行时,从主调函数转到函数 max(),然后再返回到

主调函数,函数体始终存在;而宏是在编译预处理时,用条件表达式去替换

MAX(int x, int y, int z ),等程序执行时,执行的是条件表达式,而不再存

在 MAX(int x, int y,int z )的式子。

习题10

一、选择题

1.要调用数学函数时,在#include 命令行中应包含 C 。

A.”” B.”” C.”” D.””

2.对于以下递归函数 f,调用 f(4),其返回值为 A 。

int f(int n)

{ if (n) return f(n - 1) + n;

else return n;

}

A.10 B.4 C.0 D.以上均不是

3.执行下列程序:

#define MA(x, y) ( x*y )

i = 5;

i = MA(i, i + 1) – 7;

后变量 i 的值应为 B 。

A.30 B.19 C.23 D.1

4.宏定义“#define DIV(a, b) a/b”,经 DIV(x + 5, y - 5) 引用,替换展

开后是 A 。

A.x + 5 / y - 5 B.(x + 5 / y – 5)

C.(x + 5) / (y - 5) D.(x + 5) / (y - 5);

5.定义带参数的宏“#define JH(a,b,t) t = a; a = b; b = t”,对两个参数

a、b 的值进行交换,下

列表述中哪个是正确的 C 。

A.不定义参数a和b将导致编译错误 B.不定义参数a、b、t将导致编译错误

C.不定义参数 t 将导致运行错误 D.不需要定义参数 a、b、t 类型

6.执行下面程序,正确的输出是 A 。

int x = 5, y = 7;

void swap ( )

{ int z ;

z = x ; x = y ; y = z ;

}

int main(void)

{

int x = 3, y = 8;

swap ( ) ;

printf ( " %d , %d \n", x , y ) ;

return 0 ;

}

A.3, 8 B.8, 3 C.5, 7 D.7, 5

7.下面说法中正确的是 A 。

A.若全局变量仅在单个 C 文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度

B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度

C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑变量生命周期问题

D.静态全局变量使用过多,可那会导致动态存储区(堆栈)溢出

二、填空题

语言的编译预处理功能主要包括_条件编译_、_宏定义_和_文件包含_。

2.执行完下列语句段后, i 的值为 5 。

int i;

int f(int x)

{

return ((x>0) f(x-1)+f(x-2):1);

}

i=f(3);

3.下列程序段 A 与 B 功能等价,请填写程序段 B 中相应语句。

程序段A:

int f( int n )

{ if(n<=1)

return n;

else

return f(n-1)+f(n-2);

}

程序B:

int f( int n )

{ _int t, t0, t1;_

t0=0; t1=1; t=n;

while ( _n>1_ ){

t = _t0+t1_;

t0 = t1;

t1 = t;

n - -;

}

return _t;_

}

5.下面程序用于计算 f(k , n)=1k+2k+…+n k,其中 power(m , n )求 m n。请填写程序中相应语句。

# include <>

int power(int m , int n)

{ int i ;

int p=1;

for( i=1 ; i<=n ; i++)

p = p * m ;

return p ;

}

int f(int k , int n){

int i ;

int s=0 ;

for( i=1 ; i<=n ; i++)

s = s + power(i, k) ;

return s ;

}

int main(void)

{ int k , n ;

scanf(“%d%d”, &k, &n ) ;

printf(“f(%d, %d)=%ld” , k, n, f(k, n)) ;

return 0;

}

5.下列递归程序的输出结果为 g=4,g=3,k=6 。

#include <>

int fib(int g)

{ switch(g){

case 0: return 0;

case 1:

case 2: return 2;

}

printf("g=%d,", g);

return fib(g-1) + fib(g-2);

}

int main(void)

{

int k;

k = fib(4);

printf("k=%ld\n", k);

return 0;

}

6.下列语句的运算结果为_7,-13____。

#define F(x) x - 2

#define D(x) x * F(x)

printf("%d,%d", D(3), D(D(3))) ;

三、程序设计题

1.判断满足条件的三位数:编写一个函数,利用参数传入一个 3 位数 n,找出101~n 间所有满足下列两个条件的数:它是完全平方数,又有两位数字相同,如 144、676 等,函数返回找出这样的数据的个数。试编写相应程序。

解答:

#include<>

#include<>

int fun(int n);

int main(void)

{

int n;

printf("Input n: ");

scanf("%d",&n);

printf("total=%d\n",fun(n));

return 0;

}

int fun(int n)

{

int i,d=0;

for(i=101;i<=n;i++)

if(((int)sqrt(i)*(int)sqrt(i))==i){

if(i/100==(i/10)%10||i/100==i%10||(i/10)%10==i%10)

d++;

}

return d;

}

2.递归求阶乘和:输入一个整数n(n>0且n<=10),求1!+2!+3!+……n!。定义并调用函数fact(n)计算n!,函数类型是double。试编写相应程序。

解答:

#include<>

double fact(int n);

int main(void)

{

int n;

printf("Input n:");

scanf("%d",&n);

printf("1~%d的阶乘和:%.0lf",n,fact(n));

return 0;

}

double fact(int n)

{

int i;

double result=1;

if(n==1)

result=1;

else{

for(i=1;i<=n;i++)

result=result*i;

result=result+fact(n-1);

}

return result;

}

3.递归实现计算x?:输入实数x和正整数n,用递归函数计算x?的值。试编写相应程序。

解答:

#include<>

double power(double x,int n);

int main(void)

{

double x;

int n;

printf("Input x:");

scanf("%lf",&x);

printf("Input n:");

scanf("%d",&n);

printf("%lf的%d次方=%lf",x,n,power(x,n));

return 0;

}

double power(double x,int n)

{

double result;

if(n==1)

result=x;

else

result=x*power(x,(n-1));

return result;

}

4.递归求式子和:输入实数x和正整数n,用递归的方法对下列计算式子编写一个函数。

f(x , n) = x-x2+x3-x4+… + (-1)n-1x?(n>0)

试编写相应程序。

解答:

#include<>

#include<>

double f(double x,int n);

int main(void)

{

int n;

double x;

printf("Input x:");

scanf("%lf",&x);

printf("Input n:");

scanf("%d",&n);

printf("f(%lf,%d)=%lf\n",x,n,f(x,n));

return 0;

}

double f(double x, int n)

{

if(n==1)

return x;

else

return pow(-1,n-1)*pow(x,n)+f(x,n-1);

}

5.递归计算函数ack(m,n):输入m和n。编写递归函数计算Ackermenn函数的值:

n+1 m=0

ack(m,n)= ack(m-1,1) n=0&&m>0 ack(m-1,ack(m,n-1)) m>0&&n>0

试编写相应程序。

解答:

#include<>

int Ack(int m,int n);

int main(void)

{

int m,n;

int result;

scanf("%d%d", &m, &n);

result=Ack(m,n);

printf("Ackerman(%d,%d)=%d\n",m,n,result);

return 0;

}

int Ack(int m, int n)

{

if (m==0) return n+1;

else if(n==0&&m>0)

return Ack(m-1,1);

else if(m>0&&n>0)

return Ack(m-1,Ack(m,n-1));

}

6.递归实现求Fabonacci数列:用递归方法编写求斐波那契数列的函数,函数

类型为整型,并写出相应主函数。斐波那契数列的定义如下。试编写相应程序。

f(n) = f(n - 2) + f(n - 1)(n>1)其中 f(0) = 0,f(1) = 1。

解答:

#include<>

long fib(int n);

int main(void)

{

int n;

printf("Enter n:");

scanf("%d",&n);

printf("fib(%d)=%ld\n",n,fib(n));

return 0;

}

long fib(int n)

{

long res;

if(n==0) res=0;

else if(n==1)

res=1;

else

res=fib(n-2)+fib(n-1);

return res;

}

7.递归实现十进制转换二进制:输入一个正整数n,将其转换为二进制输出。要求定义并调用函数dectobini(n),它的功能是输出n的二进制。试编写相应程序。解答:

#include<>

int dectobini(int n);

int main(void)

{

int n;

printf("Input n(十进制整数):");

scanf("%d",&n);

printf("输出二进制:%d",dectobini(n));

return 0;

}

int dectobini(int n)

{

int result;

if(n==0)

result=0;

else

result=dectobini(n/2)*10+n%2;

return result;

}

8.递归实现顺序输出整数:输入一个正整数n,编写递归函数实现对其进行按位顺序输出的递归函数。试编写相应程序。

解答:

#include <>

int inorder(int n);

int main(void)

{

int n;

printf("Input n:");

scanf("%d",&n);

printf("按位顺序输出:%d\n",inorder(n));

return 0;

}

int inorder(int n)

{

if(n<10) return n;

else

return(inorder(n/10)*10+n%10);

}

9.输入n(n<10)个整数,统计其中素数的个数。要求程序有两个文件组成,一个文件中编写main函数,另一个文件中编写素数判断的函数。使用文件包含的方式实现。试编写相应程序。

解答:

10.三角形面积为:

area =)

-

?s

?

)

( s=(a+b+c)/2

-

)

(

b

(c

s

a

s-

s

?

其中a、b、c 分别是三角形的 3 条边。请分别定义计算 s 和 area 的宏。再使用函数实现,比较两者在形式上和使用上的区别。

解答:

(1) 使用宏实现

#include <>

#include <>

#define S(a ,b, c) ((a)+(b)+(c))/2

#define AREA(s,a,b,c) sqrt((s)*((s)-(a))*((s)-(b))*((s)-(c)))

int main(void)

{

double a, b, c, s;

printf("input a, b, c: ");

scanf("%lf%lf%lf", &a, &b, &c);

s = S(a,b,c);

printf("s = %lf, area = %lf\n", s, AREA(s,a,b,c));

return 0;

}

(2) 使用函数实现

#include <>

#include <>

double f1(double a, double b, double c)

{

return (a+b+c)/2;

}

double f2(double s, double a, double b, double c)

{

return sqrt(s*(s-a)*(s-b)*(s-c));

}

int main(void)

{

double a, b, c, s;

printf("input a, b, c: ");

scanf("%lf%lf%lf", &a, &b, &c);

s = f1(a,b,c);

printf("s = %lf, area = %lf\n", s, f2(s,a,b,c));

return 0;

}

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

第10章C语言程序设计习题答案

C 语言程序设计( Visual C++6.0 环境)》习题答案 习题十 、思考题 1.简述公有类型成员与私有类型成员的区别。 公有(public) 类型成员不但可以被类的成员函数访问,而且可以被外界访问,所以说公有类型定义了类的外部接口。 私有(private) 类型成员只能被类的成员函数访问,外界不能直接访问它。类的数据成员一般都应该声明为私有成员。 2.简述构造函数与析构函数的作用。 构造函数的作用就是在对象在被创建时利用特定的值构造对象,将对象初始化。析构函数的作用与构造函数正好相反,它是用来在对象被删除前进行一些清理工作。析构函数调用之后,对象被撤消了,相应的内存空间也将被释放。 3.简述什么是友元函数。 友元函数是在类定义中由关键字friend 修饰的非成员函数。友元函数可以是一个普通函数,也可以其它类中的一个成员函数,它不是本类的成员函数,但它可以访问本类的私有成员和保护成员。 4.简述公有继承、私有继承和保护继承三种继承方式的区别。 ⑴、当类的继承方式为公有(public 继承)时,基类的公有(public )成员和保 护( protected )成员仍然成为派生类的公有成员和保护成员,而基类的私有成员不能被派生类访问。 ⑵、当类的继承方式为保护( protected )继承时,基类的公有(public )成员和 保护( protected )成员将成为派生类的保护成员,而基类的私有成员不能被派生类访问。 ⑶、当类的继承方式为私有(private )继承时,基类的公有(public )成员和保护(protected )成员将成为派生类的私有成员,而基类的私有成员不能被派生类访问。5.定义一个圆柱体类,其属性为圆柱体的底面半径和高,能计算出圆柱体的体积。 #include class cylinder { public: cylinder(float r,float h) { radius=r; height=h; } float Volume(); private: float radius; float height;

C语言程序设计第11.12章测试答案

第一题、单项选择题(每题1分,5道题共5分) 1、设有定义“int a=3,b,*p=&a;”,则下列语句中,使b不为3的语句是: A、b=*&a; B、b=*p; C、b=a; D、b=*a; 2、在C语言中,关于文件存取方式,: A、只能顺序存取 B、只能随机存取(也称直接存取) C、可以顺序存取,也可以随机存取 D、只能从文件开头存取 3、fp 是文件指针,str 是一个字符串,n是一个整数,向文件中输出数据的正确格式是: A、fprintf("%s,%d\n",str,n,fp); B、fprintf(fp,"%s,%d\n",str,n); C、fprintf("fp %s,%d\n",str,n); D、fprintf("%s,%d fp\n",str,n); 4、若有int a=3,*pa; float f=4.5,*pf=&f;,则下列表述中,错误的是 ( )。 A、pa=&a B、pa=&f C、pf=&f D、*pf=a+f 5、若有int a[10],*p=a;,则( )。 A、p++可以使p指向下一个字节 B、p+=2 相当于p=sizeof(a)/10 C、p++可以使p指向下一个元素,即a[1]的首地址 D、p+=2可以使p指向下一个元素,即a[1]的首地址 第二题、多项选择题(每题2分,5道题共10分) 1、C语言中的文件分类是: A、文本文件和数据文件 B、文本文件和二进制文件 C、数据文件和二进制文件 D、顺序文件和随机文件 2、以读写方式打开一个二进制文件fil2,fopen函数的正确的调用方式是: A、FILE *FP; FP=fopen("fil2","r"); B、FILE *FP; FP=fopen("fil2","rb");

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

《C语言程序设计》第10章在线测试

A B C D 、下列描述中,合法的数组定义是: A B C D 程序的执行是从 A B C D 、下列语句中,正确的语句定义是 A B C D int a[3][4]; A B C D

2、若形参是简单变量形式,则对应的实参可以是: A、常量 B、数组名 C、简单变量 D、数组元素 3、下列描述中,合法的数组定义是( )。 A、char a[]={“String”}; B、char a[5]={0,1,2,3,4};这组题特BT,答案明明是D,却ABCD全要选才算正确,让我测了N回! C、char a[]=“String”; D、char a[]={0,1,2,3,4,5}; 4、下列描述中,不能正确给字符数组str定义和赋值的是( )。 A、char str[]={"abcdefghijklmn "}; B、char str[10];str={" abcdefghijklmn "}; C、char str[10]={"abcdefghijklmn"}; D、char str[10];strcpy(str,"abcdefghijklmn"); 5、如果想使下列数组a中5个元素的值全部为0,可以写成( )。 A、int a[5]={0:5}; B、int a[5]={0}; C、int a[5]={5:0}; D、int a[5]={0,0,0,0,0}; E、int a[5]=0; 第三题、判断题(每题1分,5道题共5分) 1、若有func((v1,v2),(v3,v4,v5),v6)调用,说明函数func有6个形参。 正确错误 2、在说明一个结构体变量时系统分配给它的存储空间是该结构体中所有成员所需存储空间的总和。

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

第10章C语言程序设计习题答案

《C语言程序设计(Visual C++6.0环境)》习题答案 习题十 一、思考题 1.简述公有类型成员与私有类型成员的区别。 公有(public)类型成员不但可以被类的成员函数访问,而且可以被外界访问,所以说公有类型定义了类的外部接口。 私有(private)类型成员只能被类的成员函数访问,外界不能直接访问它。类的数据成员一般都应该声明为私有成员。 2.简述构造函数与析构函数的作用。 构造函数的作用就是在对象在被创建时利用特定的值构造对象,将对象初始化。析构函数的作用与构造函数正好相反,它是用来在对象被删除前进行一些清理工作。析构函数调用之后,对象被撤消了,相应的内存空间也将被释放。 3.简述什么是友元函数。 友元函数是在类定义中由关键字friend修饰的非成员函数。友元函数可以是一个普通函数,也可以其它类中的一个成员函数,它不是本类的成员函数,但它可以访问本类的私有成员和保护成员。 4.简述公有继承、私有继承和保护继承三种继承方式的区别。 ⑴、当类的继承方式为公有(public继承)时,基类的公有(public)成员和保 护(protected)成员仍然成为派生类的公有成员和保护成员,而基类的私有成员不能被派生类访问。 ⑵、当类的继承方式为保护(protected)继承时,基类的公有(public)成员和 保护(protected)成员将成为派生类的保护成员,而基类的私有成员不能被派生类访问。 ⑶、当类的继承方式为私有(private)继承时,基类的公有(public)成员和保 护(protected)成员将成为派生类的私有成员,而基类的私有成员不能被派生类访问。 5.定义一个圆柱体类,其属性为圆柱体的底面半径和高,能计算出圆柱体的体积。 #include class cylinder { public: cylinder(float r,float h) { radius=r; height=h; } float Volume(); private: float radius; float height;

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

《C语言程序设计》第10章

《C语言程序设计》第10章在线测试 A B D C 函数体 A B C D int a[][3] A B C D int a[3][4]; A B C D int a[][3]的第1维的长度为 A B C D

D、printf("%s",c[3].name[2]); 2、下列描述中,合法的数组定义是: A、char a[5]={’A’,’B’,’C’,’D’,’E’}; B、char a[]={’A’,’B’,’C’,’D’,’E’}; C、char a[]="ABCDE"; D、char a[]={65,66,67,68,69,70}; 3、若形参是简单变量形式,则对应的实参可以是: A、常量 B、数组名 C、简单变量 D、数组元素 4、下列关于对二维数组a进行初始化的操作中,正确的写法是( )。 A、int a[][3]={3,2,1,1,2,3}; B、int a[][]={{3,2,1},{1,2,3}}; C、int a[][3]={{3,2,1},{1,2,3}}; D、int a[2][3]={{3,2,1},{1,2,3}}; 5、在定义int a[2][3];之后,对数组a的引用错误的是( )。 A、a(1,2) B、a[1,3] C、a[2][0] D、a[1>2][!1] 第三题、判断题(每题1分,5道题共5分) 1、在说明一个结构体变量时系统分配给它的存储空间是该结构体中所有成员所需存储空间的总和。 正确错误 2、数组必须先定义后使用。

正确错误、可以在定义数组时对数组元素赋予初值。 正确错误、可以在定义数组时只给一部分数组元素赋值。 正确错误、对数组元素赋予的初值可以依次放在一对圆括号内。 正确错误

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

C语言语言程序设计第8.9.10章测试答案

A B C D int a[2][3]; A B C D 程序的执行是从 A B C D 、下列说法中,错误的说法是 A B D C 函数体 A B C D

B、函数必须有返回值,否则不能使用函数 C、C程序中有调用关系的所有函数必须放在同一个源程序文件中 D、在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 3、根据定义: struct person{char name[9];int age;}; struct person c[10]={"John",17,"Paul",19,"Mary",18,"Adam",16}; 能打印出字母M的语句是:C D A、printf("%s",c[0].name); B、printf("%s",c[1].name[0]); C、printf("%s",c[2].name[1]); D、printf("%s",c[3].name[2]); 4、若形参是简单变量形式,则对应的实参可以是: A、常量 B、数组名 C、简单变量 D、数组元素 5、下列关于对二维数组a进行初始化的操作中,正确的写法是( )。 A、int a[][3]={3,2,1,1,2,3}; B、int a[][]={{3,2,1},{1,2,3}}; C、int a[][3]={{3,2,1},{1,2,3}}; D、int a[2][3]={{3,2,1},{1,2,3}}; 第三题、判断题(每题1分,5道题共5分) 1、数组名的命名规则和变量名的命名规则相同 正确错误 2、若有func((v1,v2),(v3,v4,v5),v6)调用,说明函数func有6个形参。 正确错误 3、数组必须先定义后使用。

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII)

2020年智慧树知道网课《C语言程序设计(西华大学)》课后章节测试满分答案

第一章测试 1 【单选题】(5分) 下列叙述中正确的是()。 A. C语言所有函数都是外部函数 B. C语言的子程序有过程和函数两种 C. C语言编译时不检查语法 D. C语言的函数可以嵌套定义 2 【单选题】(5分) 以下叙述中正确的是()。 A. C语言中的每条可执行语句最终都将被转换成二进制的机器指令 B. C源程序经编译形成的二进制代码可以直接运行 C. C语言中的函数不可以单独进行编译 D. C语言的源程序不必通过编译就可以直接运行

3 【单选题】(5分) C语言的注释定界符是()。 A. [] B. /**/ C. \**\ D. {} 4 【单选题】(5分) C语言源程序的基本单位是()。 A. 过程 B. 标识符 C. 子程序 D. 函数

5 【单选题】(5分) 一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中的是() A. 有零个或多个输入 B. 可行性 C. 有零个或多个输出 D. 有穷性 6 【单选题】(5分) 以下叙述中正确的是()。 A. C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 B. C语言可以不用编译就能被计算机识别执行 C. C语言比其他语言高级 D. C语言出现的最晚,具有其他语言的一切优点

7 【单选题】(5分) 有一个命名为C001.C的C语言源程序,当正常执行后,在当前目录下不存在的文件是 A. C001.EXE B. C001.C C. C001.OBJ D. C001.DAT 8 【单选题】(5分) 能将高级语言编写的源程序转换为目标程序的是()。 A. 编辑程序 B. 链接程序 C. 解释程序 D. 编译程序

c语言程序设计第五版习题答案

c语言程序设计第五版习 题答案 Prepared on 24 November 2020

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、dowhile语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { inta1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main()

{ inta1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* IloveCprograms! ************************* 【分析与提示】 ①要有文件包含语句#include<>。C语言中没有数据的输入、输出等功 能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。这些函数的说明都包括在文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干 条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include<> main() { printf("************************\n"); printf("IloveCprograms!\n"); printf("************************\n"); } 第2章数据类型及其运算一.简答题 1.C语言中的数据类型主要有哪几类 【解答】短整型(shortint) 整型整型(int) 长整型(longint) 基本类型字符型(char)(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型

《C语言程序设计教程》(第三版)李凤霞 主编——第十章习题答案

习题十 一、单选题 1~5 DDDCC 6~10 AABDB 11~14 CADC 二、填空题 1、34 12 2、ARRAY a,b,c; 3、1 3 4、a c 5、(*b).day=? b->day=? 5、分析下列程序执行结果。 #include “stdio.h” main() {static struct s1 {char c[4],*s; s1={“abc”,”def”}; static struct s2 {char *cp;struct s1 ss1; }s2={“ghi”,{“jkl”,”mno”}}; printf(“%c%c\n”,s1.c[0],*s1.s); /*output ab */ printf(“%s%s\n”,s1.c,s1.s); /*output abcdef */ printf(“%s%s\n”,s2.cp,s2.ss1.s); /*output ghimno */ printf(“%s%s\n”,++s2.cp,++s2.ss1.s); /* output hino */ } 6、以下程序的功能是:读入一行字符(如:a,...,y,z),按输入时的逆序建立一个链式的结点序列,即 先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。 #define getnode(type)_________malloc(sizeof(type)) ( (struct node *)) main() {struct node {char info; struct node *link; }*top,*p; char c; top=NULL; while((c=getchar())______________) (!='\n') {p=getnode(struct node); p->info=c; p->link=top; top=p; } while(top) {_________________; (p=top) top=top->link; putchar(p->info); free(p);

c语言程序设计何钦铭颜晖第10章函数与程序结构

第10章函数与程序结构 【练习10-1】使用递归函数计算1到n之和:若要用递归函数计算sum=1+2+3+…+n(n为正整数),请写出该递归函数的递归式子及递归出口。试编写相应程序。 解答: 递归式子: sum(i) = sum(i-1) + i; 递归出口: sum(i) = 0; 【练习10-2】请完成下列宏定义: ① MIN(a,b) 求 a,b 的最小值 ② ISLOWER(c) 判断 c 是否为小写字母 ③ ISLEAP(y) 判断 y 是否为闰年 ④ CIRFER(r) 计算半径为 r 的圆周长 解答: ① MIN(a, b):求a,b的最小值。 #define MIN(a,b) (a='a'&&c<='z') ③ ISLEAP(y):判断y是否为闰年。 #define ISLEAP(y) (y%4==0&&y%100!=0)||y%400==0) ④ CIRFER(r):计算半径为r的圆周长。 #define PI #define CIRFER(r) 2*PI*(r) 【练习10-3】分别用函数和带参宏实现从 3 个数中找出最大数,请比较两者在形式上和使用上的区别。 解答: (1)函数实现 int max(int x,int y,int z) { int t; if(x>=y) if(x>=z) t=x; else t=z; else if(y>=z) t=y; else t=z; return t; } (2)宏实现 #define MAX( x, y, z ) x>=y (x>=z x:z) : (y>=z y:z)两者在定义形式上

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲 一、课程教学目的 本课程系统学习 C语言的基本知识和基本语法,较好地训练学生解决问题的逻辑思维能力以及编程思路和技巧,使学生具有较强的利用 C 语言编写软件的能力,为培养学生有较强软件开发能力打下良好基础。 二、课程教学要求 通过本课程的学习,应熟练掌握 C 语言中的基本知识、各种语句及程序控制结构,熟练掌握 C 语言的函数、数组、指针、结构体、链表等数据结构的基本算法;并能熟练地运用 C 语言进行结构化程序设计;具有较强的程序修改调试能力;具备较强的逻辑思维能力和独立思考能力。 三、课时分配 本学科计划学时为246学时,其中理论与实训课时比例为7:3。 四、课程教学重、难点 课程教学重点:掌握C语言变量类型及不同类型常量的表示;标准的输入输出函数的使用;运算符及常用数学函数的使用;控制流程、数组和指针的使用;结构体、链表的构造使用;函数结构、函数参数传递及递归等方面的知识;基本的文件操作。 难点:指针的使用、结构体链表的构造和使用及函数的参数传递。 五、课程教学方法(或手段) 本课程实践性较强,故采用讲授和上机操作相结合的方式进行教学。 六、课程教学内容 第一章 C语言概述 1.教学内容 (1) 编程历史的回顾、程序设计介绍(过程式,面向对象,函数式,逻辑式); (2) C语言的历史背景、特点; (3) C语言源程序的格式和程序结构; (4) C程序的上机步骤。 2.重、难点提示 (1)重点:掌握简单的 C程序格式,包括main()函数、数据说明、函数开始和结束标志等;

(2)难点:编程入门以及对语言的理解。 第二章算法 1.教学内容 (1) 算法的概念及特性;评价算法优劣的方法(时间和空间); (2) 简单算法举例; (3) 算法的表示(自然语言、流程图、N-S流程图); (4) 结构化程序设计的基本思想及基本步骤。 2.重、难点提示 (1)重点:算法流程图三种基本结构(以后各章学习中利用流程图强化对程序的理解); (2)难点:算法概念以及对结构化程序设计思想的理解。 第三章数据类型、运算符与表达式 1.教学内容 (1) 基本数据类型及其常量的表示法(字符和字符串常量),各种数制(八、十、十六进制)的整型数和长整型数,实型数( float和double); (2) 变量的类型说明、初始化及引用; (3) 运算符与表达式: 2.重、难点提示 (1)重点:掌握 C的几种基本数据类型,不同类型数据间的混合运算规则;不同运算符的使用特点,清楚每种运算符的优先级与结合性;各种表达式的含义与使用要点。 (1)难点:不同类型数据间的混合运算;运算符的优先级与结合性。 第四章最简单的 C 程序设计—顺序程序设计 1.教学内容 (1) C程序结构和语句的构成; (2) 顺序结构程序的设计:赋值语句的使用要点; (3) 数据的输入与输出: 2.重、难点提示 (1)重点:顺序结构程序的表达式语句形式;输入/输出函数的表示与调用方法;利用流程图加深对顺序结构程序的理解。 (2)难点:格式输入与输出表示中各种格式字符的表示含义。

《C语言程序设计教程》习题参考答案

《C语言程序设计教程》习题参考答案 祝胜林主编 华南理工大学出版社 【习题1】 (1) 【习题2】 (2) 【习题3】 (3) 【习题4】 (5) 【习题5】 (8) 【习题6】 (11) 【习题7】 (14) 【习题8】 (16) 【习题9】 (16) 【习题10】 (18)

一、简答题(在课本中寻找答案,略) 1.1C程序的基本结构包括哪些内容? 1.2如何定义标识符? 1.3输入格式、输出格式的组成包括哪些内容? 1.4C语言函数分为哪两类? 1.5计算表达式的值应该考虑哪些方面? 1.6上机调试程序的步骤如何? 二、判断并改错 1.7C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 错误:main函数可以放在程序的任何位置。并不限定在程序的开头。 1.8定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 错误:不可以交叉出现,数据说明部分在执行语句部分的前面。 1.9编辑与编译不是一回事。 错误:不是一回事。编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。 1.10scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。 正确 1.11注释内容太多会影响程序的执行效率。 错误:不会影响程序的执行效率。因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。 1.12所有的数学公式可以直接出现在源程序中。 错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。 三、编程题 1.13在屏幕上输出自己名字的拼音。 提示:中文名字叫?张三?,对应的拼音为?Zhang San?,输出用printf()函数。 1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。 提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%.2f 1.15输入两个整数,输出其中最大者。 提示:模仿例1.3 1.16 输入三个整数,输出其中最小者。 提示: min(min(a,b),c);

相关主题
文本预览
相关文档 最新文档