第4周顺序结构程序练习参考答案

合集下载

数据结构与算法(C语言篇)第4章 习题答案[2页]

数据结构与算法(C语言篇)第4章 习题答案[2页]

习题答案1.填空题(1)非线性、一对多(2)前驱(3)叶结点(叶子结点)(4)度数(5)两(6)满二叉(7)从根结点到该结点之间的路径长度与该结点的权值的乘积(8)树中所有叶结点的带权路径长度之和(9)递增(10)平衡因子(11)B树的阶2.选择题(1)B (2)D (3)A (4)C (5)B (6)A (7)D (8)D3.思考题(1)如果i=1,则结点i无双亲,为根结点。

如果i>1,则结点i的双亲结点是结点i/2。

如果2i≤n,则结点i的左孩子是结点2i,否则结点i为叶结点。

如果2i+1≤n,则结点i的右孩子是结点2i+1,否则结点i无右孩子。

(2)非叶结点最多只有M个孩子,且M>2。

除根结点以外的非叶结点都有k个孩子和k-1个数据元素,k值满足[M/2]≤k≤M。

每一个叶结点都有k-1个数据元素,k值满足[M/2]≤k≤M。

所有叶结点都在同一层次。

所有分支结点的信息数据一致(n,A0,K1,A1,K2,A2……K n,A n),其中:K i(i=1,2……n)为关键字,且K i<K i+1(i=1,2……n-1);A i为指向孩子结点的指针,且指针A i−1指向子树中的所有结点均小于K i,A n所指子树中的所有结点的关键字均大于K n;n为关键字的个数([M/2]-1≤n≤M-1)。

(3)B+树是B树的升级版,区别在于叶结点在B+树的最底层(所有叶结点都在同一层),叶结点中存放索引值、指向记录的指针、指向下一个叶结点的指针。

叶结点按照关键字的大小,从小到大顺序链接。

分支结点不保存数据,只用来作索引,所有数据都保存在叶结点。

B*树是B+树的变体,B*树不同于B+树的是:其非根和非叶子结点上增加了指向兄弟结点的指针。

4.编程题(1)1//参数1为树的结点个数,参数2起始结点编号2btree_t *btree_create(int n, int i){3 btree_t *t;4 //使用malloc函数为结点申请内存空间5 t = (btree_t *)malloc(sizeof(btree_t));6 //将结点编号作为数据,保存至data中7 t->data = i;89 if(2 * i <= n){ //满足条件,说明结点有左孩子,编号为2i10 //递归调用,为左孩子的创建申请空间11 t->lchild = btree_create(n, 2 * i);12 }13 else{ //不满足条件,则没有左孩子14 t->lchild = NULL;15 }1617 if(2 * i + 1 <= n){ //满足条件,说明结点有右孩子,编号为2i+118 //递归调用,为右孩子的创建申请空间19 t->rchild = btree_create(n, 2 * i + 1);20 }21 else{ //不满足条件,则没有右孩子22 t->rchild = NULL;23 }2425 return t;26}。

01-顺序结构程序设计课后练习及题解

01-顺序结构程序设计课后练习及题解

顺序结构程序设计练习1、编写程序,在屏幕上输出如下字符串2、编写程序,任意输入矩形的长和宽,求出矩形的周长和面积;若矩形长是420,宽是297,则结果显示如下:3、编写程序:任意输入一个整型数,在屏幕上显示它对应的的八进制数、十六进制值以及所表示的字符。

若整型变量x 的值是43,输出结果如下:4、编写程序:任意输入圆半径r,圆柱高h,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。

若输入圆半径r=1.5,圆柱高h=3,程序结果如下:5、编写程序,将输入的5 个字符译成密码,译码规律是:用原来字母后面的第4 个字母代替原来的字母,字母"A"后面第 4 个字母是"E"."E"代替"A"。

