c语言输出 * *** ***** *******

#include<stdio.h>
int main()
{int i,j,m;
for(i=0;i<4;i++)
{for(m=3;m>i;m--)
printf(" ");
for(j=8;j>7-2i;j--)
printf("*");
printf("\n");}
printf("\n");
return 0;
}
这个有什么问题?

首先解释为什么是负值
因为溢出了
111111*111111=12345654321
超出了int能表示的范围
可能你要问
不是已经%lld了吗
没错
%lld是用于long
long类型的,但只代表输出的时候按照long
long的类型输出,并不能影响后面参数的实际类型
对于整型常数,c语言默认都是int型
除非有特殊标明
接下来说解决方法
很简单
提供两种解决方法
第一种
强制转换
无所不能的强制转换
只要printf("%lld\n",(long
long
)111111*111111);即可
第二个可以不用,因为运算的时候自动会按照高级别类型转换
当然你加上也没关系
第二种方法
后缀
printf("%lld\n",111111ll*111111);
在第一个数字结尾加上两个l
即l
等于告诉系统,这个不是int型
而是long
long型
这样就可以按照long
long
来计算输出了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-16
这不是数学 2i不是表示2*i 要改为2*I 第七行
第2个回答  推荐于2017-05-20
#include<stdio.h>
int main()
{int i,j,m;
for(i=0;i<4;i++)
{for(m=3;m>i;m--)
printf(" ");
for(j=8;j>7-2*i;j--)//数字与变量之间要有乘号*
printf("*");
printf("\n");}
printf("\n");
return 0;
}本回答被网友采纳
第3个回答  2012-12-16
我试了一下,
for(j=8;j>7-2i;j--)
中错误,其中应该是
2*i
第4个回答  2012-12-16
符号是中文状态下的!!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网