第5章数组-习题答案讲解学习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章数组-习题答
案
1: /*编写程序,用筛选法求 100 之内的素数。*/ #include
void main ()
{
int i,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
void main()
{
int num,a,i=0;
printf("输入一个数字\n");
scanf("%d",&num);
printf("正序输出则输入 1 反序输出输入 0\n"); scanf("%d",&a);
switch(a)
{
case 1:
printf("%d",num); break;
case 0:
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
void main()
{
int a[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
void main ()
{
int a[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
void main ()
{
int i,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
void main ()
{
int j,k;
int i;
int t;
int a=0,b=0;
int flag=1;
int num[9];
int max,max_a,max_b;
int min,min_a,min_b;
printf("输入 9 个 10 以内的自然数:");
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;
}