当前位置:文档之家› C语言程序设计第五讲

C语言程序设计第五讲

C语言程序设计第五讲
C语言程序设计第五讲

本文由Hilen07贡献

ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。

C语言程序设计

第四讲

语句(开关语句) 三、Switch 语句(开关语句)

多路选择 多路选择 ? switch语句是多分支选择语句,可用嵌 语句是多分支选择语句, 语句是多分支选择语句 套的if语句处理 但降低了可读性。 语句处理, 套的 语句处理,但降低了可读性。 ?当分支数大于三种时,常采用开关语句 当分支数大于三种时, 当分支数大于三种时 简化程序设计。 简化程序设计。

一般形式: 一般形式:

switch (表达式) 表达式) { case 常量表达式 :语句1; 常量表达式1:语句 ; case 常量表达式 :语句2; 常量表达式2:语句 ; : : case 常量表达式 :语句n; 常量表达式n:语句 ; default : 语句; 语句;}

使用switch语句需注意 使用switch语句需注意: 语句需注意:

1、csae后面的各常量表达式的值不能相同。一般为整 、 后面的各常量表达式的值不能相同。 后面的各常量表达式的值不能相同 字符型或枚举型。每个csae后面的常量表达式 型、字符型或枚举型。每个 后面的常量表达式 类型应与switch后括号内表达式类型一致 类型应与 后括号内表达式类型一致 2、程序执行到switch语句时,先计算表达式的值,再 、程序执行到 语句时, 语句时 先计算表达式的值, 自上而下寻找与该值匹配的csae常量,找到后则执 常量, 自上而下寻找与该值匹配的 常量 行此csae后的语句。 对后续 后的语句。 直接执行, 行此 后的语句 对后续csae直接执行,不再进 直接执行 行判断,直到遇break语句或 右花括号 为止。 为止。 行判断,直到遇 语句或 右花括号}为止 3、若 case后面的语句省略不写,则表示它与后续 、 后面的语句省略不写, 后面的语句省略不写 则表示它与后续case 执行相同的语句。 执行相同的语句。

4、 csae后面的 常量表达式不能用一个区间表示, 、 后面的 常量表达式不能用一个区间表示, 任何运算符。 也不能出现 任何运算符。 语句; 例: csae 90<=score<=100:语句; 语句 case 90 ̄100:语句; 语句; 语句 5、case后面可以有多个语句 。 、 后面可以有多个语句 6、各case和default子句的先后顺序可随意。从执 、 子句的先后顺序可随意。 和 子句的先后顺序可随意 行效率的角度出发,通常将发生频率教高的情 行效率的角度出发, 况放在前面。 况放在前面。 default子句可以省略 子句可以省略 7、常量表达式仅起一个语句标号作用。 、常量表达式仅起一个语句标号作用。 8、switch语句和 break语句配合才构成真正意义上 、 语句和 语句配合才构成真正意义上 的分支。 语句的作用是跳出switch结构。 结构。 的分支。 break语句的作用是跳出 语句的作用是跳出 结构

已知年月日, 已知年月日,编程计算该天是这一 年的第几天? 年的第几天? 算法 1)从键盘中输入年、月、日 从键盘中输入年、 从键盘中输入年 2) 判断是否是闰年? 判断是否是闰年? 3) 判断年份? 判断年份? 4) 输出天数

{ unsigned int y,m,d,n; int f; printf("input y,m,d:"); scanf("%d,%d,%d",&y,&m,&d); f=(y%4==0&&y%100!=0||y%400==0); n=d; switch (m-1) { case 11: n+=30; case 10: n+=31; case 9: n+=30; case 8: n+=31; case 7: n+=31; case 6: n+=30; case 5: n+=31; case 4: n+=30; case 3: n+=31; case 2: n+=28+f; case 1: n+=31; } printf("n=%d\n",n); }

switch (m-1) { case 11: n+=344+f; break; case 10: n+=304+f;break; case 9: n+=273+f;break; case 8: n+=243+f;break; case 7: n+=212+f;break; case 6: n+=181+f;break; case 5: n+=151+f;break; case 4: n+=120+f;break; case 3: n+=90+f;break; case 2: n+=59+f;break; case 1: n+=31; } printf("n=%d\n",n);

计算器程序

编程设计一个简单的计算器程序,要求 编程设计一个简单的计算器程序, 根据

用户从键盘输入的表达式: 根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 操作数1 运算符op 操作数2 然后,计算表达式的值, 然后,计算表达式的值,指定的运算符 为加( )、减 )、乘 )、除 为加(+)、减(-)、乘(*)、除(/)

