数组编程练习带答案.docx

上传人:b****7 文档编号:9385859 上传时间:2023-02-04 格式:DOCX 页数:34 大小:18.17KB
下载 相关 举报
数组编程练习带答案.docx_第1页
第1页 / 共34页
数组编程练习带答案.docx_第2页
第2页 / 共34页
数组编程练习带答案.docx_第3页
第3页 / 共34页
数组编程练习带答案.docx_第4页
第4页 / 共34页
数组编程练习带答案.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

数组编程练习带答案.docx

《数组编程练习带答案.docx》由会员分享,可在线阅读,更多相关《数组编程练习带答案.docx(34页珍藏版)》请在冰豆网上搜索。

数组编程练习带答案.docx

数组编程练习带答案

数组编程练习

1、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

解:

#include

#include

#defineN10

intmain()

{

inta[N],i;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

return0;

}

2、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

求该数组的最大值、最小值、总和和平均值并输出。

解:

#include

#include

#defineN10

intmain()

{

inta[N],i,max,min,sum;

floatave;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

max=a[0];

min=a[0];

sum=0;

for(i=0;i

{

sum=sum+a[i];

if(a[i]>max)

{

max=a[i];

}

if(a[i]

{

min=a[i];

}

}

ave=(float)sum/N;

printf("max=%d,min=%d,sum=%d,ave=%.2f\n",max,min,sum,ave);

return0;

}

3、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

按照升序排列并输出。

解:

(冒泡法)

#include

#include

#defineN10

intmain()

{

inta[N],i,j,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("thesortedarraya:

\n");

for(i=0;i

printf("%4d",a[i]);

printf("\n");

return0;

}

另解:

(选择法)

#include

#include

#defineN10

intmain()

{

inta[N],i,j,min_i,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=0;i

{

min_i=i;

for(j=i+1;j

{

if(a[j]

{

min_i=j;

}

}

t=a[i];

a[i]=a[min_i];

a[min_i]=t;

}

printf("thesortedarraya:

\n");

for(i=0;i<10;i++)

{

printf("%4d",a[i]);

}

printf("\n");

return0;

}

另解:

(比较法)

#include

#include

#defineN10

intmain()

{

inta[N],i,j,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=i;j

{

if(a[j]

{

t=a[i-1];

a[i-1]=a[j];

a[j]=t;

}

}

}

printf("thesortedarraya:

\n");

for(i=0;i<10;i++)

{

printf("%4d",a[i]);

}

printf("\n");

return0;

}

4、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

编程将逆序数组输出。

解:

#include

#include

#defineN10

intmain()

{

inta[N],b[N],i,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=0;i

{

b[i]=a[N-1-i];

}

printf("thenewarray:

\n");

for(i=0;i

{

printf("%4d",b[i]);

}

printf("\n");

return0;

}

另解:

#include

#include

#defineN10

intmain()

{

inta[N],i,t;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=0;i

{

t=a[i];

a[i]=a[N-1-i];

a[N-1-i]=t;

}

printf("thenewarray:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

return0;

}

5、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

按照升序排列并输出。

再输入一个数,按照原来的规律将其插入并输出。

#include

#include

#defineN10

intmain()

{

inta[N+1],i,j,t,n;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("thesortedarraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

printf("pleaseinputn:

\n");

scanf("%d",&n);

if(n>a[N-1])

{

a[N]=n;

}

else

{

for(i=0;i

{

if(a[i]>n)

{

for(j=N;j>i;j--)

{

a[j]=a[j-1];

}

a[j]=n;

break;

}

}

}

printf("thesecondsortedarraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

return0;

}

6、用数组输出Fibonacci数列的前40项

解:

#include

#defineN40

intmain()

{

inti;

intf[N]={1,1};

for(i=2;i

{

f[i]=f[i-2]+f[i-1];

}

for(i=0;i

{

printf("%12d",f[i]);

if((i+1)%5==0)

{

printf("\n");

}

}

return0;

}

7、用筛选法求100以内的素数

解:

#include

#include

#defineN100

intmain()

{

inta[N+1],i,j,n=0;

for(i=1;i<=N;i++)

{

a[i]=i;

}

a[1]=0;

for(i=2;i<=N;i++)

{

for(j=2;j<=(int)sqrt(i);j++)

{

if(a[i]%j==0)

{

a[i]=0;

}

}

}

for(i=1;i<=N;i++)

{

if(a[i]!

=0)

{

printf("%4d",a[i]);

n++;

if(n%10==0)

{

printf("\n");

}

}

}

printf("\n");

return0;

}

8、产生一个由15个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。

按照升序排列并输出。

再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,输出找不到。

解:

#include

#include

#defineN15

intmain()

{

inta[N],i,j,t,n;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("thesortedarraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

printf("pleaseinputntolookfor:

\n");

scanf("%d",&n);

if(na[N-1])

{

printf("notfound.\n");

}

else

{

for(i=0;i

if(a[i]==n)

{

printf("hasfound,itspositionis%d.\n",i);

break;

}

if(i==N)

printf("notfound.\n");

}

return0;

}

另解:

#include

#include

#defineN15

intmain()

{

inta[N],i,j,t,n,low=0,high=N-1,mid,flag=1;

for(i=0;i

{

a[i]=rand()%100;

}

printf("arraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

for(i=1;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("thesortedarraya:

\n");

for(i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

printf("pleaseinputntolookfor:

\n");

scanf("%d",&n);

if(na[N-1])

{

printf("notfound.\n");

}

else

{

do

{

mid=(low+high)/2;

if(a[mid]==n)

{

printf("hasfound,itspositionis%d.\n",mid);

flag=0;

}

elseif(a[mid]>n)

{

high=mid-1;

}

else

{

low=mid+1;

}

}while(flag&&high>=low);

}

if(low>high)

{

printf("notfound.\n");

}

return0;

}

9、将一个二维数组(3行4列)的行和列互换(转置),存到另一个二维数组(4行3列)中并输出。

解:

#include

#include

#defineM3

#defineN4

intmain()

{

inta[M][N],b[N][M],i,j;

for(i=0;i

{

for(j=0;j

{

a[i][j]=rand()%100;

}

}

printf("arraya:

\n");

for(i=0;i

{

for(j=0;j

{

printf("%4d",a[i][j]);

}

printf("\n");

}

for(i=0;i

{

for(j=0;j

{

b[j][i]=a[i][j];

}

}

printf("arrayb:

\n");

for(i=0;i

{

for(j=0;j

{

printf("%4d",b[i][j]);

}

printf("\n");

}

return0;

}

10、编程输出杨辉三角(要求输出10行)

解:

#include

#defineN10

intmain()

{

inta[N][N],i,j;

for(i=0;i

{

a[i][0]=1;

a[i][i]=1;

}

for(i=2;i

{

for(j=1;j

{

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

}

printf("yanghuitriangle:

\n");

for(i=0;i

{

for(j=0;j<=i;j++)

{

printf("%6d",a[i][j]);

}

printf("\n");

}

return0;

}

11、编程输入5阶魔方阵。

解:

#include

#defineN5

intmain()

{

inti,j,k,a[N][N]={0};

i=0;

j=N/2;

a[i][j]=1;

 

for(k=2;k<=N*N;k++)

{

i=i-1;

j=j+1;

if(i==-1)

{

if(j==N)

{

i=i+2;

j=j-1;

}

else

{

i=N-1;

}

}

if(j==N)

{

j=0;

}

if(a[i][j]==0)

{

a[i][j]=k;

}

else

{

i=i+2;

j=j-1;

a[i][j]=k;

}

}

printf("%dmagicsquare:

\n",N);

for(i=0;i

{

for(j=0;j

{

printf("%4d",a[i][j]);

}

printf("\n");

}

return0;

}

12、找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。

可能没有鞍点。

解:

#include

#defineM4

#defineN5

intmain()

{

inti,j,k,max,maxj,flag;

inta[M][N]={{1,2,3,4,5,},{2,4,6,8,10},{3,6,9,12,15},{4,8,12,16,20}};

for(i=0;i

{

for(j=0;j

{

printf("%4d",a[i][j]);

}

printf("\n");

}

for(i=0;i

{

max=a[i][0];

maxj=0;

for(j=0;j

{

if(a[i][j]>max)

{

max=a[i][j];

maxj=j;

}

}

flag=1;

for(k=0;k

{

if(a[k][maxj]

{

flag=0;

}

}

if(flag)

{

printf("saddlepointisa[%d][%d]=%d\n",i,maxj,max);

break;

}

}

if(!

flag)

{

printf("nosaddlepoint.\n");

}

return0;

}

13、输入一行字符,统计大写字母、小写字母、数字、空格以及其他字符个数。

解:

#include

#defineN100

intmain()

{

inti,upp,low,dig,spa,oth;

charc[N];

upp=0;

low=0;

dig=0;

spa=0;

oth=0;

printf("pleaseinputalinecharacters:

\n");

gets(c);

for(i=0;c[i]!

='\0';i++)

{

if(c[i]>='A'&&c[i]<='Z')

{

upp++;

}

elseif(c[i]>='a'&&c[i]<='z')

{

low++;

}

elseif(c[i]>='0'&&c[i]<='9')

{

dig++;

}

elseif(c[i]=='')

{

spa++;

}

else

{

oth++;

}

}

printf("uppercase:

%2d\n",upp);

printf("lowercase:

%2d\n",low);

printf("digit:

%2d\n",dig);

printf("space:

%2d\n",spa);

printf("other:

%2d\n",oth);

return0;

}

14、有一行电文,按照下列规律译成密码:

AZaz

BYby

CXcx

……

非字母不变。

解:

#include

#defineN100

intmain()

{

inti;

charc1[N],c2[N];

printf("pleaseinputamessage:

\n");

gets(c1);

for(i=0;c1[i]!

='\0';i++)

{

if(c1[i]>='A'&&c1[i]<='Z')

{

c2[i]=155-c1[i];

}

elseif(c1[i]>='a'&&c1[i]<='z')

{

c2[i]=219-c1[i];

}

else

{

c2[i]=c1[i];

}

}

c2[i]='\0';

printf("ciphercode:

\n

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1