首页 > 编程语言 > 详细

C语言程序设计(实验六)

时间:2020-05-10 11:58:47      阅读:64      评论:0      收藏:0      [点我收藏+]

C语言程序实验报告

姓名:邹琼
实验地点:家
实验时间:2020年5月7日
实验项目:
(1)7.3.1实验练习1
(2)7.3.1实验练习2
(3)7.3.2杨辉三角(等腰三角形)

一、实验目的

(1)掌握一维和多维数组的定义和数组元素的引用方法
(2)了解一维和多维数组初始化的方法
(3)学习一维和多维数组的基本算法
(4)掌握字符数组的定义、初始化方法及其元素的引用方法
(5)掌握C语言提供的对字符串进行处理的基本库函数

二、实验内容

(1)7.3.1实验练习1:写一个函数,对用随机函数产生的10个整数按从小到大的顺序排列(冒泡排序)

1.流程图
技术分享图片
2.实验代码:

#include"stdio.h"
#include"stdlib.h"
#include"time.h"
void sort1(int s[],int n)
{
	int i,j;
	int temp;
	for(i=1;i<=9;i++) 
	for(j=9;j>=0;j--)
	if(s[j]<s[j-1])
	{
		temp=s[j];
		s[j]=s[j-1];
		s[j-1]=temp;
	}
}
int main()
{
	int i,a[10];
	srand(time(NULL));
	printf("随机产生10个整数:\n");
	for(i=0;i<10;i++)
	a[i]=rand()%100;/*用于取100以内的整数*/
	for(i=0;i<10;i++)
	printf("%d ",a[i]);
	printf("\n");
	sort1(a,0);
	printf("排序后的10个整数:\n");
	for(i=0;i<10;i++)
	printf("%d ",a[i]);
}

3.问题的简单描述:①交换数组元素;②随机数的产生;③排序函数的调用;
4.问题分析:①定义中间变量来实现数组元素的交换;②通过srand(time(NULL));printf("随机产生10个整数:\n");来给出10个100以内的整数(a[i]=rand()%100;),rand是伪随机函数;③编写排序函数sort1(),再使用循环语句将排好序的10个数依次输出;
5.实验结果
技术分享图片

(2)7.3.1实验练习2:写一个函数,对用随机函数产生的10个整数按从小到大的顺序排列(选择排序)

1.流程图
技术分享图片
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<10;i++)
	{
		k=i;
		for(j=i+1;j<10;j++)
		{
			if(s[j]<s[k])
				k=j;
			if(j>n-1)
				break;
		}
		if(k!=i)
		{
		    temp=s[k];
		    s[k]=s[i];
		    s[i]=temp;
	   }
	}
}
int main()
{
	int i,a[10];
	srand(time(NULL));
	printf("随机产生10个整数:\n");
	for(i=0;i<10;i++)
	a[i]=rand()%100;
	for(i=0;i<10;i++)
	printf("%d ",a[i]);
	printf("\n");
	sort2(a,0);
	printf("排序后的10个整数:\n");
	for(i=0;i<10;i++)
	printf("%d ",a[i]);
}

3.问题的简单描述:①选择排序法;②数组元素交换;
4.问题分析:①选择排序法是每一趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录;②利用中间变量(如上);
5.实验结果
技术分享图片

(3)7.3.2实验练习1:输出指定函数的杨辉三角

1.流程图
技术分享图片
2.实验代码:

#include<stdio.h>
void main()
{
	int a[50][50],i,j,n;
	printf("请输入杨辉三角的行数:");
	scanf("%d",&n);
	getchar();
	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("%d ",a[i][j]);
		printf("\n");
	}
}

3.实验结果
技术分享图片
4.实验代码(等腰三角形)

#include<stdio.h>
void main()
{
	int a[50][50],i,j,n;
	printf("请输入杨辉三角的行数:");
	scanf("%d",&n);
	getchar();
	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<=n-i;j++)
		printf(" ");
		for(j=1;j<=i;j++)
			printf("%d ",a[i][j]);
		printf("\n");
	}
}

5.实验结果
技术分享图片
6.问题的简单描述:①二维数组的运用;②杨辉三角的构成;(不太熟悉,做的时候有点问题)③等腰三角形时空格的输出;
7.问题分析:①在二维数组中,i控制行,j控制列,再利用循环语句来输出数列;②杨辉三角由两部分构成,一个是1的部分,另一个是数列的部分,这样看的话,逻辑比较清晰(我一开始写的时候有点迷);③在原有的代码基础上,加上一条循环语句for(j=1;j<=n-i;j++)printf(" ");来输出空格,从而得到等腰三角形。

三、实验小结

通过这次的实验,发现本章的内容学的也不怎么好,之前的知识点也忘记了好多,还是得要多多复习。本次的实验主要围绕一维数组和二维数组的使用展开,在第一个实验中学到可通过srand(time(NULL));,给出随机种子,而rand是一个伪随机数。在杨辉三角中,跟之前三角形的输出有点类似,但还存在算法的问题。

C语言程序设计(实验六)

原文:https://www.cnblogs.com/zqpyn1003-0525/p/12845012.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!