#include main() { float a,b; char c; printf("input expression:a+(-,*,/)b \n"); scanf("%f%c%f",&a,&c,&b); switch(c) { case '+': printf("%f\n",a+b);break; case '-': printf("%f\n",a-b);break; case '*': printf("%f\n",a*b);break; case '/': printf("%f\n",a/b);break; default: printf("input error\n"); } }

switch和else-if的比较 和 的比较

else-if比switch的条件控制更强大一些 比 的条件控制更强大一些 else-if可以依照各种逻辑运算的结果进行 可以依照各种逻辑运算的结果进行 流程控制 switch只能进行 判断,并且只能是整数判 只能进行==判断 只能进行 判断, 断 switch比else-if更清晰 比 更清晰 两者都要尽量避免用得过多、过长, 两者都要尽量避免用得过多、过长,尤其不要嵌 套得太多 它们大大增加程序的分支, 它们大大增加程序的分支,使逻辑关 系显得混乱,不易维护, 系显得混乱,不易维护,易出错

程序结构(3): 程序结构(3): 循环结构程序设计

引入循环的目的——简化程序 简化程序 引入循环的目的

四种循环结构: 四种循环结构:

if——goto while do——while for

三种循环方式:当型循环、 三种循环方式:当型循环、直到型循环 、步 长型循环

循环结构术语: 循环结构术语:

循环条件——结构中的测试表达式 结构中的测试表达式 循环条件 循环体———每个循环周期均要执行的语 每个循环周期均要执行的语 循环体 句序列 循环控制变量——控制条件真 假值的变量。 控制条件真/假值的变量 循环控制变量 控制条件真 假值的变量。 对循环控制变量应做如下处 赋初值; 理:赋初值;将其代入正确 的循环条件;更新/调整 的循环条件;更新 调整

一、用if——goto构成循环 if——goto构成循环

结构形式: 结构形式:

语句标号: 表达式) 语句标号:if (表达式) { 语句 语句组 语句/语句组 goto 语句标号; 语句标号; } } kk: if(a>b) { a=a-2; goto kk;

此结构构成的是“当型”循环。 此结构构成的是“当型”循环。

关于 goto

Goto语句是从汇编语言中发展而来,但使 用goto容易造成混乱。 现代观点认为,混乱根源不在goto,而 在标号 任何程序都可以不用goto就实现其功能 但在某些情况下,使用goto可以让程序 更清晰

语言编程中, 在C语言编程中,不要使用 语言编程中 不要使用GOTO

二、while循环 while循环

结构形式: 结构形式:while(表达式) (表达式) {

语句块1; 语句块1;

语句块2; 语句块2; 工作过程:只要表达式的值为非 , 工作过程:只要表达式的值为非0,就重复执行 表达式的值为 语句块1,直到表达式值为0时为止 表达式值为 语句块 ,直到表达式值为 时为止 ,开始执行语句块 开始执行语句块2 语句块 特点: 先判断, 特点: 先判断,后执行

工作过程: 工作过程:

表达式!=0? 表达式!=0?

语句块1 语句块1

语句块2 语句块2

循环输出100以内的 例:利用while循环输出 利用 循环输出 以内的 奇数。 奇数。

1-100的奇数为:1,3,5,7,9,97,99 的奇数为: 的奇数为 定义变量i=1; 定义变量 循环控制条件: 循环控制条件:i<=100 循环规律 i=i+2;

源程序: 源程序:

1. 2. 3. 4. 5. 6. 7.

#include "stdio.h" void main() { int i=1; while(i<=100){ printf("%d \t",i); i+=2;} }

读程序,写出执行结果: 读程序,写出执行结果:

#include "stdio.h" void main() { int y=10; while(y--); printf("\n y=%d",y); }

例:读程序,回答问题 读程序 回答问题

2、 、

k=2; while(k!=0) {printf(“%d”,k);k--;} printf(“\n”);

循环次数为: 循环次数为:

注意: 注意

(1)循环体如果包含多个语句,应用“{ }”括 )循环体如果包含多个语句,应用“ ” 否则while的范围仅到它之后第一个 起,否则 的范围仅到它之后第一个 分号处 (2)循环体中一定有对于循环控制变量的操作 ) 构成的是“ (3)while构成的是“当型”循环。 ) 构成的是 当型”循环。

三、do——while循环 循环

结构形式: 结构形式:

do { 语句块 语句块1; } while (表达式 表达式); 表达式 语句块2; 语句块

工作过程:执行语句/语句组。判断表达式值, 工作过程:执行语句/语句组。判断表达式值, 当表达式为非 当表达式为非0值时,重复执行语句 语句组,直到表达式的值为0 /语句组,直到表达式的值为0时循 环结束。 环结束。 特点: 特点: 先执行, 先执行,后判断

工作过程

语句块1 语句块1

表达式!=0? 表达式!=0?

语句块2 语句块2

