C编程.docx
《C编程.docx》由会员分享,可在线阅读,更多相关《C编程.docx(105页珍藏版)》请在冰豆网上搜索。
C编程
1.5学习打印你的第一个图形
成绩:
0/折扣:
0.8
背景:
我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。
程序如下:
#include
int main()
{
printf("****\n");
printf("****\n");
printf("****\n");
printf("****\n");
return0;
}
要求:
按照上面的程序范例,编写一个小程序,要求输出的是4行由*号组成的等腰三角形。
输入:
无。
输出:
指定图形
1.1. #include
2.2. #include
3.3.
4.4. int main()
5.5. {
6.6. printf(" *\n");
7.7. printf(" ***\n");
8.8. printf(" *****\n");
9.9. printf("*******\n");
10.10. return 0;
11.11. }
2.1整型数的表示范围
成绩:
100/折扣:
0.8
编写一个循环程序,输入N值,输出N的阶乘。
关于循环程序怎么编写,可以参考教材第3章P66页的例题4.2和第5章P82的例题5.1的内容。
注意整型数的表示范围,如果当输入的N比较大时,例如N等于20时,输出怎么是负数了?
自己想明白吧
1.1.#include
2.2.#include
3.3.
4.4.int main()
5.5.{
6.6. int n,i,t=1;
7.7. scanf("%d",&n);
8.8. if(n>=20)
9.9. printf("N is too big!
\n");
10.10. else
11.11. {for(i=2;
12.12. i<=n;
13.13. i++)
14.14. t=t*i;
15.15. if(t<=0)
16.16. printf("N is too big!
\n");
17.17. else
18.18. printf("%d\n",t);
19.19. }
20.20.
21.21. return 0;
22.22.}
2.2求正弦函数值
成绩:
100/折扣:
0.8
已知求正弦sin(x)的近似值的多项式公式为:
sin(x)=x-x3/3!
+x5/5!
-x7/7!
+……+(-1)nx2n+1/(2n+1)!
+…
编写程序,要求输入x(单位是弧度)和ε,按上述公式计算sin(x)的近似值,要求计算的误差小于给定的ε。
此题当然要用到循环语句,到第5章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的ε。
求两个值的差时,要求出其绝对值,使用库函数fabs(),头文件在math.h里。
友情提示:
给定的误差值ε越小,计算的精度越高,但是要注意喽,给的精度太高,你的程序会成为死循环。
如果出现死循环的情况,可以用+键退出程序。
1.1.include
2.2.#include
3.3.#include
4.4.int main()
5.5.{
6.6. int a,n,m=1,i=2;
7.7. double w,x,sum;
8.8. scanf("%lf%lf",&x,&w);
9.9. sum=x;
10.10. do
11.11. {
12.12. n=2*i-1;
13.13. m=m*n*(n-1);
14.14. a=pow((-1),i-1);
15.15. sum=sum+a*pow(x,n)/m;
16.16. i++;
17.17. }while(fabs(sum-sin(x))>=w);
18.18. printf("%.6lf\n",sum);
19.19. return 0;
20.20.}
2.3判断输入的字符的类型
成绩:
100/折扣:
0.8
我们将字符分为五类:
大写字母、小写字母、数字、控制字符、其他字符。
编写程序,从键盘输入一个字符,输出字符所属的类型:
大写字母时输出capitalletters,小写字母时输出smallletters,数字是输出figures,其他字符时输出others
viewplaincopytoclipboardprint?
1.1.int main()
2.2.{
3.3. char x;
4.4. x=getchar();
5.5. if(x>='A' && x<='Z') printf("capital letters\n");
6.6. else if(x>='a' && x<='z') printf("small letters\n");
7.7. else if(x>='0' && x<='9') printf("figures\n");
8.8. else printf("others\n");
9.9.
10.10. return 0;
11.11.}
3.1找零钱
成绩:
10/折扣:
0.8
假定有5角、1角、5分、2分和1分共5种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法。
例如,当要给某顾客找7角2分钱时,会给他一个5角,2个1角和1个2分的硬币。
试编写一个程序,输入的是要找给顾客的零钱(以分为单位),输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。
viewplaincopytoclipboardprint?
1.1.#include
2.2.#include
3.3.
4.4.int main()
5.5.{
6.6.int t,x,y,z,p,q,a=50,b=10,c=5,d=2,e=1;
7.7.scanf("%d",&t);
8.8. x=t/a;
9.9. y=(t-x*a)/b;
10.10. z=(t-x*a-y*b)/c;
11.11. p=(t-x*a-y*b-z*c)/d;
12.12. q=(t-x*a-y*b-z*c-p*d)/e;
13.13.
14.14.
15.15. printf("%d\n",x);
16.16. printf("%d\n",y);
17.17. printf("%d\n",z);
18.18. printf("%d\n",p);
19.19. printf("%d\n",q);
20.20. return 0;
21.21.}
3.2计算时钟的夹角
成绩:
100/折扣:
0.8
背景:
钟面上的时针和分针之间的夹角总是在0度~359度之间。
举例来说,在十二点的时候两针之间的夹角为0度,而在六点的时候夹角为180度,在三点的时候为90度。
本题要解决的是计算0:
00到12:
00之间任意一个时间的夹角。
输入:
每组测试数据包含两个数字:
第一个数字代表小时(大于等于0小于12),第二个数字代表分(在区间[0,59]上)。
输出:
对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。
友情提示:
以表中心到12点的连线为基准,分针每走1分钟是6度,时针与基准的夹角每个小时也是30度,从整点开始,每过1分钟时针再增加0.5度。
提示:
时钟夹角计算公式|5.5m-30h|,h为时针,m为分针。
求浮点型绝对值的函数为fabs,需要包含math.h头文件
viewplaincopytoclipboardprint?
1.1.#include
2.2.#include
3.3.#include
4.4.int main()
5.5.{
6.6.
7.7. int h,m;
8.8. float p,q;
9.9.
10.10. scanf("%d%d",&h,&m);
11.11. p=fabs(5.5*m-30*h);
12.12.
13.13. if(p<=180.0)
14.14. printf("At %d:
%02d the angle is %.1lf degrees.\n",h,m,p);
15.15. else {q=360.0-p;
16.16. printf("At %d:
%02d the angle is %.1lf degrees.\n",h,m,q);
17.17. }
18.18. return 0;
19.19.}
3.3照猫画猫:
计算圆柱的侧面积及体积
成绩:
0/折扣:
0.8
如果已知圆柱的底面半径r,以及高h,则可计算出圆柱的侧面积s=2πrh,体积v=πr2h。
其中π=3.1415926
输入
第一行输入圆柱的底面半径r
第二行输入圆柱的高h
输出
s=<圆柱的侧面积>,v=<圆柱的体积>
要求
1.所有变量都定义为双精度类型
2.结果精确到小数点后两位
viewplaincopytoclipboardprint?
1.1.#include
2.2.#include
3.3.#define p 3.1415926
4.4.int main()
5.5.{
6.6. double r,h,s,v;
7.7. scanf("%lf",&r);
8.8. scanf("%lf",&h);
9.9. s=2*p*r*h;
10.10. v=p*r*r*h;
11.11. printf("s=%.2lf,v=%.2lf\n",s,v);
12.12. return 0;
13.13.}
3.4分离整数
成绩:
100/折扣:
0.8
任意从键盘上输入一个三位正整数,要求正确地分离出它的个位、十位和百位,并分别在屏幕上输出。
比如输入的三位正整数
viewplaincopytoclipboardprint?
1.1.#include
2.2.#include
3.3.#define p 3.1415926
4.4.int main()
5.5.{
6.6. int m,hundreds,tens,units,x=100,y=10,z=1;
7.7.
8.8. scanf("%d",&m);
9.9.
10.10. hundreds=m/x;
11.11. tens=(m-hundreds*x)/y;
12.12. units=(m-hundreds*x-tens*y)/z;
13.13.
14.14. printf("units=%d,tens=%d,hundreds=%d\n",units,tens,hundreds);
15.15. return 0;
16.16.}
3.5鸡兔同笼
成绩:
0/折扣:
0.8
已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只?
输入:
头和脚的数目
输出:
兔子和鸡的数目(输出语句为:
printf("rabbit=%d,chicken=%d",rabbit,chicken);)
Sample
输入:
1020
输出:
rabbit=0,chicken=10
viewplaincopytoclipboardprint?
1.1.#include
2.2.#include
3.3.int main()
4.4.{
5.5. int chicken,rabbit,h,f;
6.6.
7.7. scanf("%d%d",&h,&f);
8.8.
9.9. rabbit=(f-2*h)/2;
10.10. chicken=h-rabbit;
11.11.
12.12. printf("rabbit=%d,chicken=%d\n",rabbit,chicken);
13.13. return 0;
14.14.}
4.1温度转换
成绩:
0/折扣:
0.8
背景:
经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:
有些使用华氏温度标准(F),有些使用摄氏温度(C)。
现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。
如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。
温度转换的公式为:
F=(C×9/5)+32;C=(F-32)×5/9;式中F--华氏温度,C--摄氏温度。
输入:
第一个数据(1或2)确定转换的类型:
华氏转摄氏
(1);摄氏转华氏
(2);
第二个数据是相应需要转换的温度值。
输出:
相应的转换后的温度值(保留小数点后2位)。
1.1.#include
2.2.#include
3.3.
4.4.int main()
5.5.{
6.6.
7.7. int n;
8.8. double m,C,F;
9.9. scanf("%d%lf",&n,&m);
10.10. if(n==1)
11.11. {
12.12. C=(m-32)*5/9;
13.13. printf("The Centigrade is %.2lf\n",C);
14.14. }
15.15. else if(n==2)
16.16. {
17.17. F=(m*9/5)+32;
18.18. printf("The Fahrenheit is %.2lf\n",F);
19.19. }
20.20. return 0;
21.21.}
4.2分段函数
成绩:
0/折扣:
0.8
有一分段函数,y=f(x)。
当x小于6时,y=x-12;当x大于等于6且小于15时,y=3x-1;当x大于等于15时,y=5x+9.从键盘上输入一个整数x,输出对应的y值。
1.1.#include
2.2.#include
3.3.
4.4.int main()
5.5.{
6.6. int x,y;
7.7. scanf("%d",&x);
8.8. if(x<=5)
9.9. {y=x-12;
10.10. printf("%d\n",y);
11.11.
12.12. }
13.13. else if(x<=14)
14.14. {y=3*x-1;
15.15. printf("%d\n",y);
16.16.
17.17. }
18.18. else
19.19. {y=5*x+9;
20.20. printf("%d\n",y);
21.21. }
22.22. return 0;
23.23.}
4.3整数位数判断
成绩:
0/折扣:
0.8
输入一个不多于5位的正整数,要求:
(1)求它是几位数;
(2)逆序打印出各位数字
viewplaincopytoclipboardprint?
1.1.#include
2.2.#include
3.3.
4.4.int main()
5.5.{
6.6. int x,y,z,m,n,t,v;
7.7. scanf("%d",&x);
8.8. if((x<=0) || (x>=100000))
9.9. {
10.10. printf("Invalid input\n");
11.11.
12.12. }
13.13. else if(x<=9)
14.14. {
15.15. y=1;
16.16. printf("%d\n",y);
17.17. printf("%d\n",x);
18.18. }
19.19. else if(x<=99)
20.20. {
21.21. y=2;
22.22. m=x%10;
23.23. z=x/10;
24.24. printf("%d\n",y);
25.25. printf("%d%d\n",m,z);
26.26. }
27.27. else if(x<=999)
28.28. {
29.29. y=3;
30.30. m=x%10;
31.31. z=x/10%10;
32.32. n=x/100;
33.33. printf("%d\n",y);
34.34. printf("%d%d%d\n",m,z,n);
35.35. }
36.36. else if(x<=9999)
37.37. {
38.38. y=4;
39.39. z=x%10;
40.40. m=x/10%10;
41.41. n=x/100%10;
42.42. t=x/1000;
43.43. printf("%d\n",y);
44.44. printf("%d%d%d%d\n",z,m,n,t);
45.45. }
46.46. else if(x<=99999)
47.47. {
48.48. y=5;
49.49. z=x%10;
50.50. m=x/10%10;
51.51. n=x/100%10;
52.52. t=x/1000%10;
53.53. v=x/10000;
54.54. printf("%d\n",y);
55.55. printf("%d%d%d%d%d\n",z,m,n,t,v);
56.56. }
57.57.
58.58. return 0;
59.59.}
4.4四位数拆分
成绩:
100/折扣:
0.8
输入一个四位数,判断千位、百位、十位和个位数字之和是否为偶数,如果是,输出Yes,如果不是,输出No;如果不是四位数,输出Invaliddata。
viewplaincopytoclipboardprint?
1.1.#include
2.2.#include
3.3.
4.4.int main()
5.5.{
6.6. int x,y,z,w,m,n;
7.7. scanf("%d",&x);
8.8. if(x>=1000&&x<=9999)
9.9. {
10.10. y=x%10;
11.11. z=x/10%10;
12.12. w=x/100%10;
13.13. m=x/1000;
14.14.