例如, 要将"China"译成密码,因此,"China"应译为"Glmre".程序设计参考(注:答案不唯一,可以有不同设计方法)1、#include <stdio.h>int main( ){printf("hello,world!\nhello Kitty!\n");return 0;}2、#include<stdio.h>int main(){int a,b;long l,s;printf("请输入边长a b\n");scanf("%d,%d",&a,&b);l=2*(a+b);s=a*b;printf("周长是:%ld,面积是:%ld\n",l,s);return 0;}3、#include<stdio.h>int main( ){int x=43;printf("x 的八进制值是:%o\n", x);printf("x 的十六进制值是:%X\n", x);printf("ASCII 码值为%d 所对应的字符是:%c\n", x , x); return 0;}4、#include<stdio.h>int main(){float r,h,C1,Sa,Sb,Va,Vb;scanf("%f,%f",&r,&h);C1=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf("C1=%.2f\n",C1);printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb); return 0;}5、#include<stdio.h>int main(){char c1,c2,c3,c4,c5;printf(" 请输入5 个字符\n");scanf("%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5);c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);return 0;}。

顺序结构编程练习题

顺序结构编程练习题

顺序结构编程练习
第二周2011-9-10
1.输入一个四位整数如:“1569”,编程求出它的各位数之和,并在屏幕上输出。

2.从键盘上输入两个实数,将其整数部分交换后输出。

如23.45与54.22,交换后变为54.45与23.22;
3.从键盘输入两个整数A、B,输出较大数。

4.随机产生一个4位整数和一个2位的整数,输出它们的积和商。

(精确到小数点后第3位数)
5.输入两个整数求它们的和,输出要求如样例:
输入:259 965
输出:
6. 从键盘上读入一个小写字母,利用函数输出其大写字母和对应的AscⅡ码值。

7. 用write语句输出如下两个图形:
8. 打印如下图形:
9.有三个小朋友甲乙丙。

甲有50粒糖果,乙有43粒糖果,丙有13粒糖果。

现在他们做一个游戏。

从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。

问最后甲、乙、丙三人各吃了多少粒糖果?10.键盘任意输入3个正整数代表三角形的三个边长,编程输出该三角形的面积。

(提示:利用海伦公式s=sqrt(q*(q-a)*(q-b)*(q-c)) 其中q=(a+b+c)/2) 提高题
11.求一元一次方程ax+b=0的解,其中系数a、b从键盘输入。

12.用w rite/w riteln语句输出下面的竖式:
13.不用绝对值函数,求一个数的绝对值。

家庭作业:中级教材练习册P18 第六题1-11小题。

还没有买书的可从srliyan_1@下载,完成后用自己的邮箱发lyhnyz_1@。

C语言顺序结构作业(含解答)

C语言顺序结构作业(含解答)

顺序结构作业解答(2)一、选择题:1.有以下程序:#include<stdio.h>void main(){ int a=10, b=20, c=30; printf(“%d\n”, (a=50, b*a,c+a));}程序运行后输出结果是a)40 b)50 c)600 d)80答案:d)解答:(a=50, b*a,c+a)是一个逗号表达式,执行的顺序按排列顺序进行,整个表达式的值是括号中最后一个表达式的值。

计算过程:a=50,——> a的值为50;a*b, ——> a的值仍然为50,b的值仍然为20;a*b的值为1000;c+a, ——> a的值仍然为50,c的值仍然为30;c+c的值为30+50,即80;2.有以下程序:#include<stdio.h>void main(){ int x;x=x++;printf("%d\n", x);}程序运行后输出结果是a) 1 b)0 c)编译出错 d)不错定答案:d)解答:x=x++;的执行顺序为:首先取x的值,那么x的值是什么呢?在一对{ } 之间定义的变量,称为局部变量,系统对没有赋初值的局部变量不作任何处理,即,它的值是不确定的。

然后将取出的x值赋给“=”左边的x,最后x的值增1;进一步思考:如果上面的程序段改成:#include<stdio.h>void main(){ int x=1;x=x++;printf("%d\n", x); }程序运行后输出结果应该是什么值?3.有以下程序:#include<stdio.h>void main(){ int x=1, y=5,z; z=x%y; z++; printf(“%d\n”, z); } 程序运行后输出结果是a) 1 b)2 c)5 d)0答案:b)解答:z=x%y;的执行结果为:1%5(1除以5的余数)的值为1;将1赋给z;z++;的执行结果为:z的值增1;4.有以下程序:#include<stdio.h>void main(){float x=1, y=5,z;z=x%y;z++;printf(“%d\n”, z); }程序运行后输出结果是a) 2 b)5c)编译程序指出,程序第5行有错 d) 编译程序指出,程序第5、6、8行有错答案:c)解答: 1. %运算两个运算数必须是整数;2. ++运算的运算量必须是整型变量;但是因为在之前已经指出z的错误,所以这里不再给出错误信息。

