实验四 数组应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

for(j=i+1;j

if(a[max]

max=j;

temp=a[i];

a[i]=a[max];

a[max]=temp;

}

printf("After sorted array a:\n"); for(i=0;i

printf("%-7.2f",a[i]);

printf("\n");

}

冒泡法排序程序:

#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++)

for(j=0;j

相关文档
最新文档