1、计算机科学与技术第次实验报告docx哈尔滨工程大学程序设计基础实验报告基础实践一姓 名: 班 级:学 号:实验时间 : 2018 年 5 月 10 日成绩哈尔滨工程大学计算机基础课程教学中心实验题目 1:输入两个整数数组,每个数组有五个整数,将两者和并并排列输出。设计思想:定义三个数组 , 将两组数据存储到第三个数组中 , 再用冒泡排序对其由大到小排序并输出。实验代码及注释:#include #include #define N 10/ 宏定义int main()int a5,b5,cN;/ 第一组数据 , 第二组 , 合并数组int i,j,t;/ 循环变量 , 中间变量printf( 输入
2、第一组数据 :n);/ 输入数据for(i=0;i5;i+)scanf(%d,&ai);printf( 输入第二组数据 :n);for(i=0;i5;i+)scanf(%d,&bi);for(i=0;i5;i+)ci=ai;/两组数据合并ci+5=bi;for(i=0;iN-1;i+)/冒泡排序从大到小for(j=0;jN-i-1;j+)if(cjcj+1)t=cj;cj=cj+1;cj+1=t;printf( 合并并由大到小排列后数据为 :n);for(i=0;i10;i+)printf(%dt,ci);/排序 : 冒泡 , 选择 , return 0;验证与结论:总结与心得体会: 数组合并
3、比较简单但要防止数组越界, 数组存储数据是从第 0 位开始,故要多加注意。 冒泡选择是最基础的排序算法必须掌握。实验题目 2:某公司生成 5 种产品,每周记录生产的每种产品数量和销售数量。每个月月末,公司将对其生产规划进行评估。该评估需要以下一个或多个信息。每周生成和销售的数量;所有生产产品的总量;所有销售产品的总量;每种产品生产和销售的总量。假设生产和销售的产品和销售分别用二维数组 M和 S表示,如下所示。其中 Mij 表示第 i 周生产第 j 种产品的数量。 Sij 表示第 i周销售第 j 种产品的数量。假设使用一维数组 C来表示每种产品的价格。其中, Cj 表示第 j 种产品的价格。数组
4、 M、S 和 C 的值都在程序中输入。设计思想:声明四个数组函数:每周生成和销售的数量,所有生产产品的总量,所有销售产品的总量,每种产品生产和销售的总量。然后直接调用使其对主函数中数组值直接改变,最后用循环输出。实验代码及注释:#include #include void money(double mva56,double m56,double c6);/函数声明void sum1(double sweek5,double m56);void sum2(double mpr6,double m56);double sum3(double m5);int main()int i,j;/ 行, 列
5、double M56,S56,C6;/ 第几周生产第几种产品的数量, 第几周销售第几种产品的数量 , 每种产品的价格doubleMvalue56,Svalue56,Mweek5,Sweek5,Mproduct6,Sproduct6;double Mtotal,Stotal;for(i=1;i=4;i+)for(j=1;j=5;j+) printf( 请 输 入 第 %d 周 生 产 第 %d 种 产 品 的 数量:,i,j);scanf(%lf,&Mij);printf( 请 输 入 第 %d 周 销 售 第 %d 种 产 品 的 数量:,i,j);scanf(%lf,&Sij);printf
6、(n);for(j=1;j=5;j+)printf( 请输入第 %d种产品的价格 :,j);scanf(%lf,&Cj);printf(n);money(Mvalue,M,C);/ 调用函数money(Svalue,S,C);sum1(Mweek,Mvalue);sum1(Sweek,Svalue);sum2(Mproduct,Mvalue);sum2(Sproduct,Svalue);Mtotal=sum3(Mweek);Stotal=sum3(Sweek);for(i=1;i=4;i+)for(j=1;j=5;j+)printf( 第 %d 周 生 产 第 %d 种 产 品 的 价值%.2
7、lfn,i,j,Mvalueij);printf( 第 %d 周 销 售 第 %d 种 产 品 的 价值%.2lfn,i,j,Svalueij);printf( 在 本 月 里 生 成 第 %d 种 产 品 的 价值%.2lfn,j,Mproductj);printf( 在 本 月 里 销 售 第 %d 种 产 品 的 价值%.2lfn,j,Sproductj);printf( 在第 %d周生产的产品价值 %.2lfn,i,Mweeki);printf( 在第 %d周所有产品的价值 %.2lfn,i,Sweeki);printf( 在本月里生产所有产品总价值 %.2lfn,Mtotal);pr
8、intf( 在本月里销售所有产品总价值 %.2lfn,Stotal);return 0;void money(double mva56,double m56,double c6)/ 第i 周生产和销售第 j 种产品的价值int i,j;for(i=1;i=4;i+)for(j=1;j=5;j+)mvaij=mij*cj;/ printf( 第 %d 周 生 产 第 %d 种 产 品 的 价值%lfn,i,j,mij*cj);void sum1(double sweek5,double m56)/ 第 i 周生产和销售的产品的价值int i,j;for(i=1;i=4;i+)sweeki=0;/
9、 数组初始化for(j=1;j=5;j+)sweeki=sweeki+mij;void sum2(double mpr6,double m56)/ 在本月生产和销售第j种产品的价值int i,j;for(j=1;j=5;j+)mprj=0;/ 数组初始化for(i=1;i=4;i+)mprj=mprj+mij;double sum3(double m5)/ 在本月里生产和销售所有产品总价值int i;double sum3=0;for(i=1;i=4;i+)sum3=sum3+mi;return sum3;验 证 与 结 论 :总结与心得体会: 数组参数形参实质的本质是指针, 使用数组函数使得
10、代码看起来更加整洁, 可读性更高。当出现大量复制代码时考虑能否用函数统一起来,否则在后期维护上将变得困难许多。实验题目 3:编程将一个字符串插入到另一个字符串的第 n 个位置。设计思想:使用在第给 astrlen 函数计算数组长度,然后使用循环用倒序赋值使 a n 个位置及以后字符向后挪数组 b 长度,再用倒序赋值法将的空位。数组b 赋实验代码及注释:#include #include int main()int n,count1,count2,i,j;/ 位置 , 字符串长度 , 循环变量printf( 输入 n 值:n);scanf(%d,&n);char a20;/ 默认长度为 20ch
11、ar b20;printf( 输入 a:n);scanf(%s,a);printf( 输入 b:n);scanf(%s,b);count1=strlen(a);/ 计算字符串 a 与 b 的长度count2=strlen(b);for(i=count1-1;i=(n-1);i-)/ 倒序赋值 , 使 a 在第 n 个位置及以后字符向后挪 count2 位ai+count2=ai;i=n-1+count2;/ 对 i 重新赋值为 n-1+count2for(j=count2-1;j=0;j-)/倒序赋值将 b 赋给a 空位ai=bj;i-;printf( 新字符串为 :);for(j=0;jco
12、unt1+count2;j+)printf(%c,aj);return 0;验 证 与 结 论 :总结与心得体会:输入字符串后末尾会有一个 0, 在赋值时必须极为小心 , 有可能会使程序提前终止得不到预期的效果,另外利用 strlen 函数计算数组长度时不包括末尾的 0 。实验题目 4:编写一个程序,使输入的一个字符串按反序存放,在主函数中输入输出字符。设计思想:输入字符串存储在 a 数组中 , 利用 strlen 函数计算数组 a 长度 , 再用循环倒序存储在 b 数组中并输出。实验代码及注释:#include #include #define n 100/ 宏定义 n 值为 100int
13、main()char an,bn;/ 定义字符串数组int i,j=0;/ 在数组中存储位置printf( 请输入字符 :n);gets(a);/ 输入字符串i=strlen(a)-1;/ 数组长度减一for(;i=0;i-)/ 倒序输出存储bj=ai;/ 倒序存储printf(%c,ai);j+;return 0;验 证 与 结 论 :总结与心得体会:利用 scanf 函数输入字符串时无法输入空格 , 故用了 gets 函数来输入字符串。实验题目 5:编写程序,从键盘输入一行字符,统计其中英文字母、空格、数字和其他字符的个数。设计思想:输入字符串并存储在 a 数组中,然后将其转换为整型数组存
14、储在数组 b 中,再利用 ASCII 码的范围对其进行统计输出。实验代码及注释:#include #include #define n 200/ 宏定义 n 值为 200int main()char an;/ 定义字符串数组int i,j;/ 循环变量int count1=0,count2=0,count3=0,count4=0;/ 英文字母、空格、数字和其他字符的个数int bn;/ 整型数组printf( 请输入字符 :n);gets(a);/ 输入字符j=strlen(a);/ 将数组 a 的长度赋给 jfor(i=0;ij;i+)bi=ai;/ 将字符转换成 ASCII 码存储在 b 数组中for(i=0;i=65&bi=97&bi=48&bi=57)/ 数字的范围count3+;elsecount4+;printf( 英文字母有 %d个、空格有 %d个、数字有 %d个, 其他字符有 %d个n,count1,count2,count3,count4);/ 输出统计个数return 0;验 证 与 结 论 :总结与心得体会:如果直接对字符串进行统计不好统计 , 故将其转换为整型数组利用ASCII 码进行统计计数,任何字符都有相对应的 ASCII 码值,使用ASCII 码使问题变得简单。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1