循环重写打印100之 例:利用do——while循环重写打印 之 利用 循环重写打印 内的奇数的程序。 内的奇数的程序。

main() { int i=1; do { printf(“%d”,i); , ; i+=2; } while(i<=100); printf(“\n”); }

构成的是“ 注:do——while构成的是“直到”型循环。 构成的是 直到”型循环。

执行结果有何不同: 例:比较下面程序段,执行结果有何不同: 比较下面程序段 执行结果有何不同 (1) ) #include "stdio.h" (2) #include "stdio.h" ) main() { int sum=0,i; scanf("%d",&i); while (i<=10) {sum =sum+i; i++; } printf("\n %d \n" ,sum); printf(" %d" ,i);}

main() { int sum=0,i; scanf("%d",&i); do {sum=sum+i; i++; } while(i<=10); printf("\n %d \n" ,sum); printf(" %d" ,i);}

通常情况下while、do——while两种结构可以互换。 、 两种结构可以互换。 通常情况下 两种结构可以互换

比较结果: 比较结果:当 i<=10 时,两程序运行结果相 同。 两程序运行结果不同。 当 i >10 时,两程序运行结果不同。while() 一开始就条件不成立,会跳过循环, 一开始就条件不成立,会跳过循环,向下执行 do while()会执行一次循环体,再进行比较, 会执行一次循环体, 会执行一次循环体 再进行比较, 条件不成立

,跳出循环,向下执行。 条件不成立,跳出循环,向下执行。

例:从键盘中输入一组数字,编程对负数求和。 从键盘中输入一组数字,编程对负数求和。

main() { float x,sum; scanf("%f ",&x); while(x!=0) { if(x<0.0) sum+=x;

当输入数字为0 当输入数字为 时,程序结束

scanf("%f",&x); } printf("\nsum===%f ",sum); }

四、For 循环

for循环又称为步长型或计数器型循环 循环又称为步长型或计数器型循环 ? 常用于固定(已知)次数循环情况。 常用于固定(已知)次数循环情况。 ?可替代 可替代while循环完成不固定(未知) 循环完成不固定( 可替代 循环完成不固定 未知) 次数循环情况的处理。 次数循环情况的处理。

for 语句

语法:for([表达式1];[表达式2];[表达式3])语句;

意义: (循环变量赋初值;循环条件;循环变量增值) 意义:for(循环变量赋初值;循环条件;循环变量增值)

执行过程:

表达式1 表达式 表达式2=0? ? 表达式 否 语句 表达式3 表达式 是

for([表达式1];[表达式2];[表达式3])语句; for( 表达式1]; 表达式2]; 表达式3])语句; 相当于: 表达式 相当于: 表达式1; while (表达式 表达式2) 表达式 { 语句块; 语句块 表达式3; 表达式 }

例如: ( 例如:for(i=1;i<=100;i++) ) sum=sum+i;

i=1; while( i<=100 ) { sum=sum+i; i++; } for、while循环可以互换 , 相比之下 循环 、 循环可以互换, 循环可以互换 相比之下for循环 更为简单、 更为简单、灵活

从键盘中输入一组数字,编程对负数求和。 从键盘中输入一组数字,编程对负数求和。

方法一:不固定次数循环( 方法一:不固定次数循环(while/dowhile ) 方法二:固定次数循环( ) 方法二:固定次数循环(for)

main() {float x,sum; int i; for(i=1;i<=6;i++) {scanf(" %f ",&x); if(x<0.0) sum+=x; } printf(" \nsum===%f ",sum); }

不固定次数循环

1. 2. 3. 4. 5. 6. 7. 8.

#include "stdio.h" main() { float x,sum; for( x=1; x!=0; scanf("%f",&x) ) if(x<0.0) sum+=x; printf("\nsum===%f ",sum); }

说明: 说明: (1)最简单的应用形式: )最简单的应用形式: for(循环变量赋初值;循环条件;循环变量增值)语句 (循环变量赋初值;循环条件;循环变量增值) 例如: 例如:for(i=1;i<=10;i++) s=s*i; (2)三个表达式均可缺省,但起分割作用的两个分号不可省。 )三个表达式均可缺省,但起分割作用的两个分号不可省。 例如:for( ; ; ) 等效于 while(1) 例如: 表达式1省略,应在 之前对循环变量赋初值 表达式 省略,应在for之前对循环变量赋初值 省略

i=1; for(;i<=5;i++) printf(“%d\n”,i);

for(i=1;i<=5,i++) printf(“%d\n”,i);

表达式 省略,则不判断条件,循环无终止进行 表达式2省略 则不判断条件, 表达式 省略, 下去

