
C语言编程题:求3+33+333+3333+33333+… (3的个数由键盘输入) 求它的循环语句全解
展开全部
/*
这个题用整型来做很危险的,n不需要很大就会溢出,以下用高精度算法来做。
*/
#include
<stdio.h>
//
用以控制结果的位数,可以改成更大的数字以满足更高精度的要求
#define
MAX_BIT
100
int
nbr[MAX_BIT];
void
check()
{
for
(int
i
=
0;
i
<
99;
++i)
{
if
(nbr[i]
>
9)
{
nbr[i
+
1]
+=
nbr[i]
/
10;
nbr[i]
%=
10;
}
}
}
void
calculate(int
a,
int
n)
{
for
(int
i
=
0;
i
<
n;
++i)
{
nbr[i]
=
a
*
(n
-
i);
}
check();
}
int
main()
{
int
n
=
0,
a
=
3;
int
i
=
MAX_BIT;
printf("输入%d的个数:",
a);
scanf("%d",
&n);
n
%=
MAX_BIT;
calculate(a,
n);
while
(i
>
0
&&
!nbr[--i]);
while
(i
>=
0)
{
printf("%d",
nbr[i--]);
}
return
0;
}
这个题用整型来做很危险的,n不需要很大就会溢出,以下用高精度算法来做。
*/
#include
<stdio.h>
//
用以控制结果的位数,可以改成更大的数字以满足更高精度的要求
#define
MAX_BIT
100
int
nbr[MAX_BIT];
void
check()
{
for
(int
i
=
0;
i
<
99;
++i)
{
if
(nbr[i]
>
9)
{
nbr[i
+
1]
+=
nbr[i]
/
10;
nbr[i]
%=
10;
}
}
}
void
calculate(int
a,
int
n)
{
for
(int
i
=
0;
i
<
n;
++i)
{
nbr[i]
=
a
*
(n
-
i);
}
check();
}
int
main()
{
int
n
=
0,
a
=
3;
int
i
=
MAX_BIT;
printf("输入%d的个数:",
a);
scanf("%d",
&n);
n
%=
MAX_BIT;
calculate(a,
n);
while
(i
>
0
&&
!nbr[--i]);
while
(i
>=
0)
{
printf("%d",
nbr[i--]);
}
return
0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询