《C语言》课内实验报告(实验七)
- 格式:doc
- 大小:97.00 KB
- 文档页数:6
宁夏师范学院数学与计算机科学学院《高级语言程序设计》实验报告实验序号:7实验项目名称:数组的学习学号姓名专业、班级12级数应(2)班实验地点指导教师郑利珍时间一、实验目的及要求1、掌握数组的定义的正确方法。
2、了解数组元素的存储规律。
二、实验设备(环境)及要求硬件:PC(PII以上,128M以上内存);软件:Windows XP操作系统、Visual C++ 6.0。
三、实验内容、步骤及结果1、fibonacci数列的前两个数为1,1,以后每一个数都是其前两个数之和。
求fibonacci数列中的前20个数。
用数组存放并按一行10个数的格式输出。
2、将一个数列头尾颠倒。
设该数列为1,3,5,7,9,11,13,15,17,19。
要求编写一函数,对包含任意个数的数列实现颠倒处理。
数列由main函数输入,输出数列亦在main函数中进行。
3、将10个实数存储在一个数组中,设计一个程序输出这个数组的最大值和最小值。
4、设计选择排序的C语言程序。
5、编写一个函数,使给定的一个二维数组(3×3)转置,即行、列互换。
6、输入一个n×n矩阵中各元素的值,求出两条对角线上的元素值之和。
7、有n个学生,每人考m门课。
(1)找出成绩最高的学生的学号和课程号。
(2)找出有不及格课程的学生的学号及其各门课的全部成绩。
(3)求全部学生全部课程总平均分。
8、有17个人围成一圈(编号为1~17),从第1号开始进行1、2、3报数,凡报3者就退出,下一个人又从1开始报数……直到最后只剩下一个人时为止。
请问此人原来的位置是多少号?四、分析与讨论1、总结C语言中数组的用途。
2、总结C语言中数组定义的正确方法。
五、教师评语1.按时完成实验;2.实验内容和实验过程记录完整;3.回答问题完整、正确;4.有关于实验的心得;5.实验报告的撰写认真、报告格式符合要求。
签名:郑利珍日期:2013年月日成绩100。
实验七数组1.实验目的(1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2)熟练掌握字符数组和字符串函数的使用;(3)掌握与数组有关的常用算法如查找、排序等..2.实验指导(1)对任意一个一维型数组;从中找出数组元素的最大值和最小值并输出..要求:①数组有十个元素;②使用scanf函数实现数组元素的输入前给出必要的提示;③输出时;首先输出数组的十个元素;然后输出其最大值和最小值..分析指导:①算法分析:首先定义一个数组;通过循环从键盘输入十个数组元素的值;再通过另一个循环判断数组元素的最大只和最小值;②根据分析情况编写程序:include<stdio.h>mainint a10;i;max;min;printf"please input ten integers:";fori=0;i<=9;i++{scanf"%d";&ai;}max=a0;min=a0;fori=1;i<=9;i++{ifai>maxmax=ai;ifai<minmin=ai;}fori=0;i<=9;i++{printf"a%d=%d\n";i;ai;}printf"The maximum value is %d;and the minimum value is %d\n";max;min;运行程序;输入十个整数;如:21 37 6 17 9 12 89 76 35 59运行结果如下:(2)编写函数cmpStrchar s1;char s2比较两个字符串s1和 s2的大小..如果s1>s2;返回一个正数;s1=s2;返回0;s1<s2;返回一个负数;在主函数中调用该函数完成字符串的比较操作;并输出返回的值..要求:①不允许使用strcmp函数;②用gets函数在主函数中输入两个字符串;③实现触摸屏受托人函数;返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值..分析指导:①算法分析:两个字符串从第一个字符开始一一对应进行比较;直到不相等的那个字符;从而求得它们的ASCII码的差值..比如;‘A’与‘C’相比;由于‘A’<‘C’;应输出负数;由于‘A’与‘C’的ASCII码的差值为2;因此;应输出“-2”..同理;“And”和“Aid”比较;根据第二个字符比较结果;‘n’比‘I’大5;因此应输出‘5’;②根据分析情况编写程序:include<stdio.h>int cmpstrchar s1;char s2{int i;diff;i=0;whiles1i==s2i&&s1i='\0'i++;ifs1i=='\0'&&s2i=='\0'diff=0;elsediff=s1i-s2i;return diff;}void main{int z;char s1100;s2100;printf"input the first string:";//输入字符串1gets s1;printf"input the second string:";//输入字符串2getss2;z=cmpstrs1;s2;//输出比较结果printf"the difference between two strings is %d\n";z;}查看运行结果如下:重新输入两个字符串meet;mood运行结果如下:(3)再给定的字符串中查找指定的字符..要求:①字符串采用直接初始化的方式处理;②通过scanf函数读入一个任意字符;③在字符串中查找该字符;如果存在该字符;输出该字符在字符串中的一次出现的位置;如果再给定的字符串中不存在该字符;则给出相应的说明信息..include<stdio.h>void main{int i;char ch;char s=" program";printf" 输入一个英文字母: ";scanf"%c";&ch;for i=0;si='\0';i++{if si==chbreak;}if i<7printf"s%d=%c\n";i;ch;elseprintf"No founded\n";}输入一个英文字母O运行程序如下:再次输入一个英文字母w运行程序如下:(4)首先输入一个大于二且小于十的整数n;然后定义一个二维整型数组nn;初始化该数组;讲述组中最大元素所在的行和最小元素所在的行对调..要求:①nn数组元素的值由scanf函数从键盘输入假定最大值最小值不在同一行上;然后输出该数组;②查找最大值最小值所在的行;将数组中最大元素所在的行和最小元素所在的行对调;并输出对调后的数组;③为直观起见;数组按n行n列的方式输出;④修改程序;对最大值与最小值可能出现在一行种的情况进行处理.. include<stdio.h>main{long matrix99;min;max;temp;int i;j;n;nMax=0;nMin=0;printf"\nplease inpute n of matrix:\n";scanf"%d";&n;printf"\nplease inpute elements of matrix%d%d:\n";n;n; fori=0;i<n;i++forj=0;j<n;j++scanf"%ld";&matrixij;min=max=matrix00;fori=0;i<n;i++forj=0;j<n;j++{ifmatrixij>max{max=matrixij;nMax=i;}else ifmatrixij<min{min=matrixij;nMin=j;}}forj=0;j<n;j++{temp=matrixnMaxj;matrixnMaxj=matrixnMinj;matrixnMinj=temp;}printf"\nResult matrix:\n";fori=0;i<n;i++{forj=0;j<n;j++printf"%5ld";matrixij;printf"\n";}}输入一个数4;输入一个44的数组1 3 6 72 4 5 81 3 5 72 6 9 7运行程序如下:再次输入一个数字3;输入一个33的数组1 2 32 4 537 8运行程序如下:3 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。
《程序设计基础》(c语言)实践报告专业: 计算机科学与技术班级: 信息大类1303姓名: 蒋国辉学号: 1130299090教师:《程序设计基础》(c语言)课程组教师寄语课程简介《程序设计基础》是计算机相关专业的专业基础课,其目的是为了培养学生程序设计的技能,使学生掌握程序设计的基本思想和方法,培养学生用计算机解决实际问题的能力。
该课程是后续理论和实践教学的基础和重要工具,将直接影响到专业兴趣的培养,后续专业课程教学内容的实施。
课程内容本课程教学的主要内容包括:1、程序与程序设计的基本概念;算法与算法的表示;结构化程序设计方法等。
2、C语言的基本组成,C程序的基本结构;C程序的上机过程;C语言的数据类型和各类运算规则。
3、顺序程序设计;选择结构程序设计;循环控制;函数;指针;结构体和文件等。
4、C程序的模块化结构;函数的定义与调用,包括函数的递归调用;变量存储属性;工程文件的建立和使用;编译预处理;库函数简介;文件的概念;文件的建立、打开与关闭;各种文件的读写方法。
补充说明1、本课程作为一种与计算机“沟通”的语言工具,在某种程度上讲,和普通话、英语有一些类似。
对初学者而言,最好的学习方式就是在基本的语法规则框架下,不断的模仿和重复训练,最畏惧和担心的就是灵活与多变。
只有不畏惧,才能敢模仿,敢写、敢调试。
才能避免掉入语法漩涡止步不前。
2、课程共设8个单元,对于每个单元的实践内容,按照基础训练和差异化训练相结合的思想,设置了多道编程题目,同学们在每个单元可以根据实际情况,可选做3道,鼓励在有精力的情况下尽可能多练习。
3、课程的源码可以手写也可以打印出来粘贴,对程序运行结果打印粘贴。
4、单元内容即是平时基本功的训练,也可当做理论考试的复习。
实验1 顺序结构程序设计一、实验目的1. 熟悉C语言的编程环境,掌握C程序运行的一般步骤;2. 掌握C语言中数据的输入输出方法,常用输入/输出函数的使用;3. 掌握顺序结构程序设计方法,能编写简单的C程序;二、实验内容1、编写程序,输入一个四位数,打印输出其个位数、十位数、百位数和千位数。
中南民族大学管理学院学生实验报告课程名称:C程序语言设计姓名:郭晋学号:10056006年级:2010专业:信息管理与信息系统指导教师:李超锋实验地点:管理学院综合实验室2010 学年至20 11 学年度第2 学期目录实验一熟悉C语言的开发环境和C程序的上机步骤实验二基本数据类型及数据的输入输出实验三运算符及表达式实验四顺序结构程序设计实验五选择结构程序设计实验六循环结构程序设计实验七数组及其应用实验八函数及其应用实验九指针及其应用实验(一)熟悉C语言的开发环境和C程序的上机步骤实验时间:2011.3.29同组人员:郭晋,金亚男实验目的:1,了解T urb C3.0编译系统,熟悉各菜单的功能,掌握在该系统上编辑,编译,连接,运行一个C程序的方法。
2,通过调试,运行简单的C程序,初步了解C语言程序的特点。
实验内容:1.编写一个C程序,求一个圆的面积。
我们的程序设计#include<stdio.h>void main(){float r,s;scanf("%f",&r);s=3.14*r*r;printf("s=%f",s);}2.编写程序求任意三个书的最大值。
我们的程序设计#include<stdio.h>void main(){int a,b,c,max;scanf("%d,%d,%d" ,&a,&b,&c);if(a>b&&a>c)max=a;if(b>a&&b>c)max=b;if(c>a&&c>b)max=c;printf("max=%d\n",max);}实验步骤:1.首先,我们两人先根据题目中的编程要求确定实验步骤,分别写下相应的编程语言进行比较,未出现明显的分歧。
2.打开Turb C 程序,然后将刚刚确定的C语言程序输入,打开Proiles,进行系统纠错,看是否出现错误或者警告,进行相应的调试。
(此文档为word格式,下载后您可任意编辑修改!)《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++6.0一、实验目的:1.了解在Visual C++6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。
二、预习内容:教材《C语言程序设计教程》第1章。
三、实验内容:1.在Visual C++6.0环境下输入并运行下面的程序:#include<stdio.(){printf("This is a C program.\n");return0;}2.在Visual C++6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。
#include<stdio.(){int a,b,suma=3;b=4;sun=a+b;print("%d+%d=%d\n",a,b,sum);return0;}四、实验结果:1.运行结果(或截图):2.(1)改正后的源程序:(2)运行结果(或截图):五、思考题:1.一个C程序上机的步骤有哪些?答:2.组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3.掌握基本算术运算符及其表达式的使用方法;4.掌握++、--运算符、赋值运算符及其表达式的使用方法。
二、预习内容:教材《C语言程序设计教程》第2章。
三、实验内容:1.在Visual C++6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误。
#include<stdio.(){int2cd=3;floatπ=3.14;char for=′A′;printf("%d,%f,%c\n",2cd,π,for);return0;}2.在Visual C++6.0环境下输入并运行下面的程序,观察分析运行结果。
C语言实验报告实验一:c语言环境的开发与使用1.实验目的:上机编写简单的c语言程序,逐步了解c语言运行的程序步骤2.实验内容:在turboc3.0的环境下调试简单的c语言3.实验清单:输入一行字符(如“hello!”)Ex513_11.c#include<stdio.h>Int main(){printf(“hello!\n”);return 0;}从键盘输入两个整数,将其平方和输出(用函数关系求平方和)Ex513_12.c#include<stdio.h>#include<math.h>int main(){int a,b,c;printf(“\n input a=”);scanf(“%d”,&a);printf(“\n input b=”);scanf(“%d”,&b);c=sqre(a,b);printf(“sqre=%d”,c);return 0;}int sqre(x,y)int x,y;{return x*x+y*y;}从键盘输入三个整数,将其最大值输出。
(用函数求最大值)Ex513_13.c#include<stdio.h>int main(){int a,b,c,d;printf(“\n input a=”);scanf(“%d”,&b);printf(“\n input c=”);scanf(“%d”,&c);d=max(a,b,c);printf(“max=%d”,d);return 0;}int max(x,y,z);int x,y,z,t;{if(x>y) t=x;else t=y;if(z>t) t=z;return t;}输入三角形三边的长度,将其面积输出(用函数求面积) Ex513_14.c#include<stdio.h>#include<math.h>Int main(){double a,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%f\tb=%f\t%f\n”,a,b,c);printf(“area=%f\n”,area)return 0;}4运行结果及分析程序:Ex513_11.c结果:输出hello!分析:掌握输出一行字符的写法程序:Ex513_12.c结果:输入1,2输出5分析:编写正确,但不够简洁程序:Ex513_13.c结果:输入-3,1,2输出2分析:程序运用了函数程序:Ex513_14.c结果:输入3,4,5输出6分析:编写不够简洁实验二:顺序结构设计1.实验目的:了解什么是常量和变量及种类掌握整型,实型,字符型变量的定义和使用及输出规律掌握七个运算符的运算法则及其混合运算规律2.实验内容:假如我国国民生产总值的年增长率为百分之九,计算十年后我国国民生产总值与现在相比增长多少?Ex513_21.c#include<stdio.h>#include<math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}用编好的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’Ex513_22.c#include<stdio.h>int main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf("%f%e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);return 0;}设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。
二、预习内容:教材《C语言程序设计教程》第1章。
三、实验内容:1. 在Visual C++ 6.0环境下输入并运行下面的程序:#include <stdio.h>int main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。
#include <stdio.h>int main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运行结果(或截图):2. (1) 改正后的源程序:(2) 运行结果(或截图):五、思考题:1. 一个C程序上机的步骤有哪些?答:2. 组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3. 掌握基本算术运算符及其表达式的使用方法;4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。
二、预习内容:教材《C语言程序设计教程》第2章。
三、实验内容:1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。
《C语言程序设计》实验指导学院:信息科学与技术学院专业:计算机通信学期:2011~2012学年教师:目录实验1 熟悉C语言程序开发环境............................... 错误!未定义书签。
1.1 实验目的 ......................................................................................... 错误!未定义书签。
1.2 实验预习 ......................................................................................... 错误!未定义书签。
1.3 实验任务 ......................................................................................... 错误!未定义书签。
1.4 实验报告 ......................................................................................... 错误!未定义书签。
实验2 数据描述............................................. 错误!未定义书签。
2.1 实验目的 ......................................................................................... 错误!未定义书签。
2.2 实验预习 ......................................................................................... 错误!未定义书签。
C语言实验报告参考答案长沙理工大学2010C语言实验报告参考答案实验一熟悉C语言程序开发环境及数据描述四、程序清单1.编写程序实现在屏幕上显示以下结果:The dress is longThe shoes are bigThe trousers are black答案:#includemain(){printf("The dress is long\n");printf("The shoes are big\n");printf("The trousers are black\n");}2.改错题(将正确程序写在指定位置)正确的程序为:#includemain(){printf("商品名称价格\n");printf("TCL电视机¥7600\n");printf("美的空调¥2000\n");printf("SunRose键盘¥50.5\n");2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。
答案:#includemain(){int a,b,c,x,y;a=150;b=20;c=45;x=a/b;y=a/c;printf("a/b的商=%d\n",x);printf("a/c的商=%d\n",y);x=a%b;y=a%c;printf("a/b的余数=%d\n",x);printf("a/c的余数=%d\n",y);}4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b 赋给c;当a<=b时,将a 赋给c。
(提示:用条件运算符) 答案:#includeint a,b,c;a=0;b=-10;c= (a>b) ? b:a;printf("c = %d\n",c);}五、调试和测试结果1.编译、连接无错,运行后屏幕上显示以下结果:The dress is longThe shoes are bigThe trousers are black3、编译、连接无错,运行后屏幕上显示以下结果:a/b的商=7a/c的商=3a/b的余数=10a/c的余数=154. 编译、连接无错,运行后屏幕上显示以下结果:c =-10实验二顺序结构程序设计四、程序清单1.键盘输入与屏幕输出练习问题1 D 。
c语言实验报告结果
《C语言实验报告结果》
在本次实验中,我们采用了C语言编程进行了一系列实验,以验证程序的正确
性和性能。
经过一段时间的实验和分析,我们得出了以下结论:
首先,我们对C语言的基本语法和数据类型进行了深入的了解和掌握。
通过编
写简单的程序,我们成功地掌握了C语言的基本语法规则,包括变量的声明和
赋值、算术运算、逻辑运算、条件语句和循环语句等。
这为我们后续的实验奠
定了坚实的基础。
其次,我们进行了一系列的实验,验证了C语言程序在不同条件下的运行结果。
我们通过编写不同类型的程序,包括数值计算、字符串处理、数组操作等,验
证了程序的正确性和性能。
实验结果表明,C语言程序在不同条件下都能够稳
定运行,并且具有较高的执行效率。
最后,我们对C语言的调试和优化进行了一定的探索和实践。
通过使用调试工
具和优化技术,我们成功地发现并解决了一些程序中的bug,并对程序的性能
进行了一定的提升。
这为我们进一步深入学习和应用C语言打下了坚实的基础。
综上所述,本次实验结果表明,C语言作为一种高效、灵活的编程语言,在实
际应用中具有较高的可靠性和性能。
通过本次实验,我们不仅深入了解了C语
言的基本语法和数据类型,还掌握了C语言程序的调试和优化技巧,为我们今
后的学习和工作打下了坚实的基础。
希望通过我们的努力,能够更好地应用C
语言,为实际工程和科研工作做出更大的贡献。
c语言上机实验心得在科技高度发展的今天,计算机在人们之中的作用越来越突出。
而c语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好c语言,这对我们以后的发展是十分重要的。
说到这,上机实验当然就是一个必不可少的环节了,c语言灵活、简洁的特点,只有通过编程实践才能真正了解,真正说懂。
为了更好地学习语法规定、掌握程序设计方法、提高程序开发能力,我们必须实际上机、编写程序。
通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了c语言那就大错特错了。
我主要存在以下的这些缺点:1、学习耐心与细心不足,如scanf(“%d”,&n);中的“&”有时候会忘了。
而在最后输出时又错写成printf(“%d”,&n);从而错误得输出了地址而不是我原来想要的答案。
2、编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解题了。
3、4、基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。
知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够深刻。
5、6、有时候不够精简,有一点用处不大或者说没有也可以的文字存在。
英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在一点问题。
为了能更好地学好c语言,在今后学习中我要更多的动脑,综合运用所学,多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。
实验中我深刻意识到完成程序的编写,决不意味着万事大吉。
认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。
有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。
因为开发环境所提供的编译系统无法发现程序逻辑错误,或者是你原来所设计时的理论错误,这就只能靠自己的上机经验来分析判断错误的所在了。
头歌云课(C语言)动动你可爱的小手为小编点点关注吧实验七:C语言-数组1选择法排序2二分段交换3计数器4复制字符数组5进制转换6回文判断第1关: 选择法排序本关任务:使用选择法排序编写一个能为数组进行升序排序的程序。
相关知识选择法排序选择法排序,是从n个数中先找出最大或者最小的数放到数组的最前面或最后面,再在剩余的n-1个数中找出最大或者最小的数放到数组的次前面或倒数第2单元,以此类推,直至排序完毕。
下图显示了从n个数中寻找最大值进行升序的排序过程:进行升序排序时,也可以寻找最小值并将其与最前面的数进行交换。
遍历数组通俗的理解,遍历数组就是:把数组中的元素都看一遍。
示例如下:int arr[5] = {1,3,5,7,9};int length = 5;for(int i = 0 ; i<length ; i++){printf(" %d ",arr[i]);}输出:1 3 5 7 9如何交换数组的值交换数组中的两个值,需要借助中间变量。
(优化:请自行思考,如何不使用中间变量交换两个变量的值)示例如下,交换数组的第二个和第三个值:int arr[5] = {1,3,5,7,9};int temp;temp = arr[1];arr[1] = arr[2];arr[2] = temp;数组长度题目要求数组长度不大于n时,可以使用固定数组,示例如下:#define SIZE 100...int arr[SIZE];...但往往会造成空间浪费,为了节省空间我们可以使用malloc创建动态数组,感兴趣的同学可以去了解一下,此处使用固定数组即可。
编程要求根据提示,在右侧编辑器补充void inArray(int arr[],int n)、void selectSort(int arr[],int n)和void outArray(int arr[],int n)的函数定义,这三个函数的输入均是一个长度不大于100的无序数组arr,以及数组的长度n,请在函数selectSort中使用选择法对数组元素进行升序排序,函数inArray用于输入数组的n个元素,函数outArray用于输出数组的n个元素。
实验七数表的程序化处理(C语言版)一、实验目的(1) 掌握工程数据的线性插值和抛物线插值方法(2) 了解工程数据的计算机处理过程和方法(3) 掌握使用C语言实现线性插值和抛物线插值运算的方法二、基本知识在机械设计过程中,设计人员经常需要从各种国家标准、工程规范、设计手册等资料中查取有关设计数据。
采用计算机辅助设计时,这些设计资料必须以程序可调用或计算机可进行检索查询的形式提供。
因此,需要经过适当的加工处理。
:对设计资料处理的方法有两种:(1)将设计资料转变为程序,即程序化;(2)利用数据库管理设计资料。
采用编程方法对数表及图线进行处理,通常有两种方法:(1)采用数组变量预先将数表及图线存储在程序中,用查表、插值的方法检索所需数据;(2)将数表及图线拟合成公式写入程序,由程序计算获得所需数据。
对于采用数组处理数表的方法:1. 数组类型的选择一般自变量有几个就采用几维的数组来存储要查询的结果值。
2. 一元函数插值(1) 线性插值(1)选取两个相邻自变量xi与 xi+1,满足条件xi<x<xi+1;(2)过(xi,yi)及(xi+1,yi+1)两点连直线g(x)代替原来的函数f(x),则线性插值示意图线性插值程序流程图(2) 抛物线插值在 f(x)上取三点,过三点作抛物线 g(x),以 g(x)替代 f(x),显然可以获得比线性插值精度好的结果。
假设已知插入值 x,则选取三点的方法:(1)选取两点xi-1、xi,有 xi-1 <x≤xi(2)若 |x-xi-1|≤ |x-xi|,即 x靠近 xi-1点,则选 xi-2,xi-1,xi三个点(3)若 |x-xi-1|> |x-xi|,即 x靠近 xi点,则选 xi-1,xi,xi+1三个点(4)若x1≤ x≤ x2,即 x 靠近表头,则选 x1,x2,x3三个点(5)若 xn-1≤x≤xn,即 x 靠近表尾,则选 xn-2,xn-1,xn三个点抛物线插值示意图抛物线插值程序流程图三、实验要求分别采用线性插值和抛物线插值方法,将下列数表程序化,能根据角度查询出包角的影响系数。
C语言程序设计实验报告1实验目的第一个实验:○1熟练掌握scanf()/printf()库函数的调用格式,正确使用各种格式转换控制符,掌握各种类型数据的输入输出方法;○2掌握getchaer()/putchar()库函数的调用格式,以及实用它们进行字符类型数据输入输出的方法。
第二个实验:○1熟练掌握顺序结构程序设计;○2学会正确使用逻辑运算符及逻辑表达式;○3熟练掌握if、if…else、if…else if语句,掌握if语句中的嵌套关系和匹配原则,利用if语句实现分支选择结构;○4熟练掌握switch语句格式及使用方法,利用switch语句实现分支选择结构○5掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧,进一步学习调试程序,掌握检查语法错误和逻辑错误的的方法。
第三个实验:○1熟练掌握while语句、do-while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用三种循环语句实现循环结构;○2掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧;○3进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
2 实验内容第一个实验:从键盘上输入三个小写字母,输出其对应的大写字母(例如:输入:a ,b ,c ,则输出分别为A ,B ,C )。
要求:○1通过一条scanf 库函数语句输入三个小写字母,通过printf 函数以空格键分隔字符输出;○2通过getchar 函数输入三个小写字母,通过printf 函数以域宽为3的规定格式输出;○3通过getchar 函数输入三个小写字母,通过putcha 函数输出。
第二个实验:编写计算函数Y 值的程序。
Y=⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧≤≤≤<-+--++x x x x x x x 4422)1()2()2(1)1(322要求:○1利用if-else if 语句实现; ○2变量x ,y 均为单精度类型; ○3通过scanf 函数输入变量x 的值; ○4输出的结果采用的格式是:x=取值,y=计算结果值; ○5运行程序,并针对x 的不同取值范围分别输入x 的值,以检验输出的y 值是否正确。
实验报告课程名称C语言程序设计教程实验项目名称实验七数组班级与班级代码信息管理与信息系统1班112511011 实验室名称(或课室) SS-304专业信息管理与信息系统任课教师张军学号:11251101113姓名:冯启珊实验日期:2011 年12 月16 日广东商学院教务处制姓名冯启珊实验报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,实验报告交院(系)办公室保存。
正文实验报告要求与排版字号:1.实验报告按实验项目填写,每个学生做完实验必须填写2.实验报告可参照如下内容格式写作:实验目的、实验原理、实验设备、结果预测、实验步骤、实验结果、实验分析、结论。
3.实验报告排版打印统一用A4(21 X 29.7cm)格式。
4.标题用小二号黑体加粗,正文用四号宋体。
行距为固定值20磅。
5.页面上边距2.54cm,下边距2.54 cm,左边距3cm,右边距2.2mm;6.实验报告页码从正文页面起计算。
页码字号,选用小四号粗黑体并居中。
一、实验目的通过做关于数组的十一个实验,实现:1、熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。
2、熟练掌握字符数组和字符串函数的应用。
3、熟练掌握一维数组以及一维数组元素的存储关系。
4、熟练掌握一维数组和二维数组的使用以及在函数中的传递。
5、通过做试验实践掌握和数组有关的算法。
二、实验原理数组是指具有形同类型的数据组成的序列,为有序集合。
通过一维数组、二维数组、字符数组和字符串函数的应用,结合前面所学的循环语句等,可将以前复杂的程序简单化,简单而方便地设计程序完成相应的功能。
三、实验设备C++软件四、实验步骤第一题:输入并运行程序main(){int i,a[5],b[5],c[5]; /*变量说明,数组说明*/a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9;b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3;for (i=0;i<=4;i++){c[i]=a[i]*b[i];printf("c[%d]=%d\n",i,c[i]);}}运行结果为:c[0]=4C[1]=42C[2]=36C[3]=40C[4]=27第二题:输入并运行程序main(){int sum,i;int a[]={5,8,4,6,4,3,8,2,4,5,6}; /*数组元素初始化*/sum=0;for(i=0;i<=10;i++)sum+=a[i]; /*求数组元素之和*/printf("sum=%d\n",sum);}Sum=55第三题:程序实现:从键盘输入5个数,输出最大、最小元素的值以及它们的下标。
实验七 函数及程序结构(二)一、实验目的1.掌握函数的嵌套调用和递归调用2.掌握数组做函数参数的用法3.掌握全局变量和局部变量的用法。
?4.掌握变量的存储类别。
?二、实验内容1.[目的]掌握函数的嵌套调用方法。
[题目内容] 编写程序计算cb a 。
要求设计主函数main()读取a 、b 、c 的值,并调用ratio 函数计算a/(b-c)的值。
如果(b-c)=0那么ratio 就不能计算,因此,ratio 函数调用另一个函数dif ,以测试(b-c)的差是否为零,如果b 不等于c ,dif 返回1,否则返回0。
[输入] a 、b 、c 的值[输出] 计算结果[提示] main 函数调用ratio 函数,ratio 函数调用dif 函数。
三个函数平行定义,嵌套调用。
#include <stdio.h>void main(){float ratio(int x,int y ,int z);int dif(int x,int y);int a,b,c;float d;printf("请输入a,b,c:");scanf("%d%d%d",&a,&b,&c);d=ratio(a,b,c);if(d==0.0) printf("b-c 为零。
");else printf("%d/(%d-%d)=%f\n",a,b,c,d);}float ratio(int x,int y ,int z){if(dif(y ,z)==1) return (float)x/(float)(y-z);else return 0.0;}int dif(int x,int y){if(x==y) return 0;else return 1;}2.[目的]利用标准库提供的随机数功能。
[题目内容]编写程序,帮助小学生练习乘法计算。
一、实验题目:结构体的应用二、实验目的:1.进一步掌握结构体变量、数组的定义和使用方法,掌握结构体与指针的应用。
2.学习共用体的概念和使用。
3.学习链表的概念和使用。
三、实验内容:1.有6个学生,每个学生的数据包括学号、姓名、性别、4门课的成绩、总成绩、平均成绩。
从键盘输入每个学生信息及4门课成绩,总成绩及平均成绩要通过4门课算出。
然后用选择排序法按照总成绩由高到低对6个学生数据进行排序并输出排序结果。
要求输入、排序、输出用3个自定义函数实现。
编写源程序,给出注释及运行结果。
(提示,请参阅教材上292页例11.5及例11.6的程序)。
2.建立一个含有10个结点的单链表,每个节点包括:学号、姓名、性别、年龄和一门课程的成绩。
输入一个学号,删去等于此学号的结点;按学号排序向原单链表中插入两个新结点。
编写源程序,给出注释及运行结果。
(提示,请参阅教材上297页至308页例11.8-例11.11的程序)。
四、实验结果:1.程序及注释#include<stdio.h> /*标准函数输入输出库*/ #include<string.h> /*字符库*/ struct student /*定义结构体类型student*/ { int num; /*定义整型变量num*/ char name[10]; /*定义字符型数组name[10]*/char sex; /*定义字符型变量sex*/float score[4]; /*定义浮点型数组score[4]*/float sum; /*定义浮点型变量sum*/float avg; /*定义浮点型变量avg*/ }stu[6]; /*定义结构体数组变量*/ void scan() /*定义函数scan*/ { int i,j; /*定义整型变量i,j*/ printf("\nPlease input the following information:\n\nNum\tName\tSex\t Score1\tScore2\tScore3\tScore4\n");/*换行,输出Please input the following information:,换行两次,再输出Num、Name、Sex、Score1、Score2、Score3、Score4,中间以Tab隔开,再换行*/ for(i=0;i<6;i++) /*for循环*/ { stu[i].sum=0; /*将0赋值给stu[i].sum*/ scanf("%d%s%s%f%f%f%f",&stu[i].num,&stu[i].name,&stu[i].sex,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);/*输入结构体各成员的值*/ for(j=0;j<4;j++) /*for循环*/stu[i].sum=stu[i].sum+stu[i].score[j]; /*求4科成绩的和*/stu[i].avg=stu[i].sum/4; } /*求4科成绩的平均值*/ }void compare(struct student *p) /*定义函数compare*/ { int i,j; /*定义整型变量i,j*/ struct student t; /*调用结构体*/ for(i=0;i<5;i++,p++) /*for循环*/ for(j=1;j<6;j++) /*for循环*/ { if(p->sum<(p+j)->sum) /*if语句*/ { t=*(p+j);*(p+j)=*p;*p=t;} } /*交换指针(p+j)与指针p的值*/ }void print() /*定义函数print*/ { int i; /*定义整型变量i*/ printf("Num\tName\tSex\t\tScores\t\t\tSum\tAverage\n");/*输出Num、Name 、Sex、Scores、Sum、Average,中间以Tab隔开,再换行*/for(i=0;i<6;i++) /*for循环*/ { printf("%d\t",stu[i].num); /*输出stu[i].num的值,Tab*/ printf("%s\t",stu[i].name); /*输出stu[i].name的值,Tab*/ printf("%c\t",stu[i].sex); /*输出stu[i].sex的值,Tab*/ printf("%5.1f ",stu[i].score[0]); /*以%5.1f 格式输出stu[i].score[0],Tab*/ printf("%5.1f ",stu[i].score[1]); /*以%5.1f 格式输出stu[i].score[1],Tab*/ printf("%5.1f ",stu[i].score[2]); /*以%5.1f 格式输出stu[i].score[2],Tab*/ printf("%5.1f\t\t",stu[i].score[3]);/*以%5.1f格式输出stu[i].score[3],2*Tab*/ printf("%6.1f\t",stu[i].sum); /*以%6.1f格式输出stu[i].sum,Tab*/ printf("%6.1f\n",stu[i].avg);} /*以%6.1f格式输出stu[i].avg,换行*/ }void main() /*空类型主函数*/ { scan(); /*调用函数scan*/ compare(stu); /*调用函数compare*/ print(); /*调用函数print*/ }运行结果2.程序及注释#include<stdio.h> /*标准输入输出库*/ #include<malloc.h> /*内存分配函数库*/ #define NULL 0 /*宏定义下,NULL代表0*/ #define LEN sizeof(struct student) /*宏定义下,LEN代表结构体字节数*/ struct student /*定义结构体类型student*/ {int no; /*结构体包含整型变量no*/ char name[10]; /*结构体包含字符型数组name[10]*/ char sex; /*结构体包含字符型变量sex*/ int age; /*结构体包含整型变量age*/ float score; /*结构体包含浮点型变量score*/ struct student *next; /*结构体包含结构体指针变量next*/ };int n; /*定义整型变量n*/ struct student *creat(void) /*定义struct student类型的指针变量creat*/ { struct student *head; /*声明struct student类型的指针变量head*/ struct student *p1,*p2; /*声明struct student类型的指针变量p1,p2*/ n=0; /*将0赋给n*/ p1=p2=(struct student *)malloc(LEN); /*开辟一个新单元*/ printf("Num\tName\tSex\tAge\tScore\n"); /*输出Num等*/ scanf("%ld %s %c %d %f",&p1->no,&p1->name,&p1->sex,&p1->age,&p1->score); /*输入值,分别给no,name,sex,age,score*/ head=NULL; /*将NULL赋给head*/ while(p1->no!=0) /*while循环*/ { n=n+1; /*将n+1赋给n*/ if(n==1)head=p1; /*如果n==1,将p1赋给head*/ else p2->next=p1; /*否则,将p1赋给next*/p1=(struct student *)malloc(LEN);/*强制类型转换,使指针的基本类型改变为struct student的类型,并将开辟的长度为LEN、struct student的类型的内存区的指针赋予p1*/scanf("%ld %s %c %d %f",&p1->no,&p1->name,&p1->sex,&p1->age, &p1->score); /*输入值,分别给no,name,sex,age,score*/ } /*连续输入学生信息,找到输入学号为0为止*/ p2->next=NULL; /*将NULL赋给next*/ return(head); /*返回值head*/ } /*建立动态链表*/ void print(struct student *head) /*定义函数print*/ { struct student *p; /*声明struct student类型的指针变量p*/ printf("Num\tName\tSex\tAge\tScore\n"); /*输出Num等*/ p=head; /*将head赋给p*/ if(head!=NULL) /*if语句*/ Do /*do while循环*/ {printf("%-6ld\t%-6s\t%-4c\t%-5d\t%-6.2f\n",p->no,p->name,p->sex,p->age,p->score); /*输出no,name,sex,age,score的值*/ p=p->next; /*将next赋值给p*/ } while(p!=NULL) ; /*输出所有学生的信息*/ }struct student *del(struct student *head,long no)/*定义struct student类型的指针变量del*/ { struct student *p1,*p2; /*声明struct student类型的指针变量p1,p2*/ if(head==NULL){printf("\n No information \n");return head;} /*if语句*/ p1=head; /*将head赋给p1*/ while(no!=p1->no&&p1->next!=NULL){p2=p1;p1=p1->next;}/*p1指向的不是所要找的节点,且后面还有节点,*p1后移一个节点*/ if(no==p1->no) /*if语句*/ { if(p1==head)head=p1->next;/*if语句,p1若指向首节点,把第二各节点地址赋给head*/ else p2->next=p1->next; /*否则将下一结点地址赋给前一节点*/n=n-1; } /*将n-1赋给n*/ else printf("\n The number you input cannot be found \n"); /*否则输出*/ return(head); /*返回值head*/ }struct student *insert(struct student *head,struct student *stud)/*定义struct student类型的指针变量insert*/ { struct student *p0,*p1,*p2; /*声明struct student类型的指针变量p0,p1,p2*/ p1=head; /*将head赋给p1*/if(head==NULL) /*if语句*/ { head=p0;p0->next=NULL; } /*使p0指向的节点作为头结点*/ Else /*否则*/{ while((p0->no>p1->no)&&(p1->next!=NULL)) /*while循环*/ { p2=p1;p1=p1->next; } /*p1后移一个节点*/if(p0->no<=p1->no) /*if语句*/{ if(head==p1)head=p0; /*查到原来的一个节点之前*/else p2->next=p0; /*插到p2指向的节点之后*/p0->next=p1; } /*插到p0指向的节点之后*/ Else /*否则*/{ p1->next=p0; /*插到p1指向的节点之后*/p0->next=NULL; } } /*查到最后的节点之后*/ n=n+1; /*将n+1赋给n*/ return(head); /*返回值head*/ }void main() /*空类型主函数*/ { struct student *head,*stu; /*声明struct student类型的指针变量head,stu*/ long del_num; /*定义长整型变量del_num;*/ printf("\nPlease input:\n"); /*换行,输出Please input:,换行*/ head=creat(); /*将creat()赋给head*/ print(head); /*调用函数print*/ printf("The number you want to delete:");/*输出The number you want to delete:*/ scanf("%ld",&del_num); /*输入del_num的值*/ while(del_num!=0) /*while循环*/ { head=del(head,del_num); /*将del赋给head*/ print(head); /*调用函数print*/printf("The number you want to delete:");/*输出The number you want to delete:*/ scanf("%ld",&del_num); } /*输入del_num的值*/ printf("Please input the information you want to insert:");/*输出Please input the information you want to insert:*/ stu=(struct student *)malloc(LEN);/*强制类型转换,使指针的基本类型改变为struct student的类型,并将开辟的长度为LEN、struct student的类型的内存区的指针赋予stu*/ scanf("%ld %s %c %d %f",&stu->no,stu->name,&stu->sex,&stu->age,&stu->score); /*输入值,分别给no,name,sex,age,score*/ while(stu->no!=0) /*while循环*/ { head=insert(head,stu); /*将insert赋给head*/ print(head); /*调用函数print*/ printf("Please input the information you want to insert:");/*输出Please input the information you want to insert:*/stu=(struct student *)malloc(LEN);/*强制类型转换,使指针的基本类型改变为struct student的类型,并将开辟的长度为LEN、struct student的类型的内存区的指针赋予stu*/scanf("%ld %s %c %d %f",&stu->no,stu->name,&stu->sex,&stu->age ,&stu->score); } /*输入值,分别给no,name,sex,age,score*/ } /*若添加的学号不等0,则继续执行添加功能*/ 运行结果五、实验体会或遇到问题:1.不知道为什么用Turbo C++运行没用,每次都显示出:所以说最后结果是用Visual C++ 6.0做的,结果证明程序还是没有问题的2.动态链表不熟悉3.结构体相关不熟悉4.注释都有些困难了,程序太长,太难。