实验6数组参考答案.docx

上传人:b****8 文档编号:10042375 上传时间:2023-02-08 格式:DOCX 页数:14 大小:32.02KB
下载 相关 举报
实验6数组参考答案.docx_第1页
第1页 / 共14页
实验6数组参考答案.docx_第2页
第2页 / 共14页
实验6数组参考答案.docx_第3页
第3页 / 共14页
实验6数组参考答案.docx_第4页
第4页 / 共14页
实验6数组参考答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验6数组参考答案.docx

《实验6数组参考答案.docx》由会员分享,可在线阅读,更多相关《实验6数组参考答案.docx(14页珍藏版)》请在冰豆网上搜索。

实验6数组参考答案.docx

实验6数组参考答案

C语言程序设计实验教学(6)

【实验目的】数组的应用是很重要的一章。

通过实验掌握一维数组的主要应用,并理解数组的存储。

对二维数组的处理要比较熟悉。

【实验要求】一维数组的题目要求全面掌握,应用循环结构完成一维数组的输入、处理和输出。

二维数组能够完成简单的数据处理和应用。

【实验课时】8.0

【实验内容】

一维数组:

1、定义一个10个元素的int数组a,输入10个数,并输出。

main()

{inti,a[10];

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

scanf("%d",&a[i]);

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

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

printf("\n");

}

2、用数组来保存Fibonacci数列前20项数值,以每5个数据为一行进行输出。

main()

{inti;longf[20];

f[0]=1;f[1]=1;

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

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

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

{if(i%5==0)printf("\n");

printf("%10ld",f[i]);

}

printf("\n");

}

3、计算整数数组num中的最大值及其所在的下标。

main()

