实验一:一维寻优法(0.618法)程序设计
Posted yzx-sir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验一:一维寻优法(0.618法)程序设计相关的知识,希望对你有一定的参考价值。
C实验报告六
C程序设计实验报告
实验项目:
-
7.3.1-1 冒泡排序法排序
-
7.3.1-2 选择排序法排序
-
7.3.2-1 杨辉三角
姓名:肖华 实验地点:家 实验时间:2020.05.07
一、实验目的与要求
1、巩固学生对一维数组这种数据结构的理解,增强其程序设计能力
2、巩固学生对二维数组这种数据结构的理解
二、实验内容
1、实验练习:7.3.1-1 冒泡排序法排序
1问题的简单描述:编写程序,利用随机函数产生10 个整数,并按升序排列输出。
2实验代码:
#include "stdio.h" #include "stdlib.h" #include "time.h" sort1(int s[],int n) { int i,j,temp; for(i=0;i<n-1;i++) { for(j=9;j>=i+1;j--) { if(s[j]<s[j-1]) { temp=s[j]; s[j]=s[j-1]; s[j-1]=temp; } } } } main() { int i,a[10]; srand(time(NULL)); printf("随机产生10个整数: "); for(i=0;i<10;i++) a[i]=rand()%100;/*产生百位内的整数,加1则不取零*/ for(i=0;i<10;i++) printf("%d ",a[i]);/*随机产生的数*/ printf(" "); sort1(a,10);/*调用函数*/ printf("排序后的结果: "); for(i=0;i<10;i++) { printf("%d ",a[i]); } }
3问题分析:排序要用到双重循环。外循环用于确定数组中的某个数组元素,内循环则要将该元素与其它的元素进行比较
2、实验练习:7.3.1-2 选择排序法排序
1问题的简单描述:编写程序,利用随机函数产生10 个整数,并按升序排列输出。
2实验代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> void sort2(int s[],int n) { int i,j,k; int temp; for(i=0;i<n-1;i++) { for(k=i,j=i+1;j<=n-1;j++) if(s[k]>s[j]) k=j; if(k!=i) { temp=s[k]; s[k]=s[i]; s[i]=temp; } } } main() { int i,a[10]; srand(time(NULL)); printf("随机产生10个整数: "); for(i=0;i<10;i++) { a[i]=rand()%100;/*产生百位内的整数*/ printf("%d ",a[i]);/*随机产生的数*/ } printf(" "); sort2(a,10); printf("排序后的结果: "); for(i=0;i<10;i++) { printf("%d ",a[i]); } }
3问题分析:
三、实验练习:7.3.2-1 杨辉三角
1问题的简单描述:编写程序,从键盘输人行数,输出指定行数的杨辉三角形。
2实验代码:
#include <stdio.h> main() { int a[50][50],i,j,n; printf("请输入杨辉三角的行数:"); scanf("%d",&n); for(i=1;i<=n;i++) { a[i][i]=1; a[i][1]=1; } for(i=3;i<=n;i++) { for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=1;i<=n;i++) { for(j=1;j<=i;j++) printf("%5d",a[i][j]); printf(" "); } }
3问题分析:开始运行时得出的杨辉三角难以对齐,考虑到字符的长度后得以改正。
三、实验小结(剖析个人得失)
这次的实验内容比较少,在课堂上就基本完成,主要还是冒泡排序法和选择排序法两种方法的使用能够基本掌握。在一维数组和二维数组方面的运用还有所欠缺,双重循环即使是看着流程图也有点绕,容易在一些细微的地方出错,显然是还不够熟练。在学习后面较有难度的指针之前,应先把前面的知识巩固,加深理解,一步一个脚印,这样才能将c语言整体的学好。加油!!!
以上是关于实验一:一维寻优法(0.618法)程序设计的主要内容,如果未能解决你的问题,请参考以下文章