C语言第二次作业练习
2017-04-29 23:32
288 查看
以下程序教材基于 谭浩强C程序设计(第四版)
第1题 在Visual C++ 6.0环境中输入并运行例3.4。
第2题 在Visual C++ 6.0环境中输入并运行例3.5。
/此程序编写于2017年3月8日,目的解一元二次方程/
第3题 在Visual C++ 6.0环境中输入并运行例3.8。
第4题 在Visual C++ 6.0环境中输入并运行例3.9。
第5题 在Visual C++ 6.0环境中输入并运行例3.10。
第6题 教材P.84习题6
第7题 教材P.84习题7
第8题 从键盘读取两个平面上两个点的坐标(x1,y1),(x2,y2),坐标值为double类型,计算两点之间的距离。
第9题 从键盘读取一个以元为单位的金额数字,小数点后保留两位数字(例如85.36),将该数字换算成元、角、分输出。
第10题 从键盘读取一个double类型的数,对该数保留小数点后三位数字,对第四位小数四舍五入处理,输出处理过后的数。
第1题 在Visual C++ 6.0环境中输入并运行例3.4。
/*此程序编写于2017年3月8日,目的:求三角形的面积*/ # include<stdio.h> # include<math.h> int main(void) { double a,b,c,s,area; a=3.67; b=5.34; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%f\tb=%f\tc=%f\n",a,b,c); printf("area=%f\n",area); return 0; } /*如果想让用户自行决定三边大小则程序如下: # include<stdio.h> # include<math.h> int main(void) { double a,b,c,s,area; printf("请输入三角形三边之长,以逗号分隔\n"); scanf("%lf,%lf,%lf",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%f b=%f c=%f\n",a,b,c); printf("面积为=%lf\n",area); return 0; } */
第2题 在Visual C++ 6.0环境中输入并运行例3.5。
/此程序编写于2017年3月8日,目的解一元二次方程/
# include<stdio.h> # include<math.h> int main(void) { 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\n",x1,x2); return 0; } /*将此程序更改为如下:更便捷 # include <stdio.h> # include <math.h> int main(void) { double a, b, c, delta,x1,x2; char ch; do { printf("请输入一元二次方程的三个系数:\n"); printf("a = "); scanf("%lf", &a); printf("b = "); scanf("%lf", &b); printf("c = "); scanf("%lf", &c); delta = b*b - 4*a*c; if (delta > 0) { x1 = (-b + sqrt(delta)) / (2*a); x2 = (-b - sqrt(delta)) / (2*a); printf("有两个解,x1 = %5.2lf, x2 = %5.2lf\n", x1, x2); //5.2的含义:指定数据占用5列,小数占用2列// } else if (0 == delta) { x1 = x2 = (-b) / (2*a); printf("有唯一解,x1 = x2 = %5.2lf\n", x1, x2); } else { printf("无实数解!\n"); } printf("您想继续么(Y/N): "); scanf(" %c", &ch); /*%c前面必须得加一个空格 原因要对应输入缓冲区中的换行这条scanf前面肯定还有别的输入语句, 因此,在它前面的输入语句执行时你输入后按的Enter键产生的换行会带到这条scanf里面。如果 %c前面没有空格,那么换行符将被%c接收。为避免这种情况,就改为加上一个空格再写%c了 举个例子:如果你的程序中有 scanf("%c",&a); scanf("%c",&b); 你如果输入 0(换行) 1 那变量a的值是'0',变量b的值是'\n'。如果第二个scanf的引号里是先加一空格再写%c,那么 0和1之间的换行就被空格接收,后面的'1'会被空格后面的%c对应变量b接收,成为变量b的值 } while ('y'==ch || 'Y'==ch); return 0; } */
第3题 在Visual C++ 6.0环境中输入并运行例3.8。
/*此程序编写于2017年3月8日,目的:在窗口输出BOY三个字符*/ # include<stdio.h> int main(void) { char a='B',b='O',c='Y'; putchar(a); putchar(b); putchar(c); putchar('\n'); return 0; }
第4题 在Visual C++ 6.0环境中输入并运行例3.9。
/*此程序编写于2017年3月8日,目的:键入BOY 并从窗口输出*/ # include<stdio.h> int main(void) { char a,b,c; a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); putchar('\n'); return 0; }
第5题 在Visual C++ 6.0环境中输入并运行例3.10。
/*此程序编写于2017年3月8日,目的:键入大写字母将其转换为小写字母*/ # include<stdio.h> int main(void) { char c1,c2; c1=getchar(); c2=c1+32; putchar(c2); putchar('\n'); return 0; }
第6题 教材P.84习题6
/* 此程序编写于2017年3月8日,目的China密码转换*/ # include<stdio.h> int main(void) { char c1='C',c2='h',c3='i',c4='n',c5='a'; c1=c1+4; c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4; printf("用printf语句输出的结果为:"); printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5); printf("用putchar语句输出的结果为:"); putchar(c1); putchar(c2); putchar(c3); putchar(c4); putchar(c5); printf("\n"); return 0; }
第7题 教材P.84习题7
# include<stdio.h> int main(void) { float h,r,l,s,p,q,z; float pi=3.141592; printf("请输入圆的半径r,圆柱的高h,中间以逗号隔开"); scanf("%f,%f",&r,&h); l=2*pi*r; s=r*r*pi; p=4*pi*r*r; q=3.0/4.0*pi*r*r*r; z=pi*r*r*h; printf("圆的周长为: %5.2f\n",l); printf("圆的面积为: %5.2f\n",s); printf("圆球表面积为: %5.2f\n",p); printf("圆球的体积为: %5.2f\n",q); printf("圆柱的体积为: %5.2f\n",z); return 0; }
第8题 从键盘读取两个平面上两个点的坐标(x1,y1),(x2,y2),坐标值为double类型,计算两点之间的距离。
/*此程序编写于2017年3月8日,目的:从键盘读取两个平面上两个点 的坐标(x1,y1),(x2,y2),坐标值为double类型,计算两点之间的距离。*/ # include<stdio.h> # include<math.h> int main(void) { double x1,x2,y1,y2,k; printf("请输入第一个点的坐标,中间以逗号隔开:\n"); scanf("%lf,%lf",&x1,&x2); printf("请输入第二个点的坐标,中间以逗号隔开:\n"); scanf("%lf,%lf",&y1,&y2); k=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); printf("两点间的距离为=%5.2lf\n",k); return 0; }
第9题 从键盘读取一个以元为单位的金额数字,小数点后保留两位数字(例如85.36),将该数字换算成元、角、分输出。
/*此程序编写于2017年3月8日,目的:从键盘读取一个以元为 单位的金额数字,小数点后保留两位数字(例如85.36), 将该数字换算成元、角、分输出。*/ # include<stdio.h> int main(void) { double yuan; int a,b,c; printf("请输入金额(元),保留两位小数\n"); scanf("%lf",&yuan); a=(int)yuan; b=(int)(yuan*10)%10; c=(int)(yuan*100)%10; printf("=%d元%d角%d分\n",a,b,c); return 0; }
第10题 从键盘读取一个double类型的数,对该数保留小数点后三位数字,对第四位小数四舍五入处理,输出处理过后的数。
/*此程序编写于2017年3月8日,目的:从键盘读取一个double类型的数, 对该数保留小数点后三位数字,对第四位小数四舍五入处理,输出处理 过后的数。*/ #include <stdio.h> int main(void) { double x; printf("请输入数字:\n"); scanf("%lf",&x); x = (int)(1000.0*x+0.5)/1000.0; printf("%0.3lf\n",x); 97fb return 0; } /*将程序改为如下即可循环: #include <stdio.h> int main(void) { double x; char ch; do { printf("请输入数字:\n"); scanf("%lf",&x); x = (int)(1000.0*x+0.5)/1000.0; printf("%0.3lf\n",x); printf("您想继续么(Y/N):\n "); scanf(" %c", &ch); } while ('y'==ch || 'Y'==ch); return 0; } */