原则上表达式2不可省略 , 原则上表达式 不可省略, 若省略需要在 不可省略 循环体中用其它手段( 循环体中用其它手段(break、goto等)结 、 等 束循环 。 表达式 省略,则应另设法保证循环的结束 表达式3省略 表达式 省略, 此功能一定要在循环体中完成 例:for(i=1;i<=5;) { printf(“%d\n”,i); i++; }

和表达式3可为逗号表达 (3)表达式 和表达式 可为逗号表达 )表达式1和表达式 式 因此可以对多个变量赋初值及修改 例如: 例如:for(i=1,j=10; i<=j; i+

+, j-- ) k=i+j;

(4)for 语句的循环体还可为另一个循环语句

例如: 例如: for(i=1;i<=2;i++)

for(j=1;j<=2;j++) { printf(“%3d”,i+j); printf(“\n”); }

output: 2 3 3 4

五、循环嵌套——循环中再套循环 循环嵌套 循环中再套循环

各种形式的循环均可以相互套用 ? 常用于矩阵运算、报表打印类问题 常用于矩阵运算、

使用多层循环应注意: 使用多层循环应注意: 1、内层循环必须完全包含在外层循环中,不得交叉。 、内层循环必须完全包含在外层循环中,不得交叉。 2、并列循环可以使用相同的循环变量,而嵌套时内、 、并列循环可以使用相同的循环变量,而嵌套时内、 外循环不能使用相同的循环变量

(1) for(i=0;………) { } for(i=0;………) { }

(2) for(i=0;…………) { for(i=0;……) { } }

( 5 ) for循环体可以是一条空语句,实现延时功能。 for循环体可以是一条空语句,实现延时功能。 循环体可以是一条空语句 例: for( i=0;i<10000;i++);

语句之后一般没有 在for和while语句之后一般没有分号 和 语句之后一般没有分号 有分号表示循环体就是分号之前的内容, 有分号表示循环体就是分号之前的内容,即循环 体不存在 如果i初值 例: while (i < 100); //如果 初值<100,死循环 如果 初值< , i++; 例: for (i = 0; i < 100; i++); printf(“%d”, i); // i=100

编程输出如下形式的乘法九九表

1 2 3 4 5 6 7 8 9 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81

编程思路(算法)

打印表头 使用两层循环语句输出1-9的乘法结果 外层循环为i = 1,2,3,9 内层循环 k = 1, i

打印表头

1. 2. 3. 4. 5. 6. 7. 8. 9.

#include "stdio.h" void main() { int i =1, k; while (i<10) printf( "%d\t", i++); printf( "\n\n");

用while()语句编写循环体 语句编写循环体 i=1; while (i<10) { k=1; while (k<=i) printf( "%d\t", i*k++ ); printf("\n"); i++; }

用for 语句编写循环体

for(i=1;i<=9;i++) {for(k=1;k<=i;k++) printf("%d\t",i*k); printf("\n");} printf("\n\n");

用do while()语句编写循环体

i=1; do { k=1; do printf("%d\t",i*k++); while (k<=i); printf( "\n"); i++; } while (i<10);

选择三种循环的一般思路

如果循环次数已知,用for 如果循环次数未知,用while 如果循环体至少要执行一次,用dowhile 只是思路,不是定律

死循环

永远不会退出的循环为死循环

for (;;) {} while (1) {} do {} while (1) 除非确实需要死循环,否则不要使用这样的 形式。它们使循环的中止条件变得不明朗

一般情况下,要极力避免死循环

绝大多数程序不需要死循环。如果出现,往 往都是bug 时间过长的循环会造成“假死”现象,也要 考虑解决

循环结构

假 假 真 假

条 件P

条 件P

当型循环

直到型循环

循环结构

假 假 真

当P为真 为真

条 件P

当P为真 为真

当型循环

循环结构

直到P为假 直到 为假

条 件P

直到P为假 直到 为假

直到型循环

语句、 六、转移控制语句——goto语句、 转移控制语句 语句 break和continue语句 和 语句

对for、while、do-while循环 、 、 循环 进行内部手术 break语句的作用:循环体中使用 语句的作用:循环体中使用break语 语句的作用 语 句可以提前结束整个循环 整个循环。 句可以提前结束整个循环。 Continue 语 句 的 作 用 : 循 环 体 中 使 用 continue语句可以提前结束本次循环。 语句可以提前结束本次循环 语句可以提前结束本次循环。

例1:# include : # define PI 3.14 main() { int r; float area;

程序结束后, 程序结束后,r=4

for(r=1;r<=10;r++) { area=PI*r*r; if(area>50.0) break; printf(“面积等于 面积等于%f\n”,area);/*(1)*/ 面积等于 } printf(“现在 现在r=%d\n”,r); } /*(2)*/ 现在 注意: 注意:area<=50时,执行 时 执行/*(1)*/,否则执行 ,否则执行/*(2)*/

