谭浩强C语言习题集课后源码.docx

上传人:b****6 文档编号:5287554 上传时间:2022-12-14 格式:DOCX 页数:13 大小:65.90KB
下载 相关 举报
谭浩强C语言习题集课后源码.docx_第1页
第1页 / 共13页
谭浩强C语言习题集课后源码.docx_第2页
第2页 / 共13页
谭浩强C语言习题集课后源码.docx_第3页
第3页 / 共13页
谭浩强C语言习题集课后源码.docx_第4页
第4页 / 共13页
谭浩强C语言习题集课后源码.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

谭浩强C语言习题集课后源码.docx

《谭浩强C语言习题集课后源码.docx》由会员分享,可在线阅读,更多相关《谭浩强C语言习题集课后源码.docx(13页珍藏版)》请在冰豆网上搜索。

谭浩强C语言习题集课后源码.docx

谭浩强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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1