一个c程序,想好久了
答案:4 悬赏:80 手机版
解决时间 2021-11-26 13:00
- 提问者网友:留有余香
- 2021-11-25 22:08
一个c程序,想好久了
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-11-25 23:44
#include
#include
main()
{
int n,a[100],b[100],s,i,j;
scanf("%d",&n);
for(i=0;i
for(i=0;i
for(j=a[i];j<=b[i];j++){
if(j<1000&&j>=100&&j==(int)(pow((double)(j/100),3.0)+pow((double)(j%100/10),3.0)+
pow((double)(j%10),3.0)))
s++;
if(j<10000&&j>=1000&&j==(int)(pow((double)(j/1000),4.0)+pow((double)(j%1000/100),4.0)+
pow((double)(j%100/10),4.0)+pow((double)(j%10),4.0)))
s++;
if(j<100000&&j>=10000&&j==(int)(pow((double)(j/100000),5.0)+pow((double)(j%100000/1000),5.0)+
pow((double)(j%1000/100),5.0)+pow((double)(j%100/10),5.0)+pow((double)(j%10),5.0)))
s++;
}
printf("%d
",s);
}
}如图所示,望采纳。。。。。。
追问为什么要加dounle呢追答应为pow运算的两个参数都是double型的,而j%10等运算都是int的,结果也是int的,因此转换成double,再进行pow运算。追问如果不要这个double算出来结果会有什么误差呢
全部回答
- 1楼网友:三千妖杀
- 2021-11-26 02:29
#include "stdio.h"
int fun(int a,int b){
int s=0,n,m,u,v,t;
for(s=0;a<=b;a++){
for(t=a,n=0;t;n++,t/=10);
for(v=0,t=a;t;t/=10){
for(u=1,m=0;m v+=u;
}
if(a==v && a>9)
s++;
}
return s;
}
int main(int argc,char *argv[]){
int m,a,b;
printf("Please enter m(int 099){
printf("Input error, exit... ");
return 0;
}
while(m--){
printf("Input a & b(int a>2, b>2)... ");
if(scanf("%d%d",&a,&b)==2 && a>2 && b>2)
printf("%d ",a>b ? fun(b,a) : fun(a,b));
else{
printf("Input error, redo: ");
fflush(stdin);
}
}
return 0;
}
int fun(int a,int b){
int s=0,n,m,u,v,t;
for(s=0;a<=b;a++){
for(t=a,n=0;t;n++,t/=10);
for(v=0,t=a;t;t/=10){
for(u=1,m=0;m
}
if(a==v && a>9)
s++;
}
return s;
}
int main(int argc,char *argv[]){
int m,a,b;
printf("Please enter m(int 0
printf("Input error, exit... ");
return 0;
}
while(m--){
printf("Input a & b(int a>2, b>2)... ");
if(scanf("%d%d",&a,&b)==2 && a>2 && b>2)
printf("%d ",a>b ? fun(b,a) : fun(a,b));
else{
printf("Input error, redo: ");
fflush(stdin);
}
}
return 0;
}
运行样例:
不过我觉得3~9按规则都是水仙花数,把if(a==v && a>9)改成if(a==v)就能实现。
- 2楼网友:青尢
- 2021-11-26 01:55
#define SWP(a, b) {int c; c = a; a = b; b = c;}
int fun(int a, int b) {
int i, num = 0;
int arr[100];
if (a > b) SWP(a, b);
for (i = a; i < b; i++) {
int m = i, k;
int n = 0;
int t = 0;
while (m > 0) {
arr[n] = m % 10;
m /= 10;
n++;
}
m = i;
for (k = 0; k < n; k++) {
int s = arr[k];
int j = 0;
while (++j < n) s *= arr[k];
t += s;
}
if (t == i) {
//printf("%d = %d ", i, n);
num++;
}
}
return num;
}
int main() {
int n, a, b, i = 0;
scanf("%d", &n);
while (i < n) {
scanf("%d %d", &a, &b);
printf("%d ", fun(a, b));
i++;
}
return 0;
}追问谢谢
int fun(int a, int b) {
int i, num = 0;
int arr[100];
if (a > b) SWP(a, b);
for (i = a; i < b; i++) {
int m = i, k;
int n = 0;
int t = 0;
while (m > 0) {
arr[n] = m % 10;
m /= 10;
n++;
}
m = i;
for (k = 0; k < n; k++) {
int s = arr[k];
int j = 0;
while (++j < n) s *= arr[k];
t += s;
}
if (t == i) {
//printf("%d = %d ", i, n);
num++;
}
}
return num;
}
int main() {
int n, a, b, i = 0;
scanf("%d", &n);
while (i < n) {
scanf("%d %d", &a, &b);
printf("%d ", fun(a, b));
i++;
}
return 0;
}追问谢谢
- 3楼网友:雪起风沙痕
- 2021-11-26 01:12
函数的应用,代码及运行结果如下:
#include
int wide_n(int num)
{
int i,n=0;
for(i = num; i != 0;++n,i = i/10);
return n;
}
int pow_n(int num, int n)
{
int i,s = 1;
for(i=0; i s = s*num;
return s;
}
int isqiushui(int num)
{
int i,j,k,n,s=0,t=0;
n = wide_n(num);
for(i = 0, t = num; i < n; ++i){
j = t%10;
t = t/10;
k = pow_n(j, n);
s = s+k;
}
if(num == s)
return 1;
return 0;
}
int fun(int a, int b)
{
int i,j,t;
t = a>b?a:b;
i = a printf("%d ",i);
printf("%d\n",t);
for(j = 0;i <= t;++i)
if(isqiushui(i)){
++j;
printf("%d\n", i);
}
return j;
}
int main()
{
printf("共%d个", fun(100, 9999999));
return 0;
}
追答关键在于函数定义和调用的编程,输出格式是次要的,你完全可以自己整一整。。。追问嗯嗯追答你不是要定义一个函数int fun(int a, int b)吗?再看看你选的答案,真la ji追问没有,他第一个回答的,我就选了谢谢你帮我非常感谢
#include
int wide_n(int num)
{
int i,n=0;
for(i = num; i != 0;++n,i = i/10);
return n;
}
int pow_n(int num, int n)
{
int i,s = 1;
for(i=0; i
return s;
}
int isqiushui(int num)
{
int i,j,k,n,s=0,t=0;
n = wide_n(num);
for(i = 0, t = num; i < n; ++i){
j = t%10;
t = t/10;
k = pow_n(j, n);
s = s+k;
}
if(num == s)
return 1;
return 0;
}
int fun(int a, int b)
{
int i,j,t;
t = a>b?a:b;
i = a printf("%d ",i);
printf("%d\n",t);
for(j = 0;i <= t;++i)
if(isqiushui(i)){
++j;
printf("%d\n", i);
}
return j;
}
int main()
{
printf("共%d个", fun(100, 9999999));
return 0;
}
追答关键在于函数定义和调用的编程,输出格式是次要的,你完全可以自己整一整。。。追问嗯嗯追答你不是要定义一个函数int fun(int a, int b)吗?再看看你选的答案,真la ji追问没有,他第一个回答的,我就选了谢谢你帮我非常感谢
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