第4章 习题参考答案

第4章  习题参考答案

第4章习题参考答案一、判断题二、选择题三、程序阅读写出下列各段程序执行后的输出结果。

1.785786Visual Basic程序设计教程22. w=4、w=13、w=135、w=313.此题有点错误,修改如下:是将语句“If k < Asc("A") Then k = k + 26”改为: If k < Asc("A") Or k > Asc("Z") And k < Asc("a") Then k = k + 26改后的答案:xyza12 uvw&4.ABBBCCCCCDDDDDDDEEEEEEEEE5.此题的“IF KeyAsci=13 Then”改为“IF KeyAsci i=13 Then”答案是:129四、程序填空题1. (1) Sing=-1(2) For i=2 to 19(3) Sing=-Sing2. (1) Len(oldsen)(2) Mid(oldsen ,i,1)(3) Ucase(char)(4) char3.(1) Len(str1)第4章程序设计的三种基本结构 3(2) Length-1(3) Mid(str1,i,2)(4) Sum=04.(1)T rim(Str(i))(2)Trim(Str(i*i))(3)Right(x2,Len(x1))=x15.(1) last_one = last_two(2) last_two = this_one(3) i = i+1(4) i-1五、编程题1.Private Sub Form_Click()Dim R1 As Double, R2 As Double 'R1,R2 表示两电阻值 Dim Rp As Double, Rs As DoubleR1 = Val(InputBox("输入电阻R1=?"))R2 = Val(InputBox("输入电阻R2=?"))Rp = R1 * R2 / (R1 + R2)Rs = R1 + R2Rp = Fix(Rp * 1000 + 0.5) / 1000 '保留小数点后3位 Rs = Fix(Rs * 1000 + 0.5) / 1000 '保留小数点后3位 MsgBox "并联电阻是:" & Rp & vbCrLf & "串联电阻是:" & RsEnd Sub2.Visual Basic程序设计教程4Private Sub Form_Click()Dim N As LongN = Val(InputBox("请输入年份", "提示框"))If (N Mod 400 = 0) Or (N Mod 4 = 0 And N Mod 100 <> 0) Then '判断条件Print N & "年是闰年"ElsePrint N & "年不是闰年"End IfEnd Sub3.Private Sub Form_Click()Dim a!, b!, c!, s!, x!a = Val(InputBox("Enter A=?"))b = Val(InputBox("Enter B=?"))c = Val(InputBox("Enter C=?"))If a + b > c And b + c > a And a + c > b Then '如果能构成三角形x = (a + b + c) / 2s = Sqr(x * (x - a) * (x - b) * (x - c))Print "S="; sElsePrint "数据有错,不能构成三角形"End IfEnd Sub4.(此题不适合使用Select语句)Private Sub Command1_Click()Dim x As Double, fx As Doublex = Val(InputBox("输入x=?"))If x < 0 And x <> -3 Thenfx = x * x + x - 6ElseIf x >= 0 And x < 10 And x <> 2 And x <> 3 Then fx = x * x - 5 * x + 6第4章程序设计的三种基本结构 5Elsefx = x * x - x - 1End IfPrint "x= "; x; " f(" & x & ")="; fxEnd Sub5.Dim i As IntegerDim s As Long, t As Longt = 1For i = 1 To 10t = t * is = s + tNext iPrint " S=" & s6.Dim i%, s!, n!, t!, f%i = 1 '项数s = 0 '累加和n = 1 '阶乘t = 1 '通项f = 1 '系数Do While t > 0.s = s + f * ti = i + 1n = n * it = 1 / nf = -f '表示符号LoopPrint "S="; s7.'方法一Private Sub Form_Click()Dim i As IntegerVisual Basic程序设计教程6Dim Hundred As Integer, Ten As Integer, One As Integer '定义百位,十位,个位数For i = 100 To 999Hundred = i \ 100 '求百位数Ten = (i \ 10) - Hundred * 10 '求十位数One = i Mod 10 '求个位数If i = Hundred ^ 3 + Ten ^ 3 + One ^ 3 Then '判断是否为素数Print i & "是水仙花数"End IfNext iEnd Sub'方法二Private Sub Form_Click()Dim i As IntegerDim Hundred As Integer, Ten As Integer, One As Integer '定义百位,十位,个位数For Hundred = 1 To 9 '百位数For Ten = 0 To 9 '十位数For One = 0 To 9i = Hundred * 100 + Ten * 10 + OneIf i = Hundred ^ 3 + Ten ^ 3 + One ^ 3 Then '判断是否为素数Print i & "是水仙花数"End IfNext OneNext TenNext HundredEnd Sub第4章程序设计的三种基本结构78.Dim a As Double, x0 As Double, x1 As Doublea = Val(InputBox(“输入a=?”)x0 = a ' 初值x1 = 2 / 3 * x0 + a / (3 * x0 * x0) ' 第一次迭代后的值Do While Abs(x1 - x0) > 0. ' 控制精度x0 = x1 ' 迭代x1 = 2 / 3 * x0 + a / (3 * x0 * x0)LoopPrint “立方根: ”; x1。

C语言——顺序结构程序设计练习题

C语言——顺序结构程序设计练习题

顺序结构程序设计习题一、选择题:(以下各题□代表空格。

)1.以下程序运行的结果是:#include <stdio.h>int main(){int m=5,n=10;printf(“%d,%d\n”,m++,--n);}A)5,9 B)6,9 C)5,10 D)6,102.以下程序运行的结果是:#include <stdio.h>int main(){int a=201,b=012;printf(“%2d,%2d\n”,a,b);return 0}A)01,12 B)201,10 C)01,10 D)20,013.有定义语句int a,b;若要通过语句scanf(“%d,%d,”&a,&b);使变量a得到数值6,变量b得到数值5,下面输入形式,错误的是:A)6,5<回车> B)6,□□<回车>C)6 5<回车> D)6,<回车>5<回车>4.设有如下程序:#include <stdio.h>int main(){char ch1=’A’,ch2=’a’;printf”%c\n”,(ch1,ch2));return 0;}则以下叙述正确的是:A)程序的输出结果为大写字母A;B)程序的输出结果为小写字母a;C)运行时产生错误信息;D)格式说明符的个数少于输出项个数,编译出错。

5.以下程序运行的结果是:#include <stdio.h>int main(){int x1=0xabc,x2=oxdef;x2-=x1;printf(“%X\n”,x2);return 0;}A)ABC B)0XABC C)0X333 D)3336.以下程序输出的结果是:#include <stdio.h>int main(){ printf(“\n*s1=%15s*”,”chinabeijing”);printf(“\n*s2=%-5s*”,”chi”);}A)*s1=chinabeijing□□□*S2=**chi*B)*s1=chinabeijing□□□**s2=chi□□*C)*s1=*□□chinabeijing**s2=□□chi*D)*s1=□□□chinabeijing**s2=chi□□*7.已有定义int a=-2;和输出语句:printf(“%8lx”,a);以下正确的描述是:A)整形变量的输出格式符只有%d一种;B)%x是格式符的一种,它可以适应与任何一种类型的数据;C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度。

顺序结构程序设计练习题

顺序结构程序设计练习题

C语言练习题总汇一、单选题:【顺序结构程序设计】1.己知int k,m=1;执行语句k=-m++;后k的值是(A )。

(提示:负号与自加运算符同级,结合方向从右向左)A)-1 B) 0 C)1 D)22.若有定义int x=4;则执行语句x + = x * = x + 1;后,x的值为(C )。

