文档视界 最新最全的文档下载
当前位置:文档视界 › 谭浩强C语言程序设计基础课后题答案Word版

谭浩强C语言程序设计基础课后题答案Word版

谭浩强C语言程序设计基础课后题答案Word版
谭浩强C语言程序设计基础课后题答案Word版

课后题答案

第一章程序设计基本概念习题分析与解答

1.1 【参考答案】 .EXE

1.2 【参考答案】[1] .C [2] .OBJ [3] .EXE

1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构

第二章 C程序设计的初步知识习题分析与解答

一、选择题

2.1 【参考答案】 B)

2.2 【参考答案】 D)

2.3 【参考答案】 B)

2.4 【参考答案】 A)

2.5 参考答案】 C)

2.6 【参考答案】 A)

2.7 【参考答案】 B)

2.8 【参考答案】 B)

2.9 【参考答案】 D)

2.10 【参考答案】 C)

2.11 【参考答案】 B)

2.12 【参考答案】 B)

2.13 【参考答案】 A)

二、填空题

2.14 【参考答案】[1] 11 [2] 12

2.15 【参考答案】[1] 4.2 [2] 4.2

2.16 【参考答案】[1] { [2] } [3]定义[4]执行

2.17 【参考答案】[1]关键字[2]用户标识符

2.18 【参考答案】[1] int [2] float [3] double

2.19 【参考答案】 float a1=10, a2=10;

或float a1=1, a2=1;(系统将自动把1转换为10)

2.20 【参考答案】存储单元

2.21 【参考答案】 3.5

2.22 【参考答案】[1] a*b/c [2] a/c*b [3] b/c*a

2.23 【参考答案】把10赋给变量s

2.24 【参考答案】[1]位[2] 0或1

2.25 【参考答案】[1] 8 [2] 127 [3] -128 [4] 11111111

2.26 【参考答案】[1] 32767 [2] -32768 [3] 1111111111111111

2.27 【参考答案】[1]十[2]八[3]十六

三、上机改错题

2.28 【分析与解答】

第1行的错误:

(1) include是一个程序行,因此在此行的最后不应当有分号(;)。

(2) include程序行中后面的stdio.h是一个文件名,按规定,文件名应当放在一对双引号(″″)内,或放在一对尖括号(< >)内。

第2行的错误:

(1) main()是主函数的起始行,不是语句,因此最后不应当有分号(;)。

(2) 在同一行上的/ * main function * / 显然是注释;C语言规定:注释由/*开头,由*/结束,但在*号和/之间不得插入任何空格,而在此处“/ *”和“/ *”之间存在空格,因此,/ * main function * /的写法式是错误的,而应写成:/* main function */。

第3行的错误:

(1) 在主函数的起始行main()的后面是函数体,函数体由左花括号({)开始。但在函数体的第一行:float的前面缺少了左花括号({)。

(2) 在同一行上的/* /*r is radius*/, /* s is area of circular*/ */ 显然是注释;C 语言规定:注释由/*开头,由*/结束,并且开头的/*将去找最近的*/去配对,因此在/* /*r is radius*/中,第一个/*与最后的那个*/配上了对,结果紧跟在后面的那个逗号(,)落在了注释的外面,而构成了一个多余符号,为此,在编译时将报告“语法错”。

第6行的错误:

(1) printf(″%f \[KG-*3]n″,s)应当是一条输出语句,但在最后缺少了一个分号。

(2) printf(″%f \[KG-*3]n″,s);是程序的最后一条语句,程序应当结束;但缺少了程序体结束所需的右花括号(});此右花括号可以放在printf(″%f \[KG-*3]n″,s);的后面,也可以放在printf(″%f \[KG-*3]n″,s);的下一行上。

2.27 【分析与解答】

第1行的错误:在include行中的文件名应该是stdio.h,而不是stdio.a。

第2行的错误:在main的后面缺少一对圆括号。

第4行的错误:在c=40的后面缺少分号。

第6行的错误:在printf(″%f \〖KG-*3〗n″,v)的后面缺少分号。

都市闲人 2006-1-6 10:17

《全国计算机等级考试二级教程——C语言程序设计》习题分析与解答(二)

第三章顺序结构习题分析与解答

一、选择题 (单选题)

3.1 【参考答案】 C)

3.2 【参考答案】 C)

3.3 【参考答案】 D)

3.4 【参考答案】 C)

3.5 【参考答案】 D)

3.6 【参考答案】 B)

3.7 【参考答案】 C)

3.8 【参考答案】 C)

3.9 【参考答案】 A)

3.10 【参考答案】 B)

3.11 【参考答案】 C)

3.12 【参考答案】 D)

3.13 【参考答案】 D)

3.14 【参考答案】 A)

3.15 【参考答案】 C)

3.16 【参考答案】 C)

3.17 【参考答案】 C)

3.18 【参考答案】 D)

3.19 【参考答案】 C)

3.20 【参考答案】 B)

二、填空题

3.21 【参考答案】

(1) -200,2500 (2) i=-200,j=2500

(3) i=-200

j=2500

