存储字符代替整数
/* C program to find strong number using Structure and Pointers*/
#include<stdio.h>
#include<stdlib.h>
struct strg {
long int a;
}*strgvar;
int strong(int);
int main() {
int result;
strgvar = (struct strg*) malloc(sizeof(struct strg));
printf("Enter the number ...\n");
scanf("%ld", &strgvar -> a);
result = strong(strgvar -> a);
if(result == strgvar->a) {
printf("Its a strong number !");
}
else {
printf("Its not a strong number !");
}
return 0;
}
int strong (int a) {
int fact, r, n, sum = 0;
while(a != 0) {
r = r % 10;
for(int i =0; i <= r; i++) {
fact = fact * i;
}
sum = sum + fact;
n = n/ 10;
}
return sum;
}
<小时/>
运行此程序时,输入的整数未存储在变量中。但是在输入任何字符时,它会打印“Its a Strong number!”
示例:
case 1:
Enter the number... 234
2
178
er
fg yu8 . case 2: Enter the number ...e
这是一个强大的数字!
最佳答案
除非a==0
开始,否则strong
中的循环显然是无限的。如果 scanf
失败,strgvar->a
将未初始化,因此您的程序具有未定义的行为。一种“合理”的可能性是该值被读取为 0,从而产生观察到的结果。
关于存储字符代替整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477181/