C语言 第四章 控制结构作业解答(一)
C语言程序设计教程李含光版第4章习题解答
3
(4) . #include<stdio.h> #define RATE 0.053 double fun(float); void display(float,int); int main() { float dep; int season; scanf("%f %d",&dep,&season); display(dep,season); return 0; } double fun(float d) { return d*RATE; } void display(float d,int s) { int i; printf("季度 利息 余额\n"); printf("-------------------------------\n"); for(i=1;i<=s;i++) { printf("%-4d %-.2f %-.2f\n",i,fun(d),fun(d)*i+d); printf("-------------------------------\n"); } } (5) . #include<stdio.h> double fun(void); int main() { printf("%lf\n",fun()); return 0; } double fun(void) { double s=0; int n=1; while((double)(2*n-1)/((2*n)*(2*n))>1e-4) { s=s+(double)(2*n-1)/((2*n)*(2*n)); n++;
2
{ float x1,x2; { x1=-b/(2*a); x2=-b/(2*a); printf("%.2f ,%.2f\n",x1,x2); } } void f3(float a,float b,float c,float d) { float x1,x2; { x1=-b/(2*a); x2=sqrt(-d)/(2*a); printf("%.2f+i*%.2f\n",x1,x2); printf("%.2f-i*%.2f\n",x1,x2); } } (3). #include<stdio.h> double p(int,double); int main() { int n; double x; do { scanf("%d",&n); }while(n<0); scanf("%lf",&x); printf("%lf\n",p(n,x)); return 0; } double p(int n,double x) { double pn; if(n==0) pn=1; else if(n==1) pn=x; else pn=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n; return pn; }
C语言程序设计(第3版)何钦铭-颜-晖-第4章-循环结构
第4章循环结构【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果是什么?为什么?如果将精度改为 10-3,运行结果有变化吗?为什么?解答:如果对 item 赋初值 0,则程序运行结果是 pi=0,因为 item 为 0 时不满足 while 循环的执行条件,即不执行循环,故 pi 值为 0。
如果将精度改为10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得 while 循环次数减少,必然影响到π的值。
【练习 4-2】运行例 4-2 程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。
如果第一个输入数据是-1,运行结果是:Grade averageis 0,因为第一个输入就是-1,则 while 循环条件不成立,不执行循环体。
【练习 4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数 eps,计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps(保留6位小数)。
试编写相应程序。
解答:#include <stdio.h>#include <math.h>int main(void){int denominator, flag;double item, s,eps;printf(“Input eps:”);scanf(“%lf”,&eps);flag = 1;denominator = 1 ;item = 1.0;s = 0;while(fabs (item) >= eps) {item = flag * 1.0 / denominator;s = s + item;flag = -flag;denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;}【练习 4-4】如果将例 4-3 程序中的 do-while 语句改为下列 while 语句,会影响程序的功能吗?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10;count ++;}解答:会有影响,因为当输入数据 number 为 0 时,上述 while 循环将不执行,count 值仍为 0,故输出为 0,不符合题目要求。
机器人程序设计(C语言)(第2版)章节练习题及参考答案
第一章一种新的C语言学习方式1.一台能够工作的计算机包括?CPU (Central Processing Unit,中央处理单元,进行运算和控制,包括运算器和控制器等)、存储器(如RAM、ROM等)、输入设备、输出设备(包括串行/并行接口、USB等)。
其中,RAM (RandomAccess Memory,随机存储器)主要用于存储数据,ROM (RcadOnlyMemory, 只读存储器)主要用于存储程序。
2.单片机工作时需要什么?需要稳定的电源、晶振、外部存储器和编程调试接口,就像计算机工作时需要电源、晶振、硬盘或其他大容量外部存储器和操作系统一样。
微控制器是将单片机独立工作所需的电源适配器、晶振、外部存储器和串口转换电路等封装到一个模块上,这样就能直接与计算机连接并进行编程开发,不需任何其他芯片和电路。
3. AT89S52是一种什么样的单片机?是一种高性能、低功耗的8位单片机,内含8 KBISPdn-System Programmable系统在线编程)可反复擦写IOOO次的Flash只读程存器,采用ATMEL公司的高密度非易失性存储技术制造,兼容标准MCS51指令系统及其引脚结构。
在实际工程应用中,功能强大的AT89S52 已成为许多高性价比嵌入式控制应用系统的解决方案。
4. Progisp是一款什么样的软件?是一款免费下载的ISP软件,不需要专门的安装即可使用,非常方便。
使用该软件,读者可以将C语言程序生成的可执行文件下载到机器人单片机上。
使用时需要1根USBA转B 信号线。
5.简述串口调试工具的特点。
串口调试工具就是串行通信接口调试软件,集数据发送、数据接收、数据监控、数据分析等功能于一身,具有小巧精致、操作简捷、功能强大的特点,可以在串口通信监控、设备通信测试工作中有效提高效率。
6. pr i ntf ()函数称为?称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出显示。
Print ()函数是C语言提供的标准输出函数,定义在C语言的标准函数库中,要使用它,必须包括定义标准函数库的头文件stdio. h o第二章最简单的C程序设计——机器人做算数1. C语言用什么整型变量?C语言用关键字imt定义整型变量。
C语言第四章程序控制结构复习题
C语言第四章程序控制结构复习题选择结构程序设计复习题一.选择题1.已有定义语句:int x=3,y=4,z=5;,则值为0的表达式是:()a) x>y++ b) x<=++y c) x !=y+z>y-z d) y%z>=y-z 2.已有定义语句:int x=3,y=0,z=0;,则值为0的表达式是:()a) x&&y b) x||z c) x ||z+2&&y-z d) !((x<y)&& !z||y)<="" bdsfid="66" p=""></y)&&>3. x为奇数时值为“真”,x为偶数时值为“假”的表达式是:()a) !(x%2==1) b) x%2==0 c) x%2 d) !(x%2)4. 已有定义语句:int a=3,b=4;,则执行下述表达式后,变量b 的值是:()(a++==4)&&(b++==5)a) 3 b) 4 c) 5 d) 65. 已有定义语句:int a=4,b=6;,则执行下述表达式后,变量b 的值是:()(a++==4)||(b++==6)a) 4 b) 5 c) 6 d) 76. 已有定义语句:int x=6,y=4,z=5;,执行以下语句后,能正确表示x,y,z值的选项是:()if(xa) x=4,y=5,z=6b) x=4,y=6,z=6c) x=4,y=5,z=5d) x=5,y=6,z=47. 以下程序的运行结果是:()main(){ int i=0;if(i==0) printf(“**”);else printf(“$”); printf(“*\n”);}a) * b) $* c) ** d) ***8. 若变量a,b,c都为整型,且a=1、b=15、c=0,则表达式a==b>c的值是()a) 0 b) 非零c) “真”d) 19. a为0时,值为“真”的表达式是()a) a b) !(++a) c) a=0 d) a==010. 若有定义和语句:int a=4,b=5,c=0d; d=!a&&!b||!c;,则d 的值是()a) 0 b) 1 c) -1 d) 非0的数11. 以下选项不能正确判断a为偶数的表达式是()a) a%2==0 b) !a%2!=0c) a/2*2-a==0 d) !(a%2)12. 有以下程序:main(){ int a=2,b=1,c=2;if(b<a)< bdsfid="99" p=""></a)<>if(b<0) c=0,c++;b++;printf(“b=%d,c=%d\n”,b,c);}程序的输出结果是:()a) b=1,c=2 b) b=1,c=0c) b=2,c=2 d) b=1,c=113. 有以下程序:main(){ int n;scanf(“%d”,&n);if(n++<5) printf(“%X\n”,n);else printf(“%X\n”,n--);}若执行程序时从键盘上输入9,则输出结果是:()a) 11 b) A c) 9 d) 814. 有以下程序:main(){ int m=5;if(++m>5)if(m++>5) printf(“%d\n”,m+5); else printf(“%d\n”,m--);else printf(“%d\n”,--m);}程序的输出结果是:()a) 8 b) 5 c) 10 d) 1215. 有以下程序:main(){ float x=2.0,y;if(x<0.0) y=0.0;else if(x<5.0)&&(!x)) y=1.0/(x+2.0); else if(x<10.0) y=1.0/x;else y=1.0;printf(“%f\n”,y);}程序的输出结果是:()a) 0.000000 b) 0.250000c) 0.500000d) 1.00000016. 假设所有变量均已正确说明:a=b=c=0; x=35;if(!a) x--;else if(b) ; if(c) x=3;else x=4;以上程序段运行后,x的值是:()a) 34 b) 35 c) 4 d) 317. 当a=1、b=3、c=5、d=4时,执行下面一段程序:if(a<b)< bdsfid="147" p=""></b)<>if(celseif(a<c)< bdsfid="152" p=""></c)<>if(belse x=3;else x=6;else x=7;以上程序段运行后,x的值是:()a) 1 b) 2 c) 3 d) 618. 执行以下程序:main(){ int s,t,a,b;scanf(“%d,%d”,&a,&b);s=1;t=1;if(a>0) s=s+1;if(a>b) t=s+t;else if(a==b) t=5;else t=2*s;printf(“t=%d\n”,t);}要使输出结果为:t=4,给a和b输入的值应满足的条件是:()a) a>b b) a<b<a a>b</b19. 以下程序的输出结果是:()main(){ int a=5,b=4,c=6,d;printf(“%d\n”,d=a>b ?(a>c ? a:c) : (b));}a) 5 b) 4 c) 6 d) 不确定20. 若有定义语句:int x=3,y=2,z=1; 则以下表达式的值是:()z*=(x>y ? ++x :y++)a) 0 b) 1 c) 4 d) 321. 有以下程序:main(){ int a=15,b=21,m=0;switch(a%3){ case 0: m++;break;case 1: m++;switch(b%2){ default: m++;case 0: m++;break;}}printf(“%d\n”,m);}程序的输出结果是:()a) 1 b) 2 c) 3 d) 422.以下while循环中,循环体执行的次数是:()k=1;while (--k) k=10;a) 10次b) 无限次c) 一次也不执行d) 1次23.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()x=0;while (!x!=0) x++;a) 退出while循环后,x的值为0b) 退出while循环后,x的值为1c) while的控制表达式是非法的d) while循环执行无限次24. 有以下程序段,其中n为整型变量,执行后输出结果是:()while(n--) ; printf(“%d”,n) ;a) 2 b) 10 c) -1 d) 025. 有以下程序段,其中t为整型变量,以下选项中叙述正确的是:()t=1;while (-1){ t--;if(t) break;}a) 循环一次也不执行b) 循环执行一次c) 循环控制表达式(-1)不合法d) 循环执行2次26. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()x=-1;do{;}while (x++);printf(“x=%d”,x);a) 该循环没有循环体,程序错误b) 输出x=1c) 输出x=0d) 输出x=-127. 有以下程序段,其中x,y为整型变量,程序输出结果是:()for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ;printf(“x=%d,y=%d”,x,y);a) x=2,y=0 b) x=1,y=0c) x=1,y=1 d) x=0,y=028. 有以下程序:{ int x=0,y=0;while(x<5&&++y) y--,x++; printf(“%d,%d”,y,x);}程序的输出结果是:()a) 0,5 b) 1,5 c) 0,4 d) 1,429. 有以下程序:main(){ int num=0;do{ num++ ;printf(“%d\n”,num); } while(num<=2);}程序的输出结果是:()a) 1 b) 1c) 1 d) 12 2 23 3430. 有以下程序:main(){ int x=3;do{ printf(“%d”,x-=2); }while(!(--x));}程序的输出结果是:()a) 1 b) 3 0 c) 1 -2 d) 死循环31. 有以下程序:main(){ int y=10;do { y--; } while(--y);printf(“%d\n”,y--);}程序的输出结果是:()a) 1 b) -1 c) 8 d) 032. 有以下程序:main(){ int x=3,y;do{ y=--x;if( !y) printf(“x”) ;else printf(“y”) ;} while(x);}程序的输出结果是:()a) xyx b) yyx c) yxx d) yxy33. 有以下程序段,此处do-while循环的结束条件是:()int n=0,p;do {scanf(“%d”,&p);n++;} while (p!=12345&&n<3);a) p的值不等于12345并且n的值小于3b) p的值等于12345并且n的值大于等于3c) p的值不等于12345或者n的值小于3d) p的值等于12345或者n的值大于等于334. 有以下程序:main(){ int a,b,t;for(a=3,b=0 ;!a==b ;a--,b++)if(a>b) { t=a;a=b;b=t;}printf(“%d,%d\n”,a,b);程序的输出结果是:()a) 4,1 b) 1,4 c) 4,-1 d) -1,435. 有以下程序:main(){ int x=3,y=0;do{ while( !y) y=-x;} while(x--);printf(“%d,%d\n”,x,y);}程序的输出结果是:()a) -1,3 b) -1,-3c) 0,0 d) 1,-336. 有以下程序:main(){ int m,n;printf(“Enter m,n:”) ; scanf(“%d%d”,&m,&n); while(m!=n){while(m>n) m-=n;while(n>m) n-=m;}printf(“m=%d\n”,m);}程序的输出结果是:()a) m=3 b) m=2 c) m=1 d) m=037. 有以下程序:main(){ int i,s=1;for(i=1 ;i<=50 ;i++)if( !(i%5)&& !(i%3)) s+=i;printf(“%d\n”,s);程序的输出结果是:()a) 409 b) 277 c) 1 d) 9138. 有以下程序:main(){ int x=0,y=0,i;for(i=1 ; ;++i){ if(i%2==0) {x++ ;continue ;} if(i%5==0) {y++ ;break ;}}printf(“%d,%d”,x,y);}程序的输出结果是:()a) 2,1 b) 2,2 c) 2,5 d) 5,239. 有以下程序:main(){ int i=0,a=0;while(i<30){for(;;){if((i%10)==0) break;else i--;}i+=11; a+=i;}printf(“%d\n”,a);}程序的输出结果是:()a) 66 b) 63 c) 33 d) 3240. 有以下程序:main(){ int a,b;for(a=1,b=1 ;a<=100 ;a++){ if(b>=10) break;if(b%3==1){ b+=3; continue; }}printf(“%d\n”,a);}程序的输出结果是:()a) 101 b) 6 c) 5 d) 441. 有以下程序:main(){ int i=0;for(i+=3 ;i<=5 ;i=i+2)switch(i%5){ case 0: printf(“*”);case 1: printf(“#”); break;default: printf(“!”); break;case 2: printf(“&”);}}程序的输出结果是:()a) *# b) !& c) !*# d) *#*二.填空题1.设y是int型变量,请写出当y是奇数时值为1的关系表达式_ y%2 或y%2==0 或y%2!=0_.2. 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是__ x>5||x<-5__.3. 若x为int类型,请以最简单的形式写出与!x等价的C语言表达式___ x==0__.4. 设x,y,z,t均为int型变量,则执行下述语句后,x的值是__4__,y的值是__3__,z的值是__4__,t的值是__1__。
c语言网络教室第四章答案
if((12+b+31+k)%7==5) printf("%d/3/13\n",a);
if((12+b+31+k+31)%7==5) printf("%d/4/13\n",a);
if((12+b+31+k+31+30)%7==5) printf("%d/5/13\n",a);
case'/':if(min!=0) printf("%d/%d=%d\n",max,min,max/min);
else printf("Error!\n");}break;}
}
}
ch=getchar();
else{if(ch==',')
{if(n>n0) max=n;else max=n0;
if(i<i0) min=i;else min=i0;
i0=min;n0=max;
i=0;n=0;}
else {switch(ch)
else printf("Error\n");
}
4-8. 求最大数和最小数的算数运算结果
成绩: 10 / 折扣: 0.8
输入若干个整数,及其要进行的算术运算(+|-|*|/)符号,输出最大整数与最小整数进行给定的算术运算的结果。输入的整数范围是(0~65535),输入等号作为输入的结束,输出格式见例题。
输入:整数序列及其运算序号
c语言程序设计基础教程课后答案
c语言程序设计基础教程课后答案C语言程序设计基础教程课后答案第一章:C语言概述1. 简述C语言的特点。
- C语言是一种结构化编程语言,具有高效、灵活、功能强大等特点。
- 它支持多种编程范式,如过程式编程、结构化编程、面向对象编程等。
- C语言具有较低的抽象级别,接近硬件,因此执行效率较高。
2. C语言的发展历史。
- C语言在1972年由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。
- 它最初是作为UNIX操作系统的系统编程语言而设计的。
第二章:C语言环境和基本语法1. 如何设置C语言的开发环境?- 选择一个C语言编译器,如GCC、MSVC等。
- 安装编译器并配置环境变量,以便在命令行中直接调用编译器。
2. C语言的基本语法结构是什么?- C语言的基本结构包括预处理指令、函数定义、变量声明和语句。
第三章:数据类型、运算符和表达式1. C语言中的基本数据类型有哪些?- 整型(int)、字符型(char)、浮点型(float和double)等。
2. 运算符的分类及其用法。
- 算术运算符:+、-、*、/、%等。
- 赋值运算符:=、+=、-=等。
- 比较运算符:==、!=、>、<等。
- 逻辑运算符:&&、||、!等。
第四章:控制语句1. 条件语句的用法。
- if语句用于基于条件执行代码块。
- switch语句用于多条件选择。
2. 循环语句的用法。
- while循环用于在满足条件时重复执行代码块。
- for循环用于已知迭代次数的循环。
- do-while循环先执行代码块再判断条件。
第五章:数组和字符串1. 数组的基本概念和使用。
- 数组是相同数据类型的元素集合,存储在连续的内存位置。
- 声明数组:int arr[10]; 表示一个包含10个整数的数组。
2. 字符串的表示和操作。
- 在C语言中,字符串是以空字符('\0')结尾的字符数组。
- 使用标准库函数如strcpy、strlen等操作字符串。
第4章 C语言程序的基本控制结构
#include<stdio.h> main() { int c1,c2; scanf("%c",&c); c1=c-1;c2=c+1; printf("%c%4c%4c\n",c1,c,c2); printf("%d%4d%4d\n",c1,c,c2); }
4.2 顺序结构
运行结果:
4.3选择结构
入口
入口
A 语句1 B
真
表达 式
假
条件 语句2 循环体
出口
图4.1 顺序结构
出口 出口
图4.2 选择(分支)结构 图4.3 循环结构
上述三种基本控制结构的共同特定是具有单入口和单出口。 还有一种goto语句,又叫转向语句,在本章的4.4.5小节中将会讲解到。 我们在编写程序时,力求使用前三种基本结构语句。
4.3选择结构
例4.3 幼儿园里三个小朋友站队要求小个站在前面,高个站在后面。 分析:我们可以把个子最小的小朋友放在a位置上,较高的小朋友放在b位 置上,个子最高的小朋友放在c位置上。输入三个数,a,b,c,要求按由小到 大的顺序输出。先比较a和b,若a大于b,则a与b对换,再比较a和c,若a 大于c,则a与c对换,这时a的值是最小的,最后比较b和c,若b大于c,则b 与c对换。这样操作之后就使a<b<c的关系成立。然后顺序输出a,b,c既可。
! 逻辑非,单目运算符,自右至左结合。其运算规则是:当 运算量为0,运算结果为1;反之,当运算量为1,运算结果为0。 && 逻辑与,双目运算符,自左至右结合。其运算规则是: 只有当运算符两边的运算量都是非0时,运算结果才为1,否则为0。 || 逻辑或,双目运算符,自左至右结合。其运算规则是:只 要运算符两边的运算量有一个为为非0,运算结果就为1。只有两 个运算量都为0,结果才是0。 这三个运算符的优先级,逻辑非!最高,逻辑与&&次之,逻 辑或||最低。!(逻辑非)的优先级高于算术运算符和关系运算符, 而&&(逻辑与)和||(逻辑或)的优先级低于算术运算符和关系运算符。 由 此可见: a>b&&c>d 相当于 (a>b)&&(c>d) a= =0||b= =0 相当于 (a= =0)||(b= =0) !a&&b= =c 相当于 (!a)&&(b= =c)
C语言教程第4章程序的控制结构
printf("y=%f\n",y);}
27
C语言大学实用教程 语言大学实用教程
switch语句构成的多分支结构 用 switch语句构成的多分支结构
多路选择 switch (表达式 表达式) 表达式 { case 常数 常数1: 语句序列1; 语句序列 case 常数 常数2: 语句序列2; 语句序列 ………… default: 语句序列3; 语句序列 } default可以没有,但最好不省略 可以没有, 可以没有 不要忘记break 不要忘记
2011-3-21 28
C语言大学实用教程 语言大学实用教程
例4.8
编程设计一个简单的计算器程序。 编程设计一个简单的计算器程序。(ex48) 要求根据用户从键盘输入的表达式: 要求根据用户从键盘输入的表达式: 操作数1 运算符 运算符op 操作数 操作数2 操作数 计算表达式的值,指定的运算符为加( )、 计算表达式的值,指定的运算符为加(+)、 )、乘 )、除 减(-)、乘(*)、除(/) )、 )、 )
2011-3-21
C语言大学实用教程 语言大学实用教程
开始
( 2 画 出 流 程 图
r=1.5 L=2*3.14*r s=3.14*r*r 输出L,s 输出
结束
2011-3-21 10
)
C语言大学实用教程 语言大学实用教程
# include <stdio.h>
( 3 根 据 流 程 图 编 程 )
2011-3-21
# define PI 3.14
main() { float r,l,s; r=1.5; l=2*PI*r; s=PI*r*r; printf("\nl=%f,s=%f",l,s); }
c 程序控制结构习题答案
{case 0: switch(b)
{ case 0:cout<<”a=”<<a<<”b=”<<b<<endl; break;
case 1:cout<<”a=”<<a<<”b=”<<b<<endl; break;
}
case 1:a++; b++; cout<<"a=“<<a<<”b=”<<b<<endl;
1.概念填空题
1.1任何算法的描述都可以分解为顺序结构、分支结构和循环结构。顺序结构的特点是各块按照书写次序依次执行。分支结构的特点是根据条件判断选择执行路径。循环结构用于实现重复性动作。根据算法的有穷性,循环必须在一定条件下进行,无条件必然会导致死循环。
1.2switch语句执行流程是:①求表达式的值,其中表达式的值只能是整型、字符型、布尔型或枚举型等类型,而不能取实型这样的连续值;②在常量表达式中找与之相等的分支作为执行入口,并从该分支的语句序列开始执行下去,直到遇到break或switch的结束括号“}”为止;③当表达式的值与所有常量表达式的值均不相等时,若有default分支,则执行其语句序列;④若没有该分支,则结束switch语句,继续后续语句的执行;
using namespace std;
int main(){
int i ;
3.7下面的程序段循环执行了(A)次。
int k=10;
while (k=3) k=k-1;
A.死循环B.0次C.3次D.7次
3.8语句while(!E)中的表达式!E等价于(A)。
第04章 程序的控制结构
第 4 章
程序的控制结构
计算机中的问题求解过程
Example :银行定期存款 已知年利率rate,存款期为n年,本金为capital,n年后得 到的本利之和是多少?
Input
• 存款年数 • 本金 •利率
Process
deposit = capital* (1+rate)n
Output
deposit
Page 3
C语言程序设计
第 4 章
程序的控制结构
算法的概念及其描述方法
一个程序应包括两个方面的内容:
对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm)
著名计算机科学家沃思提出一个公式:
数据结构 + 算法 = 程序
计算机中的算法( Algorithm )
}
_ 15 Input a,b: 20
没有输入或有多个输入 有一个或多个输出
计算机与信息工程学院
Page 5
C语言程序设计
第 4 章
程序的控制结构
算法的描述方法
自然语言描述
传统流程图(Flowchart)
在1966年,Bohra 与 Jacopini 提出
N-S结构化流程图
1973年,美国学者I.Nassi 和 B.Shneiderman 提 出
为解决一个具体问题而采取的确定的有限的操作
步骤,仅指计算机能执行的算法。
计算机与信息工程学院
Page 4
C语言程序设计
第 4 章
程序的控制结构
算法的特性
有穷性 在合理的时间内完成 确定性,无歧义
c语言程序设计(第3版)的习题答案
c语言程序设计(第3版)的习题答案c语言程序设计(第3版)的习题答案本文为《c语言程序设计(第3版)》中的习题答案汇总,旨在帮助读者更好地理解和掌握该教材。
以下是各章节习题的详细解答:第1章:计算机概述习题1:答案:计算机是一种能够接受输入数据、对其进行逻辑和算术运算,并产生输出结果的电子设备。
习题2:答案:计算机主要由中央处理器(CPU)、主存储器、输入设备和输出设备四个主要部分组成。
......第2章:c语言概述习题1:答案:C语言是一种通用的高级编程语言,由贝尔实验室的Dennis Ritchie于1972年开发。
习题2:答案:C语言的特点包括高效性、可移植性、灵活性和丰富的操作符与控制语句。
......第3章:数据类型、运算符和表达式习题1:答案:C语言中的基本数据类型包括int、float、double、char等。
习题2:答案:C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。
......第4章:程序控制结构习题1:答案:C语言中的程序控制结构主要包括顺序结构、选择结构和循环结构。
习题2:答案:顺序结构是指程序按照语句的顺序依次执行,没有分支和循环。
......第5章:函数习题1:答案:C语言中的函数由函数头和函数体组成。
习题2:答案:函数的定义包括函数名、返回类型、参数列表和函数体。
......第6章:数组和字符串习题1:答案:数组是一组相同类型的数据元素的集合。
习题2:答案:C语言中的字符串是以空字符'\0'结尾的字符数组。
......第7章:指针习题1:答案:指针是用来存储另一个变量的地址的变量。
习题2:答案:指针变量可以通过取地址运算符(&)获取普通变量的地址。
......第8章:结构和共用体习题1:答案:结构是由不同数据类型的成员组成的复合类型。
习题2:答案:共用体(union)是一种特殊的数据类型,它可以存储不同类型的数据,但在同一时间只能存储其中的一种。
控制结构
3.1 知识要点流程控制是控制程序中语句执行的顺序。
任何程序设计语言都具备流程控制的功能,而C++语言提供了比其它高级语言更丰富的流程控制语言。
本章节主要介绍了程序设计中最基本三种结构:顺序、分支和循环,要求掌握以下的知识要点:1.掌握顺序结构的编程方法。
2.掌握使用cin、cout实现数据的输入/输出。
3.学会应用字符输入/输出函数。
4.掌握scanf()函数和printf()函数的使用。
5.掌握条件语句的形式和使用。
6.掌握条件语句的嵌套。
7.掌握switch语句的形式和使用。
8.掌握for,while,do-while三种循环语句的应用。
9.掌握循环语句的嵌套。
10.掌握break、continue、goto语句。
3.2 典型例题分析与解答1.1.选择题例题1:如果有以下语句:int a,b;char m,n;cin>>a>>b>>m>>n;则下列输入数据的方式中不正确的是()。
A.10,20,X,Y B.1020 XYC.10 20 X Y D.10、20、X、Y答案:C分析:C++语言没有专门的输入/输出语句,其输入/输出是通过输入/输出流来实现的。
用cin 输入时,空格和回车键均可作为输入字符之间的分隔符,逗号不能作为分隔符。
字符型变量只能容纳一个字符。
例题2:以下不正确的语句是()。
A.if(x>y);B.if(x=y)&&(x!=0)x+=y;C.if(x!=y)cin>>x;else cin>>y;D.if(x<y) {x++;y++;}答案:B分析:if语句后面的表达式必须放在括号内“()”,且不能使用赋之值运算符。
在if和else 后面用花括号“{}”括起来的多个语句成为了一个复合语句。
例题3:下面程序的输出结果是()。
#include<iostream.h>void main(){ int a=6,b=6;if(a>5)a-=1;b+=1;elsea+=1;b-=1;cout<<”a=”<<a<<endl;cout<<”b=”<<b;}A.5 B.a=5 C.a=5 D.编译时出错7 b=7 b=6答案:D分析:在if…else语句的中间应为单条语句或复合语句,不能为多条语句。
C#第四章课后习题答案
第四章面向对象的编辑基础1、编写一个控制台应用程序,完成下列功能。
(1)、创建一个类,用无参数的构造函数输出该类的名称。
(2)、增加一个重载的构造函数,带有string类型的函数,在此构造函数中将传递的字符串打印出来。
(3)、在main方法中创建属于这个类的一个对象,不传递参数。
(4)、在main方法中创建属于这个类的另一个对象,传递一个字符串“This is a string。
”(5)、在main方法中声明类型为这个类的一个具有5个对象的数组,但不要实际创建分配到数组里的对象。
(6)、写出运行程序应该输出的结果。
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _4_12{class Program1//无参数构造函数{private string Name;//字段public Program1()//无参数的构造函数{Name = "none";}public void PrintName()//输出方法{Console.WriteLine("{0}", Name);}}class Program2//重载{public Program2(){Console.WriteLine("重载");}public Program2(string str){Console.WriteLine(str);}}class Program3//创建属于这个类的一个对象,不传递参数 {public static void Add(int a){a++;}}class Program4{public int x, y;public Program4(int x, int y){this.x = x;this.y = y;}}class Program{public static void Add(int a){a++;}public int MyString(){Console.WriteLine("This is a string。
C语言第四章控制结构作业解答(一)
C语言第四章控制结构作业解答(一)第四章控制结构作业解答(一)1、按“体指数”对肥胖程度进行划分:体指数t = w / h2(体重w单位为公斤,身高h单位为米)–当t < 18时,为低体重;–当18 ≤ t < 25时,为正常体重;–当25 < t < 27时,为超重体重;–当t ≥ 27时,为肥胖。
编程从键盘输入你的身高h和体重w,根据给定公式计算体指数t,然后判断你的体重属于何种类型。
【程序】#includeV oid main(){float h, w, t;printf("Please enter h,w:");scanf("%f, %f", &h, &w);t = w / (h * h);if (t < 18){printf("t=%f\tLower weight!\n", t);}if (t >= 18 && t < 25){printf("t=%f\tStandard weight!\n", t);}if (t >= 25 && t < 27){printf("t=%f\tHigher weight!\n", t);}if (t >= 27){printf("t=%f\tT oo fat!\n", t);}}//main2、编程设计一个简单的计算器程序,要求根据用户从键盘输入如下形式的表达式:操作数1 运算符op 操作数2然后,计算并输出表达式的值指定的运算符为加(+)减(-)乘(*)除(/)【程序】#includevoid main(){int data1, data2; /*定义两个操作符*/char op; /*定义运算符*/printf("Please enter the expression:");scanf("%d%c%d", &data1, &op, &data2); /*输入运算表达式*/ switch (op){case '+': /*处理加法*/printf("%d + %d = %d\n", data1, data2, data1 + data2);break;case '-': /*处理减法*/printf("%d - %d = %d\n", data1, data2, data1 - data2); break;case '*': /*处理乘法*/printf("%d * %d = %d\n", data1, data2, data1 * data2); break;case '/': /*处理除法*/if (0 == data2)printf("Division by zero!\n");elseprintf("%d/%d = %d\n", data1, data2, data1/data2); break;default:printf("Unknown operator! \n");}}3、键盘输入任一年的公元年号year,编程判断该年是否是闰年。
C语言第4章_习题讲解
1. 若要跳出 switch 结构,应使用 switch (表达式) break 语句。 { case 常量表达式1:语句1 break;
case 常量表达式 2: 语句 2 break; 2.多个case可以共用一组执行语句 …… case 常量表达式n:语句n break; default:语句n+1 }
例如,有函数如下: -1 (x<0) Y= 0 (x=0) 1 (x>0) 编写程序,由键盘输入x的值,屏幕显 示Y的值。
main ( ) main main ( ( )) { int x,y; int x,y; {{ int x,y; scanf("%d",&x); scanf("%d",&x); scanf("%d",&x); if(x<0) if(x!=0) if(x<0) y=-1; y=-1; if (x<0)y=-1; if(x>0) y=1; else if(x>0)y=1; else y=0; y=1; if (x==0) else y=0; y=0; else printf("x=%d,y=%d\n",x,y); printf("x=%d,y=%d\n",x,y); } printf("x=%d,y=%d\n",x,y); } }
假
语句4
#include<stdio.h> main( ) { int score; scanf(“%d”, &score); if (score>100||score<0) printf(“输入错误”); else if ( score<60) printf(“不及格”); else if ( score <80) printf(“中等”); else printf(“优秀”); }
c语言全部章节习题答案
c语言全部章节习题答案C语言是一门广泛应用于计算机编程的高级编程语言。
它的简洁和强大使得它成为了许多程序员的首选语言。
然而,学习一门新的编程语言并不总是容易的,特别是对于初学者来说。
为了帮助那些正在学习C语言的人们,本文将提供C语言全部章节习题的答案,以期为读者提供一些指导和帮助。
在学习C语言时,习题是巩固所学知识的重要方式。
通过解决习题,学生可以加深对C语言的理解,并提高他们的编程技能。
然而,有时候习题的解答并不容易找到,特别是对于初学者来说。
因此,本文将提供C语言教材中的全部章节习题的答案,以供读者参考。
在第一章中,我们学习了C语言的基本概念和语法。
习题主要涉及变量的声明和赋值,以及简单的算术运算。
以下是第一章习题的答案:1. 声明一个整型变量x,并将其赋值为10。
答案:int x = 10;2. 声明一个字符型变量ch,并将其赋值为'A'。
答案:char ch = 'A';3. 声明两个整型变量a和b,并将其相加的结果赋值给变量c。
答案:int a = 5;int b = 3;int c = a + b;第二章主要介绍了C语言中的控制结构,如条件语句和循环语句。
以下是第二章习题的答案:1. 编写一个程序,判断一个整数是否为偶数。
如果是偶数,输出"Even",否则输出"Odd"。
答案:#include <stdio.h>int main() {int num;printf("Enter an integer: ");scanf("%d", &num);if(num % 2 == 0) {printf("Even");} else {printf("Odd");}return 0;}2. 编写一个程序,计算1到100之间所有偶数的和。
C语言程序控制结构
aver=sum/2.0;
/*求平均值*/
printf("sum=%.0f, aver=%.2f\n", sum,
aver);
}
运行情况:
30000,5005
sum=35005, aver= 17502.50
开始 输入两整数 计算sum
计算aver 结束
2021/10/10
1111
例4.2 给定一个三位正整数,分别输出其个位数、十位数 和百位数。
产生任何指令,在执行时不产生任何操作。 作用: 构成标号语句,标示流程的转向点; 构成循环语句中空循环体。 例如:while(getchar()!=‘\n’) ; 只要从键盘上输入的字符不是回车则重新输入。
2021/10/10
55
4.1.3复合语句
用 { }括起来的一组语句。如:
一般形式:
C语言的选择控制语句有两条: 条件选择语句:if语句 开关分支语句:switch语句
2021/10/10
1616
4.3.1 if语句
1、if 格式(单分支语句) if (判断表达式) 语句1; 语句 1可以是一条语句或复合语句。 注意:满足条件时想要执行多条语句一定要 用复合语句
当判断表达式值不为零
2021/10/10
F a>b T t=a a=b b=t
2020
单分支语句 例:输入三个数a,b,c,要求按由小到大的顺序输出。
If a>b 将a和b对换 If a>c 将a和c对换 If b>c 将b和c对换
a>b y
n a>c n
y a和b交换 a和c交换
b>c y c和b交换
2021/10/10
c语言实用教程 第4章 程序的控制结构
25
if-else if选择结构的一种最常用形式 if (表达式) 表达式) { { 语句1 语句1; 1; 语句1; 语句 } } else { { } }
语句2 语句 语句2; 语句2;2;
表达式值 表达式值非0时,执行语句1,然后语句3; 执行语句 语句1 然后语句 语句3 表达式值为 值为0 执行语句 语句2 然后语句 语句3 表达式值为0时,执行语句2,然后语句3
解释归纳为13种 解释归纳为13种.
一个比较流行的定义是: 一个比较流行的定义是: – 结构化程序设计是一种进行程序设计的原则和方法,它 结构化程序设计是一种进行程序设计的原则和方法,
避免使用goto语句 采用"自顶向下,逐步求精" 避免使用goto语句,采用"自顶向下,逐步求精"方法 语句, 进行程序设计, 进行程序设计,按照这种原则和方法设计出的程序的特 点为: 点为:
2010-6-20
/*正常处理的代码*/ /*正常处理的代码 正常处理的代码* Exit: Exit: if (p1 != NULL) free(p1); if (p2 != NULL) free(p2); if (p3 != NULL) free(p3); return; return; }
8
结构化程序设计关注的焦点
开始 x=1 y=2 x*y==> y B
2010-6-20
B
A x + 1=> x
传 统
x≤6 Y y
流 程 图
A
结束
23
N-S图 N-S图
6!算法可以用 N-S 图表示如下: 图表示如下:
1 =〉x 〉 2 =〉y 〉 x * y =〉y x + 1 =〉x 直到 x>6 打印 y
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章控制结构作业解答(一)
1、按“体指数”对肥胖程度进行划分:
体指数t = w / h2
(体重w单位为公斤,身高h单位为米)–当t < 18时,为低体重;
–当18 ≤ t < 25时,为正常体重;
–当25 < t < 27时,为超重体重;
–当t ≥ 27时,为肥胖。
编程从键盘输入你的身高h和体重w,根据给定公式计算体指数t,然后判断你的体重属于何种类型。
【程序】
#include <stdio.h>
V oid main()
{
float h, w, t;
printf("Please enter h,w:");
scanf("%f, %f", &h, &w);
t = w / (h * h);
if (t < 18)
{
printf("t=%f\tLower weight!\n", t);
}
if (t >= 18 && t < 25)
{
printf("t=%f\tStandard weight!\n", t);
}
if (t >= 25 && t < 27)
{
printf("t=%f\tHigher weight!\n", t);
}
if (t >= 27)
{
printf("t=%f\tToo fat!\n", t);
}
}//main
2、编程设计一个简单的计算器程序,要求根据用户从键盘输入如下形式的表达式:
操作数1 运算符op 操作数2
然后,计算并输出表达式的值
指定的运算符为
加(+)
减(-)
乘(*)
除(/)
【程序】
#include <stdio.h>
void main()
{
int data1, data2; /*定义两个操作符*/
char op; /*定义运算符*/
printf("Please enter the expression:");
scanf("%d%c%d", &data1, &op, &data2); /*输入运算表达式*/
switch (op)
{
case '+': /*处理加法*/
printf("%d + %d = %d\n", data1, data2, data1 + data2);
break;
case '-': /*处理减法*/
printf("%d - %d = %d\n", data1, data2, data1 - data2);
break;
case '*': /*处理乘法*/
printf("%d * %d = %d\n", data1, data2, data1 * data2);
break;
case '/': /*处理除法*/
if (0 == data2)
printf("Division by zero!\n");
else
printf("%d/%d = %d\n", data1, data2, data1/data2);
break;
default:
printf("Unknown operator! \n");
}
}
3、键盘输入任一年的公元年号year,编程判断该年是否是闰年。
判断某一年year是否闰年;闰年的条件符合下列二者之一
①能被4整除,但不能被100整除;
②能被100整除。
【程序】
# include <stdio.h>
void main()
{
int year,leap; //leap是1时,表示闰年;是0时,不是闰年
scanf(“%d”,&year);
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0) leap=1;
else leap=0;
}
else leap=0;
}
else leap=0;
if (leap==1) printf(“%d is a leap year\n”,year); //是闰年
else printf(“%d is not a leap year\n”,year); //不是闰年
}//main
4、运输公司对用户计算运费。
距离(s)越远,每公理运费越低。
标准如下:
s<250km 没有折扣
250≤s<500 2%折扣
500≤s<1000 5%折扣
1000≤s<2000 8%折扣
2000≤s<3000 10%折扣
3000≤s 15%折扣
设每公理每吨货物的基本运费为p,货物重为w,距离为s,折费为d,则总运费的f的计算公式为:f=p*w*s*(1-d)
要求程序中输入p、w、s, 用switch语句完成该题。
【程序】
# include <stdio.h>
void main()
{
int c,s;
float p,w,d,f;
scanf(%f,%f,%d”,&p,&w,&s);
if(s>=3000)
c=12;
else c=int(s/250);
switch(c)
{
case 0:d=0;break;
case 1:d=2;break;
case 2:
case 3:d=5;break;
case 4:
case 5:
case 6:
case 7: d=8;break;
case 8:
case 9:
case 10:
case 11: d=10;break;
case 12: d=15;break;
}
f=p*w*s*(1-d/100.0);
printf(“总运费=%15.4f\n”,f);
}//main
5、教材3.1输入一串字符(按ENTER键结束),将字母转换成大写字母输出。
【程序】
/*************************************************
一个一个得到字符逐个处理,用函数getchar或getch
getchar()在stdio.h中预处理
getch()在conio.h中预处理
由习题2.6知道,函数getchar()得到回车键值为'\n'
**************************************************/
#include <stdio.h>
void main( )
{
char c;
while( (c=getchar()) != '\n' )
{
if( c>='a' && c<='z' ) c-=32;
putchar(c);
}
}
6、教材3.4计算阶乘15!。
【程序】
/* 用int类型和double类型分别求出两个结果
因为15!中有2和5的因子, 所以个位数肯定为0,
本题目主要理解数据类型的取值范围. */
#include <stdio.h>
#define N 15
void main( )
{
int i, s=1;
double S=1;
for(i=2; i<=N; i++)
{
s *= i;
S *= i;
}
printf("%d!=%d\n", N,s);
printf("%d!=%.0lf\n",N,S);
}
7、教材3.5求水仙花数。
【程序】
/* 函数IsNarcissus(int x)返回真(1)或者假(0): 判断整数x是否为水仙花数*/
#include <stdio.h>
int IsNarcissus(int x)
{
int a,b,c;
a = x%10; //取x的个位
b = x/10%10; //十位
c = x/100; //百位
if( a*a*a + b*b*b +c*c*c == x )
return 1;
return 0;
}
void main( )
{
int i;
puts("所有水仙花数:");
for(i=100; i<=999; i++)
if( IsNarcissus(i) )
printf("%5d\n",i);
}。