例2: :

# include #define PI 3.14 main() { int r; float area;

程序结束后, 程序结束后,r=11

for(r=1;r<=10;r++) { area=PI*r*r; if(area<50.0) continue; printf(“面积等于 面积等于%f\n”,area);/*(1)*/ 面积等于 } } 注意: 注意:area>50时,执行 时 执行/*(1)*/

说明: 说明:

1、break语句可用于 、 语句可用于switch语句结构中 语句可用于 语句结构中 也可用于循环中。 也可用于循环中。 2、continue语句只可用于循环中。 、 语句只可用于循环中。 语句只可用于循环中 3、在循环嵌套中break与continue都只 、在循环嵌套中 与 都只 影响包含它的那层循环 break和continue少用为妙 和 少用为妙 打印华氏温度与摄氏温度对照表 计算公式: C=(5/9)(F-32)

代码风格 #include 

/* 对 fahr = 0, 20, ……, 300 打印华氏温度与摄氏温度对照表 */ main() { int fahr, celsius; int lower, upper, step; lower upper step fahr = = = = 0; 300; 20; lower; /* 温度表的下限 */ /* 温度表的上限 */ /* 步长 */

while (fahr <= upper) { celsius = 5 * (fahr-32) / 9; printf("%d\t%d\n", fahr, celsius); fahr = fahr + step; } }

fc1.c

没有代码风格

#include main(){int fahr,celsius; int lower,upper,step; lower=0;upper=300;step=20; fahr=lower; while (fahr<=upper){ celsius=5*(fahr-32)/9; printf("%d\t%d\n",fahr,celsius); fahr=fahr+step;}}

fc2.c

思考题:

从键盘中输入一个数字(不限位数),如 何使用循环语句判断这个数字的位数。

2010-11-21

Control Flow

61

c语言程序设计教程第二版课后习题答案

c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 ,

国家开放大学C语言程序设计A第一次形考任务及答案

一、选择题(共40分,每小题2分) 题目1 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。 A. main B. MAIN C. name D. function 题目2 C语言源程序文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目3 由C语言目标文件连接而成的可执行文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目4 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为()。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号

D. 空格或回车 题目5 每个C语言程序文件的编译错误被分为()。 A. 1类 B. 2类 C. 3类 D. 4类 题目6 不符合C语言规定的复合语句是()。 A. {} B. {;} C. {x=0;} D. {y=10} 题目7 C语言程序中的基本功能模块为()。 A. 表达式 B. 标识符 C. 语句 D. 函数 题目8 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()。 A. 表达式 B. 语句 C. 参数表

D. 函数体 题目9 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对()。 A. 尖括号 B. 双引号 C. 单引号 D. 花括号 题目10 在C语言程序中,多行注释语句使用的开始标记符为()。 A. // B. /* C. */ D. ** 题目11 在printf()函数调用的格式字符串中,若使用格式符为“%c”,则对应输出的数据类型为()。 A. char B. int C. float D. double 题目12 在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为()。

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语言程序设计(第二版)课后答案 丁亚涛

习题二 一、选择题 二、填空题 1.18 2.int float double 3.10 11 4.8 16 10 5.% 三、阅读题 1. 10,10,9,10 2. j=1, i=2 k=3,i=3 i=3,i=2 k=1,i=1 习题三 一、选择题 二、填空题 1. 从键盘上读入一个字符在屏幕上输出一个字符 #include 2. 按十进制整数形式输出,有符号 按16进制整数形式输出,没有符号 按十进制小数形式输出,输出的数据长度为7位,有2位小数 按字符形式输出一个字符 3. 按十进制整数形式输入数据 按十进制整数形式输入三位数据 跳过3位十进制数据 按字符形式输入一个字符 4. 分程序;; 5. 大写字母L 6. -1 三、阅读题 1. 6 6 6.00 6.00

2. x=127,x= 127,x=177,x=7f y=123.4567,y= 123.46,y=123,45670 3. 2,1 4. 1234 5. 4,3 6. -6,-6 习题四一、选择题 二、填空题 1. 非0 0 、 2. k==0 3. n%7==0&&n%==0 else 三、阅读题 1. a=1,b=0 2. c=1 习题五一、选择题 二、填空题 1. for语句 do-while 语句 while 语句 2. a=14,y=26 3. k=14,n=-1 4. 39 5. s=19 6. 22222 7. 10 8. 7 9. 8 10. 5,5 三、改错题