A)5 B)20 C)40 D)无答案3.若有定义:float a=3.0,b=4.0,c=5.0;则表达式1/2*(a+b+c)的值为( C )。

A)6.0 B)6 C)0.0 D)无答案4.以下程序段的输出结果是( C )。

(提示:a当约束过严时,约束失效。

按自由格式输出。

)int a=1234;printf("%2d\n",a);A)12 B)34 C)1234 D)提示出错,无结果5.下列程序段的输出结果是(C)。

int a=1234;float b=123.456;double c=12345.54321;printf("%2d,%3.2f,%4.1f",a,b,c);A)无输出 B)12, 123.46, 12345.5 C)1234,123.46,12345.5 D)1234,123.45, 1234.56.设x, y均为整型变量,且x=8, y=5,则以下语句的输出结果是(D)。

printf("%d,%d\n",x--,++y);A)8,5 B)7,5 C) 7,6 D) 8,67.以下程序的输出结果是( A )。

int main(){ int a=20,b=10;printf("%d,%%d\n",a+b,a-b); }A) 30,%d B)30,10 C)30,%10 D)以上答案均不正确(%%d中第一个%后面的表示字符)8.下列程序的运行结果是(A)。

int main(){ float x=2.5;int y;y=(int)x;printf("x=%f,y=%d",x,y);}A) x=2.500000,y=2 B)x=2.5,y=2 C)x=2,y=2 D) x=2.500000,y=2.0000009.以下程序的输出结果是(A)。

