C程序设计(第四版)(谭浩强)完整版_课后习题答案

合集下载

(完整word版)c程序设计(第四版)谭浩强-课后答案(完整版).pdf

(完整word版)c程序设计(第四版)谭浩强-课后答案(完整版).pdf

C 语言课后习题答案 -第四版 - 谭浩强 (1-7 )第一章#include <stdio.h>int main ( )**\n\n");printf(" Very Good!\n\n");printf (return 0; #include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c); max=a;if (max<b)max=b;if (max<c)max=c;printf **\n");printf("The largest number is %d\n",max); return 0;}第3章#include <stdio.h>#include <math.h> int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n); printf("p=%f\n",p); return 0; }#include <stdio.h>#include <math.h> int main()p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p1=p*((1+r5)*5); // 一次存5 年期p2=p*(1+2*r2)*(1+3*r3); // 先存2 年期,到期后将本息再存3 年期// 先存3 年期,到期后将本息再存2 年期p3=p*(1+3*r3)*(1+2*r2);p4=p*pow(1+r1,5); // 存1 年期,到期后将本息存再存1 年期,连续存5 次p5=p*pow(1+r0/4,4*5); // 存活期存款。

C程序设计(第四版)谭浩强_课后习题答案_共11章_xin

C程序设计(第四版)谭浩强_课后习题答案_共11章_xin

1-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}3-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

C程序设计(第四版)谭浩强_课后习题答案_共11章,xin

C程序设计(第四版)谭浩强_课后习题答案_共11章,xin

1-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}3-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

C程序设计谭浩强完整版课后习题答案

