谭浩强的《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; }

评论