实验四 数组应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四数组应用
一、实际学时
4学时。
二、实验目的
1.掌握一维数组和二维数组定义、赋值和输入输出的方法。
2.掌握字符数组和字符串函数的使用。
3.掌握与数组有关的算法(特别是排序算法)。
三、实验内容
【习题1】已有一排好序的数组a,现输入一个数,要求按原来排序的规律将它插入数
#include
int main()
{
int i,j,k,num;
int a[11]={12,15,21,25,27,35,36,39,48,52};
printf("Input n:");
scanf("%d",&num);
if(num>a[9]) //比数组的最后一个元素大,则插入到数组最后一个元素的后面 {
a[10]=num;
}
else
{
for(i=0;i<=9;i++)
{
if(a[i]>num)//当第i个元素比插入元素大,则从第i到最后一个元素要后移
{
for(j=9;j>=i;j--)
a[j+1]=a[j];
a[i]=num; //插入到第i个元素的位置
break;
}
}
}
printf("Output array a:\n");
for(i=0;i<=9;i++)
printf("%d ",a[i]);
printf("\n");
}
参考程序:
#include
void main()
{
int count=0;//初始化
printf("请输入一个字符串:");
char c;
while ((c=getchar())!='\n')
{
if(c>'0'&&c<'9')
count++;
}
printf("字符串中数字字符的个数为:%d\n",count);
}
【习题3】将一个数组中的值按逆序重新存放。例如原来顺序为11,12,13,14,15,16,17,18,19。要求改为19,18,17,16,15,14,13,12,11。
参考程序:
#include
void main()
{
int i,j,t;
int a[9]={11,12,13,14,15,16,17,18,19};
printf("Originate array:");
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\n");
for(i=0,j=8;i { t=a[i]; a[i]=a[j]; a[j]=t; } printf("Inverted array:"); for(i=0;i<9;i++) printf("%d ",a[i]); printf("\n"); } 【思考题】输入一个字符串,然后将其逆序存放。 参考程序: #include #include void main() { char a[100],t; int i,len,j; printf("请输入一个字符串:"); gets(a); len=strlen(a); for(i=0,j=len-1;i { t=a[i]; a[i]=a[j]; a[j]=t; } printf("\n转置后的字符串为:"); puts(a); printf("\n"); } 参考程序: #include #include void main() { char a[100],b[30]; int i,j; printf("Enter string NO. 1:"); gets(a); printf("Enter string NO. 2:"); gets(b); for(j=0,i=strlen(a);b[j]!='\0';i++,j++) { a[i]=b[j]; } a[i]='\0'; printf("Connected string NO. 1:"); printf("%s\n",a); } 【习题5】下面程序分别用选择法和冒泡法对数组a[M]按从大到小的顺序进行排序,请填空。 选择法排序程序: #include #define M 6 void main() { int i,j,max; float temp,a[M]; printf("Input array a:\n"); for(i=0;i scanf("%f",&a[i]); for(i=0;i<=M-2;i++) { max=i;