C程序设计谭浩强完整版课后习题答案
a=5;
b=4;
sum=a+b;
printf("The sum is %d .\n",sum);
return0;
}
P008调用函数比较两个数的大小.
#include<>
intmain()
{
intmax(intx,inty);inta,b,c;
scanf("%d,%d",&a,&b);c=max(a,b);printf("The max is %d .\n",c);
{
doublea,b,c,disc,x1,x2,p,q;
scanf("%lf %lf %lf",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/*a);
q=sqrt(disc)/*a);
x1=p+q;
x2=p-q;
printf("x1=%\nx2=%",x1,x2);
{
floatoutput_fah;
output_fah=5)*input_cen+32;returnoutput_fah;
}
intmain()
{
intchoice;
floatinput_fah,input_cen,output_fah,output_cen;printf("F_to_C press <1> and C_to_F press <2> !\n");
scanf("%d",&n);
if(n%3==0&&n%5==0)printf ("Can be devide by 3 and 5 !\n");

c程序设计(第四版)谭浩强-课后答案(完整版).pdf (1)

c程序设计(第四版)谭浩强-课后答案(完整版).pdf (1)

C 语言课后习题答案-第四版- 谭浩强(1-7)第一章#include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第3章#include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存 5 年期p2=p*(1+2*r2)*(1+3*r3); // 先存 2 年期,到期后将本息再存 3 年期p3=p*(1+3*r3)*(1+2*r2); // 先存 3 年期,到期后将本息再存 2 年期p4=p*pow(1+r1,5); // 存 1 年期,到期后将本息存再存 1 年期,连续存 5 次p5=p*pow(1+r0/4,4*5); // 存活期存款。

(完整word版)《C语言程序设计》课后习题答案(第四版)谭浩强

(完整word版)《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

《C语言程序设计》课后习题答案(第四版)谭浩强

《C语言程序设计》课后习题答案(第四版)谭浩强

《C语言程序设计》课后习题答案(第四版)谭浩强第1章程序设计和c语言11.1什么是计算机程序11.2什么是计算机语言11.3c语言的发展及其特点31.4最简单的c语言程序51.4.1最简单的c语言程序举例61.4.2c语言程序的结构101.5运转c程序的步骤与方法121.6程序设计的任务141-5#includeintmain(){printf(\printf(\verygood!\\n\\n\printf(\return0;}1-6#includeintmain(){inta,b,c,max;printf(\scanf(\max=a;if(maxprintf(\return0;}第2章算法――程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样则表示一个算法222.4.1用自然语言则表示算法222.4.2用流程图则表示算法222.4.3三种基本结构和改进的流程图262.4.4用ns流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的c程序设计――顺序程序设计373.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3c语句573.3.1c语句的促进作用和分类573.3.2最基本的语句――赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输入数据683.4.4用scanf函数输出数据753.4.5字符数据的输入输出78习题823-1#include#includeintmain(){floatp,r,n;r=0.1;n=10;p=pow(1+r,n);printf(\return0;}3-2-1#include#includeintmain(){floatr5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5);//一次存5年期p2=p*(1+2*r2)*(1+3*r3);//先存2年期,到期后将本息再存有3年期p3=p*(1+3*r3)*(1+2*r2);//先存3年期,到期后将本息再存有2年期p4=p*pow(1+r1,5);//存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5);//存活期存款。

C程序设计(第四版)谭浩强-课后习题标准答案-共章

C程序设计(第四版)谭浩强-课后习题标准答案-共章

C程序设计(第四版)谭浩强-课后习题标准答案-共章C程序设计(第四版)谭浩强-课后习题答案-共章————————————————————————————————作者:————————————————————————————————日期:第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #includeint main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#includeint main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)< bdsfid="88" p=""></b)<>max=b;if (max<c)< bdsfid="91" p=""></c)<>max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂16 2.1什么是算法16 2.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include#includeint main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include#includeint main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

C程序设计(第四版)(谭浩强)完整版 课后习题答案

C程序设计(第四版)(谭浩强)完整版 课后习题答案

C程序设计(第四版)(谭浩强)第一章课后习题答案P006 1.1 向屏幕输出文字.#include<stdio.h>//预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找.int main(){printf("Welcome to \n");return 0; //与int main对应,为了程序可移植性,建议全用int main + return 0;.}P008 1.2 求两个数的和.#include<stdio.h>int main(){int a,b,sum;a=5;b=4;sum=a+b;printf("The sum is %d .\n",sum);return 0;}P008 1.3 调用函数比较两个数的大小.#include<stdio.h>int main(){int max(int x,int y); //被调用函数在主函数后面,用前先声明.int a,b,c;scanf("%d,%d",&a,&b); //输入时要按格式来,此处的逗号,用空格会发生错误.c=max(a,b); //a,b作为实参传入被调用函数中.printf("The max is %d .\n",c);return 0;}int max(int x,int y) //定义了两个形参.{int z; //z属于局部变量,可与主函数中相同名字.if (x>y)z=x;elsez=y;return(z); //z作为整个程序的出口值,赋给主函数中的c.}P015 0.6 三个数的大小.(数字0表示课后练习题)#include<stdio.h>int main(){int a,b,c,d; //d是用于存储最大值的.int max(int x , int y , int z); //测试可知,在VS2008中,可以不预先声明.printf("Please input 3 numbers :\n");scanf("%d %d %d",&a,&b,&c);d=max(a,b,c); //调用函数中有三个形参,这里需要传入三个实参,才可运算.printf("The max is :%d .\n",d); // d可以换成max(a,b,c).}int max(int x , int y , int z){int m;if (x>y && x>z) //求三者之大的一种方法.m=x;if (y>x && y>z)m=y;if (z>y && z>x)m=z;return (m); //返回值m给主函数中的d.}C程序设计(第四版)(谭浩强)第2章课后习题答案算法——程序的灵魂#include<stdio.h>int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<6;i++) //这里是到6.{s=s*i; //相乘}printf("The sum is %d .\n",s);return 0;}#include<stdio.h> //作出要求:换成1到11间奇数相乘.int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<12;i++) //这里是到,但题目要求的是取单数.也可以是i=i+2{if(i%2!=0) //i对取模,值为非为奇数;为则为偶数.s=s*i;elsecontinue; //跳过这个for循环的这一次,执行下一次.}printf("The sum is %d .\n",s);return 0;}P019 2.2 按要求输出80分以上的学生信息.暂时没法做.P019 2.3 判断2000-2500年中的闰年,并输出.年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是365.2423天(目前)。

《C语言程序设计》课后习题答案(第四版)谭浩强

《C语言程序设计》课后习题答案(第四版)谭浩强

《C语言程序设计》课后习题答案(第四版)谭浩强第1章程序设计和c语言11.1什么是计算机程序11.2什么是计算机语言11.3c语言的发展及其特点31.4最简单的c语言程序51.4.1最简单的c语言程序示例61.4.2c语言程序结构101.5运行c程序的步骤与方法121.6程序设计的任务141-5#includeintmain(){printf(\printf(\verygood!\\n\\n\printf(\return0;}1-6#includeintmain(){inta,b,c,max;printf(\scanf(\max=a;if(maxprintf(\return0;}第2章算法——程序的灵魂162.1算法是什么162.2简单算法示例172.3算法的特点212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用NS流程图表示算法282.4.5用伪码312表示算法。

4.6用计算机语言32表示算法2.5结构化程序设计方法34习题36第三章最简单的c语言编程-顺序编程373.1顺序编程的例子373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6如何确定常数的类型513.2.7运算符和表达式523.3c语句573.3.1c语句的作用和分类573.3.2最基本的语句-赋值语句593.4数据输入和输出653.4.1输入和输出示例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1#include#includeintmain(){floatp,r,n;r=0.1;n=10;p=pow(1+r,n);printf(\return0;}3-2-1#include#includeintmain(){r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5);//5年一次定期存款p2=p*(1+2*r2)*(1+3*r3);//先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2);//先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5);//存1年,到期后再存1年本息,连续存5次P5=P*pow(1+R0/4,4*5)//存款存续期。

c程序设计(第四版)谭浩强_课后答案(完整版)

c程序设计(第四版)谭浩强_课后答案(完整版)

p1=p*((1+r5)*5); p2=p*(1+2*r2)*(1+3*r3); p3=p*(1+3*r3)*(1+2*r2); p4=p*pow(1+r1,5); p5=p*pow(1+r0/4,4*5); printf("p1=%f\n",p1); printf("p2=%f\n",p2); printf("p3=%f\n",p3); printf("p4=%f\n",p4); printf("p5=%f\n",p5); return 0; }
// 一次存 5 年期 // 先存 2 年期,到期后将本息再存 3 年期 // 先存 3 年期,到期后将本息再存 2 年期 // 存 1 年期,到期后将本息存再存 1 年期,连续存 5 次 // 存活期存款。活期利息每一季度结算一次 // 输出按第 1 方案得到的本息和 // 输出按第 2 方案得到的本息和 // 输出按第 3 方案得到的本息和 // 输出按第 4 方案得到的本息和 // 输出按第 5 方案得到的本息和
printf("%c,%c\n",c1,c2); printf("按 ASCII 码输出结果为:\n"); printf("%d,%d\n",c1,c2); return 0; }#include <stdio.h> int main() { char c1,c2; int i1,i2; printf("请输入两个字符 c1,c2:"); scanf("%c,%c",&c1,&c2); i1=c1; i2=c2; printf("按字符输出结果:\n"); printf("%c,%c\n",i1,i2); printf("按整数输出结果:\n"); printf("%d,%d\n",c1,c2); return 0; }#include <stdio.h> int main() { char c1,c2; // 定义为字符型 // 赋值给整型变量 // 定义字符型变量 // 定义整型变量

C程序设计(第四版)谭浩强_课后习题答案_共11章_xin

C程序设计(第四版)谭浩强_课后习题答案_共11章_xin

1-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}3-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

C程序设计4(谭浩强)完整版-课后习题答案

C程序设计4(谭浩强)完整版-课后习题答案

C程序设计(第四版)(谭浩强)第一章课后习题答案向屏幕输出文字.#include<>码均调试成功,若有失误大多不是代码问题.自已找找.int main(){printf("\n");return0;}求两个数的和.#include<>int main(){int a,b,sum;a=5;b=4;sum=a+b;printf("Thesumis%d.\n",sum);return0;}调用函数比较两个数的大小.#include<>int main(){int max(int x,int y); int a,b,c;scanf("%d,%d",&a,&b); c=max(a,b); printf("Themaxis%d.\n",c);return0;}int max(int x,int y){int z; if(x>y)z=x;elsez=y;return(z);}三个数的大小.(数字0表示课后练习题)#include<>int main(){int a,b,c,d; int max(int x,int y,int z); printf("Pleaseinput3numbers:\n");scanf("%d%d%d",&a,&b,&c);d=max(a,b,c); printf("Themaxis:%d.\n",d);}int max(int x,int y,int z){int m;if(x>y&&x>z) m=x;if(y>x&&y>z)m=y;if(z>y&&z>x)m=z;return(m);}C程序设计(第四版)(谭浩强)第2章课后习题答案算法——程序的灵魂计算机1-5相乘的积.#include<>int main(){int i,s=1; for(i=1;i<6;i++) {s=s*i;n",s);return0;}#include<>int main(){int i,s=1; for(i=1;i<12;i++)可以是i=i+2{if(i%2!=0) s=s*i;elsecontinue; }printf("Thesumis%d.\n",s);return0;}按要求输出80分以上的学生信息.暂时没法做.判断2000-2500年中的闰年,并输出.年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是天(目前)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C程序设计(第四版)(谭浩强)第一章课后习题答案P006 1.1 向屏幕输出文字.#include<stdio.h>//预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找. int main(){printf("Welcome to \n");return 0; //与int main对应,为了程序可移植性,建议全用int main + return 0;.}P008 1.2 求两个数的和.#include<stdio.h>int main(){int a,b,sum;a=5;b=4;sum=a+b;printf("The sum is %d .\n",sum);return 0;}P008 1.3 调用函数比较两个数的大小.#include<stdio.h>int main(){int max(int x,int y); //被调用函数在主函数后面,用前先声明.int a,b,c;scanf("%d,%d",&a,&b); //输入时要按格式来,此处的逗号,用空格会发生错误.c=max(a,b); //a,b作为实参传入被调用函数中.printf("The max is %d .\n",c);return 0;}int max(int x,int y) //定义了两个形参.{int z; //z属于局部变量,可与主函数中相同名字.if (x>y)z=x;elsez=y;return(z); //z作为整个程序的出口值,赋给主函数中的c.}#include<stdio.h>int main(){int a,b,c,d; //d是用于存储最大值的.int max(int x , int y , int z); //测试可知,在VS2008中,可以不预先声明.printf("Please input 3 numbers :\n");scanf("%d %d %d",&a,&b,&c);d=max(a,b,c); //调用函数中有三个形参,这里需要传入三个实参,才可运算.printf("The max is :%d .\n",d); // d可以换成max(a,b,c).}int max(int x , int y , int z){int m;if (x>y && x>z) //求三者之大的一种方法.m=x;if (y>x && y>z)m=y;if (z>y && z>x)m=z;return (m); //返回值m给主函数中的d.}C程序设计(第四版)(谭浩强)第2章课后习题答案算法——程序的灵魂#include<stdio.h>int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<6;i++) //这里是到6.{s=s*i; //相乘}printf("The sum is %d .\n",s);return 0;}#include<stdio.h> //作出要求:换成1到11间奇数相乘.int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<12;i++) //这里是到,但题目要求的是取单数.也可以是i=i+2{if(i%2!=0) //i对取模,值为非为奇数;为则为偶数.s=s*i;elsecontinue; //跳过这个for循环的这一次,执行下一次.}printf("The sum is %d .\n",s);return 0;}P019 2.2 按要求输出80分以上的学生信息.暂时没法做.P019 2.3 判断2000-2500年中的闰年,并输出.年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是365.2423天(目前)。

所以,如果每年定义为365天的话,1年就会多出0.2423天,4年就会多出0.9692天,非常接近1天,这样闰年就出现了,也就是每4年要有1年设置为366天,来抵消这多出的1天。

规则为:·1)如果年份能被4整除,则该年计为闰年;可是,假如不做调整的话,当400年的时候,累计才多出96.92天,接近于多出97天,闰年的设置却多出来100天,所以要在400年内,再撤销3个闰年。

怎么撤销呢?就有了下面这个规则:·2)如果年份能被100整除,则不计为闰年;问题又来了,400年里有4个100年吧,去掉后四个100年后,又少了一个,所以再加一个规则就是:·3)如果年份能被400整除,则计为闰年。

简单说来每400年里设置了97个闰年,也就是400里的前3个100年不设置闰年,误差被调整到400年仅有0.08天。

#include<stdio.h>int main(){int i;for(i=2000;i<=2200;i++){if((i%4==0 && i%100!=0)||i%400==0) //闰年的经典判断条件.printf("%d is a leap year !\n",i);elseprintf("%d is not a leap year !\n",i);}}P020 2.4 求(1)-(1/2)+(1/3)……+(1/99)-(1/100)的值.#include<stdio.h>int main(){float sign=1 , sum=0 , deno , term ; //关于有小数的计算应该用float.for (deno=1;deno<=100;deno++){term=sign*(1/deno); //term临时值,sing符号,deno为分母.sum=sum+term; //第一次总全存储.sign=(-1)*sign; //换号.}printf("The sum of deno(指定值) is %f .\n",sum);return 0; //若是到100的话,结果为0.68172}P021 2.5 得到一个大于3的数,并判断是否为素数.#include<stdio.h>int main(){int i , num ,n ; //像13,37,这样只能让和它本身除以外,没有其它除数的叫素数.printf("Please input a number :\n"); //获取一个数值scanf("%d",&num);for(i=2;i<num;i++) //在到此数值间进行循环除,如果除得尽,就不满足素数要求.{if(num%i==0) //除得尽,则不是.{n=1;break; //设置跳出,才不会执行多次.}n=0; //按程序走的话,这里会执行多次,不能用printf语句,会输出多次.}if(n==0) //单出口问题,虽然n=0执行多次,但仍然是n=0,这样才会只输出一次.{printf("It is do a prime number !"); //如果是100-200可以加个”%d”,nmu进去.}else{printf("It is not a prime number !");}return 0;}2.11-2.16要求用N-S图表示上列算法.…………还要伪代码#include<stdio.h>int main(){char a='a',b='b',c;c=a;a=b;b=c;printf("a now is %c , b now is %c !\n",a,b);return 0;}P036 0.2 输入10个数,并输出最大的那一个数.#include<stdio.h>int main(){int i,a[10],s=0 ;printf("Please input 10 numbers :\n");for(i=0;i<=9;i++){scanf("%d",&a[i]);}for(i=0;i<=9;i++){if (s<a[i]) s=a[i];}printf("%d is the biggest number !\n",s);return 0;}P036 0.3 按大小顺序输出一些数.#include<stdio.h>int main(){int i , j , a[4] , s=0 ;printf("Please input 5 numbers :\n"); //此处要回车.for (i=0 ; i<=4 ; i++){scanf("%d",&a[i]); //这是取多个数的代码,可以用while控制取到\n符为止.}for (i=0 ; i<=3 ; i++) //双重循环,先一个外循,再轮所有小循,轮完后再下一个大循.{for (j=i+1 ; j<=4 ; j++) //第一个循环是至n-1,第二个循环是到n.{if (a[i]>a[j]) //如果成立,则对换,小于号表示降序排列,大于号表示升序排列.{s=a[i];a[i]=a[j];a[j]=s;}}}for (i=0 ; i<=4 ; i++) //重新定义循环输出数组中新排列的数.printf("%d-",a[i]);return 0;}P036 0.4 求1至100的总合.#include<stdio.h>int main(){int i , sum=0 ; //这是一个简单的程序.for (i=0 ; i<101 ; i++)sum=sum+i;printf("The sum of one to one hundred is %d !\n",sum);return 0;}#include<stdio.h>int main(){int n ;printf("Please input a number :\n");scanf("%d",&n);if(n%3==0&&n%5==0) //关键句,用"并"的符号.printf ("Can be devide by 3 and 5 !\n");elseprintf ("Can not be devide by 3 and 5 !\n");return 0;}P036 0.6 输出100-200间的素数.//********************第一种方法.#include<stdio.h> //网络版本,采用调用函数和求根取素.#include<math.h>//下面用到sqrt,所以需要包含数据函数.sqrt是求根,属数学函数. int main() //学会一个程序采用”主函数+被调用函数”的方式,会比较规范.{int i;for (i=100; i<=200; i++) //为了书写规范,最好加上{},以示清范围.if(prime_number(i) == 1) //i是实参.printf("%d ",i);return 0;}int prime_number(double m) //m是形参.{int j,k;k=(int)sqrt(m); //求根,(int)是强制转换,求根里要是浮点型.for(j=2;j<=k;j++){if(m%j==0)return 0; //此值返回给主函数中的实参.}return 1;}//********************第二种方法.#include<stdio.h>#include<math.h>int main(){int i;for(i=100;i<=200;i++) //指定至间.{if(prime(i)==1) //这里i为实参,传入形参j中进行运算,然后再由形参j带出返回.printf ("%d is the prime number !\n",i);}return 0;}int prime(int j) //j是形参,用于接收实参i给的值.{int m, n;m=(int)sqrt(j);for (n=2;n<=m;n++){if(j%n==0)return 0; //返回值,0为不是素数,1是素数.}return 1;}//********************第二种方法.请仿照2.5来写.P036 0.7 最大公约数和最小公倍数.#include<stdio.h>//最大公约数用累除法,除到无余数时的被除数是最大公约数.main (){int m, n, c, d;int gcd(); //这是最大公约数的缩写,此处调用函数,可以不写里面的实参.int lcm(); //这是最小公倍数的缩写,此处调用函数,可以不写里面的实参.printf("Please input two number :\n");scanf("%d %d",&m,&n);c=gcd(m,n); //c获取最大公约数d=lcm(m,n); //d获取最小公倍数printf("The GCD of %d and %d is : %d !\n", m, n, c);printf("The LCM of %d and %d is : %d !\n", m, n, d);return 0;}int gcd(int x, int y) //最大公约数Greatest Common Divisor{int temp;while(x%y!=0){temp=y; //y在下一轮中作为除数,即是下一轮中的X,所以先闪一边去.y=x%y; //x,y的余数作为下一轮中的Y,由x%y来取得.x=temp; //刚才temp中存储了y的值,现在拿出来作为下一轮中的X使用.}return y; //这是每一轮中的被除数,按原理来,这就是最大公约数,即累除法的原理. }int lcm(int x, int y) //最小公倍数Lowest Common Multiple{int i, temp;if(x<y) //保证二者大的数在X上,小的数在Y上.小于号降序,大于号升序.{ //以下为经典三行码,实现两个数的互换.temp=x;x=y;y=temp;}for(i=1; i<=y; i++) //设定一个区间,从1至小的数之间的循环.{if(!((x*i)%y)) //除得尽为零,非零为真,则成立并返回.{ //如此往复,直到取模无余数,那么小的数X乘以区间当前的I值,就是最小公倍数.return x*i;}}}最简单的C程序设计——顺序程序设计P037 3.1 把华氏温度转化为摄氏表示法.#include<stdio.h>float F_to_C(float input_fah) //代表华转摄,input_fah是局部变量.{float output_cen; //这里也是局部变量.output_cen=(5.0/9)*(input_fah-32); //函数的功能体.return output_cen; //返回值,注意,返回值的数据类型应该和函数一致.}float C_to_F(float input_cen){float output_fah;output_fah=(9.0/5)*input_cen+32; //转换过程.return output_fah;}int main(){int choice;float input_fah,input_cen,output_fah,output_cen; //局部变量的调用及参数传递.printf("F_to_C press <1> and C_to_F press <2> !\n");scanf("%d",&choice);if(choice==1){printf("Please input fahrenheit :");scanf("%f",&input_fah); //这个是主函数定义的变量,虽然和调用函数同名.output_cen=F_to_C(input_fah);printf("The 华氏 is %d , 摄氏 is %d .",(int)input_fah,(int)output_cen);}if(choice==2){printf("Please input centigrade :");scanf("%f",&input_cen);output_fah=C_to_F(input_cen);printf("The Centigrade is %d , and the Fahrenheitis %d .",(int)input_cen,(int)output_fah);}return 0;}P038 3.2 计算存款利息(关于精度问题).#include<stdio.h>int main(){float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;p1=p0*(1+r1);p2=p0*(1+r2);p3=p0*(1+r3/2)*(1+r3/2);printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);return 0;}P055 3.3 大写转换成小写#include<stdio.h>int main() //小写范围是97-122,大写范围是65-90,大写加上即得小写.26个字母.{char c1, c2;c1='A';c2=c1+32;printf("%c %d",c2,c2);return 0;}P059 3.4 给出三角形边长,算出面积.#include<stdio.h>#include<math.h>int main(){double a=3.67, b=5.43, c=6.21, s, area;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area is %f\n",area); //默认可以组成三角形.return 0;}P065 3.5 求一无二次等式的根,默认两个不同根.#include<stdio.h>#include<math.h>int main(){double a,b,c,disc,x1,x2,p,q;scanf("%lf %lf %lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf("x1=%7.2f\nx2=%7.2f",x1,x2);return 0;}P071 3.6 用%f输出实数,只能得到六位小数.#include<stdio.h>#include<math.h>int main(){double a=1.0; //1是整型,1.0是浮点型,默认是double.可以是float.printf("%.9f\n",a/3);return 0;}P072 3.7 float型数据的有效位数.#include<stdio.h>#include<math.h>int main(){float a; //输出的结果是.333252,float精度6位,所以第七位后不可信.a=10000/3.0;printf("%f\n",a);return 0;}#include<stdio.h>#include<math.h>int main(){char a='B',b='O',c='Y';putchar(a);putchar(b);putchar(c);putchar('\n');putchar(101); //101是A的ASCII代码的缩写,因为此函数只能输出字符.putchar(66);return 0;}#include<stdio.h>#include<math.h>int main(){char a,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c); //这也是基本回显的C程序代码.putchar('\n');return 0;}P081 3.10 getchar得到大写,putchar输出小写.#include<stdio.h>#include<math.h>int main(){char a,b;a=getchar();b=a+32;putchar(b);putchar('\n');return 0;}P082 0.1 国民生产总值10年后的增长倍数.#include<stdio.h>#include<math.h>int main(){double p,r=0.09,n=10;p=pow((1+r),n); //这是数学函数, pow(x,y)计算x的y次方.printf("P is %lf when 10 years later .\n",p);return 0; //结果是0.36倍.}#include<stdio.h>#include<math.h>int main(){double p,r,n; //年份和当年利率均有给出.p=1000*(1+5*0.0585);printf("5 years is %lf !\n",p); //1292.5,这是全五年期.lf输出的是double型.p=(1000*(1+2*0.0468));p=(p*(1+3*0.0540));printf("5 years is %lf !\n",p); //1270.76,这是先二年,再三年的.p=(1000*(1+3*0.0540));p=(p*(1+2*0.0468));printf("5 years is %lf !\n",p); //1270.76,这是先三年,再二年的.证明,是一样的.p=1000*pow((1+0.0414),5);printf("5 years is %lf !\n",p); //1224.86,这难道说是,相对的存死期越久越值钱.p=1000*pow((1+0.072/4),4*5);printf("5 years is %lf !\n",p); //1428.74.return 0;}P083 0.3 求几个月要以还贷.#include<stdio.h>#include<math.h>int main(){double m,r=0.01,d=300000,p=6000;m=(log10(p/(p-d*r)))/(log10(1+r));printf("%.1lf",m); //按要求只留一个小数,所以要写%.1lf.return 0;}P084 0.6 字母密码转换,调用函数及临界处理.#include<stdio.h>char printcode(char f){if(((int)f>86&&(int)f<91)||((int)f>118&&(int)f<123)){return(f-26+4); //因为putchar会自动返回,所以改成return,因为这是在函数中,调用需要返回值.}else{return(f+4);}}int main(){char a,b,c,d,e;printf("Please input :\n");a=getchar();b=getchar();c=getchar();d=getchar();e=getchar(); //临界问题.printf("%c%c%c%c%c",printcode(a),printcode(b),printcode(c),printcode(d),printc ode(e));putchar(putcharcode(a));putchar(putcharcode(b));putchar(putcharcode(c));putchar(putcharcode(d));putchar(putcharcode(e));return 0; //注意理解自定义函数的定义,使用,及形参实参的流向.//p84的是计算问题,自己看着办,最后要求小数点后两位,用的是%.2lf 来实现,因为没有要求实部,所以m.n格式中m不写.//p84的是定义问题,第一问,两者都行,但是定义字母时,scanf要写%c来获取,而定义数值时则要用%d来获取.// 第二问,putchar貌似只能输出字符,所以用printf.putchar本身就是字符输出函数啦,字符,有木有!!!字符啊!!尽管它的参数可以是putchar('\101'),效果是输出字符A啊.// 第三问,出现"任何"及"无条件",那么答案明显是"否".可以转换,但要在某此条件下,例如输出和读入时,%c是字母,而%d是数值,看着办.}选择结构程序设计#include<stdio.h>#include<math.h>int main(){double a,b,c,disc,x1,x2,p,q;scanf("%lf %lf %lf",&a,&b,&c);disc=b*b-4*a*c;if(disc<0) //这是选择结构和其判断条件的示例.printf("This equation hasn't real roots\n");else{p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf("x1=%7.2f\nx2=%7.2f",x1,x2);}return 0;}#include<stdio.h>int main() //此程序代表按大小顺序输出.{float a,b,t;scanf("%f %f",&a,&b); //出错时,注意检查这里是否按格式输入了.比如有个逗号.if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f\n",a,b);return 0;}P088 4.3 三个数按大小输出.#include<stdio.h>int main() //此程序代表按大小顺序输出.{float a,b,c,t;scanf("%f %f %f",&a,&b,&c);if(a>b) //此处执行后,a为小者.{t=a;a=b;b=t;}if(a>c) //此处执行后,a为小者.{t=a;a=c;c=t;}if(b>c) //上面已经搞定a是最小者,现在对比得出次小者,并且已经归到变量中.{t=b;b=c;c=t;}printf("%5.2f,%5.2f%5.2f\n",a,b,c);return 0;}P099 4.4 判断输入字符,并最终按小写输出.#include<stdio.h>int main(){char ch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z')?(ch+32):ch; //条件运算符,真取前,假取后.printf("%c\n",ch);return 0;}P100 4.5 按要求输出相应的Y值.#include<stdio.h>int main(){int x,y;scanf("%d",&x);if(x>=0){if(x>0) //这个范围要基于x>=0来判断.{y=1;}else{y=0;}}else//这个是x<0的范围.{y=-1;}printf("x=%d,y=%d",x,y);return 0;}P102 4.6 switch的简单应用.#include<stdio.h>int main(){char grade;scanf("%c",&grade);printf("Your score:");switch(grade){case'a':printf("85-100\n");break; //当多分支结构过于多时,可以用switch来解决.case'b':printf("70-84\n");break;case'c':printf("60-69\n");break;case'd':printf("<60\n");break;default:printf("Enter data error!\n");}return 0;}P104 4.7 按输入执行操作,并且不分大小写.#include<stdio.h>void action1(int x,int y){printf("x+y=%d\n",x+y);}void action2(int x,int y){printf("x*y=%d\n",x*y);}int main(){char ch;int a=15,b=23;ch=getchar();switch(ch){case'a':case'A':action1(a,b);break; //a,A共用一个执行语句.case'b':case'B':action2(a,b);break;default:putchar('\a'); //'\a'可以控制电脑发出蜂鸣声.}return 0;}P106 4.8 用if的分支来做闰年问题#include<stdio.h>int main(){int year,leap;printf("Please input the year:\n");scanf("%d",&year);if(year%4==0) //400年里,在100个可除尽4的年里计算,以下是在全范围内计算.{if(year%100==0) //既是100个内的,又是可以除尽100的,算是且.{if(year%400==0) //相当于且了两次,只余下唯一一个.{leap=1;}else//400年里只有1个除得尽,其它都不是.{leap=0;}}else//这里的范围是(year%4==0)&&(year%100!=0){leap=1; //在合法的100内,又不是2100,2200一类的,当然属闰年.}}else{leap=0;}if(leap){printf("%d is ",year);}else{printf("%d is not ",year);}printf("a leap year !"); //不管上面如何判断,最后还是会输出这一句.return 0;}P108 4.9 一元二次等式的全计算过程.#include<stdio.h>#include<math.h>int main(){double a,b,c,disc,x1,x2,realpart,imagpart;scanf("%lf %lf %lf",&a,&b,&c);printf("The equation ");if(fabs(a)<=1e-6) //fabs是绝对值, le-6,即是的负六次方,接近或是等于零.{printf("is not a quadratic !\n");printf("x1=x2=%lf",-c/b);}else{disc=b*b-4*a*c;if(fabs(disc)<=1e-6) //指数形式,数字1.{printf("has two equal roots : %lf\n",-b/(2*a));}else{if(disc>1e-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf("has distinct real roots : %lf and %lf \n",x1,x2);}else{realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf("has complex roots: \n");printf("%lf + %lfi\n",realpart,imagpart);printf("%lf + %lfi\n",realpart,imagpart);}}}return 0;}#include<stdio.h>int main(){double p,w,s,d,f;printf("p,w,s\n");scanf("%lf %lf %lf",&p,&w,&s);if(s<250){d=0.0;f=p*w*s*(1-d);printf("%lf",f);}else if(s<500){d=0.02;f=p*w*s*(1-d);printf("%lf",f);}else if(s<1000){d=0.05;f=p*w*s*(1-d);printf("%lf",f);}else if(s<2000){d=0.08;f=p*w*s*(1-d);printf("%lf",f);}else if(s<3000){d=0.1;f=p*w*s*(1-d);printf("%lf",f);}else{d=0.15;f=p*w*s*(1-d);printf("%lf",f);}return 0;}#include<stdio.h>int mina,mida,maxa;int max(int a,int b,int c){int m;if(a>b) //凡是比较中,大于号代表升序排列.{m=a;a=b;b=m;}if(a>c){m=a;a=c;c=m;}if(b>c){m=a;a=c;c=m;}return (c); //此排序后,a,b,c由小到大.所以c是返回中最大的.}int main(){int a,b,c;printf("Please input 3 numbers :");scanf("%d %d %d",&a,&b,&c);printf("The max is %d !\n",max(a,b,c));return 0;}P0112 0.5 一个小于1000的数,有判定条件.#include<stdio.h>#include<math.h>int main(){double a,b;printf("Please input a number :");scanf("%lf",&a);if(a<1000){b=sqrt(a);}else{printf("\a"); //控制蜂鸣声printf("Please input a number again :");scanf("%lf",&a);11b=sqrt(a);}printf("%.0lf",b); //按要求,只取整数.return 0;}P0112 0.9 一个不多于5位的数,按条件输出.#include<stdio.h>#include<math.h>int main(){int i,a,b[4],count=0;printf("Please input a number (five-digit number) :"); //意思是五位数以内.scanf("%d",&a);for(i=0;i<=4;i++){b[i]=a%10; //是%10,不是/10000,结果就是b[0]至b[4]中存着个,十,百,千,万位.a=a/10; // /10后得到的结果去掉了个数.if(b[i]!=0){count=count+1;}}printf("%d位数.\n",count);printf("分别输出每一位数字,如下:");for(i=4;i>=0;i--){printf("%d ",b[i]);}printf("\n");printf("倒序输出这一个数字,如下:");for(i=0;i<=4;i++){printf("%d",b[i]);}printf("\n");return 0;}P0112 0.10 按要求提成奖金(if写法).#include<stdio.h>int main(){double a,b;printf("Please input profit amount :");scanf("%lf",&a);if(a<=10) //这个是整个if 的基础.{b=a*0.1;}else if(a<=20) //以上面为基础,这已经代表了10-20间了!!!{b=1+(a-10)*0.075;}else if(a<=40) //同理,这是20-40间.{b=1+0.75+(a-20)*0.05;}else if(a<=60){b=1+0.75+0.1+(a-40)*0.03;}else if(a<=100){b=1+0.75+0.1+0.06+(a-60)*0.15;}else//这里是大于100的.{b=1+0.75+0.1+0.06+(a-100)*0.01;}printf("The reward is %lf !\n",b);return 0;}P0112 0.10 按要求提成奖金(switch写法).#include<stdio.h>double GetProfit(double c){printf("Please input profit amount :");scanf("%lf",&c);return (c); //返回本身了,如果有进一步的计算结果,将值赋给其它变量,也可以返回.}int main(){double a;char c;printf("Your choice :\nA : 0-10 ;\nB : 10-20 ;\nC : 20-40 ;\nD : 40-60 ;\nE :60-100 ;\nF : 100-1000 ;\n");scanf("%c",&c); //不同档时,应照档的规定数值进行输入,否则结果不会是正确的.switch(c) //前三后三用于比较调用函数.{ //GetProfit(c)引入的实参没有意义,返回值和引入的实参没关系,反而由键盘获得.case'A':{ printf("The reward is %lf !\n",GetProfit(c)*0.1);};break; //0-10 0.100case'B':{ printf("The reward is %lf !\n",1+(GetProfit(c)-10)*0.075);}break; //10-20 0.075case'C':{ printf("The reward is %lf !\n",1+0.75+(GetProfit(c)-20)*0.05);}break; //20-40 0.050case'D':{printf("Please input profit amount :");scanf("%lf",&a);printf("Thereward is %lf !\n",1+0.75+0.1+(a-40)*0.03);}break;//40-60 0.030case'E':{printf("Please input profit amount :");scanf("%lf",&a);printf("Thereward is %lf !\n",1+0.75+0.1+0.6+(a-60)*0.15);}break;//60-100 0.015case'F':{printf("Please input profit amount :");scanf("%lf",&a);printf("Thereward is %lf !\n",1+0.75+0.1+0.6+0.6+(a-100)*0.01);}break;//100-1000 0.010default:printf("Error data !");break; //可以有一个执行体,用{}包括起来.}return 0;}P0112 0.11 键盘输入数值,然后排序输出.#include<stdio.h>int main(){int a[10],i,j,m,n; //变量可以在写代码过程中再回来临时添加.printf("请输入数值的个数: (十个以内)");scanf("%d",&m); //到这里需要变量来承载数值的个数,设m,回头去定义变量那写上m.printf("请分别输入相对应个数的数值:");for(i=0;i<m;i++){scanf("%d",&a[i]);}for(i=0;i<m;i++){for(j=i+1;j<m;j++){if(a[i]>a[j]) //这是选择排序法.升序.{n=a[i]; //这里需要一个用于临时变量的n,所以回头去写上.a[i]=a[j];a[j]=n;}}}for(i=0;i<m;i++){printf("%d",a[i]);}return 0;}C程序设计(第四版)(谭浩强)第五章课后习题答案循环结构程序设计P115 5.1 用while计算1至100的合.#include<stdio.h>int main(){int i=1,sum=0;while(i<=100) //对于需要运算的值,要么在运算前可以赋值,要么一开始要指定.{sum=sum+i;i++;}printf("The sum is %d .\n",sum);return 0;}P117 5.2 用do-while来做1至100的合.#include<stdio.h>int main(){int i=1,sum=0;do// do-while可以做的事,用while都可以做到.{ //do-while先做一次执行,再判断条件,而while却是先做一个条件,再执行.sum=sum+i;i++;}while(i<=100);printf("The sum is %d .\n",sum);return 0;}P118 5.3 比较do-while与while的差别.#include<stdio.h>int main(){int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,正常,11的话,则sum仍然是0.while(i<=10){sum=sum+i;i++;}printf("The sum of 1-10 is %d .\n",sum);return 0;}#include<stdio.h>int main(){int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,结果一样.输入11的话,先做操作,所以sum=11.do{sum=sum+i;i++;}while(i<=10); //此重点在于理解二者的差别.printf("The sum of 1-10 is %d .\n",sum);return 0;}P126 5.4 break的例子.#include<stdio.h>int main(){int i,b=0,a,c;for(i=0;i<=1000;i++){printf("Please input amount :"); //循环体内套有输出语句以及跳出语句.scanf("%d",&a);b=b+a;if(b>=100){break; //break是用于跳出循环,对if无效,对while for switch 这一类.}}c=b/i;printf("conut is %d , aver is %d ",i+1,c); //注意%号后的形式,否则可能输出错误.return 0;}P127 5.5 continue的例子.#include<stdio.h>int main(){int i;for(i=1;i<20;i++){if(i%3!=0){continue; //跳过本次I,执行下一个i.}printf("%d ",i);}printf("\n");return 0;}#include<stdio.h>int main(){int i,j,a=0; //没有给初值,会出现警告: 使用了未初始化的局部变量“a”.for(i=1;i<=4;i++){for(j=1;j<=5;j++,a++) // a用来控制换行.{if(a%5==0){printf("\n");}printf("%d\t",i*j);}}printf("\n");return 0;}P131 5.7 用一个交错的式子求哌的近似值.#include<stdio.h>#include<math.h>int main() //四分之哌等于(1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11).{float s=1,n=1,m,sum=0,t;for(m=1;;m=m+2) //不确定哪项才会小于等于十的负六次方,所以不指定,无限下去.{ //不指定第二项,执行语句中应该有控制跳出的句子,否则死循环.t=(s)*(n/m); //这是第一项,s是符号,if(fabs(t)<=1e-6) //应该写在这里,题目要求这一项不累加进去.{break;}sum=sum+t; //因为累加项在这里,所以,一旦跳出就不会累加进来了.s=s*(-1); //变号一次.}printf("四分之一哌的值是%f.\n",sum);printf("一个完整哌的值是%f.\n",sum*4);return 0;}//下面这段小代码用来验证关于数值型数据类型的关系.去掉注释,可运行.//如果出现类似值为全1或是全零的话,一般可以考虑数据类型赋值或是定义错了的问题.//#include <stdio.h> //这是关于int float double三者关复杂关系的,乱啊,如果看不懂,可以通过实验自己明白来.////int main() //在C语言中,1.0认为是实数,即是double型,所以,如果你把它用float输出的话,会有警告:警告 1 warning C4305: “=”: 从“double”到“float”截断.//{// float m,a,b,c; //一旦定义了是这种类型的话,输出或是赋值的时候只能扩展不能截断,意思就是能变成double型,不能变成int型啦.而且后面的赋值会跟着它变成相应的类型.比如下面的m=1,其实得到的是m=1.0.// int d,e,f;// m=1;// a=1.0/3;// b=1/3;// c=m/3;// d=1.0;// e=1/4;// f=1.0/4;// printf("%lf(float用double的%lf来输出是可以的.)\n%f\n%f\n%f\n",m,a,b,c); //不管上面定义什么,这边写的输出类型是什么,就按相应的类型输出,有可能会出错,所以建议按定义的类型来输出.当然扩展的是不会错的,截断的是会错的,比如float可以用%lf来输出,而不能用%d来输出.// printf("%d\n%d\n%d\n",d,e,f); //但是,不相应的int型不可以用%f来输出的.因为int float就不同种类,一个是整数,一个是小数,float double同样是有小数点的!!!!// return 0;//}#include<stdio.h>int main() //这个就是著名的Fibonacci(费波那契数列问题){int f1=1,f2=1,f3,i;printf("%12d\n%12d\n",f1,f2);for(i=1;i<=38;i++) //注意,这是个基础问题,(i=1;i<=5;i++)这里其实进行了次运算,因为有f1,f2,要求有个,所以要有个.要么写<=38,要么写<39,边界问题一定要注意,不可以太随意!!!!{f3=f1+f2;printf("%12d\n",f3); //这个问题同样适用于"一对兔子一个月生一对"的问题.,f1=f2; //f1=f1+f2;此时它们各是,所以,现在的f1是.f2=f3; //f2=f2+f1;此时的f1已经是最先二者之和了.可以不用到f3.}return 0;}#include<stdio.h>#include<math.h>int main(){double num;int i;printf("Please input a number :");scanf("%lf",&num); //因为sqrt要求是浮点型,那就给它浮点型,需要时再强制转换.for(i=2;i<=sqrt(num);i++) //这边是<=号没错.{if((int)num%i==0) //如果在这期间有任何一个可以为零的话,则不是素数.{break; //当然跳出.}} //执行到这里的时候,i=5,已经变成了!!if(i<=sqrt(num)){printf("Not %d",(int)num);}else//如上所述,i=5,超出了求根的值,所以是素数.{printf("Yes %d",(int)num);}return 0;}#include<stdio.h>//不解释,HOHO>>>>...#include<math.h>int main(){double j;int i,k=0;for(j=100;j<=200;j++){for(i=2;i<=sqrt(j);i++){if((int)j%i==0){break;}}k=k+1; //这里是布局的开头.学习一下,有助逻辑.if(i<=sqrt(j)){printf("Not %d ",(int)j);if(k%5==0) //5个换一次行.{printf("\n");}}else{printf("Yes %d ",(int)j);if(k%5==0){printf("\n");}}}return 0;}P139 5.11 密码转换.#include<stdio.h>int main(){char c;c=getchar();while(c!='\n') //这也可以用数组来实现.{if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){if((c>='w'&&c<='z')||(c>='W'&&c<='Z')){。

相关文档
最新文档