当前位置:文档之家› 顺序、选择、循环三种基本结构程序设计.

顺序、选择、循环三种基本结构程序设计.

昆明理工大学信息工程与自动化学院学生实验报告(2012 —2013 学年第一学期)课程名称:结构化程序设计与C语言开课实验室:系机房444 2012 年10月21日一、实验的目的1、学习在VC++环境下编辑调试C语言程序的方法。

2、掌握在C语言中的各种数据类型,以及如何定义整型、实型、字符型的变量,并进行赋值的方法。

3、掌握顺序程序的思路,特别是赋值语句的使用方法。

4、掌握各种类型数据的输入输出方法的正确应用,熟悉各种格式控制符的作用。

5、学会在选择结构中正确应用关系表达式及逻辑表达式。

6、熟练掌握if语句和switch语句的使用。

7、学会选择结构问题算法的编制与调试应用。

8、熟练掌握while语句、do-while语句和for语句实现循环的方法。

9、学会循环问题的编制与调试、运行。

二、实验内容与要求本实验涵盖顺序、选择、循环三部分程序设计的应用,要求每部分完成两个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。

具体要求完成的问题如下:(注意:在模板中给出了题的页数与题号,请写正式报告时将书上的题目内容代替页数与题号)(1)P82/2(2)P84/6(3)P112/6(4)P113/9(5)P140/5(6)P141/16三、算法设计思想或程序流程图(1)设:五年期,三年期,二年期,一年期,活期存款分别为:r5,r2,r3,r0;第一种,第二种,第三种,第四种,第五种五年期存款的本息和分别为p1,p2,p3,p4,p5。

则有: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); 存活期存款。

活期利息每一季度结算一次再将所得数据一一输出即可。

(2) 先分别把c1,c2,c3,c4,c5分别赋初值为c,h,I,n,a.想要让它们的字母分别增加四位。

只需将它们的ASCII码增加4个数就可以。

便有c1=c1+4; c2=c2+4 c3=c3+4; c4=c4+4; c5=c5+4;再将所得值以字符型输出便可(3)输入x,用if语句判断X的值的范围。

X<1将x的值赋给y并输出。

除此情况之外(x>1)再进行分类。

若x<10则y=2*x-1。

除此情况之外,y=3*x-11. (4)先判断它的位数。

如果这个数大于9999则输出5;排除这种情况,大于999则输出4…以此类推。

分别输出每一位数字:几位数字便除以此位数的最小值。

如9999便除以1000,由于都是整型,便得到9。

依次除下去。

得到的各位整数在赋给各个变量,反序输出。

(5)用tn=tn+a语句代表赋值后的tn为i个 a组成数的值用 sn=sn+tn语句代表赋值后的sn为多项式前i项之和用while语句实现在I<n的情况下让i自增。

(6)将菱形分为上下两个部分,每个部分为一个三角形。

设置两个变量I,j分别控制行和列。

再用两个循环语句分别对上下两个三角进行控制。

四、源程序代码(1)#include <stdio.h>#include <math.h>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);p2=p*(1+2*r2)*(1+3*r3);p3=p*(1+3*r3)*(1+2*r2);p4=p*pow(1+r1,5);p5=p*pow(1+r0/4,4*5);printf("p1=%f\n",p1);printf("p2=%f\n",p2);printf("p3=%f\n",p3);printf("p4=%f\n",p4);printf("p5=%f\n",p5);return 0;}(2)#include <stdio.h>int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);return 0;}(3)#include <stdio.h>int main(){ int x,y;printf("输入x:");scanf("%d",&x);if(x<1) /* x<1 */{ y=x;printf("x=%3d, y=x=%d\n" ,x,y);}else if(x<10) /* 1=<x<10 */{ y=2*x-1;printf("x=%d, y=2*x-1=%d\n",x,y);}else /* x>=10 */{ y=3*x-11;printf("x=%d, y=3*x-11=%d\n",x,y);}return 0;}(4)#include <stdio.h>#include <math.h>int main(){int num,indiv,ten,hundred,thousand,ten_thousand,place;printf("请输入一个整数(0-99999):");scanf("%d",&num);if (num>9999)place=5;else if (num>999)place=4;else if (num>99)place=3;else if (num>9)place=2;else place=1;printf("位数:%d\n",place);printf("每位数字为:");ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);switch(place){case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);printf("\n反序数字为:");printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);break;case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);printf("\n反序数字为:");printf("%d%d%d%d\n",indiv,ten,hundred,thousand);break;case 3:printf("%d,%d,%d",hundred,ten,indiv);printf("\n反序数字为:");printf("%d%d%d\n",indiv,ten,hundred);break;case 2:printf("%d,%d",ten,indiv);printf("\n反序数字为:");printf("%d%d\n",indiv,ten);break;case 1:printf("%d",indiv);printf("\n反序数字为:");printf("%d\n",indiv);break;}return 0;}(5)#include <stdio.h>int main(){int a,n,i=1,sn=0,tn=0;printf("a,n=:");scanf("%d,%d",&a,&n);while (i<=n){tn=tn+a; /*赋值后的tn为i个 a组成数的值*/sn=sn+tn; /*赋值后的sn为多项式前i项之和*/a=a*10;++i;}printf("a+aa+aaa+...=%d\n",sn);return 0;}(6)#include <stdio.h>int main(){int i,j,k;for (i=0;i<=3;i++){for (j=0;j<=2-i;j++)printf(" ");for (k=0;k<=2*i;k++)printf("*");printf("\n");}for (i=0;i<=2;i++){for (j=0;j<=i;j++)printf(" ");for (k=0;k<=4-2*i;k++)printf("*");printf("\n");}return 0;}五、运行结果及分析(1)(2)(3)(4)(5)(6)六、结论与体会(在上机程序调试中遇到的问题、采用的解决办法、得到的收获)通过对C语言进行一个学期的学习后,我对C语言有了初步的掌握,也对C 语言的特点和优点有了更深入的体会。

C语言的语言简洁,紧凑,使用方便灵活;运算符丰富,使表达式的类型多样化;数据类型也很丰富,比如字符型,实型,整型…而且在学习的过程中,我越来越体会到了C语言编程的多样性,从初学的只有一种编法,到后来的渐渐会用不同的语句,不同的结构对同一问题进行编写。

相关主题