一、实验目的
1.掌握一维数组和二维数组的定义、赋值和输入输出的方法;
2.掌握字符数组和字符串函数的使用;
3.掌握与数组有关的算法(特别是排序算法)。
二、实验内容
编程序,然后上机调试运行。
1.用筛选法求100之内的素数。
2.用选择法对10个整数排序。
3.打印出以下的杨辉三焦形(要求打印出10行)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
: : : : : :
4. 有一行电文,已按下面规律译成密码:
A→Z a→z
B→Y b→y
C→X c→x
: :
即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。要求编程序将密码译回原文,并打印出密码和原文。
5.思考题
随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
三、实验记录
3.1 用筛选法求100之内的素数
(1)源代码
# include <stdio.h>
int main(void)
{
int a[100];
int i,j;
for(i=0;i<=99;i++)
a[i] = i+1;
printf("The mersennes are:\n");
for(i=0;i<=99;i++)
{
for(j=2;j<a[i];j++)
{
if(a[i]%j==0)
break;
}
if(j==a[i])
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
(2)运行结果截图
3.2 用选择法对10个整数排序
(一)源代码
# include <stdio.h>
int main(void)
{
int a[10];
int i,j,min,minl,t;
printf("Please enter the data(10):\n");
for(i=0;i<10;i++)
scanf("%d",a+i);
for(i=0;i<10;i++)
{
min=100;
for(j=i;j<10;j++)
{
if(a[j]<min)
{
min=a[j];
minl=j;
}
}
t=a[i];
a[i]=a[minl];
a[minl]=t;
}
printf("The sorted numbers are:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
(2)运行结果截图
3.3 打印杨辉三角形
(1)源代码
# include <stdio.h>
int main(void)
{
int a[10][10];
int i,j;
for(i=0;i<10;++i)
{
for(j=0;j<=i;++j)
{
if(j==0||j==i)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=0;i<10;++i)
{
for(j=0;j<=i;++j)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
(2)运行结果截图
3.4 密码问题
(1)源代码
# include <stdio.h>
int main(void)
{
char str[100];
int i;
printf("Please enter the secret code:\n");
gets(str);/*获取密码。*/
printf("The secret code is:\n");
puts(str);
for(i=0;str[i]!='\0';i++)
{
if((str[i]>='A')&&(str[i]<='Z'))
str[i]=155-str[i];
else if((str[i]>='a')&&(str[i]<='z'))
str[i]=219-str[i];
else
str[i]=str[i];
}
printf("The orginal code is:\n");
printf("%s\n",str);
return 0;}
(2)程序运行截图
4.5 思考题
(1)源代码
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
int main(void)
{
int i,min,max=0,sum=0;
float aveg;
int a[20];
srand((int)time(NULL));//随机种子
for(i=0;i<20;i++)
a[i] = rand()%41+10;//10~50的随机数
for(i=0;i<20;i++)/*求该数组中的最大值*/
{
if(a[i]>max)
max=a[i];
}
min=max;
for(i=0;i<20;i++)/*求该数组中的最小值*/
{
if(a[i]<min)
min=a[i];
}
for(i=0;i<20;i++)/*求数组元素之和*/
sum=sum+a[i];
aveg=sum/(20.0);/*求数组中元素的平均值*/
for(i=0;i<20;i++)/*输出数组中的各个元素*/
printf("%d ",a[i]);
printf("\n");
printf("sum=%d,aveg=%f,max=%d,min=%d",sum,aveg,max,min);
printf("\n");
return 0;
}
(2)运行结果截图