总有几个数据不能对上不知道哪里错了
#include <stdio.h>int main() {
int a,b;
long long int result;
while((scanf("%d %d",&a,&b))!=EOF) {
int cnt=0;
int x=a,y=b;
result=1;
if(x<y) {
while(x>0) {
x/=10;
cnt++;
}
} else {
while(y>0) {
y/=10;
cnt++;
}
}
for(int i=1; i<=cnt; i++) {
result*=(a%10)*(b%10);
a/=10;
b/=10;
if(a<=0||b<=0)
break;
}
printf("%lld",result);
}
return 0;
} 别人不是你脑子里的蛔虫,把话说清楚,你要对什么? jackz007 发表于 2021-11-22 23:02
别人不是你脑子里的蛔虫,把话说清楚,你要对什么?
#include<stdio.h>
main()
{
int i=0;
double j=1;
while(j<=2)
{j=j*1.03;
i++;
}
printf("%d",i);
}
大哥为何j前面不用double,用int,会不显示任何结果,黑屏。求解答。 小黄练编程 发表于 2021-11-22 23:11
#include
main()
{
事实证明,你的代码是没有问题的。
#include<stdio.h>
int main(void)
{
int i = 0 ;
double j = 1 ;
while(j <= 2) {
j = j * 1.03 ;
i ++ ;
}
printf("%d\n" , i) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
24
D:\00.Excise\C> jackz007 发表于 2021-11-22 23:20
事实证明,你的代码是没有问题的。
编译、运行实况:
我主要搞不明白为何这样他就黑屏,把j前面double改成int。
#include<stdio.h>
main()
{
int i=0;
int j=1;
while(j<=2)
{j=j*1.03;
i++;
}
printf("%d",i);
}
小黄练编程 发表于 2021-11-22 23:30
我主要搞不明白为何这样他就黑屏,把j前面double改成int。
#include
main()
难道我说的不够明白,这个代码不需要任何修改,不会有任何黑屏! jackz007 发表于 2021-11-22 23:32
难道我说的不够明白,这个代码不需要任何修改,不会有任何黑屏!
主要我不理解,为何不能用int,一用就会黑屏,要用double才有用。{:5_102:} 小黄练编程 发表于 2021-11-22 23:37
主要我不理解,为何不能用int,一用就会黑屏,要用double才有用。
因为对于 int j 而言,j = 1.03 * 1.03 = 1 , 那么 while (j <= 2) 的条件就会永远成立,程序就会陷入死循环。而 doble j 就不同了,j = 1.03 * 1.03 会越来越大,只要循环次数足够大,j 的值总会有超过 2 的时候。 jackz007 发表于 2021-11-22 23:44
因为对于 int j 而言,j = 1.03 * 1.03 = 1 , 那么 while (j
谢谢大哥,厉害。{:5_109:}
页:
[1]