3.22 【参考答案】[1] 12 [2] 0 [3] 0

3.23 【参考答案】[1]一条语句[2]分号(或;)

3.24 【参考答案】分号(;)

3.25 【参考答案】

[1]:100 25.82 1.89234

[2]: 100 <回车符>

25.82 <回车符>

1.89234 <回车符>

[3]:100 <制表符> 25.82 <制表符> 1.89234

3.26 【参考答案】 x=127, x= 127, x= 177,x= 7f, x= 127

3.27 【参考答案】 x=127, x=127 , x=$127 ,x=$ 000127, x=%06d

3.28 【参考答案】 a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500

三、编程题和改错题

3.29 【分析与解答】

(1) 主函数名main后应有一对圆括号。

(2) 变量定义语句中,v的前面缺逗号。

(3) 第三行的printf语句用以提示输入,但是原样输出的字符串没有用双引号括起来;另外,从输入的形式看,输入的数据紧跟在提示之后,因此,printf格式串中最后不应该有换行符——\n。

(4) 因为输入项a、b、c从定义和计算结果来看都是double类型,因此,第四行scanf语句格式串中的格式说明不应当用%d而应当用%lf;且每一个变量之前应该加地址运算符&。

(5) 第七行的printf语句中应当把%d都改成%lf或%f;按输出要求在格式串中应添加相应的原样输出的字符;因为下一个printf的输出从新的一行开始,因此在本输出语句的格式串的最后应当加换行符——\n。

(6) 第八行的printf语句中应当把格式串整理合并放在输出项的前面,输出项放在后面,%d 都改成%lf或%f;中间的\n删去。

(7) 请读者自己写出修改后的程序,并上机调试。

3.30 【分析与解答】

(1) 分析:可用算术式560÷60把分钟换算成小时和分钟,商数就是小时数,余数就是分钟数。

(2) 确定变量的名字和定义变量的类型:在程序中把小时数放在变量h中,把分钟数放在变量m中。这两个变量的类型可以是整型(本题中采用整型),也可以是实型。

(3) 确定所用算法:求〖SX()560〖〗60〖SX〗〗的商数,在C语言中可以用整除的算法,语句是h=560/60;。求余数可用求余运算符 %:560%60,其值放入变量m中的语句是:m=560%60;。

(4) 设计输出格式。若输出的形式定为:小时:分钟,则按此形式设计输出语句。

(5) 把以上内容放在主函数的一对花括号中。

(6) 编写程序如下:

main()

{ int h, m;

h=560/60;

m=560%60;

printf(″The result: %3d : %3d\n″, h,m);

}

运行结果是:

The result: 9 : 20

3.31 【分析与解答】

(1) 确定变量的名字和定义变量的类型。若用a存放1500,用b存放350;用q存放商数,用r存放余数,所有变量应定义成int类型。

(2) 设计输入语句从终端输入1500和350;在输入语句之前,应当设计一个输出语句,用以提示输入。

(3) 可用整除求商数,结果放在变量q中。可用求余运算符%求两数之余数,结果放在变量r中。

(4) 设计输出语句。输出a、b、q、r。

(5) 把以上内容放在主函数的一对花括号中。

本题的程序与3.30相似,请读者参考上题并根据本题的解释自己编程,并上机调试。

3.32 【分析与解答】

(1) 定义4个双精度变量a、b、c和ave,变量a、b、c分别存放读入的3个双精度数,ave 存放它们的平均值。

(2) 设计输入语句,以及在此之前用于提示输入的(printf)语句。

(3) 设计求平均值的算法,把所求得的平均值放入变量ave中。

(4) 设计把变量ave中的数,从小数点后第二位数进行四舍五入的算法。现举例说明:若ave中的数为123.4644,为了保留此值小数点后一位,可用表达式:(int)(123.4644*10)/10.0;依次推算,为了保留此值小数点后二位,可用表达式:(int)(123.4644*100)/100.0;其他依此类推。

(5) 若要求对小数点后第二位数进行四舍五入,则可对原数加0.05后再进行以上运算。如要求保留123.4644小数点后一位且对第二位数进行四舍五入,可用表达式:(int)((123.467+0.05)*10)/10.0。注意:分母一定要用实数10.0而不能用整数10,否则就变成整除了;若要求保留123.4644小数点后两位且对第三位数进行四舍五入,可用表达式:(int)((123.467+0.005)*100)/100.0;其他依此类推。

(6) 设计输出语句。输出a、b、c和ave。

(7) 把以上内容放在主函数的一对花括号中。

(8) 编写程序如下:

main()

{ double a,b,c,ave;

printf(″Enter a ,b ,c : ″);

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

ave=(a+b+c)/3;

printf(″ave=%f\n″, ave); /*用以比较四舍五入前后的数据*/

ave=(int)((ave+0.05)*10)/10.0;

printf(″a=%f, b=%f, c=%f, ave=%f\n″, a,b,c,ave);

}

3.33 【分析与解答】

(1) 关于对变量中的数进行交换的算法请参考3.7题中的解释和《教程》中有关的例题。

(2) 定义4个整型变量a、b、c和t,变量a、b、c分别存放读入的3个整数,t用作临时存储单元。