{inti,max,p,a[10];

printf("pleaseenter10data:

\n");

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

scanf("%d",&a[i]);

max=a[0];p=0;

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

if(a[i]>max){max=a[i];p=i;}

printf("maxis:

%d\n",max);

printf("pointis:

%d\n",p+1);

}

4、在包含10个整数的数组中找出最大者,并与第一个元素交换。

main()

{inti,max,p,t,a[10];

printf("pleaseenter10data:

\n");

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

scanf("%d",&a[i]);

printf("outputtheorginalarray:

\n");

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

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

printf("\n");

max=a[0];p=0;

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

if(a[i]>max){max=a[i];p=i;}

t=a[0];a[0]=a[p];a[p]=t;

printf("outputarrayafterswap:

\n");

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

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

printf("\n");

}

5、输出整数数组num中所有大于平均值的数。

main()

{inti,n,num[100];longsum=0;floatave;

printf("enterthenumberofdata(<100):

\n");

scanf("%d",&n);

for(i=0;i

{scanf("%d",&num[i]);

sum+=num[i];}

ave=sum*1.0/n;

printf("ave=%f\n",ave);

printf("thedata(>ave)are:

\n");

for(i=0;i

if((float)num[i]>ave)printf("%5d",num[i]);

printf("\n");

}

6、课本P141习题7.4。

假如数组a中的数是有序的,请将输入的数n插入到a中,要求插入后依然保持有序。

/*thearrayissortedbysmalltobig*/

main()

{inta[20],i,n,k;intpoint;

printf("\npleaseenterthenumberofdata:

(<20)");

scanf("%d",&n);/*输入原始数据的个数*/

for(i=0;i

printf("pleaseenterthenumbertobeinserted:

");

scanf("%d",&k);/*输入要插入的数据*/

for(i=0;i

if(a[i]>k){point=i;break;}

if(i!

=n)

{for(i=n;i>point;i--)a[i]=a[i-1];

a[point]=k;}/*从后向前方式*/

else

a[n]=k;

printf("Thearrayafterinsertis:

\n");

for(i=0;i

printf("\n");

}

7、数组的元素的删除:

从数组中删除指定的元素。

(位置、数据值)

main()

{inti,n,point,a[10]={12,10,23,1,4,45,70,123,65,89};

printf("enterthenumbertobeearsed:

\n");

scanf("%d",&n);

point=-1;/*保存应该删除的位置下标*/

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

if(a[i]==n){point=i;break;}

if(point!

=-1)/*n存在于数组中*/

{for(i=point;i<10;i++)

a[i]=a[i+1];/*point开始的元素逐个前移,从前向后方式*/

a[9]=0;}

else

printf("%disnotexist!

\n",n);

printf("outputthearrayafterearse:

\n",n);

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

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

printf("\n");

}

8、统计具有10个元素的自然数数组中的奇数个数。

main()

{inti,num[10],count=0;

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

{printf("enterNO%d:

",i+1);/*给予输入提示*/

scanf("%d",&num[i]);

if(num[i]%2!

=0)count++;}

printf("Countis:

%d\n",count);

}

9、实现对n个数的数列从小到大排序。

(选择法)

main()

{inti,j,n,point,a[100];inttemp;

printf("enterthenumber:

\n");

scanf("%d",&n);

for(i=0;i

for(i=0;i

{point=i;/*假定第i趟中最小数的位置是i*/

for(j=i+1;j

if(a[j]

if(point!

=i){temp=a[i];a[i]=a[point];a[point]=temp;}

}

printf("\nthesortednumbesare:

\n");

for(i=0;i

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

printf("\n");

}

10、查找:

实现对n个数的进行查找。

(顺序查找、折半查找)

顺序查找程序:

main()

{inta[20],i,n,k;intpoint;

printf("pleaseenterthenumberofdata:

(<20)");

scanf("%d",&n);/*输入原始数据的个数*/

for(i=0;i

printf("pleaseenterthenumbertobelocated:

");

scanf("%d",&k);/*输入要查找的数据*/

for(i=0;i

if(a[i]==k){point=i;break;}

if(i!

=n)

printf("theindexis:

%d",point+1);

else

printf("Thedataisnotinthearray!

");

}

折半查找程序:

main()

{inta[20],k,i,n,h,t,mid;intpoint;

printf("pleaseenterthenumberofdata:

(<20)");

scanf("%d",&n);/*输入原始数据的个数*/

for(i=0;i

从小到大*/

printf("pleaseenterthenumbertobelocated:

");

scanf("%d",&k);/*输入要查找的数据*/

h=0;t=n-1;

while(t>=h)

{mid=(h+t)/2;

if(a[mid]==k){point=mid;break;}

elseif(a[mid]>k)h=mid+1;

elset=mid-1;}

if(h<=t)

printf("Theindexofdatais:

",point+1);

else

printf("Thedataisnotinthearray!

");

}

二维数组:

11、有一个4×4的矩阵,编程将行和列的元素互换,输出互换后的矩阵。

main()

{inta[4][4],i,j,t;

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

for(j=0;j<4;j++)scanf("%d",&a[i][j]);

printf("outputarraya:

beforechange:

\n");

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

{for(j=0;j<4;j++)printf("%5d",a[i][j]);

printf("\n");}

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

for(j=0;j

{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}

printf("outputarraya:

afterchange:

\n");

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

{for(j=0;j<4;j++)printf("%5d",a[i][j]);

printf("\n");}

}

12、初始化一个4×4矩阵,结果如下:

100-1

01-10

0-110

-1001

即主对角线元素值为1,副对角线元素值为-1,其余元素为零。

main()

{inta[4][4],i,j;

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

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

if(i==j)a[i][j]=1;

elseif(i+j==3)a[i][j]=-1;

elsea[i][j]=0;

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

{for(j=0;j<4;j++)

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

printf("\n");}

}

13、假如数组a有4行4列的整数,请输出每行的最大者。

main()

{inta[4][4],i,j,max;

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

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

scanf("%d",&a[i][j]);

printf("outputarraya:

\n");

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

{for(j=0;j<4;j++)

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

printf("\n");}

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

{max=a[i][0];

for(j=1;j<4;j++)

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

printf("maxofline%dis%d\n",i+1,max);}

}

14、使用上述数组,计算每行的平均值,保留2位小数。

main()

{inta[4][4],i,j,s;

floatave;

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

{s=0;

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

{scanf("%d",&a[i][j]);

s=s+a[i][j];}

ave=s*1.0/4;

printf("averofline%dis%.2f\n",i+1,ave);}

}

字符数组:

15、P153习题7.3,7.6,7.8,7.10。

(见习题解答)

用户从键盘输入一个字符串(不包含空格),当输入回车时认为输入结束,统计输入字符串中小写英文字母、大写英文字母、数字字符、其他字符的个数。

#include"stdio.h"

main()

{chara[80],i,c1=0,c2=0,c3=0,c4=0;

gets(a);i=0;

while(a[i]!

='\0')

{if(a[i]>='a'&&a[i]<='z')c1+=1;

elseif(a[i]>='A'&&a[i]<='Z')c2+=1;

elseif(a[i]>='0'&&a[i]<='9')c3+=1;

elsec4+=1;

i++;}

printf("numberoflowerlettersare:

%d\n",c1);

printf("numberofupperlettersare:

%d\n",c2);

printf("numberofdigitare:

%d\n",c3);

printf("numberofotherlettersare:

%d\n",c4);

}

16、将字符串s1从第m个字符开始剩余的所有字符,送入字符数组s2中。

#include"stdio.h"

main()

{chars1[80],s2[80],i,j,m;

gets(s1);

scanf("%d",&m);

i=m-1;j=0;

while(s1[i]!

='\0')

{s2[j]=s1[i];

j++;i++;}

s2[j]='\0';

puts(s1);

puts(s2);

}

17、输入两个字符串,比较大小。

#include"stdio.h"

main()

{chars1[80],s2[80],i;

gets(s1);gets(s2);

i=0;

while(s1[i]==s2[i]&&s1[i]!

='\0'&&s2[i]!

='\0')

i++;

if(s1[i]

elseif(s1[i]>s2[i])printf("s1>s2\n");

elseprintf("s1=s2\n");

}

18、输入一个字符串,将其中的小写字母转换成大写字母,输出转换后的字符串。

#include"stdio.h"

main()

{chars[80],i;

gets(s);

i=0;

while(s[i]!

='\0')

{if(s[i]>='a'&&s[i]<='z')

s[i]=s[i]-32;

i++;}

puts(s);

}

19、输入一个字符串,删除其中的空格后输出。

#include"stdio.h"

#include"string.h"

main()

{chars[80],i,j,length;

gets(s);

length=strlen(s);

i=0;

while(i

{if(s[i]=='')

{for(j=i;j

s[j]=s[j+1];

s[length-1]='\0';

length-=1;}

i++;}

puts(s);

}

20、输入一行字符,统计其中有多少个单词,单词之间用空格分隔。

#include"stdio.h"

main()

{chars[80],i,num;

gets(s);i=0;num=0;

while(s[i]!

='\0')

{if(i==0&&s[i]!

='')num=num+1;

elseif(s[i]==''&&s[i+1]!

=''&&s[i+1]!

='\0')

{num+=1;}

i++;}

printf("%d\n",num);

}

21、P154习题7.15。

参见习题解答。

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

当前位置:首页 > 求职职场 > 面试

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

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