数据结构与算法课程第4章的习题答案

数据结构与算法课程第4章的习题答案
swich(branch){
case0: bonus=i*0.1;break;
case1: bonus=bonus1+(i-100000)*0.075;break;
case2:
case3:bonus=bonus2+(i-200000)*0.05;break;
case4:
case5:bonus=bonus4+(i-400000)*0.03;break;
第4章
4.1程序阅读题。以下程序运行结果是什么?
#includestdio.h
void main() {
int i1;
while (i15)
if (i3!2)continue;
else printf(d,i);
printf(\n);
}
结果为:2 5 8 11 14
4.2程序填空题。输出右边所示图案(共N行,N为奇数,此时N=7)。
}
注意:s、t不能定义为int,long型,因为这两种数据类型的范围都不超过21亿,无法容纳最后求的结果。
(6)求s=a+aa+aaa+…+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入控制。
程序流程图:
程序代码:
#include<stdio.h>
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4周顺序结构程序练习
1.编写程序exac1.c :输入任意三个整数,求它们的和及平均值;
#include <stdio.h>
void main()
{
int a,b,c,s;
float t;
scanf("%d,%d,%d",&a,&b,&c);
s=a+b+c;
t=(a+b+c)/3.0;
printf("和是%d\n",s);
printf("平均数是%f\n",t);
}
2.编写程序exac2.c :从键盘输入一小写字母,(1)输出对应的大写字母;(2)输出其(小写字母)前导字母与后续字母;
#include<stdio.h>
void main()
{
char c1,c2,c3,c4;
c1=getchar();
c2=c1-32;
printf("该字母的大写字母为:%c\n",c2);
c3=c1-1;
printf("该字母的前导字母为:%c\n",c3);
c4=c1+1;
printf("该字母的后续字母为:%c\n",c4);
}
3.编写程序exac3.c :从键盘任意输入一个三位整数,编程将它逆序输出。

例如输入127,输出为721;
#include<stdio.h>
#include<math.h>
void main()
{
int a,c1,c2,c3,b;
printf("请输入一个三位数a:\n");
scanf("%d",&a);
c1=a/100;
c2=(a-c1*100)/10;
c3=a%10;
b=c3*100+c2*10+c1;
printf("输出一个跟原三位数倒序的三位数=%d\n",b);
}
4.编写程序exac4.c :从键盘输入x 和y 的值,求数学公式
的值; )2(5
x y
#include <stdio.h>
#include <math.h>
void main()
{
float x,y,m,s;
scanf("%f,%f",&x,&y);
m=pow(x,5);
s=sqrt(y)+m/2.0;
printf("%f\n",s);
}
5.编写程序exac5.c:输入一个华氏温度,要求输出摄氏温度。

公式为c=5/9(f-32)。

输出要有文字说明,取2位小数。

#include <stdio.h>
void main()
{
float c,f;
printf("请输入一个华氏:");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("摄氏温度为:%5.2f\n",c);
}
提示:
1.输入函数scanf的使用;
2.编写程序exac1.c,所以文件名应该是exac1.c;
3.如果已完成对一个程序的操作,不再对它进行其他的处理,需要关闭工作区;
4.开平方程序实现:先加上math.h头文件,用sqrt函数,可参考课本73页;
5.可使用pow函数实现求x的5次方;
6.举例c的前导字母:b后续字母:d;
7. exac3.c从键盘任意输入一个三位整数:如321,输出另一个三位整数123,不是输入三个整数3,2,1。

456/100=4 456%100=56 5 456%10=6。

相关文档
最新文档