1、 中国石油大学 c 语言答案 1.1 Hello world. 让我们用 C 语言向世界问好。 最早的程序基本是这个样子的: 程序一: #include void main() printf(“Hello world.n“); 程序二: #include int main() printf(“Hello world.n“); return 0; 输出 : Hello world. #include int main() printf(“Hello world.n“); 1.2 Welcome to Beijing. 输入 :无 输出 :就是下面的那段文字。 #include void main
2、() printf(“Welcomen“); printf(“ton“); printf(“Beijing.n“); 1.3 练习最简单的 printf 和 scanf printf 函数和 scanf 函数是 C 语言中最常用的函数之一,下面让我们练习一下吧。 输入:整型变量 x 的值。 输出:输出整型变量 x 对应的十进制、八进制和十六进制形式。 认真观察 -1 的八进制和十六进制输出,请想想是为什么。 #include int main() int x; scanf(“%d“, printf(“x=%d,“,x); printf(“x=%o,“,x); printf(“x=%xn“,x)
3、; return 0; 1.4 练习两个整数之间的运算 背景 :基本练习。 输入 :接受两个整数,每个整数之间使用空格分隔。例如输入格式为: 123 444 输出 :分别输出进行 +、 -、 *、 /、 *之后的运行结果。 #include int 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); printf(“%d%d=%dn“,x,y,x%y); r
4、eturn 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“); printf
5、(“ *n“); printf(“*n“); return 0; 2.1 整型数的表示范围 编写一个循环程序,输入 N 值,输出 N 的阶乘。关于循环程序怎么编写,可以参考教材第 3 章 P66 页的例题 4.2 和第 5 章 P82 的例题 5.1 的内容。注意整型数的表示范围,如果当输入的 N 比较大时,例如 N 等于 20 时,输出怎么是负数了?自己想明白吧! #include void 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。 #include void 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(
9、“%dn“,x4); printf(“%dn“,x5); return 0; 3.2 计算时钟的夹角 背景:钟面上的时针和分针之间的夹角总是在 0 度 359 度之间。举例来说,在十二点的时候两针之间的夹角为 0 度,而在六点的时候夹角为 180 度,在三点的时候为 90 度。本题要解决的是计算 0:00 到 12:00 之间任意一个时间的夹角。 输入:每组测试数据包含两个数字:第一个数字代表小时 ( 大于等于 0 小于 12) ,第二个数字代 表分 ( 在区间 0, 59 上 ) 。 输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。 友情提示
10、:以表中心到 12 点的连线为基准,分针每走 1 分钟是 6 度,时针与基准的夹角每个小时也是 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 %
11、d:%02d the angle is %.1f degrees.n“,h,m,angle); 3.3 照猫画猫:计算圆柱的侧面积及体积 如果已知圆柱的底面半径 r ,以及高 h ,则可计算出圆柱的侧面积 s=2 rh ,体积 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
12、=2*n*r*h; v=n*r*r*h; printf(“s=%6.2f,v=%6.2fn“,s,v); 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,hundred
13、s); 3.5 鸡兔同笼 已知笼中有头 h 个,有脚 f 条,问笼中鸡兔各有多少只? 输入:头和脚的数目 输出:兔子和鸡的数目(输出语句为: 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“,rabb
14、it,chicken); 4.1 温度转换 背景:经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度标准( F),有些使用摄氏温度( C)。现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。 温度转换的公式为: F (C 9 5) 32 ; C (F 32) 5 9 ;式中 F-华氏温度, C-摄氏温度。 输入 :第一个数据( 1 或 2 )确定转换的类型:华氏转摄氏( 1);摄氏转华氏( 2); 第二个数据是相应需要转换的温度值。 输出 :相应的
15、转换后的温度值(保留小数点后 2 位)。 #include void main() int lx; double f,c; scanf(“%d“, if(lx=1) scanf(“%lf“, c=(f-32)*5/9; printf(“The Centigrade is %.2fn“,c); else scanf(“%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 时
16、, y=5x+9.从键盘上输入一个整数 x,输出对应的 y 值。 #include void main() int x,y; scanf(“%d“, if(x #include #define SIZE 5 int main(void) int bit_count;/位数 long int input_num;/输入数 int resultSIZE;/存放各个位的数 inti; scanf(“%ld“, if (input_num 99999) printf(“Invalid inputn“); exit(1); for( bit_count = 0; input_num; +bit_coun
17、t) resultbit_count = input_num % 10; input_num /= 10; printf(“%dn“,bit_count); for(i = 0; i void main() int x,a,b,c,d,e; scanf(“%d“, if(x/1000=1) printf(“Invalid datan“); else a=x/1000; b=x%1000/100; c=x%1000%100/10; d=x%1000%100%10; e=(a+b+c+d)%2; if(e=0) printf(“Yesn“); else printf(“Non“); 4.5 磨磨你
18、的砍柴刀:判断三角形的形状 要求:输入三 角型的三条边,判断三角形的形状。假设输入的三边边长均 0。 输入 :三角型的 3 条边的长度( int 型)。 输出 :等边三角形: equilateral triangle. 等腰三角形: isoceles triangle. 不构成三角形: non-triangle. 一般三角形: triangle. #include void main() float a,b,c; scanf(“%f%f%f“, if(a+b。输入其他字符时原样输出。友情提示:整数之间运算的结果要取整,例如 5/2 的结果是 2,而 5.0/2.0 对小数四舍五入的结果就是 3
19、.0 了。所以输入大写英文字母时的输出要仔细考虑。 #include int main() char ch; int a; ch=getchar(); if(ch=97 scanf(“%d %d“, switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break; case 4: case 6: case 9: case 11:days=30;break; case 2:if(year % 4 =0) else days=28; printf(“%dn“,days); 4.8 花多少钱买衣服 周末商场促销呢,某品牌服装既可以买套装,也可以买单件。若买的不少于套,每套元;不足套的每套元,只买上衣每件元,只买裤子每条元。编写程序,输入计划购买的上衣数量 a 和裤子的数量 b ,计算并输出应该付的款 m 。 #include void main() int a,b,y; scanf(“%d%d“, if(b=50) y=80*b+(a-b)*60; if(a=50) y=80*a+(b-a)*45; printf(“%dn“,y);