第5章数组 习题答案.docx

上传人:b****5 文档编号:3840035 上传时间:2022-11-25 格式:DOCX 页数:16 大小:17.25KB
下载 相关 举报
第5章数组 习题答案.docx_第1页
第1页 / 共16页
第5章数组 习题答案.docx_第2页
第2页 / 共16页
第5章数组 习题答案.docx_第3页
第3页 / 共16页
第5章数组 习题答案.docx_第4页
第4页 / 共16页
第5章数组 习题答案.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

第5章数组 习题答案.docx

《第5章数组 习题答案.docx》由会员分享,可在线阅读,更多相关《第5章数组 习题答案.docx(16页珍藏版)》请在冰豆网上搜索。

第5章数组 习题答案.docx

第5章数组习题答案

1:

/*编写程序,用筛选法求100之内的素数。

*/

#include

voidmain()

{

inti,j;

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

{

for(j=2;j

{

if(i%j==0)

break;

}

if(j==i)

printf("%d\t",i);

}

}

2/*输入一整数,并能逐位正序或反序输出。

*/

#include

voidmain()

{

intnum,a,i=0;

printf("输入一个数字\n");

scanf("%d",&num);

printf("正序输出则输入1反序输出输入0\n");

scanf("%d",&a);

switch(a)

{

case1:

printf("%d",num);break;

case0:

while(0!

=num)

{

i=i*10+num%10;

num=num/10;

}

printf("%d",i);

break;

default:

printf("请输入0和1!

!

\n");

break;

}

}

3/*对于一个4X4矩阵逆时针旋转90度*/

#include

voidmain()

{

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

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

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

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

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

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

{

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

}

printf("逆时针旋转90度后:

\n");

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

{

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

{

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

}

printf("\n");

}

}

4:

/*将一个数组中的数据奇数放到前面,偶数放到后面。

*/

#include

voidmain()

{

inta[9],b[9],i,j=0,m=0;

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

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

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

{

if(a[i]%2!

=0)

{

b[j]=a[i];

j++;

}

else

{

b[8-m]=a[i];

m++;

}

}

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

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

}

5:

/*输入一个4X4的矩阵,求四个边上元素的和。

*/

#include

voidmain()

{

inti,j,a[4][4],sum;

printf("输入一个4阶方阵:

\n");

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

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

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

sum=a[0][0]+a[0][3]+a[3][0]+a[3][3];

printf("四个边上元素的和为%d\n",sum);

}

6:

/*输入9个10以内的自然数,将它们组成两个整数,求如何组合得到两个数的成绩最大或最小。

*/

#include

#include

voidmain()

{

intj,k;

inti;

intt;

inta=0,b=0;

intflag=1;

intnum[9];

intmax,max_a,max_b;

intmin,min_a,min_b;

printf("输入9个10以内的自然数:

");

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

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

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

for(k=0;k<8-j;k++)

if(num[k]>num[k+1])

{

t=num[k+1];

num[k+1]=num[k];

num[k]=t;

}

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

{

for(j=8;j>=0;j--)

{

if((i&(int)pow(2.0,j))==0)

a=a*10+num[j];

else

b=b*10+num[j];

}

if(flag)

{

max=a*b;

max_a=a;

max_b=b;

flag=0;

}

if(max

{

max=a*b;

max_a=a;

max_b=b;

}

a=0;

b=0;

}

flag=1;

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

for(k=0;k<8-j;k++)

if(num[k]

{

t=num[k+1];

num[k+1]=num[k];

num[k]=t;

}

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

{

for(j=8;j>=0;j--)

{

if((i&(int)pow(2.0,j))==0)

a=a*10+num[j];

else

b=b*10+num[j];

}

if(flag)

{

min=a*b;

min_a=a;

min_b=b;

flag=0;

}

if(min>a*b)

{

min=a*b;

min_a=a;

min_b=b;

}

a=0;

b=0;

}

printf("最小的数为%dx%d=%d\n",min_a,min_b,min);

printf("最大的数为%dx%d=%d\n",max_a,max_b,max);

}

7:

/*输入一个数组,输出它的区间范围,例如输入1,2,3,4,5,6,7,8,20,21,22,23,输出

1-8,20-23。

*/

#include

voidmain()

#defineM5

{

inta[M],i,j,t,m,k;

for(i=0;i

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

/*把数组从小到大排列*/

for(i=0;i

{

for(j=0;j

{

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

{

t=a[j+1];

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

a[j]=t;

}

}

}

j=0;

for(i=0;i

{

while(a[j]+1==a[j+1])

{

j++;

}

if(j-i!

=0)

{

printf("%d-%d\n",a[i],a[j]);

i=j;

j++;

}

if(j-i==0)

{

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

i=j;

j++;

}

}

}

8:

/*输入一个区间范围,输出数组,例如输入1-8,20-23,输出1,2,3,4,5,6,7,8,20,21,22,23。

*/

#include

voidmain()

{

inta,c;

charb,d;

inti;

printf("输入区间以'.'结束以','分隔,例如1-8,22-30:

");

do

{

scanf("%d%c%d%c",&a,&b,&c,&d);

for(i=a;i<=c;i++)

printf("%d",i);

}

while(d!

='.');

}

10:

/*输入一篇文章,该文章小于1000字符,统计单词的个数,单词是连续的大小写字母组成*/

#include

voidmain()

{

chartext[1000];

intcount=0,i=0;

printf("输入一段文章:

");

gets(text);

while(text[i]!

=0)

{

if((text[i]>='a'&&text[i]<='z')||

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

{

i++;

continue;

}

else

{

i++;

count++;

}

}

printf("有%d个单词",count+1)

}

11:

/*输入一片文章,该文章小于1000字符,对文中内容进行加密,加密方法是A->Z,B->Z…Z->A,a->z…z->a。

*/

#include

voidmain()

{

chari,sum=0,text[1000];

printf("请输入一段文字:

\n");

gets(text);

for(i=0;text[i]!

=0;i++)

{

if(text[i]>=65&&text[i]<=90)

text[i]=155-text[i];

if(text[i]>=97&&text[i]<=122)

text[i]=219-text[i];

}

puts(text);

}

12:

/*编写一个程序,判断输入的数字是否在指定范围内,范围也由用户输入,例如

“100-100000,220000,250000,300000-600000”。

*/

#include

voidmain()

{

inta,b,c;

printf("请输入:

下限-上限,需要判断的数\n");

scanf("%d-%d,%d",&a,&b,&c);

if(c<=b&&c>=a)

printf("%d在范围内",c);

else

printf("%d不在范围内",c);

}

13:

/*编写一个程序,输入一篇文章,该文章小于1000字符,从中将指定字符串换成另外一个。

*/

#include

voidmain()

{

chari,a,b,text[1000];

printf("请输入需要被替换的字符-替换后的字符\n");

scanf("%c-%c",&a,&b);

printf("请输入一段文字\n");

getchar();

gets(text);

for(i=0;text[i]!

=0;i++)

if(text[i]=='a')

text[i]='b';

puts(text);

}

14:

/*读入一个字符串,判断它是否是回文,所谓回文即正序和逆序内容相同的字符串。

*/

#include

#include

voidmain()

{

chari,b,a[1000];

intsum=0;

printf("输入一个字符串\n");

gets(a);

b=strlen(a);

if(b%2==0)

{

for(i=0;i<(b/2);i++)

{

if(a[i]==a[b-1-i])

sum++;

else

break;

}

if(sum==(b/2))

printf("是回文");

else

printf("不是回文");

}

else

{

for(i=0;i<((b-1)/2);i++)

{

if(a[i]==a[b-1-i])

sum++;

else

break;

}

if(sum==((b-1)/2))

printf("是回文");

else

printf("不是回文");

}

}

15:

/*编写一个程序,输入一篇文章,该文章小于1000字符,从中找出出现频率最高的单词。

*/

#include"stdafx.h"

intcheck(char*p)

{

if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z'))

return1;

else

return0;

}

intwordcount(char*text)

{

char*p,*q;

intcount=0;

p=text;

q=p+1;

while(*q)

{

if(check(p)&&!

(check(q)))

{

p++;

q++;

count++;

}

else

{

p++;

q++;

}

}

returncount;

}

voidmain()

{

chartext[1000],*word[1000],*p,*q,*first;

p=text;

q=p+1;

inti=0,j=1,t=0,sum=0,a[1000],max=0,wsum;

printf("请输入一段文字:

\n");

gets_s(text);

//提醒正确输入格式

while(text[i+1])

i++;

if(check(&text[i]))

{

printf("句子结尾漏了标点符号\n");

exit

(1);

}

i=0;

//将大写字母转换为小写

while(text[i])

{

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

text[i]+=32;

i++;

}

i=0;

/*sum来保存单词数*/

sum=wordcount(text);

/*把每个单词以字符串形式保存到*word中*/

first=text;

while(*q)

{

if(check(p)&&!

(check(q)))

{

*q=0;

word[i]=first;

p++;

q++;

i++;

}

else

{

p++;

q++;

}

if(!

(check(p))&&check(q))

first=q;

}

/*记各个单词出现次数存在a中*/

for(i=0;i

{

a[i]=0;

for(j=0;j

if(strcmp(word[i],word[j])==0)

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

}

for(i=0;i

{

for(j=i;j

{

if(i!

=j&&strcmp(word[i],word[j])==0)

a[j]=0;

}

}

for(i=0;i

{

if(a[max]

max=i;

}

printf("出现最多次的单词:

%s",word[max]);

for(i=0;i

{

if(a[max]==a[i]&&i!

=max)

printf("%s",word[i]);

}

printf(",出现了%d次\n",a[max]);

}

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

当前位置:首页 > 人文社科 > 教育学心理学

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

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