大一石油大学c语言网络作业答案.docx
《大一石油大学c语言网络作业答案.docx》由会员分享,可在线阅读,更多相关《大一石油大学c语言网络作业答案.docx(173页珍藏版)》请在冰点文库上搜索。
大一石油大学c语言网络作业答案
1.1Helloworld.
让我们用C语言向世界问好。
最早的程序基本是这个样子的:
程序一:
#include
voidmain()
{
printf("Helloworld.\n");
}
程序二:
#include
intmain()
{
printf("Helloworld.\n");
return0;
}
上面的程序你任意模仿一个,看看是否可以通过?
如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。
输入:
无
输出:
Helloworld.
#include
intmain()
{
printf("Helloworld.\n");
}
1.2WelcometoBeijing.
让我们来练习如何显示多行文字。
输入:
无
输出:
就是下面的那段文字。
#include
voidmain()
{printf("Welcome\n");
printf("to\n");
printf("Beijing.\n");
}
1.3练习最简单的printf和scanf
printf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。
输入:
整型变量x的值。
输出:
输出整型变量x对应的十进制、八进制和十六进制形式。
认真观察-1的八进制和十六进制输出,请想想是为什么。
#include
intmain()
{intx;
scanf("%d",&x);
printf("x=%d,",x);
printf("x=%o,",x);
printf("x=%x\n",x);
return0;
}
1.4练习两个整数之间的运算
背景:
基本练习。
输入:
接受两个整数,每个整数之间使用空格分隔。
例如输入格式为:
123444
输出:
分别输出进行+、-、*、/、*之后的运行结果。
#include
intmain()
{intx,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);
return0;
}
1.5学习打印你的第一个图形
背景:
我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。
程序如下:
#include
intmain()
{
printf("****\n");
printf("****\n");
printf("****\n");
printf("****\n");
return0;
}
要求:
按照上面的程序范例,编写一个小程序,要求输出的是4行由*号组成的等腰三角形。
输入:
无。
输出:
指定图形。
#include
intmain()
{
printf("*\n");
printf("***\n");
printf("*****\n");
printf("*******\n");
return0;
}
2.1整型数的表示范围
编写一个循环程序,输入N值,输出N的阶乘。
关于循环程序怎么编写,可以参考教材第3章P66页的例题4.2和第5章P82的例题5.1的内容。
注意整型数的表示范围,如果当输入的N比较大时,例如N等于20时,输出怎么是负数了?
自己想明白吧!
#include
voidmain()
{intN,i;
intsum=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("Nistoobig!
\n");
}
2.2求正弦函数值
已知求正弦sin(x)的近似值的多项式公式为:
sin(x)=x-x3/3!
+x5/5!
-x7/7!
+……+(-1)nx2n+1/(2n+1)!
+…
编写程序,要求输入x(单位是弧度)和ε,按上述公式计算sin(x)的近似值,要求计算的误差小于给定的ε。
此题当然要用到循环语句,到第5章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的ε。
求两个值的差时,要求出其绝对值,使用库函数fabs(),头文件在math.h里。
友情提示:
给定的误差值ε越小,计算的精度越高,但是要注意喽,给的精度太高,你的程序会成为死循环。
如果出现死循环的情况,可以用+键退出程序。
#include
#include
intmain()
{floatx,eps,s,y=0,y0,t;
intn,j;
scanf("%f%f",&x,&eps);
n=t=j=1;
s=x;
do
{y0=y;
if(n%2==0)y=y-s/t;
elsey=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");
return0;
}
2.3判断输入的字符的类型
我们将字符分为五类:
大写字母、小写字母、数字、控制字符、其他字符。
编写程序,从键盘输入一个字符,输出字符所属的类型:
大写字母时输出capitalletters,小写字母时输出smallletters,数字是输出figures,其他字符时输出others。
#include
voidmain()
{
charc;
c=getchar();
if(c<0x20)
printf("Thecharacterisacontrolcharacter\n");
elseif(c>='0'&&c<='9')
printf("figures\n");
elseif(c>='A'&&c<='Z')
printf("capitalletters\n");
elseif(c>='a'&&c<='z')
printf("smallletters\n");
else
printf("others\n");
}
3.1找零钱
假定有5角、1角、5分、2分和1分共5种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法。
例如,当要给某顾客找7角2分钱时,会给他一个5角,2个1角和1个2分的硬币。
试编写一个程序,输入的是要找给顾客的零钱(以分为单位),输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。
#include
intmain()
{
intx1,x2,x3,x4,x5;
intx;
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);
return0;
}
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"
intmain()
{
inth,m;
doubleangle;
scanf("%d%d",&h,&m);
angle=fabs(5.5*m-30*h);
if(angle>180)
angle=360-angle;
printf("At%d:
%02dtheangleis%.1fdegrees.\n",h,m,angle);
}
3.3照猫画猫:
计算圆柱的侧面积及体积
如果已知圆柱的底面半径r,以及高h,则可计算出圆柱的侧面积s=2πrh,体积v=πr2h。
其中π=3.1415926
输入第一行输入圆柱的底面半径r
第二行输入圆柱的高h
输出s=<圆柱的侧面积>,v=<圆柱的体积>
要求1.所有变量都定义为双精度类型
2.结果精确到小数点后两位
#include"stdio.h"
#definen3.1415926
intmain()
{
floatr,h,s,v;
printf;
scanf("%f%f",&r,&h);
s=2*n*r*h;
v=n*r*r*h;
printf("s=%6.2f,v=%6.2f\n",s,v);
}
3.4分离整数
任意从键盘上输入一个三位正整数,要求正确地分离出它的个位、十位和百位,并分别在屏幕上输出。
比如输入的三位正整数
#include"stdio.h"
intmain()
{
intx,hundreds,tens,units;
printf;
scanf("%d",&x);
hundreds=x/100;
tens=x%100/10;
units=x%100%10;
printf("units=%d,tens=%d,hundreds=%d\n",units,tens,hundreds);
}
3.5鸡兔同笼
已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只?
输入:
头和脚的数目
输出:
兔子和鸡的数目(输出语句为:
printf("rabbit=%d,chicken=%d",rabbit,chicken);)
Sample
输入:
1020
输出:
rabbit=0,chicken=10
#include"stdio.h"
intmain()
{
intchicken,rabbit,f,h;
scanf("%d%d",&h,&f);
rabbit=(f-2*h)/2;
chicken=(4*h-f)/2;
printf("rabbit=%d,chicken=%d\n",rabbit,chicken);
}
4.1温度转换
背景:
经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:
有些使用华氏温度标准(F),有些使用摄氏温度(C)。
现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。
如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。
温度转换的公式为:
F=(C×9/5)+32;C=(F-32)×5/9;式中F--华氏温度,C--摄氏温度。
输入:
第一个数据(1或2)确定转换的类型:
华氏转摄氏
(1);摄氏转华氏
(2);
第二个数据是相应需要转换的温度值。
输出:
相应的转换后的温度值(保留小数点后2位)。
#include
voidmain()
{
intlx;
doublef,c;
scanf("%d",&lx);
if(lx==1){
scanf("%lf",&f);
c=(f-32)*5/9;
printf("TheCentigradeis%.2f\n",c);
}
else{
scanf("%lf",&c);
f=(c*9/5)+32;
printf("TheFahrenheitis%.2f\n",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
voidmain()
{
intx,y;
scanf("%d",&x);
if(x<6)
y=x-12;
elseif(x<15)
y=3*x-1;
else
y=5*x+9;
printf("%d\n",y);
return0;
}
4.3整数位数判断
输入一个不多于5位的正整数,要求:
(1)求它是几位数;
(2)逆序打印出各位数字。
#include
#include
#defineSIZE5
int
main(void)
{
intbit_count;//位数
longintinput_num;//输入数
intresult[SIZE];//存放各个位的数
inti;
scanf("%ld",&input_num);
if(input_num<0||input_num>99999){
printf("Invalidinput\n");
exit
(1);
}
for(bit_count=0;input_num;++bit_count){
result[bit_count]=input_num%10;
input_num/=10;
}
printf("%d\n",bit_count);
for(i=0;iprintf("%d",result[i]);
printf("\n");
exit(0);
}
4.4四位数拆分
输入一个四位数,判断千位、百位、十位和个位数字之和是否为偶数,如果是,输出Yes,如果不是,输出No;如果不是四位数,输出Invaliddata。
#include
voidmain()
{
intx,a,b,c,d,e;
scanf("%d",&x);
if(x/1000<1||x/10000>=1)
printf("Invaliddata\n");
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("Yes\n");
else
printf("No\n");
}
}
4.5磨磨你的砍柴刀:
判断三角形的形状
要求:
输入三角型的三条边,判断三角形的形状。
假设输入的三边边长均>0。
输入:
三角型的3条边的长度(int型)。
输出:
等边三角形:
equilateraltriangle.
等腰三角形:
isocelestriangle.
不构成三角形:
non-triangle.
一般三角形:
triangle.
#include
voidmain()
{
floata,b,c;
scanf("%f%f%f",&a,&b,&c);
if(a+bprintf("non-triangle.\n");
elseif(a==b&&b==c)
printf("equilateraltriangle.\n");
elseif(a==b||b==c||a==c)
printf("isocelestriangle.\n");
else
printf("triangle.\n");
}
4.6字符加密输出
从键盘上输入一个字符,进行加密以后再输出在屏幕上。
加密规律是:
输入小写英文字母时,输入a输出Z、输入b输出Y、输入c输出X、...、输入z输出A。
输入大写英文字母时,将该字母ASCII码值再加上该值的1/2后输出所对应的字符,例如数字A的ASCII码值是65,加上其值的1/2后是98(小数四舍五入),则输出字符‘b’。
输入数字时,将该数字原ASCII码值再加上该值十进制的十位上的数后输出,例如数字9的ASCII码值是57,加上十位上的数5后是62,则输出字符‘>’。
输入其他字符时原样输出。
友情提示:
整数之间运算的结果要取整,例如5/2的结果是2,而5.0/2.0对小数四舍五入的结果就是3.0了。
所以输入大写英文字母时的输出要仔细考虑。
#include
intmain()
{charch;
inta;
ch=getchar();
if(ch>=97&&ch<=122)
{ch=187-ch;putchar(ch);}
elseif(ch>=65&&ch<=90)
{a=ch%2;
if(a==1)(char)a=(ch+1)/2+ch;
else(char)a=ch/2+ch;
putchar(a);}
elseif(ch>=48&&ch<=57)
{ch=ch/10+ch;
putchar(ch);}
elseputchar(ch);
printf("\n");
}
4.7判断某年某月的天数
一年有365天,有的月份有31天,有的有30天,2月份闰年的时候是29天,非闰年的时候是28天。
现在要求从键盘上输入一个年份和月份,输出其对应的天数。
#include
main()
{intyear,month,days;
scanf("%d%d",&year,&month);
switch(month)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;break;
case4:
case6:
case9:
case11:
days=30;break;
case2:
if((year%4==0)&&(year%100!
=0)||(year%400==0))
days=29;
elsedays=28;
}
printf("%d\n",days);
}
4.8花多少钱买衣服
周末商场促销呢,某品牌服装既可以买套装,也可以买单件。
若买的不少于50套,每套80元;不足50套的每套90元,只买上衣每件60元,只买裤子每条45元。
编写程序,输入计划购买的上衣数量a和裤子的数量b,计算并输出应该付的款m。
#include
voidmain()
{
inta,b,y;
scanf("%d%d",&a,&b);
if(b<=a&&b<50)
y=90*b+(a-b)*60;
if(b<=a&&b>=50)
y=80*b+(a-b)*60;
if(a
y=90*a+(b-a)*45;
if(a=50)
y=80*a+(b-a)*45;
printf("%d\n",y);
}
4.9到邮局去寄包裹
你去邮局给朋友寄礼物。
发现邮局对邮寄包裹的费用是这样规定的:
如果包裹长宽高任意一个尺寸超过1米,或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,不同重量的邮资按下表计算:
重量(千克)
收费标准(元)
小于10
0.80
大于等于10但不超过20
0.75
大于等于20但不超过30
0.70
编写程序,输入包裹的长、宽、高尺寸和重量,输出所需的邮资(输出结果中包含两位小数即可),超出尺寸或重量的输出"Error”.
#include
voidmain()
{
floata,b,c,m,y;
scanf("%f,%f,%f,%f",&a,&b,&c,&m);
if(a>1||b>1||c>1||m>30)
printf("Error\n");
else{
if(m<10)
y=0.80*m+0.2;
elseif(m<20)
y=0.75*m+0.2;
else
y=0.70*m+0.2;
printf("%.2f\n",y);
}
}
4.10输出星期几的英文表示
输入用数字(1--7)表示的星期几,输出星期几的英文表示,输入的数字有误,输出单词"Error(回车)"。
#include
voidmain()
{
inta;
scanf("%d",&a);
switch((int)(a))
{
case1:
printf("Monday\n");break;
case2:
printf("Tuesday\n");break;
case3:
printf("Wednesday\n");break;
case4:
printf("Thursday\n");break;
case5:
printf("Friday\n");break;
case6:
printf("Saturday\n");break;
case7:
printf("Sunday\n");break;
default:
printf("Error\n");
}
}
5.1输出一行星号
编写程序在一行中输出N个星号。
输入:
N值
输出:
一行中N个星号
#include
intmain()
{
intn,i;
scanf("%d",&n);
for(i=0;i