(3) 设计输入语句,以及在此之前用于提示输入的(printf)语句。

(4) 输出a、b、c中的值,以便于比较。

(5) 交换的步骤如下:

①把c中的值赋给t。

②把b中的值赋给c。

③把a中的值赋给b。

④把t中的值赋给a。

经过以上步骤,已按要求进行了交换。

(6) 输出a、b、c中的值。

(7) 编写程序如下:

main()

{ int a, b, c, t;

printf(″Enter a, b, c :\n″);

scanf(″%d%d%d″,&a,&b,&c);

printf(″(1) a=%d,b=%d,c=%d\n″,a,b ,c);

t=c; c=b; b=a; a=t;

printf(″(2) a=%d,b=%d,c=%d\n″,a,b,c);

}

都市闲人 2006-1-6 10:17

第四章选择结构习题分析与解答

一、选择题

4.1 【参考答案】 A)

4.2 【参考答案】 B)

4.3 【参考答案】 A)

4.4 【参考答案】 D)

4.5 【参考答案】 C)

4.6 【参考答案】 A)

4.7 【参考答案】 B)

4.8 【参考答案】 C)

4.9 【参考答案】 D)

4.10 【参考答案】 D)

二、填空题

4.11【参考答案】[1]非零[2]零

4.12【参考答案】 <、>、<=、>=、==、![KG-*2]=

4.13 【参考答案】[1] ! [2] && [3] [JB>1|][JB>1|]

4.14【参考答案】[1]:![KG-*2](逻辑非)

[2]:<、>、<=、>=(小于、大于、小于等于、大于等于)

[3]:==、![KG-*2]=(等于、不等)

[4]:&&(逻辑与) [5]:[JB>1|][JB>1|](逻辑或)。

4.15 【参考答案】 !

4.16 【参考答案】[1] a=b 或 a1|]x[JB>1|]>4

4.17 【参考答案】 1

4.18 【参考答案】[1] x<=0 [2] 1

4.19 【参考答案】[1] 3 [2] 2 [3] 2

4.20 【参考答案】 *#

三、编程题

4.21 【分析与解答】相关内容请参考《教程》4.2节和4.4节。

(1) 改写如下:

switch(a/10)

{ default : m=5; break;

case 0 : case 1 : case 2 : m=1; break;

case 3 : m=2; break;

case 4 : m=3; break;

case 5 : m=4; break;

};

(2) 本题中对a的判断条件有一定的规律可寻;关键是,在switch语句后的表达式中利用了a/10,从而简化了case标号。

4.22 【分析与解答】

编写本题的程序,首先要解决如何计算学生当前的年龄(设存放实足年龄的变量是age)。

(1) 如果当前的月份大于生日的月份,则学生的实足年龄age=y1-y0。

(2) 如果当前的月份等于生日的月份,就要看日数,当前的日数大于或等于生日的日数,则学生的实足年龄age=y1-y0。

(3) 如果不满足以上的条件,就可断定当前的日期没有超过生日日期,就是说学生的年龄应当是age=y1-y0-1。

以上3条,用C语言可以描述如下:

if((m1>m0)[JB>1|][JB>1|](m1==m0&&d1>=d0)) age=y1-y0;

else age=y1-y0-1;

读者可以参考以上语句写出程序,也可以根据分析写出与此形式不同的语句和程序。

4.23【分析与解答】

(1) 若输入的整数a是奇数,输出:odd number,是偶数输出:even number。

(2) 若一个a是偶数,它就能被2除尽,即a%2==0,输出even number;若是奇数,

它就不能被2除尽,即a%2!〖KG-*2〗=0,输出odd number。

读者可以参考以上给出的算法,写出相应的C语句,并编写出完整的程序。

4.24 【分析与解答】

本题的主要算法是从3个数中找出最大的那个数。假定始终把最大的数放在变量max中。

(1) 假定a中的数最大,把a赋给max。

(2) 用b去和max比较,若b大于max,则把b赋给max;若不大于max,则什么也不做。

(3) 用c去和max比较,若c大于max,则把c赋给max;若不大于max,则什么也不做。

(4) 经过以上操作,max中已放入了a、b、c三个数中的最大数,输出max即可。

读者可以参考以上给出的算法,写出相应的C语句,并编写出完整的程序。

4.25 【分析与解答】

(1) 本题已给出了非常明确的条件,只要写出正确的条件判断语句就可基本完成程序的编写。

(2) 由给出的函数可知,只有x的值在规定的范围内时,才求出y的值,因此程序应当对输入的x进行判断,若超过范围就不求y的值。

(3) 现以使用if[CD#*2]else语句为例写出程序供参考。

main()

{ int x,y;

printf(″Enter x : ″); scanf(″%d″, &x);

if(x>-5&&x<10)

{ if(x==0) y=x-1;

else if(x<10 && x>0 ) y=x+1;

else if(x<0 && x>-5) y=x;

printf(″x=%d y=%d\n″, x,y);

}

printf(″***END***\n\n″);

}

都市闲人 2006-1-6 10:18

第五章循环结构习题分析与解答

一、选择题 (单选题)

5.1【参考答案】 D)

