C语言程序设计上mooc答案

更新时间:2023-12-17 09:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一周作业

【练习1】HelloWorld

成绩 折扣 0 开启时间 2014年10月21日 星期二 08:00 0.8 折扣时间 2014年12月7日 星期日 23:55 关闭时间 2014年12月7日 星期日 23:55 允许迟交 否 让我们学习用C语言向世界问好。 “Hello World”示例程序最早出现于1972年,由贝尔实验室成员Brian Kernighan撰写的内部技术文件《Introduction to the Language B》之中。不久同作者于1974年所撰写的《Programming in C: A Tutorial》,也延用这个示例。

一般来说,这是每一种计算机编程语言中最基本、最简单的程序,亦通常是初学者所编写的第一个程序。它还可以用来确定该语言的编译器、程序开发环境,以及运行环境是否已经安装妥当。将“Hello World”作为第一个示范程序,已经成为编程语言学习的传统。

我们在这里继续传统,这也是一种向前辈们致敬的方式之一吧! 最早的程序基本是这个样子的: #include int main() {

printf(\Hello world.\\n\); return 0; }

请模仿上面的程序,看看是否可以通过编译?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。 略

第二周作业

【练习2】学学scanf和printf的用法吧

成绩 折扣 0 开启时间 2014年10月21日 星期二 08:00 0.8 折扣时间 2014年12月7日 星期日 23:55 关闭时间 2014年12月7日 星期日 23:55 允许迟交 否 该如何处理 double 型的数据:如何定义变量类型?如何使用 scanf 函数?

如果已知圆柱的底面半径 r ,以及高 h ,则可计算出圆柱的侧面积 s=2 π r h ,体积 v=π r 2 h 。其中 π=3.1415926。 输入:

第一行输入圆柱的底面半径 r 第二行输入圆柱的高 h

输出:

s=< 圆柱的侧面积 >,v=< 圆柱的体积 > 要求

1. 所有变量都定义为双精度类型 2. 结果精确到小数点后两位。 作为练习题目:

我们已经给您编写好了大部分的代码,请您自己修改几个地方,完成程序的剩余部分。 **********************************************分隔线************ #include

#define PAI 3.1415926 int main() {

int r,h; double s,v;

scanf(\ ); s=2*PAI*r*h; v=PAI*r*r*h;

printf(\ \\n\ ); return 0; }

**********************************************分隔线************

Code:

#include

#define PAI 3.1415926 int main() {

int r,h; double s,v;

