《石油大学c程序上机题答案》由会员分享,可在线阅读,更多相关《石油大学c程序上机题答案(50页珍藏版)》请在金锄头文库上搜索。
1、石油大学石油大学 c c 程序上机题答案程序上机题答案1.1 Hello world.让我们用 C 语言向世界问好。最早的程序基本是这个样子的:程序一:#include void main()printf(“Hello world.n“);程序二:#include int main()printf(“Hello world.n“);return 0;上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。 输入:无输出:Hello world.#includeint main()printf(“Hello world.n“);1.2 Welcom
2、e to Beijing.让我们来练习如何显示多行文字。 输入:无输出:就是下面的那段文字。#includevoid main()printf(“Welcomen“);printf(“ton“);printf(“Beijing.n“);1.3 练习最简单的 printf 和 scanfprintf 函数和 scanf 函数是 C 语言中最常用的函数之一,下面让我们练习一下吧。 输入:整型变量 x 的值。输出:输出整型变量 x 对应的十进制、八进制和十六进制形式。认真观察-1 的八进制和十六进制输出,请想想是为什么。#include int main()int x;scanf(“%d“,prin
3、tf(“x=%d,“,x);printf(“x=%o,“,x);printf(“x=%xn“,x);return 0;1.4 练习两个整数之间的运算背景:基本练习。输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444输出:分别输出进行+、-、*、/、*之后的运行结果。#includeint main()int x,y;scanf(“%d%d“,printf(“%d+%d=%dn“,x,y,x+y);printf(“%d-%d=%dn“,x,y,x-y);printf(“%d*%d=%dn“,x,y,x*y);printf(“%d/%d=%dn“,x,y,x/y);pri
4、ntf(“%d%d=%dn“,x,y,x%y);return 0;1.5 学习打印你的第一个图形背景:我们已经学习了 printf 函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的 4*4 的正方形。程序如下:#include int main()printf(“*n“);printf(“*n“);printf(“*n“);printf(“*n“);return 0;要求:按照上面的程序范例,编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。输入:无。输出:指定图形。#include int main()printf(“ *n“);printf(“ *n“);pr
5、intf(“ *n“);printf(“*n“);return 0;2.1 整型数的表示范围编写一个循环程序,输入 N 值,输出 N 的阶乘。关于循环程序怎么编写,可以参考教材第 3 章 P66 页的例题 4.2 和第 5 章 P82 的例题 5.1 的内容。注意整型数的表示范围,如果当输入的 N 比较大时,例如 N 等于 20 时,输出怎么是负数了?自己想明白吧!#includevoid main()int N,i;int sum=1;N=2;scanf(“%d“,if(N=17)printf(“N is too big!n“);2.2 求正弦函数值已知求正弦 sin(x) 的近似值的多项式
6、公式为: sin(x) = x - x3/3! + x5/5! - x7/7!+ + (-1)n x2n+1/(2n+1)! + 编写程序,要求输入 x (单位是弧度)和 ,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的 。 此题当然要用到循环语句,到第 5 章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的 。求两个值的差时,要求出其绝对值,使用库函数 fabs(),头文件在 math.h 里。友情提示:给定的误差值 越小,计算的精度越高,但是要注意喽,给的精度太高,你的程序会成为死循环。如果出现死循环的情况,可以用+键退出程序。#
7、include #include int main() float x,eps,s,y=0,y0,t;int n,j;scanf(“%f%f“,n=t=j=1;s=x;do y0=y;if (n%2=0) y=y-s/t;else y=y+s/t;s*=x*x;t*=(j+1)*(j+2);j+=2;n+; while(fabs(y0-y)eps);printf(“%fn“,sin(x);system(“PAUSE“);return 0;2.3 判断输入的字符的类型我们将字符分为五类:大写字母、小写字母、数字、控制字符、其他字符。编写程序,从键盘输入一个字符,输出字符所属的类型:大写字母时输出
8、 capital letters, 小写字母时输出 small letters,数字是输出 figures,其他字符时输出 others。#includevoid main()char c;c = getchar ( );if (c = 0 int x; scanf(“%d“, x1=x/50; x2=x%50/10; x3=x%50%10/5; x4=x%50%10%5/2; x5=x%50%10%5%2/1; printf(“%dn“,x1); printf(“%dn“,x2); printf(“%dn“,x3); printf(“%dn“,x4); printf(“%dn“,x5); r
9、eturn 0; 3.2 计算时钟的夹角背景:钟面上的时针和分针之间的夹角总是在 0 度 359 度之间。举例来说,在十二点的时候两针之间的夹角为 0 度,而在六点的时候夹角为 180 度,在三点的时候为 90 度。本题要解决的是计算 0:00 到 12:00 之间任意一个时间的夹角。输入: 每组测试数据包含两个数字:第一个数字代表小时 ( 大于等于 0 小于 12) ,第二个数字代表分 ( 在区间 0, 59 上 ) 。 输出: 对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。友情提示:以表中心到 12 点的连线为基准,分针每走 1 分钟是 6 度
10、,时针与基准的夹角每个小时也是 30 度,从整点开始,每过 1 分钟时针再增加 0.5 度。 提示:时钟夹角计算公式|5.5m-30h|,h 为时针,m 为分针。求浮点型绝对值的函数为 fabs,需要包含 math.h 头文件#include “stdio.h“#include “math.h“int main()int h,m;double angle;scanf(“%d%d“,angle=fabs(5.5*m-30*h);if(angle180)angle=360-angle;printf(“At %d:%02d the angle is %.1f degrees.n“,h,m,angle
11、);3.3 照猫画猫:计算圆柱的侧面积及体积如果已知圆柱的底面半径 r ,以及高 h ,则可计算出圆柱的侧面积 s=2rh ,体积 v= r 2 h 。其中 =3.1415926 输入 第一行输入圆柱的底面半径 r第二行输入圆柱的高 h 输出 s=,v= 要求 1. 所有变量都定义为双精度类型2. 结果精确到小数点后两位#include “stdio.h“ #define n 3.1415926 int main() float r,h,s,v; printf; scanf(“%f%f“, s=2*n*r*h; v=n*r*r*h; printf(“s=%6.2f,v=%6.2fn“,s,v)
12、; 3.4 分离整数任意从键盘上输入一个三位正整数,要求正确地分离出它的个位、十位和百位,并分别在屏幕上输出。比如输入的三位正整数 #include “stdio.h“int main()int x,hundreds,tens,units;printf;scanf(“%d“,hundreds=x/100;tens=x%100/10;units=x%100%10;printf(“units=%d,tens=%d,hundreds=%dn“,units,tens,hundreds);3.5 鸡兔同笼已知笼中有头 h 个,有脚 f 条,问笼中鸡兔各有多少只? 输入:头和脚的数目输出:兔子和鸡的数目(
13、输出语句为:printf(“rabbit=%d,chicken=%d“,rabbit,chicken);)Sample输入:10 20输出:rabbit=0,chicken=10#include “stdio.h“int main()int chicken,rabbit,f,h;scanf(“%d%d“,rabbit=(f-2*h)/2;chicken=(4*h-f)/2;printf(“rabbit=%d,chicken=%dn“,rabbit,chicken);4.1 温度转换背景: 经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度
14、标准(F) ,有些使用摄氏温度(C) 。现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。温度转换的公式为:F(C95)32 ;C(F32)59 ;式中 F-华氏温度,C-摄氏温度。输入: 第一个数据(1 或 2 )确定转换的类型:华氏转摄氏(1) ;摄氏转华氏(2) ;第二个数据是相应需要转换的温度值。 输出: 相应的转换后的温度值(保留小数点后 2 位) 。#include void main() int lx;double f,c;scanf(“%d“,if(lx=1)scanf(“%lf“,c=
15、(f-32)*5/9;printf(“The Centigrade is %.2fn“,c);elsescanf(“%lf“,f=(c*9/5)+32;printf(“The Fahrenheit is %.2fn“,f);4.2 分段函数有一分段函数,y=f(x)。当 x 小于 6 时,y=x-12;当 x 大于等于 6且小于 15 时,y=3x-1;当 x 大于等于 15 时,y=5x+9.从键盘上输入一个整数 x,输出对应的 y 值。 #include void main()int x,y;scanf(“%d“,if(x#include #define SIZE 5intmain(void)int bit_count;/位数long int input_num;/输入数int resultSIZE;/存放各个位的数int i;scanf(“%ld“, if (input_num 99999) printf(“Invalid inputn“);exit(1);for( bit_count = 0; input_num; +bit_count) r