5.2【参考答案】 C)

5.3 【参考答案】 B)

5.4 【参考答案】 C)

5.5 【参考答案】 C)

5.6 【参考答案】 B)

5.7 【参考答案】 D)

5.8【参考答案】 A)

5.9 【参考答案】 D)

5.10【参考答案】 D)

二、填空题

5.11 【参考答案】[1] 5 [2] 4 [3] 6

5.12【参考答案】程序段无限循环,没有输出结果

5.13 【参考答案】 -1

5.14【参考答案】 11

5.15【参考答案】[1] d=1.0 [2] k++ [3] k<=n

5.16 【参考答案】[1] x>=0 [2] x

三、编程题

5.17【分析与解答】

(1) 本题的基本算法是求累加值。累加项的值有规律的递增,每一项的绝对值比前一项增2,因此可以利用循环的控制变量的递增来得到累加项的绝对值。例如:

for( i=1; i<=101; i+=2 )…

(2) 按所给的算式可以看到,累加项的符号是在交叉改变的,为此应当在循环体内设

置一个变量,使它的符号按此规律交叉改变,这可用:s=-s;来实现,s的初值为1;当s 的值为1时,赋值后s中新的值为-1,当s的值为-1时,赋值后s中新的值为1。用s去乘累加项,将使累加项的符号也随之有规律地改变。

(3) 若累加和放在变量sum中,累加项放在变量t中,按照以上叙述,for循环体内的语句可以设计如下:

s=-s; t=s*i; sum=sum+t;

(4) sum的值是51。

(5) 请读者自己对变量做出正确的定义并赋初值,设计输出语句,完善程序。

5.18 【分析与解答】

(1) 本题的基本算法是求累加值。累加项的分子部分都是1;分母的值有规律的递增,依次为1!、2!、…、n!,即,若第i-1项的累加项为

t(i-1),则第i项的累加项是 t( i-1)*i,在程序中可用表达式:t=t/i(i从1变化到n)来表示。

(2) 根据以上分析,若用变量t来存放累加项,当i的值从1变化到n时,可用以下语句来实现累加:

t=t/i; e+=t;

(3) 为了实现累加过程,以上语句应当放在循环内,循环控制变量从1变化到n。

(4) 若用for循环,按题目要求已指定n的值是50。若用while循环,并没有指定n的值,但已指定了循环结束的条件,当t的值小于10-4结束循环。

(5) 现例示用while循环来求e值的部分程序:

i=1; e=1.0; t=1.0;

while( t>=1e-4 )

{ t=t/i;

e+=t;

i++;

}

(6) 请读者自己对变量做出正确的定义,设计输出语句,完善程序;也可以参考此程序段,按照自己的思路独立地完成程序。

(7) e的值应当是:2.71828。

(8) 根据以上分析,读者已不难用for循环来实现求e值的计算。

(9) 注意:在完成此程序时,不要对分母中的阶乘值进行单独计算,因为17!的值已超过long 类型的最大值,更无法求到50!。

5.19【分析与解答】

(1) 从1880年至2000年的年数可用一个for循环来取得。

(2) 对每一年,用以上指定的条件来进行判断,若满足条件即为闰年,进行输出。

(3) 按输出的要求,需要设一个变量用于统计一行中输出的个数,若在一行上已连续输出了5个年数,就需输出一个换行符,使下一个输出项在新的一行上开始;若用变量n来做此统计,则当表达式n%5==0时就应输出一个换行符,同时使n重新置0值。

(4) 若变量y代表年数,if语句的逻辑表达式可以写成如下:

(y%4==0 && y%100!=0[JB>1|][JB>1|]y%400==0)

(5) 以下程序段供参考:

for ( y=1880; y<=2000; y++ )

if(y%4==0 && y%100![KG-*2]=0[JB>1|][JB>1|]y%400==0)

{ printf(″%d ″,y);

n++;

if(n%5==0)

{ printf(″\n″); n=0; }

}

(6) 请读者自己对变量做出正确的定义并赋初值,完善程序;也可以参考此程序段,按照自己的思路独立地完成程序。从1880年至2000年有30个闰年。

5.20 【分析与解答】

(1) 不难理解利用以下的for循环可以在一行上连续输出n个*号:

for(i=1; i<=n; i++) printf(″*″);

printf(″\n″);

若n的值是6,则连续输出6个*号。

(2) 以上图形是在各行上输出数目不等的*号,只是*号的数目依次有规律地变化。在上半部分各行依次是1、3、5、7个,因此可以用以下的程序段来实现这样的输出:

for(k=1;k<=7;k++,k++)

{ for(i=1;i<=k; i++)printf(″*″);

printf(″\n″);

}

在下半部依次是5、3、1个;因此可以用以下的程序段来实现这样的输出:

for(k=5;k>=1;k--,k--)

{ for(i=1;i<=k; i++)printf(″*″);

printf(″\n″);

}

以上程序段从第一列起输出的结果如下:

*

***

*****

*******

*****

***

*

