最新C语言实验4
- 格式:doc
- 大小:186.50 KB
- 文档页数:13
电子科技大学计算机学院标准实验报告(实验)课程名称C语言程序设计电子科技大学教务处制表电子科技大学实验报告四学生姓名:学号:指导教师:王瑞锦实验地点:实验日期:年月日一、实验室名称:软件实验室二、实验项目名称:函数的应用及预处理三、实验学时:2四、实验原理:使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。
Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。
通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。
五、实验目的1.掌握C语言中定义函数的方法;2.掌握函数传值调用的方法;3.掌握函数传址调用的方法;4.掌握递归函数的设计方法;5.掌握命令行参数的使用方法;6.掌握函数在不同文件中的编译、链接方法。
六、实验内容编程实验,完成以下上机内容,调试运行程序并完成报告1)、教材第七章习题7.4;2)、编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出;3)、教材第七章习题7.11;4)、教材第七章习题7.15;5)、教材第七章习题7.24;6)、求解汉渃塔(tower of Hanoi)问题。
在一块平板上立有3根立柱,从左到右分别标记为A,B,C。
最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。
要求将这些盘从A移到C(可以借助B柱)。
条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。
(提示:利用函数的递归调用);七、实验器材(设备、元器件):pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。
软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。
八、实验步骤:实验编程与运行结果⑴编写一个求两个整数的最小公倍数的函数,两个整数由键盘输入,用主函数调用这个函数,并输出结果。
程序文件名为7_4.c,源程序清单如下:#include<stdio.h>lcd(int a,int b){int temp,num1,num2;num1=a;num2=b;while(num2!=0){temp=num1%num2;num1=num2;num2=temp;}return(a*b/num1);}main(){int t,x,y;printf("Please input two integers:");scanf("%d,%d",&x,&y);if(x>y){t=x;x=y;y=t;}printf("lcd(%d,%d)=%d\n",x,y,lcd(x,y));}运行结果:⑵编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出。
c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。
二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。
三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。
熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。
2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。
运用 switch 语句进行多分支选择,处理不同的情况。
利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。
3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。
掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。
4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。
实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。
5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。
掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。
6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。
了解共用体的概念和使用场景,比较结构体和共用体的区别。
四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。
c语言实验报告c语言实验报告5篇随着社会一步步向前发展,我们使用报告的情况越来越多,我们在写报告的时候要注意涵盖报告的基本要素。
其实写报告并没有想象中那么难,以下是小编收集整理的c语言实验报告,欢迎阅读与收藏。
c语言实验报告1学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。
2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。
3、掌握C程序的运行、调试方法等。
二、实验内容编写一个学生信息排序程序。
要求:1、程序运行时可输入n个学生的信息和成绩(n预先定义)。
2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。
3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。
1、使用函数方法定义各个模块。
三、实验步骤与过程物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板四、程序调试记录c语言实验报告2第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
(]1.2 实验要求在报告中记录建立、保存C程序实习过程。
1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。
实验报告工学院土木工程专业09级2011 至2012 学年度第 1 学期实验目的:1、了解C语言表示逻辑量的方法(以0代表“假”, 以非0代表“真”);2.学会正确使用逻辑运算符和逻辑表达式;3.熟练掌握if语句的使用(包括if语句的嵌套);4.熟练掌握多分支选择语句——switch语句;5.结合程序掌握一些简单的算法;6.进一步学习调试程序的方法。
实验内容(1)本实验要求事先编好解决下面问题的程序, 然后上机输入程序并调试运行程序。
有一函数: x (x<1)y=﹛2x-1 (1<=x<10)3x-11 (x>=10)①写程序, 输入x的值, 输出y相应的值。
用scanf函数输入x的值, 求y值。
输入程序如下:#include<stdio.h>int main(){int x,y;printf("Please input x:");scanf("%d",&x);if (x<1){y=x;printf("x=%d y=%d",x,y);}else if (x<10){y=2*x-1;printf("x=%d y=%d",x,y);}else{y=3*x-11;printf("x=%d y=%d",x,y);}return 0;}运行结果如下: (分别输入-6,5,15)①从键盘输入一个小于1000的正数, 要求输出它的平方根(如果平方根不是正数,则输出其整数部分)。
要求在输入数据后先对其进行检查是否小于1000。
若不是, 则要求重新输入。
输入数据如下:#include<stdio.h>#include<math.h>int main(){int x,y;printf("Please input x:");scanf("%d",&x);while (x>1000){printf("Please input x(<1000):");scanf("%d",&x);}y=sqrt(x);printf("x=%d y=%d",x,y);return 0;}②运行结果如下①给出一个百分制成绩, 要求输出成绩等级A,B,C,D,E。
实验四循环结构程序设计2(参考答案)(1)编写程序sy4-1.c,输入n,计算并输出如下多项式的值:S n=1+1/2!+1/3!+1/4!+…+1/n!。
例如输入n为15时,输出1.718282。
算法分析:第一项可以看成1/1!,用循环控制累加n个分式,分式的分母是i!,分子固定为1。
参考答案:# include <stdio.h>void main(){double s=0,p=1;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){p = p * i ; //计算分母i!s = s + 1 / p ; //累加}printf("s=%lf\n",s);}运行结果:(2)编写程序sy4-2.c,输入n,根据以下公式计算s:,例如当n=11时,结果为1.833333。
算法分析:该多项式的分母是累加。
参考答案:# include <stdio.h>void main(){double sn=0,s=0;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){s = s + i ; //计算分母1~i的累加和sn = sn + 1 / s ;}printf("sn=%lf\n",sn);}运行结果:(3)编写程序sy4-3.c,计算3~n之间所有素数的平方根之和,要求:输入n,输出结果。
例如,输入n 的值是100,则输出结果是148.874270。
注意n应在2~100之间。
算法分析:穷举3~n之间的数找素数,若是素数则累加她的平方根。
参考答案:# include <stdio.h># include <math.h>void main(){int i,j,n,flag;double s=0;scanf("%d",&n);for(i=3;i<n;i++) //穷举3~n之间找素数{flag=1; //假设当前的i是素数,标志变量设为1for(j=2;j<i;j++) //穷举要判断是否是素数的i的除数,范围2~i-1if(i%j==0) //若i能被j整除,则不是素数{ flag=0; break; } //标志变量改为0,并终止循环if( flag == 1 )s = s + sqrt( i ); //若i是素数,则累加sqrt(i)}printf("s=%f\n",s);}运行结果:(4)编写程序sy4-4.c,根据以下公式求p的值,(m与n为两个正整数且m>n)。
实验4:选择结构程序设计实验名称:选择结构结构程序设计实验日期:年月日实验报告日期:年月日一、实验目的1、掌握关系、逻辑运算符及其表达式的正确使用。
2、掌握if语句和switch语句的使用。
二、实验环境Vc++6.0三、实验内容在v C下完成程序题:1、有如下函数,要求输入x的值,求y的值。
|X|,X<0Y= X2,0≤X<10LogX,X≥102、输入1-7之间的任意数字,程序按照用户的输入输出相应的星期值。
3、某单位马上要加工资,增加金额取决于工龄和现工资两个因素:对于工龄大于等于20年的,如果现工资高于2000,加200元,否则加180元;对于工龄小于20年的,如果现工资高于1500,加150元,否则加120元。
工龄和现工资从键盘输入,编程求加工资后的员工工资。
四、实验要求1、实验前绘制程序框图,编制源程序、准备测试数据。
2、在vc下完成程序的编辑、编译、运行,获得程序结果。
3、实验中可以采用vc程序调试基本方法协助查找程序中的逻辑问题。
五、实验步骤、过程1、编辑、编译、运行程序题1,分别使用数据-5,0,5,10,100做测试。
人工计算结果分别是。
2、编辑、编译、运行程序题2,分别使用数据1,7,8做测试。
3、编辑、编译、运行程序题3,测试数据见下表:工龄y(年)现工资S0(元)调整后工资S(元)-人工计算结果25 220022 190018 170016 14004、尝试跟踪程序题1运行。
用F7或F8键单步跟踪程序,用^F7检查变量值,用F4可以将程序运行到光标当前位置。
X。
实验四函数一、实验目的1.掌握函数的定义、函数的说明和调用。
2.掌握函数的参数及其传递方式,函数值的正确返回。
二、实验内容1.[目的]掌握标准库函数的说明和调用方法。
[题目内容]编写一个程序,首先显示一个菜单,然后根据用户的选择,输入数据后,执行相应的操作。
[输入]用户选择和函数自变量值[输出]如下菜单:=======MENU======1.。
sin2.。
cos3.。
pow4.。
sqrt0.。
exit==================[提示]使用标准库函数、多分支选择结构。
2.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1 。
编写一个程序,从键盘输入任意10个整数,分别调用用户自定义函数来判断这10个整数的奇偶性。
[输入]任意10个整数[输出]这10个整数的奇偶性[提示]在主函数中使用循环结构输入10个整数。
根据子函数的返回值输出相应的判断结果信息。
3.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]编写一个用户自定义函数,该函数有三个整数参数,函数的功能是:求解这三个整数的最大值,函数的返回值为三个参数的最大值。
编写一个程序,从键盘输入任意5个整数,分别两次调用用户自定义函数来求出这5个整数中的最大值。
[输入]任意5个整数[输出]这5个整数的最大值[提示]先用前三个整数调用函数,求出的最大值作为参数之一,再与另两个整数一起求出最大值即为所求。
4.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]nA表示从m各元素中抽出n个元素的排列的个数。
它的计算公式为:m)!(!n m m A n m -=。
编写一个用户自定义函数,该函数有一个整数参数,函数的功能是:求解这个整数的阶乘,函数的返回值为这个整数的阶乘。
《高级语言程序设计》实验报告班级:学号:姓名:成绩:实验4 选择结构程序设计一、实验目的1.掌握关系运算符和关系表达式的使用方法。
2.掌握逻辑运算符和逻辑表达式的使用方法。
3.掌握if语句、switch语句、条件运算符(?:)的使用方法。
4.掌握选择结构程序的设计技巧。
二、实验内容1.改错题在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。
(1)下列程序的功能为:输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出ZAB;输入M,则输出LMN;输入Z,则输出YZA。
请纠正程序中存在错误,使程序实现其功能,程序以文件名sy3_1.c存盘。
#include <stdio.h>main(){ char ch,c1,c2;printf("Enter a character:");ch=getchar();if((ch>='a')||(ch<='z'))ch-=32;c1=ch-1;if(ch='A') c1=ch+25;else if(ch='Z') c2=ch-25;putchar(c1);putchar(ch);putchar(c2);putchar('\n');}(2)下列程序的功能为:输入3个整数后,输出其中最大值。
请纠正程序中存在错误,使程序实现其功能,程序以文件名sy3_2.c存盘。
#include "stdio.h"main(){int a,b,c,max;printf ("请输入3个整数:\n"); scanf ("%d%d%d",&a,&b,&c); max=a; if (c>b){ if (b>a) max=c;} /* c>b>a */ else /* b>c */{if (c>a) max=b;} /* b>c>a */ printf("3个数中最大者为:%d\n",max);}(3)下列程序的功能为:输入1-4月份号,输出该月份对应的英语表示法。
实验课程名称:C语言程序设计实验班级:计算机科学与技术1班实验时间:2023年3月15日实验地点:计算机实验室实验目的:1. 熟悉C语言编程环境,掌握C语言的基本语法和编程规范。
2. 培养学生的逻辑思维能力和编程能力。
3. 通过实际编程,加深对C语言数据结构和算法的理解。
实验内容:1. 数据类型和变量定义2. 运算符和表达式3. 控制结构(条件语句和循环语句)4. 函数的定义和使用5. 数组的使用6. 指针的使用7. 文件操作实验步骤:一、实验一:数据类型和变量定义1. 熟悉C语言的数据类型,包括整型、浮点型、字符型等。
2. 掌握变量定义的语法,学会使用不同的数据类型定义变量。
3. 编写程序,实现变量的声明、赋值和输出。
实验代码:```c#include <stdio.h>int main() {int a = 10;float b = 3.14;char c = 'A';printf("整型变量a的值为:%d\n", a);printf("浮点型变量b的值为:%f\n", b);printf("字符型变量c的值为:%c\n", c);return 0;}```二、实验二:运算符和表达式1. 掌握C语言中的运算符,包括算术运算符、关系运算符、逻辑运算符等。
2. 学会编写表达式,并理解表达式的计算规则。
3. 编写程序,实现不同运算符的使用。
实验代码:```c#include <stdio.h>int main() {int a = 5, b = 3;printf("a + b 的值为:%d\n", a + b);printf("a - b 的值为:%d\n", a - b);printf("a b 的值为:%d\n", a b);printf("a / b 的值为:%d\n", a / b);printf("a % b 的值为:%d\n", a % b);printf("!(a > b) 的值为:%d\n", !(a > b));return 0;}```三、实验三:控制结构1. 理解C语言中的条件语句(if-else)和循环语句(for、while、do-while)。
最新C实验报告为了完成这个任务,我将会创建一个假设的C语言实验报告的概要。
这个报告可能会包括以下几个部分:1. 实验目的:- 理解C语言的基本结构和语法。
- 学习如何使用数组、指针和结构体。
- 掌握文件操作和动态内存分配的技巧。
2. 实验环境:- 操作系统:Linux Ubuntu 20.04 LTS。
- 编译器:GCC 10.3.0。
- 开发环境:Visual Studio Code。
3. 实验内容与步骤:- 实验一:数组的应用- 创建一个C程序,使用数组存储用户的考试成绩,并计算平均分。
- 实现一个函数来对成绩进行排序。
- 实验二:指针的使用- 编写一个程序,通过指针交换两个变量的值。
- 实现一个函数,使用指针参数来找出数组中的最大值。
- 实验三:结构体的创建和使用- 定义一个学生结构体,包含姓名、学号和成绩。
- 创建一个结构体数组,存储班级的学生信息,并编写函数来处理这些信息。
- 实验四:文件操作- 实现文件的读写操作,将学生信息保存到文件中,并能从文件中读取信息。
- 实验五:动态内存分配- 编写程序,动态分配内存以存储用户输入的字符串,并在不需要时释放内存。
4. 实验结果:- 展示每个实验的输出截图。
- 对实验结果进行简要分析。
5. 实验总结:- 总结在实验过程中遇到的问题及解决方案。
- 反思实验过程中的学习体会和收获。
6. 附录:- 提供完整的C程序代码。
- 列出所有参考文献和使用的资源。
请注意,这只是一个示例报告的结构,具体内容需要根据实际完成的实验来填充。
实验4 逻辑结构程序设计1、实验目的、要求(1)C语言表示逻辑量的方法。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟悉掌握if语句和switch语句。
(4)掌握简单的算法及程序调试。
2、实验内容:(1)输入程序并运行,观察运行结果并分析。
#include <stdio.h>int main(){int a=1,b=3,c=5,d=4,x;if(a<b) (1)If(c<d) x=1; (2)Else (2)If(a<c) (3)If(b<d) x=2; (4)Else x=3; (4)Else x=6; (2)Else x=7; (1)printf(“x=%d\n”,x);Return(0);}实验前分析:因已知:A,B,C,D分别为1,3,5,4,故可知只有A<C,B<D是成立的。
故预测实验结果应该为2.实验分析:对该程序进行结构分析:如图,在程序中所有的IF和ELSE中,有一一对应的关系,即一个IF对应一个ELSE,按照标号有上述对应关系,实现了多个IF嵌套。
A<C,B<D,故有X=2成立,故输出值为2。
(2)、编写程序:Y=X(X<1);Y=2X-1(1=<X<10);Y=3X-11(X>=10).要求用SCANF输入X的值,输出Y的值。
程序编写如下:#include <stdio.h>Int main(){int x,y;Scanf(“%d”,x);If(x<1) y=x;If(x>=1&&x,10) y=2*x-1;If(x>=10) y=3*x-11;Printf(“%d”,y);Return(0);}进行检验,发现程序有错误,无法运行。
将程序改为:#include <stdio.h>Int main(){int x,y;Scanf(“%d”,x);If(x<1) y=x;Else if(x>=1&&x<10) y=2*x-1;Else if(x>=10) y=3*x-11;Printf(“%d”,y);Return(0);}实验分析:1、在if语句中,要注意IF和ELSE的配合使用,不能单独使用IF。
C语言实验报告(四)第一篇:C语言实验报告(四)C语言实验报告(四)一、实验目的1.掌握C语言中函数和模块2.掌握怎样定义函数,如何调用或使用函数,如何声明函数3.掌握函数的参数,了解在函数调用时,参数是如何传递的4.在使用函数的过程中怎样确定函数的参数5.如何使用局部变量和全局变量二、实验内容1.偶数判断描述: 编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1。
编写一个程序,从键盘输入m个整数,分别调用用户自定义函数来判断这m个整数的奇偶性。
输入: 第一行为一个整数m,表示要判断m个整数的奇偶性;紧接着是m行,每行一个整数。
输出:有m行,分别对应输入的第2到第m+1行的整数的奇偶性样例输入: 2 1 6 样例输出: 奇数偶数·程序代码:#include“stdio.h” int isEven(int a){ if(a%2==0)return 1;elsereturn 0;} int main(){ int m,i,b;scanf(“%d”,&m);for(i=1;i<=m;i++){scanf(“%d”,&b);if(isEven(b)==1)printf(“偶数n”);else printf(“奇数n”);}return 0;}2.温度转换描述: 编写一个用户自定义函数,函数的功能是:将华氏温度转F 换为摄氏温度C。
转换公式为:C=5*(F-32)/9。
编写一个程序,输出指定范围的华氏温度与摄氏温度的对照表,其中华氏温度步长为4。
输入: 两个空格隔开的整数n,m(且0#include “stdio.h” float conver(int f){ return 5*(f-32)/9.0;} int main(){ int n,m,i;scanf(“%d%d”,&n,&m);for(i=n;i<=m;i+=4) printf(“%d%10.2fn”,i,conver(i));return 0;}3.最大值函数描述:编写一个用户自定义函数,该函数有三个整数参数,函数的功能是:求解这三个整数的最大值,函数的返回值为三个参数的最大值。
实验四一、实验目的1、掌握在Visual C++6.0环境下输入输出函数的使用方法。
2、掌握常用数学库函数的使用方法。
3、掌握自增、自减运算符的使用方法。
4、掌握强制类型转换(显示类型转换)的使用方法。
二、实验要求1、在Visual C++6.0环境下,进行实验。
2、实验完成后上交源程序文件。
3、程序文件命名“4_题号.c”,如:4_1.c 、4_2.c三、实验内容1、编写程序,接收键盘输入的两个浮点数保存到变量x、y中,计算并输出sin(x)、cos(x)、|x|、e x、x y的值。
提示:使用相应数学库函数。
2、从键盘输入3个整数作为一个三角形的3条边长,并保存到3个变量a、b、c中,计算并输出该三角形面积。
三角形面积=)(*)s---,ass(*c(*)bs其中s=(a+b+c)/2提示:使用相应数学库函数。
3、输入两个学生的姓名和3门课程成绩并求他们的总分和平均分,按照形如下列格式输出。
**************************************************************** NAME MA TH PHYSICS CHEMSTRY SUM A VERAGEA 90.5 90.0 97.0 ……B 87.5 99.0 100.0 ……其中,每一列靠右对齐,各列宽度自己掌握,要求输出形式尽量美观。
“…”表示要自己计算的值。
要求:姓名用字符表示,第一个学生的姓名是‘A’,第二学生的姓名是’B’;课程、总分、平均分是浮点型数据,输出精确到小数点后1位。
提示:注意格式化输出问题。
4、编写程序,从键盘输入一个不等于0的浮点数,然后分别输出这个浮点数的符号、整数部分和小数部分。
例如输入-213.14,输出应该是(俺如下格式输出):符号: -整数部分:213小数部分:0.140000提示:要得到一个浮点数的整数部分可用强制类型转换,也可通过另外定义一个整型变量并将浮点数赋值给它(利用系统自动类型转换)。
实验4指针实验一、实验目的(四号黑体)(1)通过实验进一步掌握指针的概念,会定义和使用指针变量;(2)能够正确使用数组的指针和指向数组的指针变量;(3)能够正确使用字符串的指针和指向字符串的指针变量;(4)能正确使用指向函数的指针变量。
二、实验原理(算法分析(包括流程图))1、a是二维数组,p和形参 pointer是指向整型数据的指针变量,P指向数组0行0列元素a[0][0]。
在调用move函数时,将实参p的值&a[0][0]递给形参 pointer,在move函数中将a[i][j]与a门的值互换。
由于a数组的大小是3×3,而数组元素是按行排列的,因此a[j在a数组中是第(3×i+j)个元素,例如,a[2[1是数组中第(3×2+1)个元素,即第7个元素(序号从0算起)。
a[i[j的地址是( pointer+3*i+j),同理,a[j][i]的地址是( poInter+3*j+i)。
将*( pointer+3*i+j)和*( pointer+3*j+i)互换,就是将a[i][j]和[i][j]互换算法如下:2、当p1所指向的字符比p2大时,t为正数(即,p1所指向的字符的ASC II码,减去p2所指向的字符的ASC II码大于0),当p1所指向的字符比p小大时,为负数,当p1所指向的字符与p2一样大时,t=0;所以实现上诉命令的算法如下:三、实验过程原始记录(数据、图表、计算等)1、(1)本题目要求编程实现矩阵的转置,并且在实现这一操作时只能使用指针,因此解决这一问题时,应注意下面几个问题:数组名是一个指针变量,但该指针变量是一个常量;int a[10] 中的a 的类型等同于 int *p 定义的指针变量p;int a[10][5]中定的a的类型等同于 int (*p)[5];(2)程序代码如下:#include <stdio.h>int main(){void move(int * pointer);int a[3][3], * p, i;printf("输入矩阵:\n");for (i = 0; i < 3; i++)scanf_s("%d%d%d", &a[i][0], &a[i][1], &a[i][2]);p = &a[0][0];move(p);printf("转置后:\n");for (i = 0; i < 3; i++)printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]);return 0;}void move(int * pointer){int i, j, t;for (i = 0; i < 3; i++)for (j = i; j < 3; j++){t = *(pointer + 3 * i + j);*(pointer + 3 * i + j) = *(pointer + 3 * j + i);*(pointer + 3 * j + i) = t;}}2、程序代码如下:#include "stdio.h"int main(int argc, char* argv[]){int strcmp(char* p1, char* p2);char s[100], a[100];printf_s("输入一串字符1: ");gets_s(a);printf_s("输入一串字符2: ");gets_s(s);printf("%d\n", strcmp(a, s)); return 0; }int strcmp(char* p1, char* p2){int t;t = *p1 - *p2;for (;t == 0 && p1!="0"&&*p2!='0';) {p1++;p2++;t = *p1 - *p2;}return t;}四、实验结果及分析1、输入矩阵结果如下:2、(1))输入第一个字符串比第二个小结果如下:分析:a 的ASCII代码是97,c的是99,所以二者相减t=-2(2)第一个字符串比第二个大(3)输入完全相同的字符串五、附录(自己实现的源代码)1、#include <stdio.h>int main(){void move(int * pointer);int a[3][3], * p, i;printf("输入矩阵:\n");for (i = 0; i < 3; i++)scanf_s("%d%d%d", &a[i][0], &a[i][1], &a[i][2]);p = &a[0][0];move(p);printf("转置后:\n");for (i = 0; i < 3; i++)printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]);return 0;}void move(int * pointer){int i, j, t;for (i = 0; i < 3; i++)for (j = i; j < 3; j++){t = *(pointer + 3 * i + j);*(pointer + 3 * i + j) = *(pointer + 3 * j + i);*(pointer + 3 * j + i) = t;}}2、#include "stdio.h"int main(int argc, char* argv[]){int strcmp(char* p1, char* p2);char s[100], a[100];printf_s("输入一串字符1: ");gets_s(a);printf_s("输入一串字符2: ");gets_s(s);printf("%d\n", strcmp(a, s)); return 0;}int strcmp(char* p1, char* p2){int t;t = *p1 - *p2;for (;t == 0 && p1!="0"&&*p2!='0';){p1++;p2++;t = *p1 - *p2;}return t;}。
广州大学学生实验报告开课学院及实验室:机械与电气工程学院、计机楼601B年月日}2、用鼠标画一条线。
// DrawView.cpp : implementation of the CDrawView class//#include "stdafx.h"#include "Draw.h"#include "DrawDoc.h"#include "DrawView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif///////////////////////////////////////////////////////////////////////////// // CDrawViewIMPLEMENT_DYNCREATE(CDrawView, CView)BEGIN_MESSAGE_MAP(CDrawView, CView)//{{AFX_MSG_MAP(CDrawView)ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()ON_WM_MOUSEMOVE()//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)END_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////// // CDrawView construction/destructionCDrawView::CDrawView(){// TODO: add construction code herem_bDraw = FALSE;}CDrawView::~CDrawView(){}BOOL CDrawView::PreCreateWindow(CREATESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying// the CREATESTRUCT csreturn CView::PreCreateWindow(cs);}///////////////////////////////////////////////////////////////////////////// // CDrawView drawingvoid CDrawView::OnDraw(CDC* pDC){CDrawDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data here}///////////////////////////////////////////////////////////////////////////// // CDrawView printingBOOL CDrawView::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CDrawView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add extra initialization before printing}void CDrawView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add cleanup after printing}///////////////////////////////////////////////////////////////////////////// // CDrawView diagnostics#ifdef _DEBUGvoid CDrawView::AssertValid() const{CView::AssertValid();}void CDrawView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CDrawDoc* CDrawView::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDrawDoc)));return (CDrawDoc*)m_pDocument;}#endif //_DEBUG///////////////////////////////////////////////////////////////////////////// // CDrawView message handlersvoid CDrawView::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultm_ptOrigin = point;m_ptOld = point;m_bDraw = TRUE;CView::OnLButtonDown(nFlags, point);}void CDrawView::OnLButtonUp(UINT nFlags, CPoint point){/* // 首先获得窗口的设备描述表HDC hdc;hdc = ::GetDC(m_hWnd);//移动到线条的起点MoveToEx(hdc, m_ptOrigin.x, m_ptOrigin.y, NULL);//画线LineTo(hdc, point.x, point.y);//释放设备描述表::ReleaseDC(m_hWnd,hdc);*//* CDC* pDC = GetDC();pDC->MoveTo(m_ptOrigin);pDC->LineTo(point);ReleaseDC(pDC);*/// CClientDC dc(GetParent());CWindowDC dc(GetDesktopWindow());// CWindowDC dc(GetParent());dc.MoveTo(m_ptOrigin);dc.LineTo(point);/* CPen pen(PS_DOT,1,RGB(255,0,0));CClientDC dc(this);CPen* pOldPen = dc.SelectObject(&pen);dc.MoveTo(m_ptOrigin);dc.LineTo(point);dc.SelectObject(pOldPen);*//* //创建一个红色画刷CBrush brush(RGB(255,0,0));//创建并获得设备描述表CClientDC dc(this);//利用红色画刷填充鼠标拖曳过程中形成的矩形区域dc.FillRect(CRect(m_ptOrigin,point),&brush);*//* //创建位图对象CBitmap bitmap;//加载位图资源bitmap.LoadBitmap(IDB_BITMAP1);//创建位图画刷CBrush brush(&bitmap);//创建并获得设备描述表CClientDC dc(this);//利用红色画刷填充鼠标拖曳过程中形成的矩形区域dc.FillRect(CRect(m_ptOrigin,point),&brush);*///创建并获得设备描述表/* CClientDC dc(this);//创建一个空画刷CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//将空画刷选入设备描述表CBrush *pOldBrush = dc.SelectObject(pBrush);//绘制一个矩形dc.Rectangle(CRect(m_ptOrigin,point));//恢复先前的画刷dc.SelectObject(pOldBrush);*/m_bDraw = FALSE;CView::OnLButtonUp(nFlags, point);}void CDrawView::OnMouseMove(UINT nFlags, CPoint point) {/* CClientDC dc(this);dc.SetROP2(R2_MERGENOTPEN);//创建一个红色的、宽度为1的实线画笔CPen pen(PS_SOLID, 1, RGB(255,0,0));//把创建的画笔选入设备描述表CPen *pOldPen = dc.SelectObject(&pen);if(m_bDraw == TRUE){// dc.MoveTo(m_ptOrigin);// dc.LineTo(m_ptOld);dc.MoveTo(m_ptOrigin);dc.LineTo(point);dc.LineTo(m_ptOld);//修改线段的起点//m_ptOrigin = point;m_ptOld = point;}//恢复设备描述表dc.SelectObject(pOldPen);*/CView::OnMouseMove(nFlags, point);}目名称”栏以上部分统一。
实验4 C语言的输入输出函数实验目的:1、进一步熟悉C语言变量的定义及使用;2、掌握C语言的输入输出函数的使用,特别是scanf和print函数的使用3、进一步熟悉C语言的上机调试。
实验内容:1、输入程序,查看结果#include <stdio.h>void main(){int i, j;float k;scanf(“%3d%4d%f”,&i,&j,&k);printf(“%d,%d,%f”, j,j,k);}若输入:123 4567 8765.43 问i, j, k=?i=123 j=4567 k=8765.432、输入程序,查看结果#include "stdio.h"void main(){int a,b,c;scanf("a=%d,b=%d,c=%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);}若输入数据:12345678765.43,问i, j, k=?3、输入程序,查看结果#include "stdio.h"void main(){int a; char b; float c;scanf(“%d%c%f”,&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);}输入:1234y123.456,则a,b,c的值为?4、输入程序,查看结果#include "stdio.h"void main(){int a; float b, c;scanf(“%2d%3f%4f”,&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);}输入:12 345 6789 87654321 ,则a,b,c的值为?5、输入程序,查看结果#include "stdio.h"void main(){int a;float b,c;scanf(“%d%f%f”,&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);}输入:12□345□6789□87654321 ,则a,b,c的值为?//□为空格6、输入程序,查看结果#include "stdio.h"void main(){int i,j, p1;float k;p1 = scanf("%d,%4d%f",&i,&j,&k);printf("i=%d, j=%d, k=%f\n", i, j, k);printf("匹配数据个数=%d\n", p1);}7、输入程序,查看结果#include "stdio.h"void main(){printf(“|%-15s|%6.2f|\n”,”zhang”,178.34);printf(“|%-15s|%6.2f|\n”,”zhang”,176.96);printf(“|%15s|%6.2f|\n”,”zhang”,176.96); }8、输入程序,查看结果#include "stdio.h" void main(){int i=79;printf(“%d\n”,”i);printf(“%5d\n”,”i);printf(“%5o\n”,”i);printf(“%5x\n”,”i);printf(“%5ld\n”,”i);}9、输入程序,查看结果#include "stdio.h"void main(){float x=123.12345678901234567890;double y=x,z=-555.1234567890123456789; m=1.23;printf(“%f\n”,”x);printf(“%.4f\n”,”x);printf("%14.3f\n",x);printf("%ld\n",x);printf(“%10.3e\n”,”y);printf(“%2.5f\n”,”y);printf(“%e\n”,”z);printf(“%08.3f”,m);}10、 输入如下程序设某设备的单价为5800.12元,用如下程序求解n 台设备的总价。
实验十常用控件(1)实验目的和要求(1)创建一个默认的对话框应用程序Ex_Ctrls,如图2.1所示。
(2)设计一个如图2.2所示的“课程信息”对话框。
图2.1 Ex_Ctrls对话框图2.2 “课程信息”对话框(3)实现功能:单击图2.1中的“课程信息”按钮,弹出“学生基本信息”对话框,单击“添加”按钮,对话框内容显示在图2.1中的列表框中。
实验准备和说明(1)具备知识:静态控件、按钮、编辑框、旋转按钮控件、列表框和组合框控件。
(2)创建本次实验工作文件夹“…\Visual C++程序\实验\实验2”。
实验内容和步骤1.启动Visual C++ 6.0打开计算机,启动Visual C++ 6.0系统。
2.创建一个默认的对话框应用程序Ex_Ctrls①选择“文件”→“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFC AppWizard (exe),在工程框中输入Ex_Ctrls,并将工程文件夹定位到“…\Visual C++程序\实验\实验2”。
②单击“确定”按钮,在出现的Step 1对话框中选择“基本对话(框)”应用程序类型,单击“完成”按钮。
③在对话框编辑器中,单击对话框工具栏上的切换网格按钮,显示对话框网格,将对话框标题改为“使用控件”。
④调整对话框的大小,删除对话框中间的“TODO: 在这里设置对话控制。
”静态文本控件和“确定”按钮控件,将“取消”按钮标题改为“退出”,并移至对话框的下方。
⑤向对话框中添加组框(Group)控件,标题设为“添加”,然后调整其大小和位置。
⑥添加一个按钮,标题设为“课程信息”,ID设为IDC_BUTTON_COURSE。
⑦添加一个列表框,取其默认ID号,去掉Sort风格属性。
3.添加并设计“课程信息”对话框①按Ctrl+R快捷键,弹出“插入资源”对话框,在资源类型列表中选择Dialog,单击“新建”按钮。
②将该对话框资源的ID设为IDD_COURSE,标题设为“课程信息”,字体设为“宋体,9号”。
C语言实验报告课程名称:高级语言程序设计系(院):信息工程学院专业:电子信息工程班级:学生姓名学号:指导教师:开课时间:学年第学期关于实验报告的说明(一)对教师和学生的基本要求1、加实验的学生需提交实验报告, 一次实验写一个实验报告。
实验报告要求字迹工整,文字简练,数据齐全,图表规范,计算正确,分析充分、具体、定量。
2、教师应根据学生在实验中和在实验报告书写中反映出来的认真程度、实验效果、理解深度、独立工作能力、科学态度等给予出恰当的评语,并指出实验报告中的不妥之处,然后依照评分细则,采用100分制评出成绩并签名和评定日期。
如学生抄袭或缺交实验报告达该课程全学期实验报告总次数三分之一以上,不得同意其参加本课程的考核。
3、学期结束后任课教师要及时收交学生实验报告,并按要求给出学生实验报告成绩册和学生实验报告上交到系办公室。
(二)内容填写要求1、实验项目名称:要用最简练的语言反映实验的内容。
2、实验目的和要求:目的和要求要明确,在理论上验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法。
3、实验内容及步骤:这是实验报告极其重要的内容。
要抓住重点,可以从理论和实践两个方面考虑。
只写主要操作步骤,不要照抄实习指导,要简明扼要。
还应该画出实验流程图,再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。
4、实验结果:根据实验目的将原始资料系统化、条理化,用准确的专业术语客观地描述实验现象和结果,要有时间顺序以及各项指标在时间上的关系。
5、实验总结:根据相关的理论知识对所得到的实验结果进行解释和分析和总结。
也可以写一些本次实验的心得以及提出一些问题或建议。
实验报告1和自身整除的自然数称为素数。
}return coss;}int main(){double e,x,coss;printf("enter e,x:");scanf("%lf%lf",&e,&x);coss=funcos(e,x);printf("%.7lf\n",coss);return 0;}程序2:#include<stdio.h>int prime(int m){int i;for(i=2;i<=m/2;i++){if(m%i==0)break;if(i>=m/2)return 0;elsereturn 1;}}main(){int sum=0,m;for(m=1450;m<=1550;m++){if(prime(m)==1)sum=m+sum;}printf("sum=%d\n",sum);return 0;}程序3:#include<stdio.h>int fun(int n){if(n/100%10%6==0 && n/1000%6==0 && n%100%6==0) return 1;elsereturn 0;}int main(){int count=0,n;for(n=10000;n<40000;n++){if(fun(n)==1)count=count+1;}printf("count=%d\n",count);return 0;}程序4:#include<stdio.h>int fact(int n){int p=1,i;for(i=1;i<=n;i++)p=p*i;return p;}int main(){int m,n,t;printf("enter n,m");scanf("%d%d",&n,&m);t=fact(n)+fact(m)*fact(n-m);printf("n!+m!*(n-m)!=%d\n",t);return 0;}程序5:#include<stdio.h>#include<math.h>int is(int number){int t,sum=0,m;m=number;while(number!=0){t=number%10;sum=sum+pow(t,3);number=number/10;}if(sum==m)return 1;elsereturn 0;}int main(){int m,n,i;printf("enter m,n:");scanf("%d%d",&m,&n);for(i=m;i<=n;i++){ if(is(i)==1)printf("%d\n",i);}return 0;}程序6:#include<stdio.h>#include<math.h>int reverse( int number) {int t,s=0;while(number!=0){t=number%10;s=s*10+t;number=number/10;}return s;}int main(){int mn,number;printf("enter number:");scanf("%d",&number);mn=reverse(number);printf("%d\n",mn);return 0;}程序7:#include<stdio.h>int fact(int n){if(n==1 || n==0)return 1;elsereturn fact(n-1)*n;}main(){int n,m;printf("enter n,m:");scanf("%d%d",&n,&m);printf("%d\n",fact(n)+fact(m)*fact(n-m));return 0;}程序8:#include<stdio.h>int f(int n){if(n==0)return 0;if(n==1)return 1;elsereturn f(n-2)+f(n-1);}int main(){int n;printf("enter n:");scanf("%d",&n);printf("%d\n",f(n));return 0;}程序9:#include<stdio.h>void dectobin (int n) {if(n>1)dectobin(n/2);printf("%d",n%2);return ;}main(){int n;printf("enter n:");scanf("%d",&n);dectobin(n);}#include<stdio.h>void dectobin (int n) {if(n>0)dectobin(n/2);elsereturn;printf("%d",n%2); }main(){int n;printf("enter n:");scanf("%d",&n);dectobin(n);}选作一:42401.cppint fun(int t){int i;for(i=2;i<=t/2;i++)if(t%i==0)break;if(i>t/2)return 1 ;}#include<stdio.h>#include "G:\CYY\42401.cpp"int main(){int t,count=0,i,n;printf("enter n:");scanf("%d",&n);printf("输入一个数t:");scanf("%d",&t);for(i=1;i<n;i++){printf("输入一个数t:");scanf("%d",&t);if(fun(t)==1)count++;}printf("%d\n",count);}#include<stdio.h>#include<math.h>int fun(int t){《》学习目标:1、掌握本章的实词、虚词及特殊句式体会庄子散文想像奇特的特点。
2、掌握阅读、赏析古文的方法,提高阅读水平,正确对待人与人之间的关系。
课时安排:一课时一、导入:每个人都是社会的一员,也是人类大家庭的成员,人与人之间应当是平等相待,和睦相处的,而不应当成为利用与被利用的关系,更不应当用自己的私利标准去要求别人,要懂得尊重他人。
二、整体感知:(一)朗读《让王》要求,读要正确,读出文章的意义,读出重点内容。
题解:“让王”,意思是禅让王位。
篇文的主旨在于阐述重生,提倡不因外物妨碍生命的思想。
利禄不可取,王位可以让,全在于看重生命,保全生命。
“轻物重生”的观点历来多有指斥,认为与庄子思想不合,但其间亦有相通之处;且先秦诸子思想也常互相渗透与影响,尽可看作庄子后学所撰。
(二)梳理内容【原文】尧以天下让许由,许由不受。
又让于子州支父,子州支父曰:“以我为天子,犹之可也。
虽然,我适有幽忧之病,方且治之,未暇治天下也。
”夫天下至重也,而不以害其生,又况他物乎!唯无以天下为者,可以托天下也。
舜让天下于子州支伯。
子州支伯曰:“予适有幽忧之病,方且治之,未暇治天下也。
”故天下大器也,而不以易生,此有道者之所以异乎俗者也。
舜以天下让善卷,善卷曰:“余立于宇宙之中,冬日衣皮毛,夏日衣葛。