C语言程序设计—北京理工大学MOOC提交作业第一周作业【练习1】HelloWorld“HelloWorld”示例程序最早出现于1972年,由贝尔实验室成员BrianKernighan撰写的内部技术文件《IntroductiontotheLanguageB》之中。不久同作者于1974年所撰写的《ProgramminginC:ATutorial》,也延用这个示例。一般来说,这是每一种计算机编程语言中最基本、最简单的程序,亦通常是初学者所编写的第一个程序。它还可以用来确定该语言的编译器、程序开发环境,以及运行环境是否已经安装妥当。将“HelloWorld”作为第一个示范程序,已经成为编程语言学习的传统。我们在这里继续传统,这也是一种向前辈们致敬的方式之一吧!最早的程序基本是这个样子的:#includeintmain(){printf(Helloworld.\n);return0;}请模仿上面的程序,看看是否可以通过编译?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。略第二周作业【练习2】学学scanf和printf的用法吧该如何处理double型的数据:如何定义变量类型?如何使用scanf函数?如果已知圆柱的底面半径r,以及高h,则可计算出圆柱的侧面积s=2πrh,体积v=πr2h。其中π=3.1415926。输入:第一行输入圆柱的底面半径r第二行输入圆柱的高h输出:s=要求1.所有变量都定义为双精度类型2.结果精确到小数点后两位。作为练习题目:我们已经给您编写好了大部分的代码,请您自己修改几个地方,完成程序的剩余部分。**********************************************分隔线************#include#definePAI3.1415926intmain(){intr,h;doubles,v;scanf(%d%d,);s=2*PAI*r*h;v=PAI*r*r*h;printf(s=%.2f,v=\n,s,);return0;}**********************************************分隔线************Code:#include#definePAI3.1415926intmain(){intr,h;doubles,v;scanf(%d%d,&r,&h);s=2*PAI*r*h;v=PAI*r*r*h;printf(s=%.2f,v=%.2f\n,s,v);return0;}第三周作业1、输出字符的ASCII码我们在计算机基础中已经学过:字母在计算机中采用ASCII码进行存储。下面要从键盘上输入任意一个字符,然后输出该字符对应的ASCII码。输入:一个字符输出:该字符对应的ASCII码期待的输出时间限制程期待的输出时间限制程Code:#includeintmain(){charch;scanf(%c,&ch);printf(TheASCIIofcharacter'%c'is%d.,ch,ch);return0;}2、一年级的算术题背景:小明上小学一年级了,老师已经教会了他们进行整数的+、-、*、/、%计算,下面老师开始出题,给出一个简单的算术表达式,请小明给出计算结果。输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123444输出:分别输出按照整型数据进行+、-、*、/、*之后的运行结果。测试输入期待的输出#includeintmain(){inta,b;charch=37;scanf(%d%d,&a,&b);printf(%d+%d=%d\n,a,b,a+b);printf(%d-%d=%d\n,a,b,a-b);printf(%d*%d=%d\n,a,b,a*b);printf(%d/%d=%d\n,a,b,a/b);printf(%d%c%d=%d\n,a,ch,b,a%b);return0;}3、判断三角形的形状要求输入三角型的三条边,判断三角形的形状。假设输入的三边边长均0。输入:三角型的3条边的长度(int型)。输出:等边三角形:equilateraltriangle等腰三角形:isocelestriangle不构成三角形:non-triangle一般三角形:triangle测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.222?以文本方式显示1.equilateraltriangle.?1秒64M测试用例2以文本方式显示1.322?以文本方式显示1.isocelestriangle.?1秒64M0测试用例3以文本方式显示1.131?以文本方式显示1.non-triangle.?1秒64M0测试用例4以文本方式显示以文本方式显示1秒64M0测试输入期待的输出时间限制内存限制额外进程1.345?1.triangle.?测试用例5以文本方式显示1.232?以文本方式显示1.isocelestriangle.?1秒64M0测试用例6以文本方式显示1.223?以文本方式显示1.isocelestriangle.?1秒64M0测试用例7以文本方式显示1.311?以文本方式显示1.non-triangle.?1秒64M0测试用例8以文本方式显示1.113?以文本方式显示1.non-triangle.?1秒64M0测试用例9以文本方式显示1.543?以文本方式显示1.triangle.?1秒64M0测试用例10以文本方式显示1.453?以文本方式显示1.triangle.?1秒64M0Code#includeinta,b,c;scanf(%d%d%d,&a,&b,&c);if(a+bc&&a+cb&&b+ca){if(a==b&&a==c&&b==c){printf(equilateraltriangle.\n);return0;}if(a==b||a==c||b==c){printf(isocelestriangle.\n);return0;}printf(triangle.\n);}else{printf(non-triangle.\n);}return0;}第四周作业1.【中学】计算时钟的夹角背景:钟面上的时针和分针之间的夹角总是在0~180之间(包括0和180)。举例来说,在十二点的时候两针之间的夹角为0,而在六点的时候夹角为180,在三点的时候为90。本题要解决的是计算12:00到11:59之间任意一个时间的夹角。输入:每组测试数据包含两个数字:第一个数字代表小时(大于0小于等于12),第二个数字代表分(在区间[0,59]上)。输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。再看一看,想一想:是否可以不用if语句,只使用printf函数来简化你的程序?测试输入期待的输出测试输入期待的输出Code#includeintmain(){inthour,minute,temp;floatangle,h_angle,m_angle;scanf(%d%d,&hour,&minute);temp=hour;if(hour==12)temp=0;h_angle=temp*30.0+minute*0.5;m_angle=minute*6.0;angle=h_anglem_angle?h_angle-m_angle:m_angle-h_angle;if(angle180.0)angle=360.0-angle;printf(At%d:%02dtheangleis%.1fdegrees.\n,hour,minute,angle);return0;}2.【日期】确定母亲节输入:年份输出:日期(5月的哪一天)测试输入期待的输出Code:#includeintmain(){intyear,n,week,total,day;scanf(%d,&year);if((year%4==0&&year%100!=0)||year%400==0){week=(year+year/4+year/400-year/100-1)%7;for(n=0;n{if(n==0)total=0;if(n==1||n==3)total+=31;if(n==2)total+=29;if(n==4)total+=30;}}else{week=(year+year/4+year/400-year/100)%7;for(n=0;n{if(n==0)total=0;if(n==1||n==3)total+=31;if(n==2)total+=28;if(n==4)total+=30;}}week=(week+total)%7;if(week==0)week=7;day=7-week+8;printf(%d\n,day);return0;}3.【日期】计算星期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。输入:年月日输出:0~6。星期日用0表示,星期一用1表示,星期二用2表示......星期六用6表示。假设年份大于1900。先想一想:我们现在只会使用if语句,该如何建立数学模型?测试输入期待的输出制Code:#includeintmain(){intyear,month,day,n,week,total;scanf(%d%d%d,&year,&month,&day);if(yearprintf(yeariserror.\n);return0;}if(month=13||monthprintf(monthiserror.\n);return0;}if(dayprintf(dayiserror.\n);return0;}switch(month){case1:case3:case5:case7:case8:case10:case12:if(day31){printf(dayiserror.\n);return0;}break;case4:case6:case9:case11:if(day30){printf(dayiserror.\n);return0;}break;case2:if((year%4==0&&year%100!=0)||year%400==0){if(day29){printf(dayiserror.\n);return0;}}else{if(day28){printf(dayiserror.\n);return0;}}break;}if((year%4==0&&year%100!=0)||year%400==0){week=(year+year/4+year/400-year/100-1)%7;for(n=0;n{if(n==0)total=0;if(n==1||n==3||n==5||n==7||n==8||n==10)total+=31;if(n==2)total+=29;if(n==4||n==6||n==9||n==11)total+=30;}}else{week=(year+year/4+year/400-year/100)%7;for(n=0;n{if(n==0)total=0;if(n==1||n==3||n==5||n==7||n==8||n==10)total+=31;if(n==2)total+=28;if(n==4||n==6||n==9||n==11)total+=30;}}week=(week+total+day-1)%7;printf(%d\n,week);return0;}4.【中学】求最后3位数值(选做)小明在中学会求一个数的n次方了,但计算机还不会,请你来编写一个程序吧。由于计算机比较“笨”,所以我们编写程序的功能不用太强,只要能算出a的n次方的最后3位数就可以了。输入:a和n的值。假设a求a的n次方的最后3位数。提示:再想一想,你的方法对吗?你用的是什么数据类型?测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100?以文本方式显示1.Thel