(1)掌握一维和多维数组的定义和数组元素的引用方法
(2)了解一维和多维数组初始化的方法
(3)学习一维和多维数组的基本算法
(4)掌握字符数组的定义、初始化方法及其元素的引用方法
(5)掌握C语言提供的对字符串进行处理的基本库函数
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.实验结果
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.实验结果
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是一个伪随机数。在杨辉三角中,跟之前三角形的输出有点类似,但还存在算法的问题。
原文:https://www.cnblogs.com/zqpyn1003-0525/p/12845012.html