存储字符代替整数
/* 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;
}
在运行此程序时,输入整数不存储在变量中。但在输入任何字符时,它会打印“它是一个强大的数字!”
示例:
案例1:
输入数字...... 234
2
178
ER
fg yu8。案例2:输入数字... e
这是一个很强的数字!
答案 0 :(得分:1)
strong
中的循环显然是无限的,除非a==0
开始。如果scanf
失败,则strgvar->a
将未初始化,因此您的程序具有未定义的行为。一个“合理”的可能性是该值被读为0,从而产生观察结果。