C语言结构化程序设计实验报告
- 格式:doc
- 大小:51.00 KB
- 文档页数:4
实验四结构化程序设计一、实验目的1.掌握结构化程序设计思想和算法设计方法2.掌握各类语句的用途和使用方法3.掌握条件的表示方法4.掌握表示条件结构的几种语句形式5.掌握表示循环结构的几种语句形式6.掌握break语句和continue语句的功能和使用7.了解goto语句的适用范围及使用二、实验相关知识本次实验涉及如何根据一个问题来设计算法,采用“自顶向下,逐步细化”的结构化程序设计方法,以及如何将算法用C语言描述出来。
掌握C语言中三种程序控制结构:顺序、选择和循环及对应的各类语句。
如表达式语句、复合语句、空语句、条件语句、循环语句和跳转语句,以及表示条件的关系运算符(<、<=、>、>=、==、!=)和逻辑运算符(!、&&、||)的使用。
基本的顺序结构语句有表达式语句、空遇句、复合语句等,选择结构语句有if语句和switch语句等,循环结构语句有while语句、do-while语句和for语句以及跳转语句break和continue等。
1.表示选择结构的语句形式●if(表达式)语句●if(表达式)语句1else语句2●if(表达式1)语句1else if(表达式2)语句2…else if(表达式n-1)语句n-1else语句n●if (表达式1)if (表达式2)语句1else 语句2elseif (表达式3)语句3else 语句4●switch (表达式) {case 常量表达式1: 语句列1case 常量表达式2: 语句列2 …case 常量表达式n: 语句列ndefault: 语句列n+1}2.表示循环结构的语句●while (表达式) 语句●do语句while (表达式);●for (表达式1;表达式2;表达式3)语句3.表示跳转的语句●break语句可用来跳出switch语句或循环结构,其一般形式为:break;要注意的是,break语句仅用于跳出所在的switch语句或循环语句。
安徽工程大学高级语言程序设计实验报告班级姓名同组者/ 成绩日期2019.09.30 指导教师实验名称顺序结构程序设计一、实验目的1.掌握数据的输入/输出方法,能正确使用有关格式转换符。
2.掌握顺序结构程序中语句的执行过程。
3.掌握顺序结构程序的设计方法。
二、实验内容1.P47页第一个程序的作用是依次输入2个整数,计算并输出这2个整数之差。
(1)分析程序,若运行时输出:200,160<回车>,预期结果是多少?(2)上机运行该程序,查看程序运行结果是否符合题目要求。
如果不符合,请分析原因并修改程序,直至符合要求为止。
2.P47页第二个程序用于实现按下列公式计算并输出s1和s2的值:s1=3/(a+b)2,s2=ab/(a+b)3,其中a,b为整型数据。
(1)根据题意修改上述程序,并进行调试,直到正确为止。
(2)在(1)的基础上,将“scanf("%d,%d",&a,&b);”改为“scanf("%d%d",&a,&b);”后再编译、连接、运行。
3.分析P47页第三个程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致,并分析其原因。
4.编程实现下列功能并上机调试运行。
(1)设圆半径为r,求圆周长和面积。
要求用scanf函数输入数据,输出时取小数点后两位。
(2)输入一个3位十进制整数,分别输出百位、十位以及个位上的数。
(3)从键盘输入一个带两位小数的实数,将其整数部分和小数部分分离后输出。
(4)用getchar函数读入两个字符,然后分别用putchar和printf函数输出这两个字符。
*思考题:5. 若实验内容1的程序改为P48页第一个程序段,运行该程序,输入5,3,查看程序运行结果是否与自己预测的结果一致,并分析原因。
6.若实验内容1的程序改为P48页第二个程序段,运行该程序,输入5,3,查看程序运行结果是否与自己预测的结果一致,并分析原因。
《C程序设计》选择结构程序设计实验报告2、完成改错后的程序#include <stdio.h>#include <ctype.h>char fun(char c){ if (c>='A' && c<='Z')/**********found**********/c=c+32;if (c>='a' && c<='u')/**********found**********/c=c+5;else if(c>='v' && c<='z')c=c-21;return c;}main ( ){ char cl, c2;printf("Enter a letter(A-Z):");cl=getchar( );if (isupper(cl)){ c2=fun(cl);printf("\n\nThe letter %c change to %c\n",cl,c2);}elseprintf("\nEnter (A-Z) !\n");}运行结果:(截图)3、解题思路:源程序:1.#include<stdio.h>#include<math.h>void main(){float s;int m,year;printf("please input money and year:");scanf("%d%d",&m,&year);switch(year){case 1:s=m*pow((1+0.03),year);break;case 2:s=m*pow((1+0.033),year);break;case 3:case 4:s=m*pow((1+0.038),year);break;case 5:s=m*pow((1+0.042),year);break;default:s=m*pow((1+0.042),year);break;}printf("s=%f\n",s);}2.#include<stdio.h>#include<math.h>void main(){float s;int m,year;printf("please input money and year:");scanf("%d,%d",&m,&year);if(year==1)s=m*pow((1+0.03),year);if(year==1)s=m*pow((1+0.03),year);if(year==2)s=m*pow((1+0.033),year);if(year>=3&&year<=4)s=m*pow((1+0.038),year);if(year>=5)s=m*pow((1+0.042),year);printf("s=%f\n",s);}运行结果:(截图)4、解题思路:源程序:#include<stdio.h>main(){int i,yue,year,day;printf("please input nian and yue :");scanf("%d,%d",&year,&yue);switch(yue){case 1:printf("有31天");break;case 2:if(year%4==0&&year%100!=0||year%400==0)printf("有29天");else printf("有28天");break;case 3:printf("有31天");break;case 4:printf("有30天");break;case 5:printf("有31天");break;case 6:printf("有30天");break;case 7:printf("有31天");break;case 8:printf("有31天");break;case 9:printf("有30天");break; case 10:printf("有31天");break; case 11:printf("有30天");break; case 12:printf("有31天");break; }}运行结果:(截图)。
贵州大学《C程序设计实验》实验报告实验名称:逻辑结构程序设计专业电子信息科学与技术班级姓名学号教师2010年elsey=3*x-11;printf("x=%d,y=%d\n",x,y); }○1输入输出○2输入输出分析:声明变量int x,y;用scanf函数从屏幕输入x的值scanf("%d",&x);当x<1时,执行y=x;党1<=x<10时,执行y=2*x-1;党x是其他值时执行//}if(score==100)temp=9;elsetemp=(score-score%10)/10;switch(temp){case 9:grade='A';break;case 8:grade='B';break;case 7:grade='C';break;case 6:grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0:grade='E';}printf("score=%d,grade=%c\n",score,grade); }输入:输出:输入输出②再运行一次程序,输入分数为负值(如一70),这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于100和小于0时,通知用户“输人数据错”,程序结束。
为了解决以上问题,程序改为#include<stdio.h>void main(){int score,temp,logic;char grade;//printf("请输入成绩:");//scanf("%d",&score);logic=1;while(logic){}printf("score=%d,grade=%c\n",score,grade);}运行情况当输入负数时分析:这几条语句logic=1;while(logic){printf("请输入成绩:");scanf("%d",&score);if(score>=0&&score<=100),logic=0;printf("\n");}是先把logic的值赋1,用while循环内的语句来判断输入的值,并控制程序运行情况:处理的数为1位正整数处理的数为2位正整数处理的数为3位正整数处理的数为4位正整数处理的数为5位正整数处理的数超过5位正整数if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("计算后的结果为:%d %d %d %d\n",a,b,c,d); 运行情况:输入输出:修改程序使之按由大到小顺序输出。
c语言程序设计—结构体—实验报告
实验报告
一、实验背景
随着计算机科学的发展,数据的处理和存储已经发生了巨大的变化,变得更加结构化和更有效率。
考虑到这一点,结构体在计算机程序设计中尤其重要。
因此,本实验的目的是练习使用C语言编程,设计并实现相应的结构体,来实现一定的功能。
二、实验目标
设计一个结构体struct book,包含书名、作者名、出版社、价格等字段,并实现以下功能:
(1)按照书名查找图书;
(2)将书籍信息以字符串格式输出;
(3)将书籍信息保存到文件中;
三、实验内容
1. 用C语言定义结构体struct book,包含书名字段name(char类型)、作者author(char类型)、出版社publisher(char类型)、价格price(float类型)等信息。
2. 创建一个函数findBook,输入参数为书名字符串,输出参数为书籍信息struct book。
该函数实现按照书名查找图书功能,若查找成功返回书籍信息,否则返回null。
四、实验结果
经过上述步骤,已经编写了相应的C语言程序实现了按照书名查找图书、将书籍信息以字符串格式输出、将书籍信息保存到文件中、从文件中读取书籍信息等功能。
五、总结
本实验中,使用C语言实现了结构体struct book的定义及四个功能的程序,理解并大致掌握了结构体的使用,学会用程序实现数据的存取。
因此,我们可以看到,结构体的使用可以使数据的存取更加有效率和简单,对于程序设计是很重要的一个概念。
哈尔滨理工大学软件学院《结构化程序设计(C)》项目实践报告题目:********班级:软件15-*班专业:软件工程/集成电路设计与集成系统姓名:****学号:**********指导教师:****日期:2015年12月4日目录一、需求分析(三号,宋体,粗体) (2)二、系统设计(三号,宋体,粗体) (2)(一)系统中的数据定义(四号,黑体,粗体) (2)(二)系统的概要设计 (2)(三)系统的详细设计 (2)(四)系统的核心算法 (2)三、系统编码及运行(三号,宋体,粗体) (3)(一)系统开发涉及的软件 (3)(二)系统运行界面及结果 (3)四、系统测试(三号,宋体,粗体) (3)五、总结 (3)附录(源代码) (4)(注:这部分可以点击右键更新生成,重新设置字体为四号)一、需求分析(三号,宋体,粗体)正文用小四字体,行间距为1.5倍。
正文用小四字体,行间距为1.5倍。
正文用小四字体,行间距为1.5倍。
报告中的图要有标号,如图1,图2,并给图加注释。
需求分析主要介绍系统开发的背景、意义、有哪些主要的功能,可以通过画框图说明系统的主要功能,并说明每一个功能模块。
注意不要展示运行的结果界面。
二、系统设计(三号,宋体,粗体)(一)系统中的数据定义(四号,黑体,粗体)说明系统中定义使用了哪些数据,比如学生管理系统,学生的定义包括哪些数据,以及设计的类型。
(二)系统的概要设计可以通过画框图或流程图阐述系统模块之间的关系以及运行的先后顺序。
(三)系统的详细设计各个功能模块内部结构执行的过程,可以画流程图。
(四)系统的核心算法可以使用伪代码或者流程图表示系统各模块设计中用到的核心算法。
三、系统编码及运行(三号,宋体,粗体)(一)系统开发涉及的软件包括代码编写工具,画图工具,文档撰写工具(二)系统运行界面及结果要求有运行结果截图展示,可以分模块说明。
如图1所示为系统登录界面。
图1 系统登录界面四、系统测试(三号,宋体,粗体)主要列举测试数据,及结果,发现系统的bug,以及解决方法。
c语言顺序结构实验报告篇一:实验三顺序结构程序设计实验报告实验三顺序结构程序设计实验报告一、实验目的1. 掌握掌握赋值语句的使用方法。
2. 各种类型数据的输入输出的方法,能正确使用各种格式转换符。
3. 进一步掌握编写程序和调试程序的方法。
二、实验内容(源代码)1. sy3-(1) ①#includeint main() { int a,b;//基本整型float d,e; //单精度浮点型 char c1,c2;//字符型 double f,g;//双精度浮点型long m,n; //长整型unsigned int p,q;//"unsiguld"改成"unsigned" 无符号整型a=61,b=62; c1='a';c2='b';//'a''b'的"'"不能掉了d=3.56;e=-6.87; //d,e之间用";"隔开f=3157.890121;g=0.9; m=50000;n=-60000; p=32768;q=40000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n", a,b,c1,c2,d,e);//"""与"a"之间的","不能掉了,"\"不能写成"/" printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\ n",f,g,m,n,p,q); //f后的q改为g}③#includeint main() {int a,b;//基本整型 float d,e; //单精度浮点型char c1,c2;//字符型double f,g;//双精度浮点型 long m,n; //长整型unsigned int p,q;//"unsiguld"改成"unsigned" 无符号整型 a=61,b=62;c1=a;c2=b; //c1,c2之间用";"隔开 f=3157.890121;g=0.9; d=f;e=g;p=a=m=50000;q=b=n=-60000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n", a,b,c1,c2,d,e);//"""与"a"之间的","不能掉了,"\"不能写成"/"printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\ n",f,g,m,n,p,q); //f后的q改为g④#includeint main() {int a,b;//基本整型 float d,e; //单精度浮点型char c1,c2;//字符型double f,g;//双精度浮点型 long m,n; //长整型unsigned int p,q;//"unsiguld"改成"unsigned" 无符号整型 a=61,b=62;c1=a;c2=b; //c1,c2之间用";"隔开f=3157.890121;g=0.9; d=f;e=g;p=a=m=50000;q=b=n=-60000;printf("a=%d,b=%d\nc1=%d,c2=%d\nd=%d,e=%d\n",sizeof (a),sizeof(b),sizeof(c1),sizeof(c2),sizeof(d),sizeo f(e));printf("f=%d,g=%d\nm=%d,n=%d\np=%d,q=%d\n",sizeof(f ),sizeof(g),sizeof(m),sizeof(n),sizeof(p),sizeof(q) );}2. sy3-(2)#include int main() {float h,r,c,s1,s2,v1,v2; //定义float pi=3.1415926; //赋值printf("圆半径r=,圆柱高h=:");//提示scanf("%f,%f",&r,&h); //输入c=2*pi*r; //计算s1=pi*r*r;//"*"不可省略s2=4*s1;v1=4.0/3.0*s1*r; v2=s1*h;printf("圆周长:c=%6.2f\n",c); //输出 printf("圆面积:s1=%6.2f\n",s1);printf("圆球表面积:s2=%6.2f\n",s2); printf("圆球体积:v1=%6.2f\n",v1); printf("圆柱体积:v2=%6.2f\n",v2); return 0;}3. sy3-(3)#include#include //不要忘了数学函数 int main() {float p,r5,r3,r2,r1,r0,p1,p2,p3,p4,p5; //定义p=1000;//赋值printf("r5=,r3=,r2=,r1=,r0=:");//提示 scanf("%f,%f,%f,%f,%f",&r5,&r3,&r2,&r1,&r0); //输入 p1=p*r5*5; //计算}p2=p*(1+2*r2)*(1+3*r3)-p; p3=p*(1+3*r3)*(1+2*r2)-p; p4=p*pow(1+r1,5)-p; p5=p*pow(1+r0/4,20)-p;printf("方案1的利息:p1=%f\n",p1); //输出printf("方案2的利息:p2=%f\n",p2); printf("方案3的利息:p3=%f\n",p3); printf("方案4的利息:p4=%f\n",p4); printf("方案5的利息:p5=%f\n",p5); return 0;4. sy3-(4)① #include 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("用printf语句输出结果为:");//提示printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);//输出c1,c2之间的","不可省略 printf("用putchar语句输出结果为:");//提示putchar(c1);//输出putchar(c2); putchar(c3); putchar(c4); putchar(c5);printf("\n");//换行不要省略 return 0;}② #include int main(){ }char c1='T',c2='o',c3='d',c4='a',c5='y';//定义与赋值 c1=c1-22;//计算 c2=c2-22; c3=c3-22; c4=c4-22; c5=c5-22;printf("用printf语句输出结果为:");//提示printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);//输出c1,c2之间的","不可省略 printf("用putchar语句输出结果为:");//提示putchar(c1);//输出putchar(c2); putchar(c3); putchar(c4); putchar(c5);printf("\n");//换行不要省略 return 0;③ #include int main(){char c1='T',c2='o',c3='d',c4='a',c5='y';//定义与赋值 c1=c1-4;//计算 c2=c2-4; c3=c3-4; c4=c4-4; c5=c5-4;printf("用printf语句输出结果为:");//提示printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);//输出c1,c2之间的","不可省略 printf("用putchar语句输出结果为:");//提示putchar(c1);//输出putchar(c2); putchar(c3); putchar(c4); putchar(c5);printf("\n");//换行不要省略 return 0;}篇二:C语言实验二程序、总结顺序结构与输入、输出方法实验二顺序结构与输入/输出方法1 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自增减运算符的使用。
安徽工程大学高级语言程序设计实验报告班级姓名同组者/ 成绩日期2019.10.31 指导教师实验名称综合运用3种基本结构进行程序设计一、实验目的1.熟练运用“数据类型与表达式”相关内容,选择合适的数据结构定义问题需要的变量。
2.熟练使用scanf函数和printf函数,进行数据的输入与输出。
3.进一步掌握顺序、选择、循环结构程序设计的方法与技巧。
4.综合运用3种基本结构进行程序设计。
二、实验内容1.百马百担。
100匹马,共驮100担,大马驮3担,中马驮2担,2个小马驮1担,问大、中、小马各多少?2.输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。
3.打印输出“水仙花数”。
“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。
4.讲一个正整数分解成每个质因数的乘积。
如输入90,打印90=2*3*3*5.5.利用循环语句编写程序实现以下功能:对一个正整数,将各位数字反序后形成一个新的整数输出。
6.一个素数加上1000以后是37的倍数,求满足这个条件的最小素数。
7.找1000以内的所有“完数”。
一个数如果恰好等于它的因子之和,这个数就称为“完数”,如6就是一个完数,因为6=1+2+3。
8.从键盘输入一串数字字符(该字符串至多包含一个点号'.'),将其转换成对应的实数。
说明:点号前有0~9位数字字符,点号后有0~6位数字字符,但是点号前后不能同时没有数字字符。
例如输入“36.8”或“36.80”,则输出实数36.800000;输入“.8”、“0.8”或“0.800”,则输出实数0.800000;输入字符串“36”或“36.0”,则输出实数36.000000.9.两个羽毛球队进行两两单打比赛(每名选手只能上场1次),每队3名选手。
甲队为A、B、C三人,乙队为X、Y、Z三人,已知A不和X对抗,C不和X、Z对抗。
10.*思考题已知VINGTCINQ11.+ CINQTRENTE试编写程序用尽可能少的时间求解各个字母代表的数字。
实验2 结构化程序设计
一、 实验目的
1.了解C/C++语言表示逻辑量的方法(以0代表“假”,以非0代表“真” )。
2.学会正确使用逻辑运算符和逻辑表达式。
3.熟练掌握if 语句和switch 语句。
4.熟练掌握while 语句、do ...while 语句和for 语句格式、使用方法以及区别,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。
5.掌握break 和continue 程序控制语句的使用。
6.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。
进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
7.结合程序掌握一些简单的算法。
8.学习调试程序。
二、实验环境
PC 微机
Windows 操作系统
VS 2019 程序集成环境
三、实验内容与步骤
1.编写程序:根据公式
2
222213121116n ++++= π ,输出 π的值。
要求:
(1)变量π为单精度类型,n 为整型;
(2)计算当n 的取值分别为20,50 ,100,200时的π值,说明什么问题?
(3)修改程序,不给出n 值,而改为求π值,直到最后一项的数值小于10-4 为止。
(4)对修改后的程序,输出π值以及总的项数n 。
输出格式为:π=值;n=值。
代码①:
#include <stdio.h>
#include<math.h>
int main()
{
int n,i;
float pi;
double sum = 0;
while ((scanf("%d", &n) != EOF)) {
for (i = 1; i <= n; i++) {
sum += 1.0 / (i * i);
}
pi = (float)sqrt(6 * sum);
printf("%f\n", pi);
sum = 0;
}
return 0;
}
代码②:
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
float pi;
double sum = 0;
for (i = 1; 1.0 / (i * i) >= 1e-4; i++) {
sum += 1.0 /( i * i);
}
pi = (float)sqrt(6.0 * sum);
n = i;
printf("pi = %f;n = %d",pi,n);
return 0;
}
结果分析:
1.第一问:当n = 20、50、100、200时pi分别为“3.094670、3.122627、3.132077、3.136826”,
由此可知当n越大时,pi的精度越高。
2.第二问:pi =
3.132077,n = 101。
实验总结:这道题主要是运用for语句来实现变量的增长和控制,做题时应注意对限制量的思考。
2.编程实现:由用户从键盘输入一串字符(以回车键结束),统计其中数字、大、小写字母、空格、其它字符的个数。
要求:
(1)通过键盘输入字符。
(2)给出相应的输入/输出信息提示。
并按照数字、大写字母、小写字母、空格、其它字符数的顺序输出结果。
代码:
#include<stdio.h>
int main()
{
int a = 0, b = 0, C = 0, d = 0,e = 0;
char c;
while ((c = getchar()) != '\n') {
if ('0' <= c && c <= '9') a++;
else if ('A' <= c && c <= 'Z') b++;
else if ('a' <= c && c <= 'z') C++;
else if (c == ' ') d++;
else e++;
}
printf("%d %d %d %d %d", a, b, C, d, e);
return 0;
}
实验结果:
输入:123 asvdu23ADasd @#$a
输出:5 2 9 2 3
实验结果和预期一致。
实验总结:应注意题目要求回车键结束和对各种类型的字符的判断。
3.计算并输出1000以内最大的10个素数以及它们的和。
要求:
(1)在程序内部加必要的注释。
(2)由于偶数不是素数,可以不考虑对偶数的处理。
(3)虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。
(4) 输出形式为:素数1+素数2+素数+…+素数10=总和值。
代码:
#include<stdio.h>
int main()
{
int a[11] = { 0 }, sum = 0, n = 0, cnt = 0, j;
for (int i = 1000;cnt < 10; i--) {//从1000倒着搜索,取前十个素数
if (i % 2 == 0) continue;//排除偶数
for (j = 2; j*j <= i; j++) {//判断是否为素数
if (i % j == 0) break;
}
if (j * j > i) {
a[n++] = i;
cnt++;
sum += i;
}
}
printf("%d+%d+%d+%d+%d+%d+%d+%d+%d+%d=%d", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], sum);
return 0;
}
实验结果:997+991+983+977+971+967+953+947+941+937=9664
实验心得:起初采取暴力搜索的方式选取1000以内的素数并递减排序,最终输出预期结果,但自己也觉得繁琐,开始优化程序,思考后发现可以直接倒着搜索,取前十个素数即可。
所以做题前应尽量避免暴力搜索,通过设置搜索条件减少循环空间,并养成优化程序的习惯。
实验总结:因为是要最大的10个素数,所以i应从大到小。
判断是否为素数就是判断从2到i的开方中是否有数可以整除j。
对于不足十个数的情况可以用数组来解决。