/*随机生成一个3位正整数,判断其是否为一个水仙花数*/ #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int m,a,b,c; strand(time(0)); m=rand(%900+100);//产生一个三位随机整数 a=m%10; b=m%10/10; c=m/100; if(a^3+b^3+c^3=m) printf("%d是水仙花数\n",m); 哪里错了
时间: 2024-02-07 12:03:10 浏览: 113
代码中有几个错误:
1. srand函数写错了,应该是srand(time(0)),而不是strand(time(0))。
2. 函数rand的参数应该是%901而不是%900+100,因为%900+100只会产生一个0-99之间的随机数,而%901可以产生0-900之间的随机数。
3. 判断条件应该是a*a*a+b*b*b+c*c*c==m,而不是a^3+b^3+c^3=m。^在C语言中表示按位异或,而不是求幂运算。
下面是修改后的代码:
```
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int m,a,b,c;
srand(time(0));
m=rand()%901;//产生一个三位随机整数
a=m%10;
b=m%100/10;
c=m/100;
if(a*a*a+b*b*b+c*c*c==m)
printf("%d是水仙花数\n",m);
return 0;
}
```
相关问题
【问题描述】判断输入的整数n是否是水仙花数。水仙花数是三位的十进制正整数,其特征是,各位数码的立方和恰好等于该整数。例如,153是水仙花数,因为 1*1*1+5*5*5+3*3*3 的和等于153。 【输入形式】一个整数 【输出形式】对整数的评价 【样例输入】153 【样例输出】153是水仙花数 【样例输入】99 【样例输出】99不是水仙花数 【样例输入】1234 【样例输出】1234不是水仙花数 【样例说明】 【评分标准】 #include <stdio.h> int main() { int n,a,b,c; scanf("%d",&n); if(n<100|| [填空1] ) { printf("%d不是水仙花数",n); return 1; } a=n/100; b=(n%100)/10; c= [填空2] ; if(a*a*a+b*b*b+c*c*c==n) printf("%d是水仙花数",n); else printf("%d不是水仙花数",n); }请问两个填空填什么
下面是填空后的代码:
```
#include <stdio.h>
int main() {
int n, a, b, c;
scanf("%d", &n);
if(n < 100 || n > 999) //填空1:判断n是否为三位数
{
printf("%d不是水仙花数", n);
return 1;
}
a = n / 100;
b = (n % 100) / 10;
c = n % 10; //填空2:求出n的个位数
if(a * a * a + b * b * b + c * c * c == n)
printf("%d是水仙花数", n);
else
printf("%d不是水仙花数", n);
return 0;
}
```
修改1:判断n是否为三位数,如果n小于100或大于999,则不是水仙花数。
修改2:求出n的个位数,使用取模运算符“%”和除法运算符“/”可以求出n的个位、十位、百位等数。
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1+5+3。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。 函数接口定义: int narcissistic( int number ); void PrintN( int m, int n ); 函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。 函数PrintN则打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000。 裁判测试程序样例: #include <stdio.h> int narcissistic( int number ); void PrintN( int m, int n ); int main() { int m, n; scanf("%d %d", &m, &n); if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m); PrintN(m, n); if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 153 400 输出样例: 153 is a narcissistic number 370 371 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB C (gcc) 1 测试用例 上一题 查看上次提交 提交本题作答 下一题
```c
#include <stdio.h>
#include <math.h>
int narcissistic(int number) {
int temp = number, sum = 0;
int n = 0;
while (temp > 0) {
n++;
temp /= 10;
}
temp = number;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
return sum == number;
}
void PrintN(int m, int n) {
int flag = 0;
for (int i = m + 1; i < n; i++) {
if (narcissistic(i)) {
if (flag) {
printf(" ");
}
printf("%d", i);
flag = 1;
}
}
if (flag) {
printf("\n");
}
}
```
思路解析:
1.判断一个数是否为水仙花数,根据题意,需要先求出这个数的位数n,然后分解出每个位上的数字,将其n次幂累加起来,最后与原数比较是否相等。
2.打印区间(m, n)内所有的水仙花数,只需要遍历区间内的每个数,然后调用判断水仙花数的函数,如果是水仙花数则打印出来即可。
阅读全文