厦门理工学院C语言报告实验3_顺序、选择结构
- 格式:doc
- 大小:1.52 MB
- 文档页数:6
C 语言程序设计实验三:顺序与选择结构
1、请根据输入的x值和以下公式,计算输出分段函数y的值。
2、编写一个C 程序,把整数0,1,..6依次转换成Sunday ,Monday ,…Saturday 并输出, 整数0,…,6由键盘输入。
如果输入错误,输出“error ”。
(提示:此题可以用if 语句实现,不需要用循环。
)
说明:
(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ 、上网或打游戏。
(3)直接把C 语言代码粘贴到相应的实验题目下方,上交实验报告时只交word 文档。
(4) 文档名称:班级+学号后2位+姓名+实验编号,例如12通1班12张山实验二.doc 。
⎪⎩⎪⎨⎧-+=10
010x x y )
1()10()0(>≤<≤x x x。
《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/C++实验项目顺序结构,选择结构编程与调试一、实验目的1.掌握C语言中使用最多的一种语句——赋值语句的使用方法。
2.掌握各种数据类型的输入输出的方法,能正确使用各种格式转换符。
3.掌握选择结构程序设计的方法和用用关系表达式、逻辑表达式表示选择结构的条件。
二、实验内容1.调试关于各种格式转换符的正确使用方法的程序并验证结果的正确性。
2.编写并调试简单的关于数据类型输入输出的程序。
3.编写并调试运行关于if语句和switch语句使用的程序。
三、实验步骤及结果分析1.从键盘输入两个整数,求两数之和并输出。
#include <stdio.h>int main ( ){int a,b,c;printf("请输入两个整数:\n");scanf("%d,%d",&a,&b);c=a+b;printf("两数之和为:%d\n",c);return 0;}2.从键盘输入园的半径r,求园的周长C、面积S并输出。
#include <stdio.h>int main( ){float pai=3.14159;float r,C,S;printf("Please enter the radius of the circle:");scanf("%f",&r);C=2*pai*r;S=pai*r*r;printf("The circumference of the circle C is %.2f\n",C); printf("The area of the circle is %.2f\n",S);return 0;}3.从键盘输入一个小写字母,要求输出其对应的大写字母。
#include <stdio.h>int main (){char c1,c2;c1=getchar();c2=c1-32;putchar(c2);printf("\n");return 0;}4.输入圆锥的底面圆的半径和高,求圆锥的表面积和体积。
c语言顺序结构程序设计实验报告实验目的:本实验旨在让学生掌握C语言顺序结构程序设计的基本方法,通过编写简单的程序加深对C语言的理解。
实验内容:本次实验共有两个任务,分别为输出Hello World和计算两个数之和。
1. 输出Hello World首先,在编辑器中输入以下代码:#include <stdio.h>int main(){printf("Hello World!\n");return 0;}然后保存并编译运行该程序,即可在屏幕上输出“Hello World!”。
2. 计算两个数之和接下来,我们来编写一个计算两个数之和的程序。
首先,在编辑器中输入以下代码:#include <stdio.h>int main(){int a, b, sum;printf("请输入两个整数:\n");scanf("%d%d", &a, &b);sum = a + b;printf("它们的和是:%d\n", sum);return 0;}然后保存并编译运行该程序,即可在屏幕上输入提示信息,让用户输入两个整数,并输出它们的和。
实验总结:通过本次实验,我深入了解了C语言顺序结构程序设计的基本方法。
在编写代码时,需要注意变量类型、格式化输出等细节问题。
同时,在调试过程中也需要耐心地查找错误,并进行适当修改。
通过不断地练习和反复调试,我相信我能够更加熟练地掌握C语言的基本知识和技能。
厦门理工c语言课程设计一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握数据类型、变量、运算符的使用。
2. 学会使用C语言进行顺序、选择和循环结构的编程,并能运用逻辑思维解决问题。
3. 掌握函数的定义、调用和参数传递,理解模块化编程的思想。
4. 了解数组、字符串、指针在C语言中的应用,并能运用它们进行数据处理。
技能目标:1. 能够运用C语言编写简单的程序,解决实际问题。
2. 学会使用C语言调试工具,具备基本的程序调试能力。
3. 能够阅读和分析C语言代码,理解他人编写的程序逻辑。
4. 培养良好的编程习惯,编写规范、简洁、高效的代码。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习主动性和创新精神。
2. 增强学生的逻辑思维能力,提高问题分析和解决能力。
3. 培养学生的团队协作意识,学会与他人共同解决问题。
4. 培养学生严谨、务实的科学态度,树立正确的价值观。
本课程针对厦门理工学院学生特点,结合C语言课程性质和教学要求,将目标分解为具体的学习成果。
课程旨在使学生掌握C语言的基本知识和技能,培养编程兴趣和逻辑思维能力,同时注重团队协作和科学态度的培养,为后续课程和实际应用打下坚实基础。
二、教学内容1. C语言基础知识:数据类型、变量、常量、运算符、表达式。
教材章节:第1章 C语言概述,第2章 数据类型与运算符。
2. 控制结构:顺序结构、选择结构、循环结构。
教材章节:第3章 控制语句。
3. 函数:函数定义、调用、参数传递、递归函数。
教材章节:第4章 函数。
4. 数组与字符串:一维数组、二维数组、字符串操作。
教材章节:第5章 数组与字符串。
5. 指针:指针的概念、指针与数组、指针与字符串、函数指针。
教材章节:第6章 指针。
6. 结构体与联合体:结构体的定义、初始化、结构体数组、联合体。
教材章节:第7章 结构体与联合体。
7. 文件操作:文件的概念、文件打开与关闭、文件读写、文件定位。
教材章节:第8章 文件。
c语言顺序表实验报告
C语言顺序表实验报告
实验目的:通过对C语言顺序表的实验,掌握顺序表的基本操作和实现方法,加深对数据结构的理解。
实验内容:本次实验主要包括以下内容:
1. 顺序表的创建与初始化
2. 顺序表的插入与删除
3. 顺序表的查找与修改
4. 顺序表的销毁与清空
实验步骤:
1. 创建顺序表:首先定义一个结构体来表示顺序表,包括表头指针、表长和表的最大长度等信息。
然后利用malloc函数为顺序表分配内存空间,并初始化表长和各元素的值。
2. 插入与删除操作:通过编写插入和删除函数来实现在顺序表中插入和删除元素的操作。
插入操作需要考虑插入位置的合法性和表的扩容问题,删除操作需要考虑删除位置的合法性和表的缩容问题。
3. 查找与修改操作:编写查找和修改函数来实现在顺序表中查找和修改元素的操作。
查找操作可以采用顺序查找或二分查找的方法,修改操作需要考虑修改位置和修改值的合法性。
4. 销毁与清空操作:编写销毁和清空函数来实现销毁和清空顺序表的操作。
销毁操作需要释放表的内存空间,清空操作需要将表的长度置零。
实验结果:经过实验,成功实现了顺序表的创建、插入、删除、查找、修改、
销毁和清空等基本操作。
通过实验,加深了对顺序表的理解和掌握,提高了对C语言和数据结构的应用能力。
实验总结:通过本次实验,我深刻认识到了数据结构在程序设计中的重要性,掌握了顺序表的基本操作和实现方法。
在今后的学习和工作中,我将继续加强对数据结构和算法的学习,不断提升自己的编程能力和解决问题的能力。
《操作系统》实验报告实验序号:3 实验项目名称:进程管理四、实验结果与数据处理1.进程的创建一(1)实验结果:图1:进程的创建一代码图2:程序运行结果(2)结果分析:运行结果:我们由图可以得知输出结果为bca或者abc的任意排列。
结果分析:我们从进程执行并发的角度来思考,不管输出abc的任意排列都是有可能的。
原因:fork函数的原理是:一个现有进程可以调用fork函数创建一个新进程。
由fork创建的新进程被称为子进程(child process)。
fork函数被调用一次但返回两次。
两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。
在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。
在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。
我们可以通过fork返回的值来判断当前进程是子进程还是父进程。
而fork()创建进程所需的时间虽然可能多于输出一个字符的时间,但各个进程的时间片的获得却不是一定是顺序的,所以输出abc的排列都是有可能的。
(3)程序修改:1.如果想让子进程先执行,父进程后执行,利用wait()/waitpid()函数怎样修改程序实现。
2.如果让多个进程不并发执行,而是按规定的顺序执行,请利用sleep()函数怎样修改程序实现。
图3:修改后的代码图4:修改后的代码运行结果从代码修改后的运行结果和网上查阅的资料我们可以知道wait()/waitpid()和sleep()函数都可以控制进程执行的先后顺序,而我们也可以深入了解一下wait()和waitpid()的区别:a. wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止。
如果该父进程没有子进程或者它的子进程已经结束,则wait()函数就会立即返回。
b. waitpid()的作用和wait()一样,但它并不一定要等待第一个终止的子进程(它可以指定需要等待终止的子进程),它还有若干选项,如可提供一个非阻塞版本的wait()功能,也能支持作业控制。
C语言:3种基本结构试验报告
实验目的:了解C语言中的三种基本结构:顺序结构、选择结构和循环结构,并学会运用这三种结构进行编程。
实验内容:
1. 顺序结构
顺序结构是指按照一定的顺序逐步执行程序中的语句,也就是从程序的开始处到结束处,所有的语句都是按照顺序执行的。
以下是一段简单的顺序结构示例代码:
#include <stdio.h>
在该示例代码中,程序首先读入两个整数a和b,然后将它们相加并将结果存储在变量c中,最后输出计算结果。
2. 选择结构
选择结构是根据条件的真假,选择执行的语句,在C语言中,if语句是最常见的选择结构,也是最基本的控制语句,它可以根据条件的真假选择执行不同的语句块。
在该示例代码中,程序首先读入一个整数分数,然后使用if语句判断分数是否大于等于60,如果是,则输出“及格了”,否则输出“不及格”。
3. 循环结构
循环结构是程序重复执行一段程序代码的结构,C语言中,while语句、do-while语句和for语句都可以实现循环结构。
在该示例代码中,程序使用while语句实现了一个循环,从1开始依次输出1-10这十个数字。
实验结果分析:。
安徽工程大学高级语言程序设计实验报告班级姓名同组者/ 成绩日期2019.10.10 指导教师实验名称选择结构程序设计一、实验目的1.学会正确使用关系运算符和关系表达式。
2.学会正确使用逻辑运算符、逻辑表达式以及关系表达式等。
3.熟悉掌握if语句和switch语句的用法。
4.熟悉选择结构程序中的语句执行过程,掌握选择结构程序设计的方法。
二、实验内容1.编写程序,判断从键盘上输入的一个字符类型,并按下列要求输出。
(1)若该字符是数字,输出字符串“0~9”。
(2)若该字符是大写或者小写字母,输出字符串“A~z”。
(3)若该字符是其他字母,输出“!,@,……”。
完善P56页第一个源程序,对源程序进行编译、连接并运行,完成调试报告。
2.编程并上机调试。
(1)给出一个不多于4位的正整数,求它是几位数。
(2)给出一个百分制成绩,要求输出成绩等级'A'、'B'、'C'、'D'、'E'。
90分以上为'A',80~90分为'B'70~79分为'C',60~69分为'D',60分以下为'E'。
用switch语句来实现。
(3)输入4个整数,要求按从小到大的顺序输出。
(4)输入3个整数,将最大数与最小数输出。
(5)输入一个字符,如果是数字字符,把它转换成相应的数字输出;如果不是,则以十进制整数形式输出其ASCⅠⅠ码值。
*思考题3.若在实验内容1的程序第8行的语句else if (_)后多输入了一个分号,即“elseif (_);”,分析程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致并分析原因。
4.若在实验内容1的程序第8行的语句else if(_)法人括号内输入c>='A'&&c<='z'后,判断在调试时是否能得到正确结果,并分析原因。
三、算法流程图或实验步骤(可根据需要增删、修改)1.(1)算法流程图#include<stdio.h>void main( ){char c;scanf("%c",&c);if(c>='0'&&c<='9')printf("0~9\n");else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))printf("A~z\n");elseprintf("!,@,……\n");}(2)实验步骤Files→New→Files→C++source File→文件名:program3011.c→位置:E:\123\→确定→完善源程序→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果2.(1)算法流程图:#include<stdio.h>void main ( ){int a,b;scanf("%d",&a);b=a/10;if (b==0)printf("该数是一位数");else if (b>=1&&b<=9)printf("该数是两位数");else if (b>=10&&b<=99)printf("该数是三位数");elseprintf("该数是四位数");}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3021.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果(2)算法流程图:#include <stdio.h>void main(){int a,b;scanf("%d",&a);b=a/10;switch(b){case(10):printf("A\n");break;case(9):printf("A\n");break;case(8):printf("B\n");break;case(7):printf("C\n");break;case(6):printf("D\n");break;default:printf("E\n");break;}}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3022.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果(3)算法流程图:#include<stdio.h>void main ( ){int a,b,c,d,t;scanf("%d,%d,%d,%d",&a,&b,&c,&d);if (a>b){t=a;a=b;b=t;}else if (a>c){t=a;a=c;c=t;}else if (a>d){t=a;a=d;d=t;}else if (b>c){t=b;b=c;c=t;}else if (b>d){t=b;b=d;d=t;}else if (c>d){t=c;c=d;d=t;}printf("%d,%d,%d,%d",a,b,c,d);return 0;}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3023.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果(4)算法流程图:#include<stdio.h>void main ( ){int a,b,c,t;scanf("%d,%d,%d",&a,&b,&c);if (a>b){t=a;a=b;b=t;}else if (a>c){t=a;a=c;c=t;}else if (b>c){t=b;b=c;c=t;}printf("min is %d,max is %d",a,c);}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3024.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s)0warning(s)后→BuidExecute→查看并验证运行结果(5)算法流程图:#include<stdio.h>void main ( ){char a;scanf("%c",&a);if (a>='0'&&a<='9')printf("%c",a);elseprintf("%d",a);}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3025.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果*思考题:3.算法流程图:#include<stdio.h>void main( ){char c;scanf("%c",&c);if(c>='0'&&c<='9')printf("0~9\n");else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'));printf("A~z\n");elseprintf("!,@,……\n");}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3031.c→位置:E:\123\→确定→修改代码→Buid→是4.算法流程图:#include<stdio.h>void main( ){char c;scanf("%c",&c);if(c>='0'&&c<='9')printf("0~9\n");else if(c>='A'&&c<='z')printf("A~z\n");elseprintf("!,@,……\n");}实验流程:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3041.c→位置:E:\123\→确定→修改代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果四、实验结果及分析1.2.程序见第三项算法流程图。
五、运行结果
六、实验总结(调试分析和体会)
这一学期我们对C语言的学习,在上学期的基础上我更加努力了,课前先预习,上课认真听,不过由于这门学科是第一次接触,在学习上还是存在很多问题。
但这次的作业比刚开始电脑操作时好多了。
经过自己的努力,我学会了了解C语言表示逻辑量的方法(以0代表“假”,非0代表“真”)学会正确使用逻辑运算符和逻辑表达式;能熟练掌握if语句和switch语句;能结合程序掌握一些简单的算法。
通过多次的实验操作,我的操作能力有了很大的进步,但在学习的过。
c语言选择结构程序设计实验报告实验目的:通过程序设计,熟悉C语言中选择结构if-else、switch-case的使用,掌握结构化程序设计方法。
实验环境:Windows10操作系统、Dev C++编译器实验内容:1. if-else结构首先,我们先来看看if-else结构的语法格式:if(条件1){//如果条件1成立,执行该语句块}else if(条件2){//如果条件1不成立,但条件2成立,执行该语句块}else{//如果条件1和条件2都不成立,执行该语句块}if-else语句块的执行顺序是:先判断条件1是否成立,如果成立,就执行if语句块中的语句,然后跳过else-if和else语句块;如果条件1不成立,就继续判断条件2是否成立,如果成立,就执行else-if语句块中的语句,然后跳过else语句块;如果条件2也不成立,就执行else语句块中的语句。
下面给出一个简单的例子,通过if-else结构来判断一个数的正负性:2. switch-case结构switch(表达式){case 常量1://如果表达式的值等于常量1,执行该语句块break;case 常量2://如果表达式的值等于常量2,执行该语句块break;...default://如果表达式的值既不等于常量1,也不等于常量2,执行该语句块break;}switch-case语句块的执行过程是:首先计算表达式的值,然后与每个case后的常量进行比较,如果匹配成功,则执行对应的语句块,直到遇到break或者switch-case语句块执行完毕;如果所有case都不匹配,就执行default语句块中的语句。
实验总结:本次实验是一次很好的C语言程序设计练习,通过对选择结构的学习和应用,不仅巩固了基本知识点,还学习了如何使用结构化程序设计方法来解决实际问题。
在实验过程中,我遇到了一些问题,比如在switch-case语句块中,没有添加break语句会导致程序出错,需要仔细检查。
一、实验的目的1、学习在VC++环境下编辑调试C语言程序的方法。
2、掌握在C语言中的各种数据类型,以及如何定义整型、实型、字符型的变量,并进行赋值的方法。
3、掌握顺序程序的思路,特别是赋值语句的使用方法。
4、掌握各种类型数据的输入输出方法的正确应用,熟悉各种格式控制符的作用。
5、学会在选择结构中正确应用关系表达式及逻辑表达式。
6、熟练掌握if语句和switch语句的使用。
7、学会选择结构问题算法的编制与调试应用。
8、熟练掌握while语句、do-while语句和for语句实现循环的方法。
9、学会循环问题的编制与调试、运行。
二、实验内容与要求本实验涵盖顺序、选择、循环三部分程序设计的应用,要求每部分完成两个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。
具体要求完成的问题如下:(谭浩强C语言第四版)(1)P82/2(2)P84/6(3)P112/6(4)P113/9(5)P140/3(6)P141/16三、算法设计思想(1)P82/2:存款利息的计算。
有1000元,想存5年,可按以下5种办法存:(1)一次存5年。
(2)先存2年期,到期后将本息再存3年期。
(3)先存3年期,到期后将本息再存2年期。
(3)存1年期,到期后将本息再存1年期,连续存5次。
(2)存活期,活期利息每一季度结算一次。
2007年12月的银行存款利息如下:1年期定期存款利息为4.14%;2年期定期存款利息为4.68%;3年期定期存款利息为5.4%;5年期定期存款利息为5.85%;活期存款利息为0.72%(活期利息每一季度结算一次利息)。
如果为年利率,为存款年数,则计算本息和点的公式是:1年期本息和:p=1000*(1+r).年期本息和:p=1000*(1+n*r).存次年期的本息和:p=1000*pow(1+r,n).活期存款本息和:p=1000*pow(1+r/4,4n).说明:1000*(1+r/4)是一个季度的本息和.定义数据类型,进行相关运算并输出结果(2)P84/6:请编程序将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。
c语言顺序表实验报告C语言顺序表实验报告引言:C语言是一种广泛应用于软件开发领域的编程语言,其灵活性和高效性备受开发者青睐。
在本次实验中,我们将探索C语言中的一种数据结构——顺序表。
顺序表是一种线性表的存储结构,通过数组实现,具有快速访问元素的特点。
本实验将通过实际操作,深入了解顺序表的创建、插入、删除和查找等基本操作,并对其性能进行评估。
实验目的:1. 掌握顺序表的创建和初始化方法;2. 熟悉顺序表的插入、删除和查找等基本操作;3. 评估顺序表在不同操作下的性能。
实验步骤:1. 创建顺序表在C语言中,可以通过定义一个结构体来表示顺序表,其中包含一个数组和一个记录当前元素个数的变量。
通过动态内存分配,可以根据需要调整顺序表的大小。
```ctypedef struct {int* data; // 数组指针int length; // 当前元素个数int capacity; // 顺序表的容量} SeqList;```在主函数中,可以通过调用malloc函数为顺序表分配内存空间,并对其进行初始化。
```cSeqList* createSeqList(int capacity) {SeqList* list = (SeqList*)malloc(sizeof(SeqList));list->data = (int*)malloc(capacity * sizeof(int));list->length = 0;list->capacity = capacity;return list;}```2. 插入元素顺序表的插入操作需要考虑插入位置的合法性以及顺序表是否已满的情况。
在插入元素时,需要将插入位置之后的元素后移一位,为新元素腾出空间。
```cvoid insert(SeqList* list, int position, int element) {if (position < 0 || position > list->length) {printf("插入位置非法!");return;}if (list->length >= list->capacity) {printf("顺序表已满,无法插入!");return;}for (int i = list->length - 1; i >= position; i--) {list->data[i + 1] = list->data[i];}list->data[position] = element;list->length++;}```3. 删除元素顺序表的删除操作需要考虑删除位置的合法性以及顺序表是否为空的情况。
实验三顺序结构程序设计一、实验目的1、掌握C 语言中赋值语句的使用方法;2、掌握不同类型数据的输入输出方法,能正确使用各种格式字符;二、实验预习1、认真阅读数据的输入输出部分内容。
三、实验指导1、从键盘输入两个0 到127 的整数,求两数的平方差并输出其值以及这两个整数的ASCII 码对应的字符。
(1)算法分析:标准ASCII 码值范围是0 到127,所以在这范围内的数可以以字符形式输出,实现方法是用格式输出函数并用格式符c 控制输出。
(2)根据结果书写源程序#include<stdio.h>void main( ){int x,y,sub ;scanf("%d%d",&x,&y);/* 变量前一定要加取地址符& */sub=x*x-y*y ;printf("%c,%c,%d",x,y,sub);}(3)在C 编辑环境下编辑源程序。
(4)编译【F9】,直到程序没有错误。
(5)运行【Ctrl+F9】,从键盘输入:100 50↙注意输入时两数间应以空格间隔,不能用逗号,只有源程序输入函数中两格式符以逗号间隔时输入才可以是:100,50↙(6)查看结果【Alt+F5】,输出内容如下:d,2,75002、输入程序#include <stdio.h>void main( ){int a,b ;float d,e ;char c1,c2 ;double f,g ;long m,n ;unsigned int p,q ;a=61 ;b=62 ;c1='a' ;c2='b' ;d=3.56 ;e=-6.87 ;f=3157.890121 ;g=0.123456789 ;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);printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);}(1)运行程序并分析结果。
《数据结构》实验报告实验序号:6 实验项目名称:树和二叉树的操作}while(x!=-9999);}改写以上程序,实现功能如下(任选两题):1.编写函数实现前序、中序和后序遍历。
运行结果截图:2.编写函数实现计算叶节点个数。
运行结果截图:四、分析与讨论附源程序清单:1.#include <stdlib.h>#include <stdio.h>typedef int TElemType;typedef struct BiTNode{TElemType data;struct BiTNode *lchild,*rchild;}BiNode, *Bitree;DLR( Bitree root ){ if (root !=NULL) { //非空二叉树printf("%d",root->data); //访问DDLR(root->lchild); //递归遍历左子树DLR(root->rchild); //递归遍历右子树}return(0);}LDR(Bitree root){ if(root !=NULL){LDR(root->lchild);printf("%d",root->data);LDR(root->rchild);}return(0);}LRD (Bitree root){ if(root !=NULL) {LRD(root->lchild);LRD(root->rchild);printf("%d",root->data);}return(0);}Bitree root;//定义根结点void insert_data(int x) /*生成/树*/{Bitree p,q,s;s=(Bitree)malloc(sizeof(BiNode)); //创建结点s->data=x; //结点赋值s->lchild=NULL;s->rchild=NULL;if(!root){root=s;}else{p=root;while(p) /*如何接入二叉排序树的适当位置*/{q=p;if(p->data==x) //相同结点不能重复插入{printf("data already exist! \n");return;}else if(x<p->data)p=p->lchild;elsep=p->rchild;}if(x<q->data)q->lchild=s;elseq->rchild=s;}}void main() /*先生成二叉排序树*/{int i=1,x; //i记录结点个数,x存放结点值root=NULL; /*千万别忘了赋初值给root!*/printf("请输入数据,-9999表示输入结束\n");do{printf("please input data %d:",i);i++;scanf("%d",&x); /*从键盘采集数据,以-9999表示输入结束*/if(x==-9999){printf("\nNow output data value:\n");}elseinsert_data(x); /*调用插入数据元素的函数*/}while(x!=-9999);printf("\nDLR");DLR(root);printf("\nLDR");LDR(root);printf("\nLRD");LRD(root);}2.#include <stdlib.h>#include <stdio.h>typedef int TElemType;typedef struct BiTNode{TElemType data;struct BiTNode *lchild,*rchild;}BiNode, *Bitree;Bitree root;//定义根结点int CountLeaf (Bitree root){ //返回指针T所指二叉树中所有叶子结点个数int m,n;if (!root ) return 0;if (!root->lchild && !root->rchild) return 1;else {m = CountLeaf( root->lchild); n = CountLeaf( root->rchild);return (m+n);} //else} // CountLeafvoid insert_data(int x) /*生成/树*/{Bitree p,q,s;s=(Bitree)malloc(sizeof(BiNode)); //创建结点s->data=x; //结点赋值s->lchild=NULL;s->rchild=NULL;if(!root){root=s;}else{p=root;while(p) /*如何接入二叉排序树的适当位置*/{q=p;if(p->data==x) //相同结点不能重复插入{printf("data already exist! \n");return;}else if(x<p->data)p=p->lchild;elsep=p->rchild;}if(x<q->data)q->lchild=s;elseq->rchild=s;}}void main() /*先生成二叉排序树*/{int i=1,x; //i记录结点个数,x存放结点值int sum;root=NULL; /*千万别忘了赋初值给root!*/printf("请输入数据,-9999表示输入结束\n");do{printf("please input data %d:",i);i++;scanf("%d",&x); /*从键盘采集数据,以-9999表示输入结束*/if(x==-9999){printf("\nNow output data value:\n");}elseinsert_data(x); /*调用插入数据元素的函数*/ }while(x!=-9999);printf(" \n叶节点个数=");sum=CountLeaf (root);printf("%d\n",sum);}。
C语言选择结构程序设计实验报告
一、实验目的和要求
1.了解C语言表示逻辑量的方法。
2.正确使用逻辑运算符和逻辑表达式,掌握if语句和switch语句。
3.结合程序掌握一些简单算法,并学习调试程序。
二、实验内容和原理
1.有一函数:
x2+2x-6(x<0,x≠-3)
y=x2-5x+6(0≤x<10,x≠2,x≠3)
x2-x-15(x=-3,x=2,x=3,x≧10)
写一程序,用scanf函数输入x,输出y值。
2.分别用if语句和switch语句编程实现:给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
3.输入4个整数,要求按由小到大顺序输出。
4.有三个整数a,b,c,由键盘输入,输出其中最大的数,请编写程序。
(用两种方法实现)
5.输入出租车类型和里程,计算打车的费用。
计算方式为:3公里以内10元;3公里以上0车型每公里1.5元,1车型每公里2元。
三、实验环境
1.硬件:PC机;
2.软件:Windows操作系统、VisualC++6.0,DEV-CPP。
四、算法描述及实验步骤
1、先用scanf函数输入,再用if语句的嵌套来计算该方程。
2、(1)用switch语句时,对输入的数据进行检查,在用score/10将其强制转换得到一个。
实验三顺序结构程序设计实验报告一、实验目的1.掌握掌握赋值语句的使用方法。
2.各种类型数据的输入输出的方法,能正确使用各种格式转换符。
3.进一步掌握编写程序和调试程序的方法。
二、实验内容(源代码)1. sy3-(1)①#include<stdio.h>int 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.123456789;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}③#include<stdio.h>int 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.123456789;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④#include<stdio.h>int 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.123456789;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),size of(c2),sizeof(d),sizeof(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<stdio.h>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<stdio.h>#include<math.h> //不要忘了数学函数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<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("用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<stdio.h>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<stdio.h>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;}三、实验体会1.初步掌握了顺序程序设计编程的基本方法:程序框图或N-S图→定义→赋值→(提示)输入→计算→(提示)输出。
《C语言程序设计》实验报告
实验序号:3 实验项目名称:顺序、选择结构
网工学号姓名专业、班级
实验地点316 指导教师林老师实验时间11.1
一、实验目的及要求
1.掌握正确使用逻辑运算符和逻辑表达式表示逻辑判断;
2.熟练掌握用if语句编写选择结构的程序;
3.掌握switch语句的正确使用;
4.初步了解调试程序的一般方法。
二、实验设备(环境)及要求
使用Visual C++ 6.0;windows系列操作系统的环境。
三、实验内容与步骤
1.输入一个华氏温度f,要求输出摄氏温度c。
公式为c=5/9(f-32)。
输出要求有文字说明,取2位小数。
【算法提示】
1)定义实变量c,f
2)提示输入"Please enter f:"
3)读入f
4)根据公式计算c
5)打印两位精度的结果。
测试结果:
华氏温度f 摄氏温度c
100.25
0.5
23.78
2.有一函数
x (x<1)
y= 2x-1 (1<=x<10)
3x-11 (x>=10)
用scanf函输入x的值,求y值。
【算法提示】
1)定义实变量x,y
2)提示输入"Please enter x:"
3)读入x
4)判断x所在的区间,对应出y的计算公式并求值(进一步细化)
5)打印结果。
运行结构截图:
\
3.从键盘上输入一个正整数,判断这个数能否同时被3和5整除;
运行结构截图:
4.设计算法输入一个四位正整数,将它们倒排,例如输入1234,输出4321。
(提示:分别应用/ 求整数部分,%求余数部分。
例如7/5=1,7%5=2)。
运行结构截图:
5.某公司的招聘条件如下:①Experience with C ②bachelor degree
③less than 30
要求屏幕输出如下:
根据应聘者输入数据逐步提问,如应聘者输入n,则提示
应聘者全满足则输出
要求必须使用switch,必须考虑用户输入大写Y或者N。
6.假设手机有两种收费方式,第一种是每分钟0.6元,无月租费;另一种是每分钟0.4元再收50元月租费,输入一个月打电话的时间(分钟),判断那一种更省钱。
运行结构截图:
7.税收问题。
假设某国家收税是分段计费,标准如下:在1万元以上部分收税20%;5000-10000元部分收税10%;1000-5000元部分收税5%;1000元以下部分免税。
根据输入的金额计算应缴纳的税金。
如:某人收入是12000元,则应缴纳的税金为4000*5%+5000*10%+2000*20%=1100元【实验提示】
①给你的变量起个好名字,不要什么变量都用a,b,c…等,变量最好用英文单词或单词的缩写命名,变量名字要体现变量在程序的含义和作用。
要有必要的注释!!,养成这一良好的习惯很重要,请记住,“代码只被书写一次,而它被修改和阅读的次数可能是无限的”
②本程序可以使用if语句和switch语句分别实现。
运行结构截图:
附源程序清单:
1)1. #include<stdio.h>
2)void main()
3){
4)float c1,c2,c3,f1,f2,f3;
5)printf("\nplease enter three f\n");
6)scanf("%f\n%f\n%f",&f1,&f2,&f3);
7)c1=(f1-32)*5/9;
8)c2=(f2-32)*5/9;
9)c3=(f3-32)*5/9;
10)printf("\nhua shi wen du fenbie wei :\n%.2f1\n%.2f\n%.2f",c1,c2,c3);
11)}
2.
3.
4. #include<stdio.h>
void main()
{
int a,b,c,d;
printf("\n请输入一个四位数:\n");
scanf("%1d%1d%1d%1d",&a,&b,&c,&d);
printf("%d%d%d%d\n",d,c,b,a);
}
5. #include<stdio.h>
void main()
{
char c;
printf("Do you have Experience with C? press N/Y \n");
c=getchar();
switch(c)
{
case 'n':printf("\nWe are sorry to tell you ...\n");break;
case 'N':printf("\nWe are sorry to tell you ...\n");break;
case 'y':printf("\nWelcome join us! \n");break;
case 'Y':printf("\nWelcome join us!\n ");break;
default:printf("Input invalid score\n\n");
}
}
6.#include<stdio.h>
void main()
{
float time,cost1,cost2;
printf("请输入你一个月打电话的时间(分钟):");
scanf("%f",&time);
cost1=0.6*time;
cost2=0.4*time+50;
if(cost1<cost2)
{
printf("第一种话费%.2f,第二种话费%.2f,比较后第一中比较省钱\n",cost1,cost2);
}
else printf("第一种话费%.2f,第二种话费%.2f,比较后第二中比较省钱\n",cost1,cost2); }
7. #include<stdio.h>
void main()
{
float wage,tax1,tax2,tax3,tax4;
printf("请输入工资:");
scanf("%f",&wage);
tax2=(wage-1000)*0.05;
tax3=4000*0.005+(wage-5000);
tax4=4000*0.05+5000*0.1+(wage-10000)*0.2;
if(wage<=1000)
{
printf("该同志的工资%F低于标准免税\n",wage);
}
else
if(wage>1000&&wage<=5000)
{
printf("该同志工资%f本月应该缴纳税收%.2f\n",wage,tax2);
}
else
if(wage>5000&&wage<=10000)
{
printf("该同志工资%f本月应该缴纳税收%.2f\n",wage,tax3);
}
else printf("该同志工资%f本月应该缴纳税收%.2f\n",wage,tax4);
}。