1. for( i=0;i<5;i++);for控制部分用分号分隔 2. int j=0;while(j<10){j++;i=j} 分号是多余的,否则会造成死循环 3. int s=1,i=1; while(i<5) {s*=i; i++; } 两条语句需要加上花括号 4. while(j<10);(分号不能少) 5. continue改为break 习题六 一、选择题 二、填空题 1. 20 0 19 2. 数组名 3. 越界 4. 6 5. j==k a[j][k]=1; a[j][k]=0; 三、阅读题 1. 6 5 4 3 2 1 2. aaa bbb ccc ddd 3. 2,2,1 习题七 一、选择题 二、填空题 1. 整个函数体内局部 2. 整型 3. k<=b return y;

完整word版单片机C语言应用程序设计第五版马忠梅课后习题答案

第一章单片机由哪几部分组成?、80511可P2P0和个8位并行I/O口(其中8位中央处理器CPU、片内振荡电器及其时钟电路,4,个中断优先级)个中断源(具有2位定时器/计数器,5 用于外部存储器的扩展),2个16 全双工串行口,布尔处理器。单片机有多少个特殊功能寄存器?它们可以分为几组,各完成什么主要功能?、80512 表P7 1-3个特殊功能寄存器,在物理 上是分散在片内各功能部件中,在数218051单片机内部有答:中,以便能使用统一的直接寻址方式80H~FFH学上把它们组织在内部数据存储器地址空间来访问。这些特殊功能寄存器颁 在以下各个功能部件中:主要完;DPH两个8位寄存器组成)PSW、SP、DPTR(由DPL和(1)CPU:ACC、B、成运算和逻辑判断功能;完成中断管理IP、IE;(2)中断系统:完成 定时或者计数功能、TH1;TCOM、TL0、TH0、TL1(3)定时器/计数器:TMOD、口带有可选的纵向拓展I/O完成I/O口功能,其中部分P1P0、、P2、P3(4)并行I/O口:功能。主要完成数据的串行发送和接收SBUF、PCON5)串行口:SCON、(、决定程序执行顺序的寄存器是哪几个?它是几位寄存器?是否为特殊功能寄存器?它的3 内容是什么信息?它的内容是下一条 将要执行的不是特殊功能寄存器,它是16位寄存器,是程序计数器PC,程序的地址的用途是什么?它由哪几个特殊功能寄存器组DPTRDPTR是什么特殊功能寄存器?4、成?位)和8DPL (数据指针低是16位数据指针寄存器,它由两个8位特殊功能寄存器DPTR位地址,作地址寄存器用,可寻址外部16DPTR用于保存DPH(数据指针高8位)组成,数据存储器,也可寻址程序存储器。线?它们和单片机对外的地址总线和数据总线有什么关系?地址的引脚有多少I/O5、8051 总线和数据总线各是多少位?线可以在外扩存储器时分时复根I/OP0口8I/O8051单片机的40个引脚中有32根口线,和P3.6位地址总线,P2口作为高8用作为外部存储器的低8位地址 总线和8位数据总线,位。16位,数据总线为8P3.7分别作为外部存储器的写和读控制线。地址总线单片机堆栈的最大容量不能超过多少字8051、什么是堆栈?堆栈指针SP的作用是什么? 6 节?堆栈是数据寄存器的一部分,这一部分数据的存取是按照先入后出、后入先出的原则进行的。堆栈指针SP在启用堆栈之前是用来决定堆栈的位置。如在8051芯片复位后,SP的值为07H,则决定了堆栈从08H开始设置。修改SP值可以使堆栈设置在内部RAM的其它部分。在堆栈启 用之后,SP指向堆栈顶部,即由SP来决定数据读出和存入堆栈的地址。8051单片机内部用作 数据区的RAM的容量为128个字节,前8个字节要用来作为工作寄存器R0-R7。堆栈可以从08H开始设置直到7FH,共120个字节。但这只是最大可能的容量。一般情况下,内部RAM还要分出一部分作一般的数据区,或者还要用其中的位寻址区来用于位操作,等等。所以,8051 的堆栈区是比较小的,使用时要注意到这个限制。 8、8051内部RAM低128字节可分为几个区域?其中通用寄存器区的字节地址范围为多少?如何实现寄存器组的切换?可位寻址区的字节地址和位地址范围分别为多少? 8051内部RAM的低128字节可以分为通用寄存器区、位寻址区、便签(工作或者堆栈RAM)1 中的个字节。设置PSW区和特殊功能寄存器区。通用寄存器区的地址从00H到1FH共3212816个字节RS1可以切换当前通用寄存器组。位寻址区地址从20H到2FH共位RSO和127. 0到位,占用地址8051单片机对外有几条专用控制线?其功能是什么?9、,高电位有效,当有条专用控制线。它们是复位信号线RST一般的说法是8051单片机有4,低电平有效,当此复位信号从此线输入时,使单片机复位。访问外部存贮器控制信号EA先使用片单片机全部使用外部指令存贮器,而当此控制线为高电平时,控制线为低电平时,1000H(地址为,在4KB范围之外,才使用指令存贮器FFFFH内的4KB指令存贮器(0000H-)和外部地址锁存器允PSEN-FFFFH)。另有两条输出控制:外部程序存贮器的读选通信号。前者是低电平有效,在读外部程 序存贮器时使用。后者是高电平有效,在锁存ALE许信号P0口输出的低8位地址时使用。端必须怎样处理?为什么?10、8031的/EA为有效时,/EA访问内部ROM,当端是访问外部程序

C语言程序设计入门经典例题

1、加法练习程序:由用户通过键盘输入加数和被加数,程序显示加法式子,用户通过键盘作答后,程序给出正确与错误提示信息。要求:利用C的选择语句if条件语句或switch 开关语句,键盘输入数据前,程序会出被输入数据的信息提示。 #include void main(){ int a,b,c; printf("please put an addend:\n");scanf("%d",&a); printf("please put an augend:\n");scanf("%d",&b); printf("please answer the question:a+b=?");scanf("%d",&c); if(a+b==c) printf("very good!"); else printf("wrong! "); } 个人感觉这个程序最不好的地方是,不管回答正确还是回答错误,程都会立即结束,所以我用了do…while实现一个回答错误之后获得再次回答机会的循环,则程序修改如下: #include void main(){ int a,b,c; printf("请输入一个加数:\n");scanf("%d",&a); printf("请输入一个被加数:\n");scanf("%d",&b); do { printf("请回答:a+b=");scanf("%d",&c); if(a+b!=c) printf("请再想一想\n"); } while(a+b==c) printf("回答正确!"); } 2、判闰年程序:判断某一年是否闰年? 要求:程序首先提示用户从键盘输入4位数年份,程序能显示“XXXX年是闰年”或“XXXX年不闰年”的输出信息。 算法:year 是闰年,即year能被4整除但不能被100整除,或 year 能被 400 整除。其对应的C逻辑表达式为:(year % 4 = = 0 && year % 100 != 0) || (year % 400 = = 0) 或: (!(year % 4) && year % 100) || !(year % 400 ) 程序中可设置1个变量leap来代表是否闰年的信息,闰年:leap=1; 不闰年:leap=0。 #include void main() int year; printf("请输入4位数年份:");scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0)//闰年就是能被4整除但不能被100整除及能被400整除的

C语言程序设计(谭浩强)第四版-课后答案

第一章程序设计和C语言【第15页】 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 #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; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } 3-2-2 #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次

第5章-C语言程序设计(第2版)教材习题答案

【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。2011年10月第二版。ISBN:978-7-302-26972-4。售价:35元。 【答案版本】本习题答案为2012年2月修订版本。 一、选择题 1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句执行一次 D. 循环体语句一次也不执行 2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。 A. 运行程序段后输出1 B. 程序段执行无限次 C. 运行程序段后输出0 D. 程序段中的控制表达式是非法的 3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。 A. int a=1,b=2; while(b--); B. int a=1,b=2; do a++; while(a==b); C. int a=1,b=2; while(a=3); D. int a=1,b=2; do b-- while(b==0); 4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。 do{ printf(“%d\n”,i--); } while(i!=0); A. 0 B. 1 C. 5 D. 无限 5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。 A. 0 B. 5 C. 10 D. 无限 6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。 A. break语句用于循环体内,它将结束该循环 B. break语句用于开关语句,它结束该开关语句 C. break语句用于if语句的内嵌语句内,它结束该if语句 D. break语句在一个循环体内可使用多次 7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。 A. 循环体内可以包含有循环语句 B. 循环体内必须同时出现break语句和continue语句 C. 循环体内可以出现选择语句 D. 循环体可以是空语句 8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。 A. for(; ; x+=i); B. while(1) { x++; } C. for( i=10; ; i--) sum+=i; D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c); 9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。 A.2 B. 3 C. 4 D. 5 10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。 A. 无限循环 B. 循环次数不定 C. 循环4次 D. 循环3次

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"); } 【解答】运行结果为:****** ***** **** *** ** *

