36 、编写函数void fun (int *a, int *n) ,其功能是:求出100~999之间所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293) ,并将其放在a所指的数组中 ,通过n返回这些数的个数 。
void fun (int *a, int *n)
{
int i,j,bw,sw,gw,cnt=0;
for (i=101;i<1000;i+=2)
{
bw=i/100;
sw=i%100/10;
gw=i%10;
for (j=3;j<i;j+=2)
if(i%j==0) break;
if ((i==j) &&(gw+sw)%10==bw)
a[cnt++]=i;
}
*n=cnt;
}
参考程序
37 、编写函数void fun (int *a, int *n) ,其功能是:找出所有100以内(含100)满足I ,I+4 ,I+10(I+10也在100以内)都是素数的整数I(如3 ,3 、3+4=7 、3+10=13均是素数) ,并将其放在a所指的数组中 ,通过n返回这些数的个数 。
#include <stdio.h>
void fun (int *a, int *n)
{
}
int main()
{
int aa[1000], n, k ;
fun (aa, &n ) ;
for ( k = 0 ; k < n ; k++ )
{
printf("%5d", aa[k]) ;
if ((k + 1) % 10 == 0) printf("\n") ;
}
return 0;
}
void fun (int *a, int *n)
{
int i,j,cnt=0;
int isPrime[101]={0}; // isPrime[i]=0 表示i不是素数
isPrime[2]=1;
for (i=3;i<100;i+=2)
{
for (j=3;j<i;j+=2)
if (i%j==0) break;
if (i==j) isPrime[i]=1; // i是素数
}
for(i=2;i<=90;i++)
if (isPrime[i] && isPrime[i+4] && isPrime[i+10])
a[cnt++]=i;
*n=cnt;
}
参考程序
38 、下列程序的功能是:寻找并输出11至999之间的数m ,它满足m,m2和m3均为回文数 。所谓回文数是指其各位数字左右对称的整数 ,例如121 ,676,94249等 。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数 。请编写函数intfun(int n) ,该函数的功能是:如果整数n是回文数 ,则函数返回1,反之则返回0 。
#include <stdio.h>
int fun(int n)
{
}
int main()
{
int m;
for(m=11;m<1000;m++)
{
if (fun(m) && fun(m*m) && fun(m*m*m))
{
printf("m=%4d,m*m=%6d,m*m*m=%9d \n",m,m*m,m*m*m);
}
}
return 0;
}
int fun(int n)
{
int s=0,k;
k=n;
while(k)
{
s=s*10+k%10;
k/=10;
}
if(s==n) return 1;
else return 0;
}
参考程序
39 、编写函数void fun (int *a, int *n) ,其功能是:找出所有的自然数SIX和NINE ,它们满足的条件是SIX+SIX+SIX=NINE+NINE ,其中的S ,I ,X ,N ,E各代表一个十进制数字 ,所代表的数字可以相同 。并将所有找出的自然数SIX放在a所指的数组中 ,通过n返回这些数的个数 。
#include <stdio.h>
void fun (int *a, int *n)
{
}
int main()
{
int aa[1000], n, k ;
fun (aa, &n ) ;
for ( k = 0 ; k < n ; k++ )
{
printf("%d+%d+%d=%d+%d\n", aa[k],aa[k],aa[k],3*aa[k]/2,3*aa[k]/2) ;
}
return 0;
}
void fun (int *a, int *n)
{
int s,i,x,m,e,six,nine,cnt=0;
for (s=1;s<10;s++)
for(i=0;i<10;i++)
for(x=0;x<10;x++)
for(m=1;m<10;m++)
for(e=0;e<10;e++)
{
six=s*100+i*10+x;
nine=m*1000+i*100+m*10+e;
if (3*six==2*nine) a[cnt++]=six;
}
*n=cnt;
}
参考程序1
// SIX必须是偶数 ,且SIX最小值为668,因为666*3=1998<2000
// 对SIX进行穷举 ,NINE=3*SIX/2 ,若SIX的十位数与NINE的百位数相同,
// 且NINE的千位数与十位数相同 ,则满足条件
void fun (int *a, int *n)
{
int i,cnt=0;
for (i=668;i<=999;i=i+2)
if ((i/10%10==(3*i/2)/100%10) && ((3*i/2)/1000==(3*i/2)%100/10) )
a[cnt++]=i;
*n=cnt;
}
参考程序2
40 、编写函数void fun (int *a, int *n) ,其功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组a中;它既是完全平方数,又是两位数字相同 ,例如144 、676等 。并通过n返回这些数的个数 。
#include <stdio.h>
void fun (int *a, int *n)
{
}
int main()
{
int aa[1000], n, k ;
fun (aa, &n ) ;
for ( k = 0 ; k < n ; k++ )
{
printf("%5d", aa[k]) ;
if ((k + 1) % 10 == 0) printf("\n") ;
}
return 0;
}
void fun (int *a, int *n)
{
int i,j,k=0;
int bw,sw,gw;
for(i=100;i<=999;i++)
{
j=10;
while(j*j<=i)
{
if (i==j*j)
{
bw=i/100; sw=i%100/10; gw=i%10;
if (bw==sw||bw==gw||sw==gw) a[k++]=i;
}
j++;
}
}
*n=k;
}
参考程序1
void fun (int *a, int *n)
{
int i,j,k=0;
int bw,sw,gw;
for(j=10;j<=31;j++)
{
i=j*j;
bw=i/100; sw=i%100/10; gw=i%10;
if (bw==sw||bw==gw||sw==gw) a[k++]=i;
}
*n=k;
}
参考程序2
声明:本站所有文章 ,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时 ,禁止复制 、盗用 、采集 、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理。