1.1 Hello world.让我们用C语言向世界问好。
最早的程序基本是这个样子的:程序一:#include <stdio.h>void main(){printf("Hello world.\n");}程序二:#include <stdio.h>int main(){printf("Hello world.\n");return 0;}上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。
输入:无输出:Hello world.#include<stdio.h>int main(){printf("Hello world.\n");}1.2 Welcome to Beijing.让我们来练习如何显示多行文字。
输入:无输出:就是下面的那段文字。
#include<stdio.h>void main(){printf("Welcome\n");printf("to\n");printf("Beijing.\n");}1.3 练习最简单的printf和scanfprintf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。
输入:整型变量x的值。
输出:输出整型变量x对应的十进制、八进制和十六进制形式。
认真观察-1的八进制和十六进制输出,请想想是为什么。
#include <stdio.h>int main(){int x;scanf("%d",&x);printf("x=%d,",x);printf("x=%o,",x);printf("x=%x\n",x);return 0;}1.4 练习两个整数之间的运算背景:基本练习。
输入:接受两个整数,每个整数之间使用空格分隔。
例如输入格式为:123 444输出:分别输出进行+、-、*、/、*之后的运行结果。
#include<stdio.h>int main(){int x,y;scanf("%d%d",&x,&y);printf("%d+%d=%d\n",x,y,x+y);printf("%d-%d=%d\n",x,y,x-y);printf("%d*%d=%d\n",x,y,x*y);printf("%d/%d=%d\n",x,y,x/y);printf("%d%%%d=%d\n",x,y,x%y);return 0;}1.5 学习打印你的第一个图形背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。
程序如下:#include <stdio.h>int main(){printf("****\n");printf("****\n");printf("****\n");printf("****\n");return 0;}要求:按照上面的程序范例,编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。
输入:无。
输出:指定图形。
#include <stdio.h>int main(){printf(" *\n");printf(" ***\n");printf(" *****\n");printf("*******\n");return 0;}2.1 整型数的表示范围编写一个循环程序,输入N 值,输出N 的阶乘。
关于循环程序怎么编写,可以参考教材第3章P66页的例题4.2和第5章P82的例题5.1的内容。
注意整型数的表示范围,如果当输入的N 比较大时,例如N 等于20 时,输出怎么是负数了?自己想明白吧!#include<stdio.h>void main(){int N,i;int sum=1;N>=2;scanf("%d",&N);if(N<=16){for (i=1;i<=N;i++)sum=sum*i;printf("%d\n",sum);}if(N>=17)printf("N is too big!\n");}2.2 求正弦函数值已知求正弦sin(x) 的近似值的多项式公式为:sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)! + …编写程序,要求输入x (单位是弧度)和ε,按上述公式计算sin(x) 的近似值,要求计算的误差小于给定的ε。
此题当然要用到循环语句,到第5章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的ε。
求两个值的差时,要求出其绝对值,使用库函数fabs(),头文件在math.h里。
友情提示:给定的误差值ε越小,计算的精度越高,但是要注意喽,给的精度太高,你的程序会成为死循环。
如果出现死循环的情况,可以用<Ctrl>+<Break>键退出程序。
#include <stdio.h>#include <math.h>int main(){ float x,eps,s,y=0,y0,t;int n,j;scanf("%f%f",&x,&eps);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("%f\n",sin(x));system("PAUSE");return 0;}2.3 判断输入的字符的类型我们将字符分为五类:大写字母、小写字母、数字、控制字符、其他字符。
编写程序,从键盘输入一个字符,输出字符所属的类型:大写字母时输出capital letters,小写字母时输出small letters,数字是输出figures,其他字符时输出others。
#include<stdio.h>void main(){char c;c = getchar ( );if (c < 0x20)printf ("The character is a control character\n");else if (c >= '0' && c <= '9')printf ("figures\n");else if (c >= 'A' && c <= 'Z')printf ("capital letters\n");else if (c >= 'a' && c <= 'z')printf ("small letters\n");elseprintf ("others\n");}3.1 找零钱假定有 5 角、1 角、5 分、2 分和 1 分共 5 种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法。
例如,当要给某顾客找7 角 2 分钱时,会给他一个 5 角,2 个 1 角和1 个2 分的硬币。
试编写一个程序,输入的是要找给顾客的零钱(以分为单位),输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。
#include <stdio.h>int main(){int x1,x2,x3,x4,x5;int x;scanf("%d",&x);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("%d\n",x1);printf("%d\n",x2);printf("%d\n",x3);printf("%d\n",x4);printf("%d\n",x5);return 0;}3.2 计算时钟的夹角背景:钟面上的时针和分针之间的夹角总是在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头文件#include "stdio.h"#include "math.h"int main(){int h,m;double angle;scanf("%d%d",&h,&m);angle=fabs(5.5*m-30*h);if(angle>180)angle=360-angle;printf("At %d:%02d the angle is %.1f degrees.\n",h,m,angle);}3.3 照猫画猫:计算圆柱的侧面积及体积如果已知圆柱的底面半径r ,以及高h ,则可计算出圆柱的侧面积s=2πrh ,体积v=πr 2 h 。