C程序设计谭浩强习题与答案.docx

上传人:b****6 文档编号:7878319 上传时间:2023-01-26 格式:DOCX 页数:7 大小:99.08KB
下载 相关 举报
C程序设计谭浩强习题与答案.docx_第1页
第1页 / 共7页
C程序设计谭浩强习题与答案.docx_第2页
第2页 / 共7页
C程序设计谭浩强习题与答案.docx_第3页
第3页 / 共7页
C程序设计谭浩强习题与答案.docx_第4页
第4页 / 共7页
C程序设计谭浩强习题与答案.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

C程序设计谭浩强习题与答案.docx

《C程序设计谭浩强习题与答案.docx》由会员分享,可在线阅读,更多相关《C程序设计谭浩强习题与答案.docx(7页珍藏版)》请在冰豆网上搜索。

C程序设计谭浩强习题与答案.docx

C程序设计谭浩强习题与答案

Documentnumber:

WTT-LKK-GBB-08921-EIGG-22986

C程序设计谭浩强习题与答案精编

习题

2.1什么是算法是从日常生活中找三个例子,描述他们的算法

答:

对操作的描述,即操作步骤,就是算法。

广义的说;为解决一个问题而采取的方法和步骤,就称为“算法”。

例:

(略)

2.2什么叫结构化的算法为什么要提倡结构化的算法

答:

由基本节构所构成的算法属于“结构化”的算法。

结构化的算法便于编写、阅读、便于修改和维护。

这就减少了程序出错的机会、提高了程序的可靠性,保证了程序的质量。

2.3试述三种基本结构的特点,你能否自己另外设计两种基本结构(要符合基本结构的特点)。

答:

基本结构有以下共同点:

1:

只有一个入口。

图2-中的a点为入口。

2:

只有一个出口。

图2-中的b点为出口。

注意,一个判断框有两个出口,但一个选择结构只有一个出口。

不能混淆。

3:

结构内的每一部分都有被执行到的机会。

也就是说,对每一个框来说,都应当有一条到出口的路径通过它。

图2-20中就没有一条从入口到出口的路径通过A框。

4:

结构内不存在死循环(无终止的循环)。

图2-21就是一个死循环。

需要说明的是基本结构并不一定只限于以上3中,只要有以上四种特点就可以。

人们可以自己定义之。

例:

如下两图

2.4用传统流程图表示求解一下问题的算法。

(1)有两个瓶子A和B,分别放醋和酱油,要求将他们互换。

#include<>voidmain(){inta;intb;intc;a=10;b=5;printf("%d,%d\n",a,b);c=a;a=b;b=c;printf("%d,%d\n",a,b);}

(2)一次将10个数输入,要求将将其中最大的数输出。

#include<>voidmain(){inta[10];inti;intmax;printf("input10numbers.\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");max=a[0];for(i=1;i<10;i++)if(max

%d\n",max);}

(3)有3个数abc,要求安大小顺序把他们输出。

#include<>voidmain(){inta;intb;intc;intt;scanf("%d%d%d",&a,&b,&c);printf("\n");printf("thefirstnumbers:

");printf("%d,%d,%d\n",a,b,c);if(a

");printf("%d,%d,%d\n",a,b,c);}

(4)求1+2+3+···+100。

#include<>voidmain(){inti;intsum=0;for(i=1;i<=100;i++)sum=sum+i;printf("thesumis:

%d\n",sum);}

(5)判断一个数n能否同时被3和5整除。

#include<>voidmain(){inti;printf("inputi\n");scanf("%d",&i);if(i%3==0&&i%5==0)printf("%disok!

\n",i);elseprintf("%dcannot!

\n",i);}

(6)将100~200之间的素数输出。

#include<>voidmain(){inti,j;for(i=100;i<=200;i++)for(j=2;j

(7)求两个数m和n的最大公约数。

