谭浩强C语言习题集课后源码.docx
- 文档编号:5287554
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:13
- 大小:65.90KB
谭浩强C语言习题集课后源码.docx
《谭浩强C语言习题集课后源码.docx》由会员分享,可在线阅读,更多相关《谭浩强C语言习题集课后源码.docx(13页珍藏版)》请在冰豆网上搜索。
谭浩强C语言习题集课后源码
3.1输入一行字符,分别统计其中英文字母,数字,空格,其他字符个数
#include
voidmain()
{
inta=0,b=0,c=0,d=0;
chari;
printf("请输入一行字符:
");
while((i=getchar())!
='\n')//如何实现连续输入一串字符并进行判断?
?
{
if(i>=65&&i<=90||i>=96&&i<=122)
a++;
elseif(i==32)
b++;
elseif(i>=48&&i<=57)
c++;
else
d++;
}
printf("英文字母:
%d个,\n空格:
%d个,\n数字:
%d个,\n其他字符:
%d个\n",a,b,c,d);
}
3.2#include
voidmain()
{
intn,a,i,b=1;
longsum=0;
printf("inputn,a:
");
scanf("%d%d",&n,&a);
for(i=0;i { sum+=a; a=a*10+a/b;//如何避免使得a=99*10+99? 的问题? ? b=b*10; } printf("和为: %d\n",sum); } 3.3#include voidmain() { longsum=0,b=1; inti; for(i=1;i<=20;i++) { b=b*i;//保持b的连乘 sum+=b; } printf("1! +2! +3! +...+20! =%d\n",sum); } 3.4#include voidmain() { inti; floatsum_1=0.0,sum_2=0.0; floatsum_3=0.0; floatsum; for(i=1;i<=20;i++) { sum_1+=i; } for(i=1;i<=20;i++) { sum_2+=i*i; } for(i=1;i<=20;i++) { sum_3+=1/i; } sum=sum_1+sum_2+sum_3; printf("1+2+...+20+1^2+2^2+...20^2+1/1+1/2+...1/20=%.4f\n",sum); } 3.5#include voidmain() { inti,a,b,c; for(i=100;i<1000;i++) { a=i/100; b=i%100/10; c=i%10; if(i==a*a*a+b*b*b+c*c*c) printf("%4d",i); } printf("\n"); } 3.6难! ! ! #include voidmain() { inti,j,a; for(i=2;i<=1000;i++) { a=0;//A在第一个for语句后面赋值 for(j=1;j { if(i%j==0) a=a+j; }//在这个for语句中完成约数累加后外面比较 if(a==i) printf("%4d",i); } printf("\n"); } 3.6求1000以内的完数并每行按格式输出其因子: 6=1+2+3 #include voidmain() { intsum,a,k,j,i; for(i=1;i<1000;i++) { sum=0; for(j=1;j if(i%j==0) { sum=sum+j;//假如找到一个因子就加起来 a=j;//for循环执行完后a就是最大的那个因子 } if(sum==i)//判断因子之和与i是否相等 { printf("%d=",i); for(k=1;k if(i%k==0) { printf("%d",k); if(k! =a) printf("+");//假如这个k不是最大的那个因子则输出+号 } printf("\n");//每输出完一个就换行 } } } 3.7#include voidmain() { 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; } printf("2/1+3/2+5/3+...=%.4f\n",sum); } 3.8#include voidmain() { inta; floatsum=100.0,h=50.0; for(a=1;a<10;a++) { sum=sum+2*h;//少跳一次 h=h/2; } printf("共经过: %f米\n",sum); printf("第10次反弹: %f米\n",h); } 3.9#include voidmain() { inti,j=1; for(i=1;i<10;i++) { j=(j+1)*2; } printf("第一天一共摘了%d个桃子\n",j);//不采用sum=sum+j的形式 } 3.10 #include #include voidmain() { floatx1,x2=1.0; inta; printf("inputa: "); scanf("%d",&a); do { x1=x2; x2=(x1+a/x1)/2;//x1与x2的相互转换 }while(fabs(x2-x1)>1e-5);//难点! ! ! printf("根号%d的近似值为: %.4f\n",a,x2); } 3.11不会! ! ! 3.12不会! ! ! 3.11 #include #include floatsolution(floatx) { floatx1,y,k; do { 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; } voidmain() { floatx; x=1.5; x=solution(x); printf("%f\n",x); } 3.12 3.13#include voidmain() { inti,j; for(i=0;i<4;i++) {for(j=0;j<4-i;j++) printf(""); for(j=0;j<2*i-1;j++) printf("*"); printf("\n"); } for(i=0;i<3;i++) { for(j=0;j printf(""); for(j=0;j<7-2*i;j++) printf("*"); printf("\n"); } } 3.14不会! ! ! #include"stdio.h" voidmain() { chari,j,k; for(i='x';i<='z';i++) for(j='x';j<='z';j++) for(k='x';k<='z';k++) { if(i! =j&&i! =k&&j! =k&&i! ='x'&&k! ='x'&&k! ='z') printf("a--%c\nb--%c\nc--%c\n",i,j,k); } } 3.15#include voidmain() { intx,y; printf("inputx: "); scanf("%d",&x); if(x<1) printf("y=%d\n",x); elseif(x>=1&&x<10) printf("y=%d\n",2*x-1); else printf("y=%d\n",3*x-11); } 3.16#include voidmain() { intx,y; printf("inputscore: "); scanf("%d",&x); if(x>=90&&x<=100) printf("A\n"); elseif(x>=80&&x<=89) printf("B\n"); elseif(x>=70&&x<=79) printf("C\n"); elseif(x>=60&&x<=69) printf("D\n"); elseif(x>=0&&x<=59) printf("E\n"); else printf("inputerror! \n"); } 3.17#include voidmain() { intx,y,z; intweishu(intx); intfanxu(intx); inta,b,c,d,e,i,index=1; printf("请输入一个小于5位的数字: "); scanf("%d",&x); y=weishu(x); z=fanxu(x); if(x/100000! =0||x<0)//确定输入的是一个小于5位的数字 printf("inputerror! \n"); else { printf("该数是一个%d位数字\n",y); if((x%10)! =0)printf("个位: %d\n",x%10); if((x%100/10)! =0)printf("十位: %d\n",x%100/10); if((x%1000/100)! =0)printf("百位: %d\n",x%1000/100); if((x%10000/1000)! =0)printf("千位: %d\n",x%10000/1000); if((x/10000)! =0)printf("万位: %d\n",x/10000); printf("该数的逆序为: %d\n",z); } } intweishu(intx) { inty=1,i; for(i=0;i<5;i++) {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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 谭浩强 语言 习题集 课后 源码