scanf(\ s=2*PAI*r*h; v=PAI*r*r*h;

printf(\ return 0; }

第三周作业

1、输出字符的 ASCII 码

成绩 折扣 10 开启时间 2014年10月21日 星期二 10:00 0.8 折扣时间 2014年11月5日 星期三 23:55 关闭时间 2014年11月12日 星期三 23:55 允许迟交 否 背景: 我们在计算机基础中已经学过:字母在计算机中采用ASCII码进行存储。下面要从键盘上输入任意一个字符,然后输出该字符对应的ASCII码。 输入: 一个字符 输出:

该字符对应的ASCII码

测试输入 测试用例 1 1. A? 以文本方式显示 以文本方式显示 1. The ASCII of character 'A' is 65.? 期待的输出 时间限制 内存限制 1秒 64M 0 额外进程 测试用例 2 以文本方式显示 1. Z? 以文本方式显示 1. The ASCII of character 'Z' is 90.? 1秒 64M 0 测试用例 3 以文本方式显示 以文本方式显示 1. The ASCII of character '0' is 48.? 1秒 64M 0 测试输入 期待的输出 时间限制 内存限制 额外进程 1. 0? 测试用例 4 以文本方式显示 1. 1? 以文本方式显示 1. The ASCII of character '1' is 49.? 1秒 64M 0 测试用例 5 以文本方式显示 1. +? 以文本方式显示 1. The ASCII of character '+' is 43.? 1秒 64M 0 Code:

#include int main() {

char ch;

scanf(\

printf(\ return 0; }

2、一年级的算术题

成绩 折扣 10 开启时间 2014年10月21日 星期二 10:00 0.8 折扣时间 2014年11月5日 星期三 23:55 关闭时间 2014年11月12日 星期三 23:55 允许迟交 否 背景:

小明上小学一年级了,老师已经教会了他们进行整数的 +、-、*、/、% 计算,下面老师开始出题,给出一个简单的算术表达式,请小明给出计算结果。

输入:

接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444 输出:

分别输出按照整型数据进行 +、-、*、/、* 之后的运行结果。

测试输入 期待的输出 时间限制 测试用例 1 以文本方式显示 1. 10 3? 1. 2. 3. 4. 5. 10+3=13? 10-3=7? 10*3=30? 10/3=3? 10%3=1? 以文本方式显示 1秒 64M 内存限制 0 额外进程 测试用例 2 以文本方式显示 1. 11 -3? 以文本方式显示 1. 2. 3. 4. 5. 11+-3=8? 11--3=14? 11*-3=-33? 11/-3=-3? 11%-3=2? 1秒 64M 0 Code #include int main() {

int a, b;

char ch = 37;

scanf(\

printf(\ printf(\ printf(\ printf(\

printf(\ return 0;

}

3、判断三角形的形状

成绩 折扣 10 开启时间 2014年10月21日 星期二 10:00 0.8 折扣时间 2014年11月5日 星期三 23:55 关闭时间 2014年11月12日 星期三 23:55 允许迟交 否 要求

输入三角型的三条边,判断三角形的形状。假设输入的三边边长均>0。

输入:

三角型的3条边的长度(int型)。

输出:

等边三角形:equilateral triangle 等腰三角形:isoceles triangle 不构成三角形:non-triangle 一般三角形:triangle

测试输入

期待的输出

时间限制

测试用例 1

1.

2 2 2?

1.

equilateral triangle.?

以文本方式显示

以文本方式显示

1秒

内存限制64M

额外进程0

测试用例 2

以文本方式显示 1.

3 2 2?

以文本方式显示 1.

isoceles triangle.?

1秒 64M 0

测试用例 3

以文本方式显示 1.

1 3 1?

以文本方式显示 1.

non-triangle.?

1秒 64M 0

测试用例 4

以文本方式显示 以文本方式显示

1秒 64M 0

测试输入 期待的输出

时间限制

内存限制

额外进程

1. 3 4 5? 1. triangle.?

测试用例 5

以文本方式显示 1.

2 3 2?

以文本方式显示 1.

isoceles triangle.?

1秒 64M 0

测试用例 6

以文本方式显示 1.

2 2 3?

以文本方式显示 1.

isoceles triangle.?

1秒 64M 0

测试用例 7

以文本方式显示 1.

3 1 1?

以文本方式显示 1.

non-triangle.?

1秒 64M 0

测试用例 8

以文本方式显示 1.

1 1 3?

以文本方式显示 1.

non-triangle.?

1秒 64M 0

测试用例 9

以文本方式显示 1.

5 4 3?

以文本方式显示 1.

triangle.?

1秒 64M 0

测试用例 10

以文本方式显示 1.

4 5 3?

以文本方式显示 1.

triangle.?

1秒 64M 0

Code

#include int main() {

int a, b, c;

scanf(\ if(a + b > c && a + c > b && b + c >a) { if(a == b && a == c && b == c) {

printf(\ return 0; } if(a == b || a == c || b == c) { printf(\ return 0; } printf(\ } else { printf(\ }

return 0; }

第四周作业

1.【中学】计算时钟的夹角

成绩 10 开启时间 2014年10月28日 星期二 08:25 折扣 0.8 折扣时间 2014年11月12日 星期三 08:25 允许迟交 否 关闭时间 2014年11月19日 星期三 08:25 背景:钟面上的时针和分针之间的夹角总是在 0 ~180之间 ( 包括 0 和180 ) 。举例来说,在十二点的时候两针之间的夹角为 0 ,而在六点的时候夹角为180 ,在三点的时候为90 。本题要解决的是计算 12:00 到 11:59 之间任意一个时间的夹角。 输入:

每组测试数据包含两个数字:第一个数字代表小时 ( 大于 0 小于等于 12) ,第二个数字代表分 ( 在区间 [0, 59] 上 ) 。 输出:

对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。

再看一看,想一想:是否可以不用if 语句,只使用 printf 函数来简化你的程序?

测试输入 期待的输出 时间限制内存限制额外进程测以文本方式显示 以文本方式显示 试用1. 12 0? 1. At 12:00 the angle is 0.0 degrees.? 例 1 测以文本方式显示 以文本方式显示 试用1. 12 30? 1. At 12:30 the angle is 165.0 degrees.? 例 2 测以文本方式显示 以文本方式显示 试用1. 6 0? 1. At 6:00 the angle is 180.0 degrees.? 例 3 测以文本方式显示 以文本方式显示 试用1. 3 0? 1. At 3:00 the angle is 90.0 degrees.? 例 4 测以文本方式显示 以文本方式显示 试用1. 3 3? 1. At 3:03 the angle is 73.5 degrees.? 例 5 测以文本方式显示 以文本方式显示 试用1. 3 9? 1. At 3:09 the angle is 40.5 degrees.? 例 164M 0 秒 164M 0 秒 164M 0 秒 164M 0 秒 164M 0 秒 164M 0 秒 测试输入 期待的输出 时间限制 内存限制 额外进程 6 测以文本方式显示 以文本方式显示 试用1. 4 0? 1. At 4:00 the angle is 120.0 degrees.? 例 7 测以文本方式显示 以文本方式显示 试用1. 5 59? 1. At 5:59 the angle is 174.5 degrees.? 例 8 测以文本方式显示 以文本方式显示 试用1. 4 20? 1. At 4:20 the angle is 10.0 degrees.? 例 9 测以文本方式显示 以文本方式显示 试用1. 0 0? 1. At 0:00 the angle is 0.0 degrees.? 例 10 Code

#include int main() {

int hour, minute, temp;

float angle, h_angle, m_angle; scanf(\ temp = hour;

if(hour == 12) temp = 0;

h_angle = temp * 30.0 + minute * 0.5; m_angle = minute * 6.0;

angle = h_angle > m_angle ? h_angle - m_angle : m_angle - h_angle; if(angle > 180.0) angle = 360.0 - angle;

printf(\

164M 0 秒 164M 0 秒 164M 0 秒 164M 0 秒

return 0; }

2.【日期】确定母亲节

成绩 折扣 10 开启时间 2014年10月28日 星期二 10:35 0.8 折扣时间 2014年11月12日 星期三 10:35 关闭时间 2014年11月19日 星期三 10:35 允许迟交 否 母亲节是每年的五月第二个星期天,针对输入的年份,计算该年的哪一天是母亲节。 输入: 年份 输出:

日期(5月的哪一天)

测试输入 期待的输出 时间限制 测试用例 1 1. 2014? 1. 11? 以文本方式显示 以文本方式显示 1秒 64M 内存限制 0 额外进程 测试用例 2 以文本方式显示 1. 2015? 以文本方式显示 1秒 1. 10? 64M 0 测试用例 3 以文本方式显示 1. 2012? 以文本方式显示 1秒 1. 13? 64M 0 Code: #include int main() {

int year, n, week, total, day;

scanf(\

if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

{ } else { }

week = (week + total) % 7; if (week == 0) week = 7; day = 7 - week + 8;

week = (year + year / 4 + year / 400 - year / 100) % 7; for(n = 0; n < 5; n++) { }

if(n == 0) total = 0;

if(n == 1 || n == 3) total += 31; if(n == 2) total += 28; if(n == 4) total += 30;

week = (year + year / 4 + year / 400 - year / 100 - 1) % 7; for(n = 0;n < 5; n++) { }

if(n == 0) total = 0;

if(n == 1 || n == 3) total += 31; if(n == 2) total += 29; if(n == 4) total += 30;

printf(\ return 0; }

3.【日期】计算星期

成绩 10 开启时间 2014年10月28日 星期二 10:40 折扣 0.8 折扣时间 2014年11月12日 星期三 10:40 关闭时间 2014年11月19日 星期三 10:40 允许迟交 否 给出任意一个年月日(年>1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。 输入: 年 月 日 输出:

0~6。

星期日用 0 表示,星期一用 1 表示,星期二用 2 表示......星期六用 6 表示。 假设年份大于1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?

测试输入 期待的输出 时间限制 测试用例 1 1. 2013 3 11? 1. 1? 以文本方式显示 以文本方式显示 1秒 64M 0 内存限制 额外进程 测试用例 2 以文本方式显示 1. 2013 13 15? 以文本方式显示 1. month is error.? 1秒 64M 0 测试用例 3 以文本方式显示 1. 2013 3 32? 以文本方式显示 1. day is error.? 1秒 64M 0 Code:

#include int main() {

int year, month, day, n, week, total; scanf(\ if(year <= 1900){

printf(\

}

return 0;

if(month >= 13 || month < 1){ }

if(day < 0){ }

switch (month){

case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(day > 31)

{printf(\ break; case 4: case 6: case 9: case 11: if(day > 30)

{printf(\ break;

case 2:if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {

if(day > 29) {printf(\ }

printf(\return 0;

printf(\return 0;

else {

if(day > 28) {printf(\ } break;

}

if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

{ } else { }

week = (week + total + day - 1) % 7;

week = (year + year / 4 + year / 400 - year / 100) % 7; for(n = 0; n < month; 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 = (year + year / 4 + year / 400 - year / 100 - 1) % 7; for(n = 0;n < month; 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;

printf(\ return 0;

本文来源:https://www.bwwdw.com/article/rrf5.html

Top