《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语言程序设计教程(第二版)》习题答案

2 第1章程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA 二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分 三、应用题(第24页) 2.源程序: main() {int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */ printf("cock hen chick\n"); for(i=1;i<=20;i++) for(j=1;j<=33;j++) for(k=1;k<=33;k++) if (i+j+k*3==100&&i*5+j*3+k==100) printf(" %d %d %d\n",i,j,k*3);} 执行结果: cock hen chick 4 18 78 8 11 81 12 4 84 3.现计算斐波那契数列的前20项。 递推法源程序: main() {long a,b;int i; a=b=1; for(i=1;i<=10;i++) /*要计算前30项,把10改为15。*/ {printf("%8ld%8ld",a,b); a=a+b;b=b+a;}} 递归法源程序: main() {int i; for(i=0;i<=19;i++) printf("%8d",fib(i));} fib(int i) {return(i<=1?1:fib(i-1)+fib(i-2));} 执行结果: 1 1 2 3 5 8 13 21 3 4 55 89 144 233 377 610 987 1597 2584 4181 6765

标准C语言程序设计第五版课后练习题答案

课后练习题答案 Chapter 1 1.1×√×√√×√××√ 1.2b c 1.3ad 1.4semicolon printf math、h \n Chapter 2 2、1 ×√××√√×√××√× 2、2 typedef 255 external const Chapter 3 3、1 ×√××√√×××√√√ 3、2 integer modula 6 logical sizeof paratheses typeconversion precedence 3、3 F F T F F F 3、4 F T T T F 3、5 (b) (c) 3、6 0 -2 7 10、25 false 3 3 1 3、10 0 1 1 1 1 3、11 d } 100 3、12 110 111 3、13 1 3、14 200 3、15 x<=y 3、16 TRUE 3、19 2 1 4 3、20 -40 40 Chapter 4 4、1 ×√√√√√××√√√× 4、2 %hd %x ctype、h %l %*d [^] blank 6 - %e 4、4 (a) scanf(“%d %c %d”, &a, &b, &c); (b)scanf(“%d %f %s”, &a, &b, &c); (c) scanf(“%d-%d-%d”, &a, &b, &c); (d) scanf(“%d %s %d”, &a, &b, &c);

