谭浩强C语言习题集课后源码Word文档下载推荐.docx
《谭浩强C语言习题集课后源码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《谭浩强C语言习题集课后源码Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
else
d++;
}
英文字母:
%d个,\n空格:
%d个,\n数字:
%d个,\n其他字符:
%d个\n"
a,b,c,d);
}
3.2#include<
intn,a,i,b=1;
longsum=0;
inputn,a:
scanf("
%d%d"
&
n,&
a);
for(i=0;
n;
i++)
sum+=a;
a=a*10+a/b;
//如何避免使得a=99*10+99?
的问题?
b=b*10;
和为:
%d\n"
sum);
3.3#include<
longsum=0,b=1;
inti;
for(i=1;
=20;
b=b*i;
//保持b的连乘
sum+=b;
printf("
1!
+2!
+3!
+...+20!
=%d\n"
3.4#include<
inti;
floatsum_1=0.0,sum_2=0.0;
floatsum_3=0.0;
floatsum;
for(i=1;
sum_1+=i;
sum_2+=i*i;
sum_3+=1/i;
sum=sum_1+sum_2+sum_3;
1+2+...+20+1^2+2^2+...20^2+1/1+1/2+...1/20=%.4f\n"
3.5#include<
inti,a,b,c;
for(i=100;
1000;
a=i/100;
b=i%100/10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf("
%4d"
i);
\n"
3.6难!
!
#include<
inti,j,a;
for(i=2;
=1000;
a=0;
//A在第一个for语句后面赋值
for(j=1;
j<
i;
j++)
{
if(i%j==0)
a=a+j;
}//在这个for语句中完成约数累加后外面比较
if(a==i)
printf("
3.6求1000以内的完数并每行按格式输出其因子:
6=1+2+3
intsum,a,k,j,i;
sum=0;
for(j=1;
if(i%j==0)
sum=sum+j;
//假如找到一个因子就加起来
a=j;
//for循环执行完后a就是最大的那个因子
if(sum==i)//判断因子之和与i是否相等
%d="
for(k=1;
k<
k++)
if(i%k==0)
%d"
k);
if(k!
=a)
+"
//假如这个k不是最大的那个因子则输出+号
//每输出完一个就换行
3.7#include<
floatj=2.0,i=1.0;
inta;
floatsum=0.0;
for(a=0;
a<
20;
a++)
sum+=j/i;
j=i+j;
i=j-i;
2/1+3/2+5/3+...=%.4f\n"
3.8#include<
floatsum=100.0,h=50.0;
for(a=1;
10;
sum=sum+2*h;
//少跳一次
h=h/2;
共经过:
%f米\n"
第10次反弹:
h);
3.9#include<
voidmain()
{
inti,j=1;
j=(j+1)*2;
第一天一共摘了%d个桃子\n"
j);
//不采用sum=sum+j的形式
3.10
math.h>
floatx1,x2=1.0;
inputa:
scanf("
do
x1=x2;
x2=(x1+a/x1)/2;
//x1与x2的相互转换
}while(fabs(x2-x1)>
1e-5);
//难点!
根号%d的近似值为:
%.4f\n"
a,x2);
3.11不会!
3.12不会!
3.11
floatsolution(floatx)
floatx1,y,k;
k=6*x*x-8*x+3;
y=2*x*x*x-4*x*x+3*x-6;
x1=x-y/k;
x=x1;
while(fabs(y)<
0.001);
returnx;
floatx;
x=1.5;
x=solution(x);
%f\n"
x);
3.12
3.13#include<
inti,j;
4;
{for(j=0;
4-i;
"
for(j=0;
2*i-1;
*"
3;
7-2*i;
printf("
3.14不会!
#include"
stdio.h"
chari,j,k;
for(i='
x'
;
z'
for(j='
for(k='
{
if(i!
=j&
i!
=k&
j!
k!
)
a--%c\nb--%c\nc--%c\n"
i,j,k);
}
3.15#include<
intx,y;
inputx:
x);
if(x<
1)
y=%d\n"
elseif(x>
=1&
x<
10)
2*x-1);
else
3*x-11);
3.16#include<
inputscore:
if(x>
=90&
=100)
A\n"
=80&
=89)
B\n"
=70&
=79)
C\n"
=60&
=69)
D\n"
=0&
=59)
E\n"
inputerror!
3.17#include<
intx,y,z;
intweishu(intx);
intfanxu(intx);
inta,b,c,d,e,i,index=1;
请输入一个小于5位的数字:
y=weishu(x);
z=fanxu(x);
if(x/100000!
=0||x<
0)//确定输入的是一个小于5位的数字
该数是一个%d位数字\n"
y);
if((x%10)!
=0)printf("
个位:
x%10);
if((x%100/10)!
十位:
x%100/10);
if((x%1000/100)!
百位:
x%1000/100);
if((x%10000/1000)!
千位:
x%10000/1000);
if((x/10000)!
万位:
x/10000);
该数的逆序为:
z);
intweishu(intx)
inty=1,i;
5;
{if(x/10!
=0)
y++;
x=x/10;
returny;
intfanxu(intx)
intz,a,b,c,d,e;
a=x%10;
b=x%100/10;
c=x%1000/100;
d=x%10000/1000;
e=x/10000;
z=a*10000+b*1000+c*100+d*10+e*1;
returnz;
3.18