谭浩强的《C程序设计》第六章的两道习题答案。
6.3求Sn=a+aa+aaa+…+aa…a(n个a位数)的值并显示Sn,其中a、n由键盘输入。例如:a=1,n=3,则Sn=1+11+111=123;
a=2,n=4,Sn=2+222+2222=2468。
#include <stdio.h>
#include <math.h>
long Calculate(int a,int n)
{
int temp = 0;
int sum =0;
for(int i=0;i<n;i++)
{
temp = temp + a*int(pow(double(10),double(i)));
sum = sum +temp;
}
return sum;
}
int main(void)
{
printf("%d\n",Calculate(2,4));
return 0;
}
改进设想:大数的存诸问题。比如结果超出了长整型的范围。
6.14 打印出下列图案。
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
#include <stdio.h>
#include <math.h>
int main(void)
{
int i=0;
int j=0;
for(i=0;i<7;i++)
{
for (j=0;j<=(12-abs(i-3)*2);j++)
{
if(j>=abs(6-i*2)&&j%2==0)
printf("%c",'*');
else printf("%c",' ');
}
printf("\n");
}
return 0;
}
评论