早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C语言问题:对一个4×4的二维数组左下三角的全部元素(包含对角线上的元素)作如下变换:⑴若该数C语言问题:对一个4×4的二维数组左下三角的全部元素(包含对角线上的元素)作如下

题目详情
C语言问题:对一个4×4的二维数组左下三角的全部元素(包含对角线上的元素)作如下变换: ⑴若该数
C语言问题:对一个4×4的二维数组左下三角的全部元素(包含对角线上的元素)作如下变换:
⑴若该数是素数则用它的后继素数替换;
⑵ 若该数不是素数,则用0替换该数。
将变换后的数组及其数组左下三角的元素中的素数个数打印出来。
▼优质解答
答案和解析
#include
int sushu(int x){
int i;
if (x<=3) return 1;
for(i=2;i*i<=x;i++)
if(x%i==0) return 0;
return 1;
}
int nextsushu(int x)
{
int i;
for(i=x+1;i<=x*2;i++)
if (sushu(i)) return i;
return 1;
}
int main(){
int a[4][4];
int i,j,n=3,m=0;
//为了方便,在此给数组赋初值
for(i=0;i<4;i++)
for(j=0;j<4;j++)
a[i][j]=++n;

printf("开始时的数组\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<=i;j++){
if (sushu(a[i][j])){
a[i][j]=nextsushu(a[i][j]);
m++;
}
else
a[i][j]=0;
}

printf("变换后的数组\n");
for(i=0;i<4;i++) {
for(j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n");
}
printf("共变换了%d个素数\n",m);
}