现在我们已完成了在每行输出指定数目的*号。

(3) 输出结果与题目要求不同,它们的区别是:按题目每一行之前有不同的空格,而这里则是所有的行都在第一列上开始输出*号;所以接着就应当解决这一问题。

(4) 分析题目要求,每行第一个*号位置的缩进是有规律的,假定中间这一行第一个*号位置是在第一列,则可看出,第一至第三行的缩进分别是3、2、1个空格;而图形下半部的缩进数则刚好相反。这可在以上循环中添加输出连续空格的for循环来实现,对于上半部程序如下:

b=3;

for(k=1;k<=7;k++,k++)

{ for(j=1;j<=b; j++)printf(″″);

b--;

for(i=1;i<=k; i++)printf(″*″);

printf(″\n″);

}

(5) 请读者在理解以上给出的示例的基础上,自己添加下半部空格的输出。

都市闲人 2006-1-6 10:19

全国计算机等级考试二级教程——C语言程序设计》习题分析与解答(三)

第六章字符型数据习题分析与解答

一、选择题

6.1【参考答案】 B)

6.2【参考答案】 D)

6.3【参考答案】 A)

6.4【参考答案】 A)

6.5【参考答案】 B)

6.6【参考答案】 D)

6.7【参考答案】 D)

6.8【参考答案】 B)

6.9【参考答案】 A)

6.10【参考答案】 A)

6.11【参考答案】 C)

二、填空题

6.12【参考答案】 -1

6.13【参考答案】 1

6.14【参考答案】 ctype.h

6.15【参考答案】 0

6.16【参考答案】 10A 20B 30C 40D

或: 10A

20B

30C

40D

6.17【参考答案】

7.29 101.298AB

或: 7.29

101.29AB

6.18【参考答案】

三、编程题

6.20【分析与解答】

(1) 在进行字符输入时,即使一次输入了一行字符(最后用回车结束输入),字符也只能一个一个地读入。若ch已定义为char型变量,可以用以下的程序段来完成操作:ch=getchar();

while(ch![KG-*2]=′\n′)

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);

谭浩强c语言课后习题答案(重点版)

从137页开始往后的题目才能算得上是真正的有价值的,137页以前的题如果你都做不了,那我建议你好好反思一下自己来大学干嘛的。 137页第一题 #include #include void main() { int i,j,k; for(i=101;i<200;i++) { k=sqrt(i); for(j=2;j<=k;j++) if(i%j==0)break; if(j>k)printf("%d\n",i); } } 137页第三题 #include #include void main() {

int i,a,b,c; printf("水仙花数:\n"); for(i=101;i<1000;i++) /*验证所有的三位数*/ { a=i/100; /*取出百位*/ b=i%100/10; /*取出十位*/ c=i%100%10; /*取出个位*/ if(i==pow(a,3)+pow(b,3)+pow(c,3)) /*条件*/ printf("%d\n",i); } } 137页第四题 #include void main() { int n=1,i; for(i=1;i<10;i++) { n=2*(n+1); } printf("%d\n",n);

} 137页第五题 #include void main() { int i; float h=100,sum=100; for(i=0;i<10;i++) { h=h/2.0; sum=sum+h; if(i==9)printf("%f\n",h); } printf("%f\n",2*sum-100); } 167页第一题 #include void main() { int a[10],i;float sum=0; printf("input 10 numbers:\n");

C语言程序设计谭浩强第四版期末复习重点

C语言程序设计谭浩强第四版期末复习重点 Newly compiled on November 23, 2020

第一章 程 序设计和C 语言 .什么是计算机程序 程序.. :一组计算机能识别和执行的指令。只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作 计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。 什么是计算机语言 计算机语言:人和计算机交流信息的、计算机和人都能识别的语言。 计算机语言发展阶段:机器语言(由0和1组成的指令) 符号语言(用英文字母和数字表示指令) 高级语言(接近于人的自然语言和数学语言) 面向过程的语言(非结构化的语言、结构化语言);面向对象的语言 语言的发展及其特点 C 语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,既可用于编写应用软件,又能用于编写系统软件。因此C 语言问世以后得到迅速推广。 C 语言主要特点: 语言简洁、紧凑,使用方便、灵活。(只有37个关键字、9种控制语句;程序书写形式 自由,源程序短) 运算符丰富。(34种运算符;把括号、赋值、强制类型转换等都作为运算符处理;表达 式类型多样化) 数据类型丰富。(包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型;C99又扩充了复数浮点类型、超长整型、布尔类型;指针类型数据,能用来实现各种复杂的数据结构的运算。)

