实验四 数组(1)
labview实验四
虚拟仪器实验报告四专业年级电信081班姓名学号08808030 成绩一、实验目的:LabVIEW编程软件入门学习二、实验内容:实验四字符串、数组、簇和矩阵4.1 字符串(String)4.2 数组(Array)4.3 簇(Cluster)4.4 矩阵(Matrix)三、实验结果:练习1组合字符串使用一些字符串功能函数将一个数值转换成字符串,并把该字符串和其他一些字符串连接起来组成一个新的输出字符串。
打开一个新的前面板,按照下图向其中添加对象练习2 字符串子集和数值的提取创建一个字符串的子集,其中含有某个数值的字符串显示,再将它转换成数值。
练习3 Build Text Express VI练习4 用循环创建数组使用For循环和While循环的自动索引(auto-indexing)功能自动创建数组。
练习5 创建二维数组使用两个嵌套的For循环(即一个循环在另一个循环内)可以创建二维数组。
嵌套的For循环创建二维数组时,外层循环创建行,内层循环创建列。
练习6 多图区图形创建含有多条曲线的图形,方法是创建一个数组,用它汇集传给单图区图形的类型的数据元素。
练习7使用创建数组功能函数使用创建数组函数,把一些元素和输出组织成一个更大的数组。
练习8 多态化练习多态化练习2练习9 簇排序前面板包含两个簇。
第一个簇中,第一个组件是数字控件;第二个簇中,第一个组件是数字指示器。
第一个图中簇控件正确连接到簇指示器。
第二个图中,簇顺序改变,此时连线无效。
练习10簇目的:学习创建簇、分解簇,再捆绑簇并且在另一个簇中显示其内容。
为第3章的习题2连续温度采集监测添加报警信息,如下图所示,当报警发生时输出报警信息,例如“温度超限!当前温度78.23℃”,正常情况下输出空字符串。
四、实验总结:这次实验的主要内容是字符串、数组、簇和矩阵,综合看来本次实验的内容更为晦涩难懂一些,从我的理解,前几次的实验时候的思想主要是一维的,平面的,而这回的实验内容要求我们用立体的,二维的思维去思考。
改错编程题
++n;
s+=n;
}
cout<<"n="<<n<<'\t'<<"s="<<s<<'\n';
}
4、
#include<iostream.h>
#include<math.h>
void main()
{
float x0,x1,x2;
double y0,y1,y2;
do{
cout<<"请输入方程的两个初始区间值:";
else{
for(b=0;a;b++)
{
c=a%10;
cout<<'\t'<<c;
a=a/10;
}
cout<<"共"<<b<<"位数";//当输入数字是012时,其实输入的是八进制数,对应的十进制是10。
}
}
2、参考程序
#include<iostream.h>
void main()
{
int a,b,c;
else if(c!=0)cout<<m<<"是个3位数,"<<"逆序各位数字是"<<a<<'\t'<<b<<'\t'<<c<<endl;
else if(b!=0)cout<<m<<"是个2位数,"<<"逆序各位数字是"<<a<<'\t'<<b<<endl;
数组及应用实验报告
一、实验目的1. 理解数组的定义和概念,掌握数组的声明、初始化和访问方法。
2. 掌握一维数组和二维数组的操作,包括元素的赋值、排序、查找等。
3. 熟悉数组在实际编程中的应用,如排序算法、查找算法等。
4. 培养解决实际问题的能力,提高编程水平。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C/C++三、实验内容1. 一维数组的声明、初始化和访问2. 一维数组的排序(冒泡排序、选择排序、插入排序)3. 一维数组的查找(线性查找、二分查找)4. 二维数组的声明、初始化和访问5. 二维数组的操作(求和、求平均值、查找最大值和最小值)6. 数组在实际编程中的应用(如冒泡排序算法实现、字符串匹配)四、实验步骤1. 一维数组的声明、初始化和访问(1)声明一个整型一维数组,如int arr[10];(2)初始化数组,如arr[0] = 1, arr[1] = 2, ...;(3)访问数组元素,如printf("%d", arr[i]);2. 一维数组的排序(1)冒泡排序:比较相邻元素,如果逆序则交换,重复执行,直到排序完成。
(2)选择排序:每次选择未排序部分的最小(或最大)元素,放到已排序部分的末尾。
(3)插入排序:将未排序的元素插入到已排序部分的合适位置。
3. 一维数组的查找(1)线性查找:逐个比较数组元素,找到目标元素则返回其位置。
(2)二分查找:在有序数组中,先确定中间元素,再与目标元素比较,根据比较结果缩小查找范围。
4. 二维数组的声明、初始化和访问(1)声明一个整型二维数组,如int arr[3][4];(2)初始化数组,如arr[0][0] = 1, arr[0][1] = 2, ...;(3)访问数组元素,如printf("%d", arr[i][j]);5. 二维数组的操作(1)求和:遍历二维数组,将所有元素相加。
数组实验报告反思心得
一、实验背景本次实验旨在通过学习数组的相关知识,掌握数组的定义、初始化、赋值、引用等方法,以及数组的操作和应用。
通过本次实验,我对数组有了更深入的理解,同时也对编程思维和算法设计有了更全面的提升。
二、实验过程1. 实验一:一维数组的定义与初始化实验过程中,我首先学习了如何定义一维数组,以及如何对数组进行初始化。
通过实验,我掌握了以下知识:(1)一维数组的定义格式:类型符数组名[常量表达式];(2)一维数组的初始化方法:在定义数组时,可以在方括号内指定数组的长度,并为数组元素赋初值。
2. 实验二:二维数组的定义与初始化在实验二,我学习了二维数组的定义与初始化。
通过实验,我掌握了以下知识:(1)二维数组的定义格式:类型符数组名[常量表达式1][常量表达式2];(2)二维数组的初始化方法:可以在定义数组时,指定数组的行数和列数,并为数组元素赋初值。
3. 实验三:数组元素的引用与赋值在实验三,我学习了如何引用数组元素,以及如何为元素赋值。
通过实验,我掌握了以下知识:(1)数组元素的引用方法:数组名[下标];(2)数组元素的赋值方法:使用赋值运算符“=”。
4. 实验四:数组的操作与应用在实验四,我学习了数组的操作与应用,包括冒泡排序、选择排序等。
通过实验,我掌握了以下知识:(1)冒泡排序算法:通过比较相邻元素的大小,将较大的元素交换到后面,直到整个数组有序。
(2)选择排序算法:通过比较相邻元素的大小,选择最小(或最大)的元素放到数组的起始位置,然后继续对剩余的元素进行排序。
三、实验反思1. 数组的定义与初始化在实验过程中,我深刻体会到了数组在编程中的重要性。
数组作为一种数据结构,可以有效地存储和操作一组具有相同数据类型的元素。
通过对数组的定义与初始化,我学会了如何创建一个符合实际需求的数组,并为数组元素赋初值。
2. 数组元素的引用与赋值在实验过程中,我学会了如何引用数组元素,以及如何为元素赋值。
这使我更加熟练地掌握了数组的使用方法,为后续的编程实践打下了基础。
《c语言程序设计》教学大纲
《C语言程序设计》教学大纲课程名称:中文名称:C语言程序设计;英文名称:C Language Programming课程编码:161002学分:4.5分总学时:72学时,其中,理论学时:52学时;上机学时:20学时。
适用专业:全校理工科各专业先修课程:计算机基础执笔人:审订人:一、课程的性质与任务《C语言程序设计》是为全校所有的理工科专业的学生开设的公共基础课,也是一门重要的必修课。
其目的是使学生掌握程序设计的基本方法,培养学生掌握利用计算机处理问题的思维方法与应用能力。
要求学生掌握程序的三种基本结构及结构化的程序设计方法,了解并掌握几种典型的算法,并且能够熟练地运用C语言编写各种应用程序,为进一步学习其它相关课程奠定基础。
二、教学内容与学时分配第一章程序设计基本概念(3学时)本章重点:一、算法及特性;二、结构化程序设计方法。
难点:算法设计及其表示。
第一节程序和程序设计一、程序;二、程序设计。
第二节算法第三节结构化程序设计方法第四节C语言程序的基本结构第二章数据类型、运算符和表达式(5学时)本章重点:一、标识符的正确使用;二、各种基本数据类型的使用;三、算术运算符的优先级和结合性;四、表达式计算中的类型转换。
难点:一、各种类型数据在计算机内存中的存储形式;二、自增自减运算。
第一节C语言的数据类型第二节常量与变量第三节整型数据第四节实型数据第五节字符型数据第六节算术运算符与算术表达式第七节赋值运算符与赋值表达式一、赋值运算符和赋值表达式;二、复合的赋值表达式;三、自加、自减运算符;四、赋值运算中的类型转换。
第八节逗号运算符与逗号表达式第三章顺序结构程序设计(4学时)本章重点:一、printf函数;二、scanf函数。
难点:输入与输出时的格式控制。
第一节C语句概述第二节赋值语句第三节数据的输入与输出一、printf函数;二、putchar函数;三、scanf函数;四、getchar函数第四节顺序结构程序举例第四章选择结构程序设计(4学时)本章重点:一、逻辑值的表示、使用及其运算;二、关系运算符的运算规则及关系表达式;三、逻辑运算符的运算规则及逻辑表达式;四、if语句;五、switch语句的形式与执行过程。
实验一从键盘上输入四个短整型数,求这四个数中最大的无符号数和最
实验五
任何一个自然数m的立方均可写成m个连续奇 数之和。 例如:
1^3 = 1 2^3 = 3+5 3^3 = 7+9+11 4^3 = 13+15+17+19 编程实现:输入一自然数n,求组成n3的n个连 续奇数。
〖实验提示〗 使用双重循环,满足条件时用break退出。
精选课件
实验六
编写一个程序,输入两个包含10个元素的数组,先将第一 个数组采用冒泡法进行降序排列,第二个数组采用选择排序进 行降序排列,然后将这两个数组合并成一个降序数组。
例如,若输入的四位正整数为3175。按逆序显示输出分离出的各位 数字为5713;组成的最大数为7531,组成的最小数为1357。
具体要求: (1)输入前要有提示。并检查输入数据的合法性,若输入的数据不合 法,则显示输出错误信息。 (2)对输出结果要用英文或汉语拼音进行具体说明。
〖实验提示〗 (1)首先要判断输入的数据是否是四位整数。 (2)然后分离出该四位正整数的四位数字,例如从千位到个位依次为 a,b,c,d,则按逆序显示输出为dcba。 (3)最后对四位数字a,b,c,d按从大到小进行排序,按该顺序组成一个 最大数,按逆序组成一个最小数。
精选课件
Try(i)
条件:c = (like[i][j]>0 && book[j]=0)
LP
c != 1
c == 1
j=0 1 2 3 4
什么也 不做
LP LP LP LP LP
④ 条件c是由两部分“与”起来 的,“第i个人喜欢j书,且j书尚 未被分走”。满足这个条件是i 人能够得到j书的条件。
sh1 sh2
take[i] = j; book[j] = 1; i == 4
C语言实验
提交作业要求1.建立一个学号+姓名文件夹(如:20111234张志),建立一个实验报告文件(实验报告.txt或实验报告.doc均可),将实验步骤和程序运行结果拷贝到.txt文件或.doc文档中(可用Alt+PrtSc组合键抓屏),把每次的实验报告(.txt或.doc)和源程序(.C文件)放在学号+姓名文件夹中,上传到教师机“03/09教学班”下面对应的班级文件夹中,下机前把文件夹删除。
2.课外编程题提交到教师机“程序设计”文件夹中。
上机注意事项●运行程序时,应在英文状态下输入数据。
●上一个程序运行结束后, 要关闭工作区或VC窗口, 重新建立一个文件,输入下一个程序。
●编译时死机,将原程序窗口最小化,将程序拷贝到重新打开的VC文件中,可激活系统。
第一次实验(基本程序设计)★预习: 上机指导P4~10详细阅读上机指导P6~7, 掌握vc++6.0的使用方法。
★实验内容:(1)实验1(P5)①(p6)2. 调试修改(改错:求由键盘输入的任意两个整数的乘积。
)#include<stdio.h>void main(void){ int c;scanf(“%d,%d”,&x,&y);/**********FOUND**********/c=a*b/**********FOUND**********/printf(“The product is:%d\n”,c)}②(p7)3.完善程序(程序填空:求圆面积)#define PI 3.14159#include<stdio.h>void main(void){ float r ;double area;scanf(“%f”, &r);/**********SPACE**********/area=【?】;printf(“area=%f\n”, area);}(2)学习编程:①编写一个两个整数相乘的C程序,要求输出格式为: c=3*4=12②从键盘输入三个整数,计算并输出三个整数的平均值。
四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支
四《C语言程序设计》实验四选择结构程序设计一、实验目的1、掌握分支语句的格式和功能。
2、掌握选择结构的程序设计。
3、掌握分支结构的嵌套。
二、实验内容与要求1、编程,计算下列分段函数值:x2+3x-4,x<0且x≠-4f(x)= x2-6x+5,0=x<10且x≠1及x≠5x2-4x-1,其他要求如下:(1)用if语句实现分支。
自变量x与函数值均采用双精度类型。
(2)自变量x值从键盘输入,且输入前要有提示信息。
(3)数据的输出格式采用以下形式:x=输入值,f(x)=计算值(4)分别以-3.0,-1.0,0.5,1.5,2.5,3.5,4.5,5.5为自变量,运行该程序。
记录结果。
(5)源程序以sy4_1.c存盘。
2、编程,将一个百分制成绩转换成等级制成绩。
具体要求如下:(1)百分制与等级制的对应关系如下:(3)用键盘输入百分制成绩,输入前要有提示信息。
(4)要能判断输入数据的合理性,对于不合理的数据应输出错误信息。
(5)输出结果中应包含百分制成绩和成绩等级。
(6)分别输入成绩-10,99,60,85,70,101,45,运行该程序。
记录结果。
(7)源程序以sy4_2.c存盘。
三、思考题1、实现选择结构程序设计的方法有哪几种?各有什么特点?适用条件是什么?2、如何设置选择结构中的判断条件?它在程序设计中的意义何在?实验五循环结构程序设计(1)一、实验目的1、掌握循环的概念。
2、掌握三种常用的循环语句的格式和功能。
3、初步掌握循环结构的编程方法。
二、实验内容与要求1、编程,分别利用三种循环语句,求1+2+3+…50之和。
要求如下:(1)输出计算结果;数据的输出格式采用以下形式:1+2+3+…50=计算值(2)源程序分别以sy5_1.c、sy5_2.c、sy5_3.c存盘。
2、编程,穷举算法解百马百担问题(有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?)要求如下:(1)输出计算结果;在数据输出之前应有提示信息。
C语言课后实验设计题目及答案
设 total:桃子的总数
x1 :前一天的桃子数
x2 : 后一天的桃子数
day: 天数
计算公式:x1=(x2+1)*2 第1天的桃子数是第2天桃子数加1后的2倍。
(2)求1-1/2+1/3-1/4+⋯⋯,输入1个正整数n(n<=100),计算并输出1-1/2+1/3-1/4+⋯⋯的前n项和(保留3位小数)。
实验项目四 分支结构程序设计
题目
(1)输入四个整数,输出其中的最小值。
实验报告
1、主程序:
// zx.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
}
2、主程序:
// s.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
int main(int argc, char* argv[])
{
x=x*x*x*x;return(x);
}
int main(int argc, char* argv[])
{
float x;
printf("请输入X=");
scanf("%f",&x);
double s;
武汉理工大学C语言程序设计实验精选报告含答案
注:在 Visual C++ 6.0 编译环境中亲身调试经过,但不保证在Turbo C 中经过。
实验二选择构造的程序设计(题目当初没抄下来,这是依据程序整理的)4 x 8 1 x 01. 编程实现分段函数210x 1 0 x 1y 3x8x4 3x2 2 x 1 1 x 2#include<stdio.h>main(){float x,y;printf("Please input x:");scanf("%f",&x);if (x<-1||x>=2)printf("Data Error\n");else{if (x>=-1&&x<0)y=4*x-8;if (x>=0&&x<1)y=3*x*x+10*x-1;if (x>=1&&x<2)y=8*x*x*x*x-3*x*x+2*x-1;printf("\ny=%f\n",y);}}2.苹果有三个等级,一级 5.50 元 /斤,二级3.00 元/ 斤,三级 2.50 元 /斤。
编写程序,输入苹果的等级,购置的数目和所付的钱数,输出等级,购置的数目、对付钱数和找零。
#include<stdio.h>main(){int level;double weight,pay,money,charge;printf("Please input the level:");scanf("%d",&level);printf("Please input the weight you want:");scanf("%lf",&weight);printf("Please input the money you pay:");scanf("%lf",&pay);if (level<1||level>4||weight<0)else{printf("Data Error\n");if (level==1)else if (level==2) else if (level==3) else if (level==4) charge=pay-money; money=weight*5.50; money=weight*4.20; money=weight*3.00; money=weight*2.50;printf("\nLevel:%d\nweight:%g\n",level,weight);printf("money:%g\ncharge:%g\n\n",money,charge);}}实验三循环构造1.编程计算 1!+2! +3! +4! +5 !分别用单层循环和双层循环实现1020i!和i !考虑i 1i 1#include<stdio.h>main(){int i,x;double j,k,sum;printf("Please input a number:");scanf("%d",&x);//用单层循环for(sum=0,j=1,i=1;i<=x;i++){j*=i;sum+=j;}printf("The result is %lf\n",sum);//用双层循环for(sum=0,i=1;i<=x;i++){for(k=1,j=1;j<=i;j++) k*=j;sum+=k;}printf("The result is %lf\n",sum);}2. 共 20 个评委给选手评分,去掉1 个最高分,去掉 1 个最低分,其余18 名评委的均匀分即选手最后得分#include <stdio.h>main(){double score,min,max,avg=0;int i;//下边是为了输入第一个数printf("Please input 20 scores...\n");printf("Score 1:");min=score;max=score;avg+=score;//下边为了输入节余 19 个数 for(i=2;i<=20;i++){do{printf("Score %d:",i);scanf("%lf",&score);}while(score<0);if(score>max) max=score;avg+=score;}avg=avg-min-max;avg/=18;printf("\nThe average score is %lf:\n",avg);}实验四数组和指针的应用1. 定义一个有 10 元素的一位数组 count,从键盘上输入 8 个整数,将其按从大到小的次序摆列,并将排序后的数组输出( 1)数组方法#include<stdio.h>main(){int count[10],t,i,j;printf("Please input 8 numbers:\n");for(i=0;i<8;i++)scanf("%d",&count[i]);for(i=0;i<8;i++)for(j=i+1;j<8;j++)if (count[i]<count[j]){t=count[i];count[i]=count[j];count[j]=t;}printf("The sorted array is as follows:\n");for (i=0;i<8;i++)printf("%d",count[i]);}( 2)指针方法#include<stdio.h>main(){int count[10],t,i,j,*p=count;printf("Please input 8 numbers:\n");for(i=0;i<8;i++)scanf("%d",&p[i]);for(i=0;i<8;i++)for(j=i+1;j<8;j++)if (*(p+i)<*(p+j)){t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;}printf("The sorted array is as follows:\n");for (i=0;i<8;i++)printf("%d",count[i]);}2.输入 2 个字符串,将两者连结并输出,再将连结后的字符串反向摆列并输出,并求连结后字符串的长度#include<stdio.h>#include<string.h>main(){int i,len;char a1[51],a2[26],t[51];printf("Please input 2 strings:\n");gets(a1);gets(a2);strcat(a1,a2);printf("The joint string is: %s",a1);len=strlen(a1);printf("\nThe length of the linked string is: %d\n",len);for(i=0;i<len;i++)t[i]=a1[len-i-1];t[len]=0;strcpy(a1,t);printf("The reversed string is: %s\n",a1);}实验五函数应用的程序设计1.要求是:编写一函数,统计字符串中字母、数字、空格和其余字符的个数在主函数中输入字符串并输出统计结果值传递:#include<stdio.h>void fun(char a,int *b){if(a>='A'&&a<='Z'||a>='a'&&a<='z')b[0]++;else if(a>='0'&&a<='9')b[1]++;else if(a==32)b[2]++;else b[3]++;}main(){char a[50];int b[4],i,j,k;for(i=0;i<3;i++){for(j=0;j<4;j++)b[j]=0;printf("\nPlease input a string:\n");gets(a);k=0;while(a[k]!=0){fun(a[k],b);k++;}printf("The string have %d letters, %d numbers, %d spaces, %d other chars\n",b[0],b[1],b[2],b[3]);}}地点传达:#include<stdio.h>void fun(char *a,int *b){int i=0;while(a[i] != 0){if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z')b[0]++;else if((a[i]>='0')&&(a[i]<='9'))b[1]++;elseif(a[i]==32)b[2]++;else b[3]++;i++;}}main(){char a[50];int b[4],i,j;for(i=0;i<3;i++){for(j=0;j<4;j++)b[j]=0;printf("\nPlease input a string:\n");gets(a);fun(a,b);printf("\nThe string have %d letters, %d numbers, %dspaces, %d other chars",b[0],b[1],b[2],b[3]);}}。
实验四 数组
实验四数组实验课程名:高级语言程序设计(C)专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法;(2)掌握字符数组和字符串函数的使用;(3)掌握与数组有关的算法(特别是排序算法)。
二、实验内容1、任务名称: 调试下列c50101.c程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
写出调试过程。
源代码:#include <stdio.h>#define N 10void main(){ int i,a[N];double av=0;for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++){ printf("%d",a[i]);if((i+1)%3==0)printf("\n");}for(i=0;i!=N;i++)av+=a[i];av=av/N;printf("\nav=%f\n",av);}运行结果:(需要截图)运行结果分析:求平均数首先应该要求和,题目中求和没有给变量赋初值,这样得到的结果是不可预料的,求和后应除以总数,但不能用语句av=sum/10;因为这样得到的结果是去掉小数点后的结果,不准确,应用语句av=sum/10.0;。
2、任务名称: 下面c50102.c程序是输入5个数据,然后求它们的和并输出结果。
源代码:#include <stdio.h>void main(){int i,a[5],sum=0;scanf("%d",&a[5]);for (i=0;i<=5;i++)sum+=a[5];printf("sum=%d\n",sum);}运行结果:(需要截图)运行结果分析:语句scanf("%d,%d,%d,%d,%d", a );错误,因为数组元素的输入和输出只能逐个元素操作,而不能以数组名作整体操作。
实验四 数组与指针
所包含的10天再累加到Tday中。
内容四:测试数据
2012 2012 2012 2012 年 2月10日 年 5月10日 年10月10日 年12月21日 存1000元 存200元 取300元 计息 年利率0.36%
计算结果:利息 = 3.38元
计算过程: 5月10日 日积数 1000元*90天
10月10日
注:5 即金额变动日期3.10减去开户日期3.5,也即1000元的存款天数。 10 即计息日期3.20减去金额变动日期3.10,也即3000元的存款天数。
由此,我们看出利息的计算重要的是计算出每次金额变动时日积数 的累计值,而要计算此值首先需要计算每次金额变动时前次金额的存款 天数。
内容四:活期储蓄类设计
主控函数实现:
Int main() { int i,n ; float s ; char na[10]; Cstudent st[N]; //定义对象数组 for(i=0;i<N;i++) { cout<<"输入学号 姓名 成绩:"; cin>>n>>na>>s; st[i].setdata (n ,na ,s); //调用设置函数给对象的数据成员赋值 } cout<<endl<<" 输出数据:"<<endl; cout<<setw(10)<<"学号"<<setw(10)<<"姓名"<<setw(5)<<"成绩"<<endl; for(i=0;i<N;i++) st[i].disp(); cout<<" 平均分="<<setprecision(4)<<Cstudent::Avg()<<endl; return 0; }
数组实验报告实验小结
一、实验背景随着计算机技术的不断发展,数组作为一种基本的数据结构,在编程领域得到了广泛的应用。
为了更好地理解和掌握数组的相关知识,我们进行了一系列的数组实验。
本次实验报告将对实验过程进行总结,并对实验结果进行分析。
二、实验目的1. 理解数组的基本概念和特点;2. 掌握数组的创建、访问和操作方法;3. 熟悉数组在编程中的应用;4. 培养实验操作能力和问题解决能力。
三、实验内容1. 数组的定义与创建2. 数组的初始化3. 数组元素的访问与修改4. 数组的排序与查找5. 数组的应用实例四、实验过程1. 数组的定义与创建实验一:定义一个整型数组,并初始化为10个元素。
代码如下:```c#include <stdio.h>int main() {int arr[10];// 初始化数组for (int i = 0; i < 10; i++) {arr[i] = i 2;}// 打印数组元素for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```2. 数组的初始化实验二:使用初始化列表直接初始化数组。
代码如下:```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};// 打印数组元素for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { printf("%d ", arr[i]);}printf("\n");return 0;}```3. 数组元素的访问与修改实验三:访问和修改数组元素。
代码如下:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5};// 访问数组元素printf("The first element is: %d\n", arr[0]);// 修改数组元素arr[0] = 10;printf("After modification, the first element is: %d\n", arr[0]); return 0;}```4. 数组的排序与查找实验四:使用冒泡排序算法对数组进行排序。
c#实验四
实验报告课程 C#程序设计实验名称数组和指针院系(部):信息系专业班级:计本902学号:200961116姓名:罗盼实验日期:2010.10.29报告日期:2010.10.30报告评分:教师签字:一.实验名称: 数组和指针二.实验目的掌握数组的声明、实例化和初始化掌握数组元素的引用掌握一维数组的操作掌握二维数组的操作了解System.Array类常用方法和属性的使用三.运行环境:VS2008四. 实验内容及步骤(包括主要程序流程和功能注释)实验【4.1】using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2{class Program{static void DisplayMatrix(int[,] A, int[,] B){for (int i = 0; i < A.GetLength(0); i++){for (int j = 0; j < A.GetLength(1); j++)Console.Write("{0,6}", A[i, j]);Console.WriteLine();}Console.WriteLine();Console.WriteLine();for (int i = 0; i < B.GetLength(0); i++){for (int j = 0; j < B.GetLength(1); j++)Console.Write("{0,6}", B[i, j]);Console.WriteLine();}}static void Main(){int i, j;int[,] A = new int[3, 3];int[,] B = new int[3, 3];for (i = 0; i < 3; i++)A[i, 0] = 2;A[0, 1] = A[1, 2] = A[2, 2] = 1;A[2, 1] = A[0, 2] = 2;A[1, 1] = 2;for (i = 0; i < 3; i++)for (j = 0; j < 3; j++)B[i, j] = A[A[i, j], A[j, 1]];Console.WriteLine("新矩阵: ");DisplayMatrix(A, B);Console.ReadLine();}}}实验【4.2】using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace四_mark{class Program{static void DisplayMatrix(int[,] A){for (int i = 0; i < A.GetLength(0); i++){for (int j = 0; j < A.GetLength(1); j++)Console.Write("{0,6}", A[i, j]);Console.WriteLine();}Console.WriteLine();Console.WriteLine();}static void DisplayMatriy( int[,] B){for (int i = 0; i < B.GetLength(0); i++){for (int j = 0; j < B.GetLength(1); j++)Console.Write("{0,6}", B[i, j]);Console.WriteLine();}Console.WriteLine();Console.WriteLine();}static void DisplayMatriz(int[,] C){for (int i = 0; i < C.GetLength(0); i++){for (int j = 0; j < C.GetLength(1); j++)Console.Write("{0,6}", C[i, j]);Console.WriteLine();}Console.WriteLine();Console.WriteLine();}static void DisplayMatrip(int[,] D){for (int i = 0; i < D.GetLength(0); i++){for (int j = 0; j < D.GetLength(1); j++)Console.Write("{0,6}", D[i, j]);Console.WriteLine();}}static void Main(){int i, j;int[,] A = new int[29,2] ;int[,] B = new int[29,2] ;int[,] C = new int[29,2] ;int[,] D = new int[29,5] ;Random rNum = new Random();for (i = 0; i < 29; i++){A[i, 0] = i + 1;A[i, 1] = rNum.Next(101);B[i, 0] = i + 1;B[i, 1] = rNum.Next(101);C[i, 0] = i + 1;C[i, 1] = rNum.Next(101);}Console.WriteLine("English: ");DisplayMatrix(A);Console.WriteLine("Math: ");DisplayMatriy(B);Console.WriteLine("Computer: ");DisplayMatriz(C);/* D[0, 0] = "序号";D[0, 1] = "英语成绩";D[0, 2] = "高数成绩";D[0, 3] = "计算机成绩";D[0, 4] = "平均成绩";*/for (i = 0; i <29; i++){D[i, 0] =i+1;D[i, 1] = A[i, 1];D[i, 2] = B[i, 1];D[i, 3] = C[i, 1];D[i, 4] = (A[i, 1] + B[i, 1] + C[i, 1])/3;}Console.WriteLine(" 序号英语高数计算机平均成绩");DisplayMatriz(D);Console.ReadLine();}}}五.实验结果六.实验中的问题及心得1.错误1 不能在此范围内声明名为“j”的局部变量,因为这样会使“j”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了for (int j=0; j < 3; j++)此句中的问题,原来是不能要int的定义啊,改正后却运行如下:回顾源程序,发现一处错误,Console.Write("{0,6},A[i,j]");改为Console.Write("{0,6}",A[i,j]);后,运行如下:不正常啊与原始,I,j怎么对调了啊,太大意了,改正吧,终于运行正常了,下面就开始变动为新矩阵吧:又因为A[1,1] = 3的值超出了矩阵的长度(i,3,j<3),在此将其改为2,结果如下:(1)添加程序段for (i = 0; i < 3; i++)for (j = 0; j < 3; j++)A[i, j] = A[A[i, j], A[i, j]];运行如下:(2)添加程序段for (i = 0; i < 3; i++)for (j = 0; j < 3; j++)B[i, j] = A[A[i, j], A[i, j]];运行如下:2.对于第二题,输入代码还算顺利,应当注意下随记赋值的算法,其执行如下:可是如何让其同时显示math ,comput字样呢?于是改程序段Console.WriteLine("English: ");DisplayMatrix(A, B,C);为Console.WriteLine("English: ");DisplayMatrix(A, B,C);Console.WriteLine("English: ");其显示如下:(此取其后半部)还是不对啊,不过倒似乎明白了是怎么回事了,于是改为如下:Console.WriteLine("English: ");DisplayMatrix(A);Console.WriteLine("Math: ");DisplayMatrix(B);Console.WriteLine("Computer: ");DisplayMatrix(C);Console.ReadLine();为什么还是不对呢?还显示的有错误:错误 1 意外的字符“)”错误 3 应输入) ,那又为什么第一个输出没为题呢?找啊找,原来是输入法的问题,改正后如下:错误1 “DisplayMatrix”方法没有采用“1”个参数的重载;是否A,B,C不能定义在一个函数里呢?static void DisplayMatrix(int[,] A, int[,] B, int[,] C)于是将其改为static void DisplayMatrix(int[,] A)static void DisplayMatrix(int[,] B)static void DisplayMatrix(int[,]C)运行其程序为;下面继续开始做平均成绩的输出:实验里,出现D[i, 1] = A[i,1];但两个i取值不同,分析之,解决有三:1.把两个i改为取相同的值,即让前面的i从1开始取值;2.把第二个i位置上的值使其与第一个i位置上的取值相同,即改为:D[i, 1] = A[i-1,1];3.另外附个值x,使其取值与第一个i取值相同;综合分析,第二种方法最简,可取。
C语言数组实验报告
实验名:数组一、实验目的1、掌握数组定义的规则。
2、掌握C语言数组的基本用法。
二、实验内容) 题目11、编写程序,测试下列数组的定义方式是否正确(1) main(){int n;scanf(“%d”,&n);int a[n];……}(2) main(){const int n=10;int a[n];}(3) #include <stdio.h>#define M 10main(){int a[M];}(4) main(){int a[2+2*4];}(5) #include <stdio.h>#define M 2#define N 8main(){ int a[M+N];}通过这一实验,可以说明什么问题2、输入和输出信息描述及数据类型确定;、输入数据序号输入数据描述数据类型(1)n,a[n] int(2)na[n] cons tint int(3)a[M]或a[10] int (4)a[2+2*4] int (5)a[M+N] int 3、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法(1-1)main.c|5|error: expectedexpression before '%' token|scanf(“%d”,&n);是将%d两边的符号改为西文字符的引号scanf("%d",&n);(1-2)main.c|6|warning: unusedvariable 'a'[-Wunused-variable]|int a[n];是将前面的n的输入去掉,把n改为具体数字(5) main.c|6|warning: unusedvariable 'a'[-Wunused-variable]|int a[M+N];是加上个scanf(“%d”,&a[M+N]);4、相关问题回答通过这一实验,可以说明什么问题1、(2)(3)(4)(5)对,(1)错,(1)中a[n]的数组定义的【】里的常量表达式不能是变量。
C语言上机实验报告 (1)
青岛理工大学课程实验报告步骤调试过程及实验结果1 2总结掌握了掌握C语言基本数据类型,变量的定义及变量的初始化和赋值操作,不同的类型数据之间赋值的规律。
了解了C语言的算术运算符的使用以及算术表达式的使用,自加自减运算符的特点及使用。
附录实验一 1#include<>void main(){int a,b,s;scanf("%d%d",&a,&b);printf("s=%d\n",a+b);}实验一 2#include<>#include<>void main(){double a,b,c,d,x1,x2;printf("a b c :");scanf("%lf%lf%lf",&a,&b,&c);d=b*b-4*a*c;if (d<0)printf("无解\n");else if (d==0){x1=(-b)/(2*a);printf("一个解:x=%g\n",x1);}else{x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf("两个解:x1=%g,x2=%g\n",x1,x2);}}青岛理工大学课程实验报告课程名称计算机程序设计 (C) 班级软件 111 实验日期姓名赵亚东学号实验成绩实验名称实验二选择结构程序设计实验目的及要求1.掌握赋值语句的使用方法。
2.掌握各种类型数据的输入输出方法,能正确使用各种格式转换符。
3.能正确使用关系运算符及表达式、逻辑运算符及表达式。
4.熟练掌握if语句,学会使用if-else语句设计双分支和多分支结构程序。
5.熟练掌握switch语句的特点,学会使用switch语句设计多分支结构程序。
实验环境Visual ++ Windows 7实验内容3.编写程序,根据输入的学生成绩,给出相应的等级。
实验四 LR(1)分析法
实验四LR(1)分析法实验学时:2实验类型:验证实验要求:必修一、实验目的构造LR(1)分析程序,利用它进行语法分析,判断给出的符号串是否为该文法识别的句子,了解LR(K)分析方法是严格的从左向右扫描,和自底向上的语法分析方法。
二、实验内容对下列文法,用LR(1)分析法对任意输入的符号串进行分析:(1)E- E+T(2)E- E—T(3)T- T*F(4)T- T/F(5)F- (E)(6)F- i三、LR(1)分析法实验设计思想及算法(1)总控程序,也可以称为驱动程序。
对所有的LR分析器总控程序都是相同的。
(2)分析表或分析函数,不同的文法分析表将不同,同一个文法采用的LR分析器不同时,分析表将不同,分析表又可以分为动作表(ACTION)和状态转换(GOTO)表两个部分,它们都可用二维数组表示。
(3)分析栈,包括文法符号栈和相应的状态栈,它们均是先进后出栈。
分析器的动作就是由栈顶状态和当前输入符号所决定。
LR分析器由三个部分组成:◆其中:SP为栈指针,S[i]为状态栈,X[i]为文法符号栈。
状态转换表用GOTO[i,X]=j表示,规定当栈顶状态为i,遇到当前文法符号为X时应转向状态j,X为终结符或非终结符。
◆ACTION[i,a]规定了栈顶状态为i时遇到输入符号a应执行。
动作有四种可能:(1)移进:action[i,a]= Sj:状态j移入到状态栈,把a移入到文法符号栈,其中i,j表示状态号。
(2)归约:action[i,a]=rk:当在栈顶形成句柄时,则归约为相应的非终结符A,即文法中有A- B的产生式,若B的长度为R(即|B|=R),则从状态栈和文法符号栈中自顶向下去掉R个符号,即栈指针SP减去R,并把A移入文法符号栈内,j=GOTO[i,A]移进状态栈,其中i为修改指针后的栈顶状态。
(3)接受acc:当归约到文法符号栈中只剩文法的开始符号S时,并且输入符号串已结束即当前输入符是'#',则为分析成功。
2011C语言教学日历1
26
实验五指针的应用(一)—指向变量的指针的应用
实验
27
8.4指向结构体类型数据的指针8.5结构体与函数
8.6链表8.7共用体
理论
P206(1)
28
实验五指针的应用(二)—指向数组的指针的应用
实验
14
29
第9章文件的操作与位运算
理论
30
实验五指针的应用(三)—指向字符串的指针的应用
实验
31
机动
32
理论
P102(3)(6)
P103(7)(9)
10
实验二程序流程控制应用(三)—循环嵌套的应用
实验Байду номын сангаас
6
11
第5章函数与宏定义5.1函数的概念5.2内部函数与外部函数
理论
12
实验三函数与宏定义的应用(一)—函数的定义与调用
实验
7
13
5.3递归函数的设计和调用5.4预处理5.5程序范例
理论
P138(1)(16)
14
实验三函数与宏定义的应用(二)—函数的递归的应用
实验
8
15
第6章数组6.1~6.3
理论
16
实验三函数与宏定义的应用(三)—宏定义的应用
实验
9
17
6.4字符数组6.5数组作为函数的参数6.6程序范例
理论
P167(6)(7)
18
实验四数组的应用(一)—一维数组的应用
实验
10
19
第7章指针7.1~7.2
理论
20
实验四数组的应用(二)—二维数组的应用
实验
11
21
7.3指针与数组7.4指针与字符串
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解决方案:
采用随机数来模拟掷筛子的过程,采用循环,循环360000次
.
08133608信息安全13-3秦雷雷
2013-12-11
测试用例输出:MultiClass
解决方案:采用strcat函数实现。
7)
问题:
编写一个程序模拟掷两次筛子,计算两次投掷结果之和。(两个值之和应该在2到12之间,其中7是出现频率最多的值)。程序实现掷两个筛子36000。用一个一维数组记录每种和值的出现次数。用表格的形式打印结果。同时,还要确定结果是否合理。例如,有6种组合方式使和为7,因此大约有1/6的投掷结果为7。
解决方案:
用一个二维数组存放5个学生的姓名,再定义一个二维数组存储5位学生4科考试的成绩,编写程序计算并输出每个同学的平均成绩和平均成绩最高的学生姓名和成绩。更好的方法是使用结构体。
6)
问题:
编写一个将两个字符串连接起来的函数(即实现Strcat函数的功能)。
输入:两个字符串
输出:连接之后的字符串
测试用例输入:Multi Class
解决方案:采用冒泡排序或者选择排序法排序。
3)
问题:
找出一个4行5列二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)。
解决方案:
先在每一列中找,再在每一行中找。
4)
解决方案:
有15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的下标,如果该数不在数组中,则输出“No”。
数组和二维数组的定义、初始化、引用;
2.掌握字符数组与字符串的关系以及使用;
3.熟练字符串处理函数的应用;
4.掌握与数组有关的算法(如排序、排序)。
二
1.结合上课内容,独立完成程序设计,并调试程序,要给出测试数据和实验结果。
2.整理上机步骤,总结经验和体会。
3.完成实验报告和上交程序。
解决方案:
每次拿中间的数与要找的数比较,缩小查找范围,依次找下去。
5)
问题:
定义一个二维数组存放5个学生的姓名,再定义一个二维数组存储5位学生4科考试的成绩,编写程序计算并输出每个同学的平均成绩和平均成绩最高的学生姓名和成绩。
输入:5位学生姓名以及每人4科考试成绩
输出:每个同学的平均成绩和平均成绩最高的学生姓名和成绩
三
1)
问题:
水仙花数是指一个n位数( n≥3 ),它的每个位上的数字的n次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
解决方案:
首先计算这是个几位数,然后将各个位上的数分离,计算是否它的每个位上的数字的n次幂之和等于它本身,判断水仙数。
2)
问题:
输入6个实数,要求用选择法进行升序排序并输出排序后的结果。