4、5 (a)10x1、230000 (b)1234x 1、23 (c)1234 456、000000 (d) “123、40 ” (e) 1020 1222(乱码) 4、7 (a)1988 x (b)乱码 (c)120 乱码 (d)乱码 x 4、8 (a)1275 -23 5、740000 (b) 1275 -235、740000 (c) 0 0、000000 (d) 1275xxxx-235、74 (e)Cambridge (f)1275 Cambridge 4、10 1988 无无 Chapter 5 5、1 √×√××××××√ 5、2 && switch break if-else x=y 5、4 (a)x = 2; y = 0; (b) x = 1; y = 0; 5、5 (a) if (grade <= 59) if (grade >= 50) second = second + 1; (b) if (number > 100) printf(“out of range”); else if (number < 0) printf(“out of range”); else sum = sum + number; (c) if (T > 200) printf(“admitted”); else if (M > 60) {if (M > 60) printf(“admitted”);} else printf(“not admitted”); 5、6 F T F T 5、8 (a) x > 10 (b) (x != 10)||(y ! = 5) || (z >= 0) (c) (x + y != z) || (z > 5) (d) (x > 5) || (y != 10) || (z >= 5) 5、9 (a) x = 5; y = 10; z = 1 (b) x = 5; y = 10; z = 1 (c) x = 5; y = 0; z =0 (d) 无变化 5、10 (a) x= 0; y = 2; z = 0; (b) x = 1; y = 2; z = 0; 5、12 8 5、13 Delhi Bangalore END 5、14 2 4 4 8 5、15 0 0 2 5、16 25 5、17 Number is negative 5、18 ABC

国家开放大学C语言程序设计A第一次形考任务与答案(20201127230652)

一、选择题(共40分,每小题2分) 1 题目1 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()* A.main B. MAIN C. name D. function 题目2 1 C语言源程序文件的缺省扩展名为()。 A. cpp B. exe C. obj * D.c 题目3 1 由C语言目标文件连接而成的可执行文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目4

程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为() A. 空格或逗号 B. 逗号或回车 C. 逗号或分号

* D.空格或回车 题目5 1 每个C语言程序文件的编译错误被分为()。 A. 1类 ” B.2 类 C. 3类 D. 4类 题目6 不符合C语言规定的复合语句是()。 A. {} B. {;} C. {x=0;} + D.{y=10} 题目7 1 C语言程序中的基本功能模块为()。 A. 表达式 B. 标识符 C. 语句 D. 函数 题目8 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()

B. 语句 C. 参数表 D. 函数体 题目9 1 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用 的起止定界符为一对()。 A. 尖括号 * B.双引号 C. 单引号 D. 花括号 题目10 L 在C语言程序中,多行注释语句使用的开始标记符为()。 A. // + B./* C.*/ D ** 题目11 1 在printf()函数调用的格式字符串中,若使用格式符为“%C',则对应输出的数据类型为()。

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

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

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的值。 4. 求1×2×3×…×10的值。

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语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

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

C语言程序设计习题参考答案 习题1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F 2.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. 函数可以带参数,也可以不带参数。 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 解:1.C 2.C 3.D 4.B 5.B 6.B 7.B 三、填空题

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