具有结构化的控制语句。(如if…else语句、while语句、do…while语句、switch语句、for语句用函数作为程序的模块单位,便于实现程序的模块化;C语言是完全模块化和结构化的语言) 语法限制不太严格,程序设计自由度大。(对数组下标越界不做检查;对变量的类型使用比较灵活,例如,整型量与字符型数据可以通用;C语言允许程序编写者有较大的自由度,因此放宽了语法检查) 允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作。(C语言具有高级语言的功能和低级语言的许多功能,可用来编写系统软件;这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言) 用C语言编写的程序可移植性好。(C的编译系统简洁,很容易移植到新系统;在新系统上运行时,可直接编译“标准链接库”中的大部分功能,不需要修改源代码;几乎所有计算机系统都可以使用C语言) 生成目标代码质量高,程序执行效率高。 1.C语言允许用两种注释方式:计算法 3.编写程序 4.对源程序进行编辑、编译和连接 5. 运行程序,分析结 6.编写程序文档 第二章算法——程序的灵魂 一个程序主要包括以下两方面的信息: (1) 对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,这就是数据结构。 (2) 对操作的描述。即要求计算机进行操作的步骤,也就是算法。 数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。 着名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:算法 + 数据结构 = 程序

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

1.6 编写一个程序,输入a、b、c 三个值,输出其中最大值。 课后习题答案完整版 第一章 1.5 请参照本章例题,编写一个C 程序,输出以下信息: ************************** Very Good! ************************** 解:mian() {int a,b,c,max; printf( “请输入三个数a,b,c:\n ” ); scanf( “%d,%d,%”d ,&a,&b,&c); C语言程序设计第三版谭浩强 解: mian() {printf( ”); “************************** printf( “”X “ n” ); printf( “Very Good!” \ n”); printf( “”X “ n” ); printf( “************************** ); max=a; if(max

{char #include c1='a',c2='b',c3= 'c',c4= ' \101 ',c5= ' 116'; printf( “a%cb%c n”,c1,c2,c 3); printf( “ b%c %c” ,c4,c5); } 解: aa 口bb 口口口cc 口口口口口口abc A 口N 3.7 要将"China" 译成密码,译码规律是:用原来字母后面的第 4 个字母代替原来的字母.例如,字母"A" 后面第 4 个字母是"E" . "E"代替"A"。因此,"China"应译为"Glmre" 。请编一程序,用赋初值的方法使cl 、c2、c3、c4、c5 五个变量的值分别为, ' C'、h'、i '、n'、a'经过运算,使cl、c2、c3、c4、c5分别变为'G'、' I '、' m >' r'、’ e',并输出。main() { char c1=' C' ,c2=' h' ,c3= ' i ' ,c4= ' n' ,c 5=' a' ; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf(" 密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是GImre 3.9 求下面算术表达式的值。 解: 1 )x+a%3*(int)(x+y)%2/4

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C程序设计第四版谭浩强_习题&例题第7章

第7章函数 例7.1 #include int main() { void print_star(); void print_message(); print_star(); print_message(); print_star(); return 0; } void print_star() { printf("***********************************\n"); } void print_message() { printf("How do you do!\n"); } 例7.2 int max(int x,int y) { int z; z=x>y?x:y; return(z); } #include int main() { int max(int x,int y); int a,b,c; printf("please enter two integer number:"); scanf("%d,%d",&a,&b); c=max(a,b); printf("max is %d\n",c); return 0; }

例7.3 #include int main() { int max(float x,float y); float a,b; int c; printf("please enter two integer number:"); scanf("%f,%f",&a,&b); c=max(a,b); printf("max is %d\n",c); return 0; } int max(float x,float y) { float z; z=x>y?x:y; return(z); } 例7.4 #include int main() { float add(float x,float y); float a,b,c; printf("please enter a and b:"); scanf("%f,%f",&a,&b); c=add(a,b); printf("sum is %f\n",c); return 0; } float add(float x,float y) { float z; z=x+y; return(z); }

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

c语言-C程序设计(第四版)谭浩强_课后习题答案第8章

C程序设计(第四版)谭浩强_课后习题答案第8章 第8章善于利用指针220 8.1指针是什么220 8.2指针变量222 8.2.1使用指针变量的例子222 8.2.2怎样定义指针变量223 8.2.3怎样引用指针变量224 8.2.4指针变量作为函数参数226 8.3通过指针引用数组230 8.3.1数组元素的指针230 8.3.2在引用数组元素时指针的运算231 8.3.3通过指针引用数组元素233 8.3.4用数组名作函数参数237 8.3.5通过指针引用多维数组245 8.4通过指针引用字符串255 8.4.1字符串的引用方式 255 8.4.2字符指针作函数参数259 8.4.3使用字符指针变量和字符数组的比较263 8.5指向函数的指针266 8.5.1什么是函数指针266 8.5.2用函数指针变量调用函数266 8.5.3怎样定义和使用指向函数的指针变量268 8.5.4用指向函数的指针作函数参数270 8.6返回指针值的函数274 8.7指针数组和多重指针277 8.7.1什么是指针数组 277 8.7.2指向指针数据的指针280 8.7.3指针数组作main函数的形参282 8.8动态内存分配与指向它的指针变量285 8.8.1什么是内存的动态分配285 8.8.2怎样建立内存的动态分配285 8.8.3void指针类型287 8.9有关指针的小结288 习题291 8-1 #include int main() { void swap(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p3; printf("input three integer n1,n2,n3:"); scanf("%d,%d,%d",&n1,&n2,&n3);

C语言程序设计第四版第六章答案_谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

C语言程序设计谭浩强(第四版)期末复习重点

第一章程序设计和C语言 1.1.什么是计算机程序 程序 ..:一组计算机能识别和执行的指令。只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。 1.2什么是计算机语言 计算机语言:人和计算机交流信息的、计算机和人都能识别的语言。 计算机语言发展阶段:机器语言(由0和1组成的指令) 符号语言(用英文字母和数字表示指令) 高级语言(接近于人的自然语言和数学语言) 面向过程的语言(非结构化的语言、结构化语言);面向对象的语言 1.3C语言的发展及其特点 C语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,既可用于编写应用软件,又能用于编写系统软件。因此C语言问世以后得到迅速推广。 C语言主要特点: 语言简洁、紧凑,使用方便、灵活。(只有37个关键字、9种控制语句;程序书写形式自由,源程序短) 运算符丰富。(34种运算符;把括号、赋值、强制类型转换等都作为运算符处理;表达式类型多样化) 数据类型丰富。(包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型;C99又扩充了复数浮点类型、超长整型、布尔类型;指针类型数据,能用来实现各种复杂的数据结构的运算。) 具有结构化的控制语句。(如if…else语句、while语句、do…while语句、switch语句、for语句用函数作为程序的模块单位,便于实现程序的模块化;C语言是完全模块化和结构化的语言) 语法限制不太严格,程序设计自由度大。(对数组下标越界不做检查;对变量的类型使用比较灵活,例如,整型量与字符型数据可以通用;C语言允许程序编写者有较大的自由度,因此放宽了语法检查) 允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作。(C语言具有高级语言的功能和低级语言的许多功能,可用来编写系统软件;这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言) 用C语言编写的程序可移植性好。(C的编译系统简洁,很容易移植到新系统;在新系统上运行时,可直接编译“标准链接库”中的大部分功能,不需要修改源代码;几乎所有计算机系统都可以使用C语言) 生成目标代码质量高,程序执行效率高。 1.4.1最简单的C语言程序举例 C语言允许用两种注释方式://:单行注释,可单独占一行,可出现在一行中其他内容的右侧。 /*……*/:块式注释,可包含多行。 1.4.2 C语言程序的结构 C语言程序的结构特点: 1、一个程序由一个或多个源程序文件组成(小程序往往只包括一个源程序文件,一个源程序文件中可以包括三个部分:预处理指令、全局声明、函数定义。) 2、函数是C程序的主要组成部分(一个C程序是由一个或多个函数组成的;必须包含一个main函数(只能有一个);每个函数都用来实现一个或几个特定功能;被调用的函数可以是库函数,也可以是自己编制设计的函数。) 3、一个函数包括两个部分(函数首部、函数体(声明部分、执行部分)) 4、程序总是从main函数开始执行 5、C程序对计算机的操作由C语句完成(C程序书写格式是比较自由的:一行内可以写几个语句;一个语句可以分写在多行上。) 6、数据声明和语句最后必须有分号 7、C语言本身不提供输入输出语句 8、程序应当包含注释,增加可读性1.6 程序设计的任务 1.问题分析 2.设计算法 3.编写程序 4.对源程序进行编辑、编译和连接 5.运行程序,分析结 6.编写程序文档

《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78 习题82 3-1 #include #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } 3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

C语言程序设计考试题库

一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。

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)

C语言程序设计复习题

《C语言程序设计》复习题 一、判断题(本大题共60个小题) 1.C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 2.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 3.注释内容太多会影响程序的执行效率。 4.变量要“先定义,后使用”。 5.字符常量'a'与字符串常量"a"没有区别。 6.数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。 7.数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。 8.表达式5/2+5.0/2+7%6 的值为5.5。 9.设int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4 的值为:4.5。 10.设int a=12; 则表达式a/=a+a的值是0.5。 11.在C语言中,运算符!比&&的优先级高。 12.在C语言中,运算符的优先级最小的是逗号运算符。 13.scanf("%d,%d",&x,&y);的输入格式:3,4<回车>。 14.以下程序运行结果是:1,7,0 void main() { int x=1,y=1,z=10; if(z< 0) if(y> 0) x=3; else x=5; printf(" %d," ,x); if(z=y< 0) x=3; else if(y==0) x=5; else x=7; printf(" %d,%d" ,x,z); } 15.该程序运行结果是:BCother void main()

{ char x=‘B’; switch(x) { case ‘A’: printf(“A”); case ‘B’: printf(“B”); case ‘C’: printf(“C”); default: printf(“other”); } } 16.下面程序段运行时输出结果是a=2,b=8 void main() { int x=1,y=1,a=2,b=7; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 17.下面程序,当输入为:"abc?" 时,执行结果是:abc void main() { char c; c=getchar(); while (c!='?' ) { putchar(c); c=getchar();} }

谭浩强C语言全书word版第二章

2 程序的灵魂—算法 (1) 2.1 算法的概念 (1) 2.2 简单算法举例 (1) 2.3 算法的特性 (4) 2.4 怎样表示一个算法 (4) 2.4.1 用自然语言表示算法 (4) 2.4.2 用流程图表示算法 (4) 2.4.3 三种基本结构和改进的流程图 (8) 2.4.4 用N-S流程图表示算法 (9) 2.4.5 用伪代码表示算法 (10) 2.4.6 用计算机语言表示算法 (11) 2.5 结构化程序设计方法 (11) 2程序的灵魂—算法 一个程序应包括: ●对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。 ●对操作的描述。即操作步骤,也就是算法(algorithm)。 Nikiklaus Wirth提出的公式: 数据结构+算法=程序 教材认为: 程序=算法+数据结构+程序设计方法+语言工具和环境 这4个方面是一个程序涉及人员所应具备的知识。 本课程的目的是使同学知道怎样编写一个C程序,进行编写程序的初步训练,因此,只介绍算法的初步知识。 2.1 算法的概念 做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。 ●计算机算法:计算机能够执行的算法。 ●计算机算法可分为两大类: ?数值运算算法:求解数值; ?非数值运算算法:事务管理领域。 2.2 简单算法举例 【例2.1】求1×2×3×4×5。 最原始方法: 步骤1:先求1×2,得到结果2。

步骤2:将步骤1得到的乘积2乘以3,得到结果6。 步骤3:将6再乘以4,得24。 步骤4:将24再乘以5,得120。 这样的算法虽然正确,但太繁。 改进的算法: S1: 使t=1 S2: 使i=2 S3: 使t×i, 乘积仍然放在在变量t中,可表示为t×i→t S4: 使i的值+1,即i+1→i S5: 如果i≤5, 返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。 如果计算100!只需将S5:若i≤5改成i≤100即可。 如果该求1×3×5×7×9×11,算法也只需做很少的改动: S1: 1→t S2: 3→i S3: t×i→t S4: i+2→t S5:若i≤11, 返回S3,否则,结束。 该算法不仅正确,而且是计算机较好的算法,因为计算机是高速运算的自动机器,实现循环轻而易举。 思考:若将S5写成:S5:若i<11, 返回S3;否则,结束。 【例2.2】有50个学生,要求将他们之中成绩在80分以上者打印出来。 如果,n表示学生学号,n i表示第个学生学号;g表示学生成绩,g i表示第个学生成绩; 则算法可表示如下: S1: 1→i S2: 如果g i≥80,则打印n i和g i,否则不打印 S3: i+1→i S4:若i≤50, 返回S2,否则,结束。 【例2.3】判定2000 —2500年中的每一年是否闰年,将结果输出。 润年的条件: 1)能被4整除,但不能被100整除的年份; 2)能被100整除,又能被400整除的年份; 设y为被检测的年份,则算法可表示如下: S1: 2000→y

《C语言程序设计》_谭浩强版教案

《C 语言程序设计》教案 职称: 助教 ____________ 单 位:湖南理工职业技术学院 学院(教研室):风能工程学院 工业机器人专业 授课教师: 周常欣

教 学 重 占 八、、 和 难 占 八、、 一、 程序设计和 C 语言 重点:计算机程序、计算机语言、 C 语言编译软件的安装、最简单的 C 语言程序 二、 算法:程序的灵魂 重点:简单的算法举例、算法的特性、用流程图表示算法。 三、 顺序结构程序设计 重点:C 语言的数据类型、C 语句的种类、赋值语句、数据的输入输出及输入输出 中最常用的 控制格式。 四、 选择结构程序设计 重点:关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、 二条分支语句的格 式及基本应用、多分支的选择语句。 五、 循环结构程序设计 重点:C 构成循环的四种方法,尤其是后三种方法、 break 与continue 语句的基本作 用。 难点:while 语句;do-while 语句;for 语句;循环的嵌套; break 与continue 语句。 六、 数组 重点:一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处 理函数及字符处理函数;数组的应用 难点:二维数组的定义与引用;字符数组;数组的应用 七、 函数 重点:函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的 递归调 用;数组作为函数参数;变量作用域;量存储类别; 难点:函数定义、函数调用、函数声明等基本基本概念;函数的嵌套调用与递归调 用;数组作 为函数的参数、变量的存储类别与作用域。 八、 指针 重点和难点:指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字 符串、指针 数组与二级指针;指针的应用 九、 建立自己的数据类型 重点和难点:定义和使用结构体变量、用指针处理链表、共用体类型 十、文件 重点:文件的基本知识、 fopen 、fclose 函数打开与关闭文件、顺序读与数据文件、 随机读写数据文件 难点:用二进制方式向文件读写一组数据。 十一、常见错误分析 重点和难点:文件的基本概念;文件的打开、关闭、常用读写方法。 十二、数组高级应用 重点:不定长数组与二维数组的应用 难点:不定长数组与二维数组的应用 十三、综合应用 重点:数组、if 语句、循环语句、函数知识的综合应用 难点:二维数组、指针 教材、 参 考书 教材:《C 程序设计》(第四版) 谭浩强著 清华大学出版社2010年6月 参考书:《C 程序设计语言》 Kernighan&Ritchie 机械工业出版社 《C 语言程序设计》教案 第1-2课时

相关文档
相关文档 最新文档