数组实验
第五次实验报告
实验项目:数组实验
姓名:丁哲航 实验时间:2021.6.9 实验地点:一教
一、实验目的与要求
1、掌握一维数组和多维数组的定义和数组元素的引用方法。
2、了解一维数组和多维数组的初始化方法。
3、学习一维数组和多维数组的基本算法。
4、掌握字符数组的定义、初始化方法及其元素的引用方法。
5、掌握C语言提供的对字符串进行处理的基本库函数
二、实验内容
实验7.3.1.1
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void sortl(int s[ ],int n)
{
int i,j;
int 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¸öÕûÊý:\n");
for(i=0;i<10;i++)
{
a[i]=rand();
printf("%d",a[i]);
printf(" ");
}
sortl(a,10);
printf("ÅÅÐòºóµÄ½á¹û:\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
printf(" ");
}
}
问题分析:srand(time(NULL))会产生随机数,冒泡排序会将前一个和后一个进行比较,如果前面的数更大,就将两者进行交换,从第一个数排到最后一个数,从而实现从小到大排序。
实验7.3.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<n-1;i++)
{
k=i;
for(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个整数: \n");
for(i=0;i<10;i++)
{
a[i]=rand();
}
for(i=0;i<10;i++)
printf("%d", a[i]);
printf("\n");
sort2(a[10],10);
printf("排序后的结果:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
问题分析:选择排序和冒泡排序结果相同但过程不同,冒泡排序是将每一个数进行比较,再把小的数放在前面,选择排序则是在位置上对每一个数进行选择,第一个位置就选出所有数中最小的放入,第二个位置就从剩下的数中选出最小的数,以此类推。
实验7.3.2.1
#include"stdio.h"
void main()
{
int a[50][50],i,j,n;
printf("请输入杨辉三角形的行数:\n");
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("%d\t",a[i][j]);
printf("\n");
}
}
问题分析:杨辉三角需要注意算法的设计,其中需要用两个for循环确定行和列的关系,其他部分较简单。
实验7.3.2.2
#include<stdio.h>
int day_tab[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31} };
int day_year(int y,int m,int d)
{
int i,j,s=0;
if(y%4==0&&y%100!=0||y%400==0)
i=1;
else
i=0;
for(j=1;j<m;j++)
s=s+day_tab[i][j];
s=s+d;
return s;
}
main()
{
int y,m,d;
printf("Please Input the year,month and day:\n");
scanf("%d%d%d",&y,&m,&d);
printf("It is this year %d day.",day_year(y,m,d));
}
问题分析:自定义函数的编写有一定困难,注意用if语句判断该年是闰年还是平年,还要注意函数的调用,我在编写代码时出错花了较长时间纠正。
三、实验小结
1.对书本上的知识运用不太熟练,在编写函数的过程中常会出错。经过此次练习可以积累经验,巩固知识。
2.加快了自己打代码的速度和准确率。