#include<>voidmain(){intm,n;intt;inti;intz=1;scanf("%d%d",&m,&n);if(m>n){t=m;m=n;n=t;}for(i=2;i<=m;i++){if(m%i==0&&n%i==0)z=i;}printf("theansweris:

%d\n",z);}

(8)求方程式

的根。

分别考虑:

①有两个不等的实根;②有两个相等的实根。

#include<>

#include<>

voidmain()

{

floata,b,c;

floatdt;

floatm,n;

floatx1,x2;

printf("inputa,b,c!

\n");

scanf("a=%f,b=%f,c=%f",&a,&b,&c);

dt=sqrt(b*b-4*a*c);

m=-b/(2*a);

n=dt/(2*a);

if(dt<=1e-6)

{

x1=m;x2=m;

printf("theequationhastwoequalroots:

x1=%f,x2=%f\n",x1,x2);

}

if(dt>1e-6)

{

x1=m+n;x2=m-n;

printf("theequationhasdistinctrealroots:

x1=%f,x2=%f\n",x1,x2);

}

}再次说明一下由于我们考虑了实数在内,而实数在计算和存储时有细小误差,所以dt=0用dt<=1e-6表示。

即10的-6次方。

2.5用N-S图表示题中各题的算法。

2.6用伪代码表示题中各题的算法。

(1)输出年中是闰年的年份,符合下面俩个条件之一的年份是闰年。

(一)能被4整除但不能被100整除

(二)能被100整除且能被400整除。

#include<>voidmain(){inti;for(i=1900;i<=2000;i++){if(i%4==0&&i%100)printf("%d\n",i);elseif(i%400==0)printf("%d\n",i);}}

2.7什么叫结构化程序设计他的主要内容是什么

答:

结构化程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。

它用基本结构(一般认为是3种:

顺序、选择和循环)为基本思想设计的程序。

这种程序便于编写、便于阅读、便于修改和维护。

这就减少了程序出错的机会,提高了程序的可靠性,保证了程序的质量。

它的主要内容为:

把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。

具体说:

采用以下方法来保证得到结构化的程序:

(1)自顶向下

(2)逐步细化(3)模块化设计(4)结构化编码。

{拓展:

结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。

转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,用"很随意"的流程线来描述转移功能。

如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。

2.8用自顶向下、逐步细化的方法进行以下算法的设计:

(1)输出1900-2000年中是闰年的年份,符合下面两个条件之一的年份是闰年。

①能被4整除但不能被100整除;②能被100整除切能被400整除。

#include<>voidmain(){inti;for(i=1900;i<=2000;i++){if(i%4==0&&i%100)printf("%d\n",i);elseif(i%400==0)printf("%d\n",i);}}

(2)求

的根。

分别考虑D=

大于0、等于0、小于0这3种情况。

#include<>

#include<>voidmain(){floata,b,c;floatdt;floatm,n;floatx1,x2;printf("inputa,b,c!

\n");scanf("a=%f,b=%f,c=%f",&a,&b,&c);dt=b*b-4*a*c;if(fabs(dt)<=1e-6){x1=-b/(2*a);x2=-b/(2*a);printf("theequationhastwoequalroots:

x1=x2=%f\n",x1);}elseif(dt>1e-6){x1=(-b+sqrt(dt))/(2*a);x2=(-b-sqrt(dt))/(2*a);printf("theequationhasdistinctrealroots:

x1=%f,x2=%f\n",x1,x2);}else{m=(-b)/(2*a);n=sqrt(-dt)/(2*a);printf("theequationhascomplexrealroots:

\nx1=%f+%fi\n",m,n);printf("x2=%f-%fi\n",m,n);

}}

(3)输入10个数,输出其中最大的一个数。

#include<>voidmain(){inta[10];inti;intmax;printf("inputthe10numbers:

\n");for(i=0;i<=9;i++)scanf("%d",&a[i]);max=a[0];for(i=1;i<=9;i++)if(a[i]>max)max=a[i];printf("thelargestnumberis:

%d\n",max);}

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

当前位置:首页 > 经管营销 > 经济市场

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

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