收藏 分销(赏)

C语言程序设计—北京理工大学MOOC提交作业.doc

上传人:仙人****88 文档编号:9283476 上传时间:2025-03-19 格式:DOC 页数:43 大小:766.54KB
下载 相关 举报
C语言程序设计—北京理工大学MOOC提交作业.doc_第1页
第1页 / 共43页
C语言程序设计—北京理工大学MOOC提交作业.doc_第2页
第2页 / 共43页
点击查看更多>>
资源描述
第一周作业 【练习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 <stdio.h> 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<stdio.h> #define PAI  3.1415926 int main() {     int r,h;     double s,v;     scanf("%d %d",                  );     s=2*PAI*r*h;     v=PAI*r*r*h;     printf("s=%.2f,v=       \n",s,     );     return 0; } **********************************************分隔线************ Code: #include<stdio.h> #define PAI 3.1415926 int main() { int r,h; double s,v; scanf("%d %d",&r,&h); s=2*PAI*r*h; v=PAI*r*r*h; printf("s=%.2f,v=%.2f\n",s,v); 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. 0↵ 以文本方式显示 1. The ASCII of character '0' is 48.↵ 1秒 64M 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<stdio.h> int main() { char ch; scanf("%c",&ch); printf("The ASCII of character '%c' is %d.",ch,ch); 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. 10+3=13↵ 2. 10-3=7↵ 3. 10*3=30↵ 4. 10/3=3↵ 5. 10%3=1↵ 1秒 64M 0 测试用例 2 以文本方式显示 1. 11 -3↵ 以文本方式显示 1. 11+-3=8↵ 2. 11--3=14↵ 3. 11*-3=-33↵ 4. 11/-3=-3↵ 5. 11%-3=2↵ 1秒 64M 0 Code #include<stdio.h> int main() { int a, b; char ch = 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); 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. 3 4 5↵ 以文本方式显示 1. triangle.↵ 1秒 64M 0 测试用例 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<stdio.h> int main() { int a, b, c; scanf("%d%d%d",&a,&b,&c); if(a + b > c && a + c > b && b + c >a) { if(a == b && a == c && b == c) { printf("equilateral triangle.\n"); return 0; } if(a == b || a == c || b == c) { printf("isoceles triangle.\n"); return 0; } printf("triangle.\n"); } else { printf("non-triangle.\n"); } 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 以文本方式显示 1. 12 0↵ 以文本方式显示 1. At 12:00 the angle is 0.0 degrees.↵ 1秒 64M 0 测试用例 2 以文本方式显示 1. 12 30↵ 以文本方式显示 1. At 12:30 the angle is 165.0 degrees.↵ 1秒 64M 0 测试用例 3 以文本方式显示 1. 6 0↵ 以文本方式显示 1. At 6:00 the angle is 180.0 degrees.↵ 1秒 64M 0 测试用例 4 以文本方式显示 1. 3 0↵ 以文本方式显示 1. At 3:00 the angle is 90.0 degrees.↵ 1秒 64M 0 测试用例 5 以文本方式显示 1. 3 3↵ 以文本方式显示 1. At 3:03 the angle is 73.5 degrees.↵ 1秒 64M 0 测试用例 6 以文本方式显示 1. 3 9↵ 以文本方式显示 1. At 3:09 the angle is 40.5 degrees.↵ 1秒 64M 0 测试用例 7 以文本方式显示 1. 4 0↵ 以文本方式显示 1. At 4:00 the angle is 120.0 degrees.↵ 1秒 64M 0 测试用例 8 以文本方式显示 1. 5 59↵ 以文本方式显示 1. At 5:59 the angle is 174.5 degrees.↵ 1秒 64M 0 测试用例 9 以文本方式显示 1. 4 20↵ 以文本方式显示 1. At 4:20 the angle is 10.0 degrees.↵ 1秒 64M 0 测试用例 10 以文本方式显示 1. 0 0↵ 以文本方式显示 1. At 0:00 the angle is 0.0 degrees.↵ 1秒 64M 0 o Code #include<stdio.h> int main() { int hour, minute, temp; float angle, 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_angle > m_angle ? h_angle - m_angle : m_angle - h_angle; if(angle > 180.0) angle = 360.0 - angle; printf("At %d:%02d the angle is %.1f degrees.\n",hour,minute,angle); 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. 10↵ 1秒 64M 0 测试用例 3 以文本方式显示 1. 2012↵ 以文本方式显示 1. 13↵ 1秒 64M 0 Code: #include<stdio.h> int main() { int year, 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 < 5; 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 < 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 = (week + total) % 7; if (week == 0) week = 7; day = 7 - week + 8; printf("%d\n",day); 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<stdio.h> int main() { int year, month, day, n, week, total; scanf("%d%d%d",&year, &month, &day); if(year <= 1900){ printf("year is error.\n"); return 0; } if(month >= 13 || month < 1){ printf("month is error.\n"); return 0; } if(day < 0){ printf("day is error.\n"); return 0; } switch (month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(day > 31) {printf("day is error.\n"); return 0;} break; case 4: case 6: case 9: case 11: if(day > 30) {printf("day is error.\n"); return 0;} break; case 2:if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { if(day > 29) {printf("day is error.\n"); return 0;} } else { if(day > 28) {printf("day is error.\n"); return 0;} } 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 < 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; } } else { 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 = (week + total + day - 1) % 7; printf("%d\n",week); return 0; } 4.【中学】求最后3位数值(选做) 成绩 0 开启时间 2014年10月28日 星期二 10:45 折扣 0.8 折扣时间 2014年11月12日 星期三 10:45 允许迟交 否 关闭时间 2014年11月19日 星期三 10:45 小明在中学会求一个数的 n 次方了,但计算机还不会,请你来编写一个程序吧。由于计算机比较“笨”,所以我们编写程序的功能不用太强,只要能算出 a 的 n 次方的最后 3 位数就可以了。 输入:     a 和 n 的值。假设 a<=150 。 输出:     求 a 的 n 次方的最后 3 位数。 提示:再想一想,你的方法对吗?你用的是什么数据类型?   测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 1. 10 0↵ 以文本方式显示 1. The last 3 numbers is 1.↵ 1秒 64M 0 测试用例 2 以文本方式显示 1. 2 8↵ 以文本方式显示 1. The last 3 numbers is 256.↵ 1秒 64M 0 测试用例 3 以文本方式显示 1. 100 10↵ 以文本方式显示 1. The last 3 numbers is 000.↵ 1秒 64M 0 o Code: o #include<stdio.h> o int main() o { o int a, n, i, total = 1; o scanf("%d%d",&a,&n); o if(n == 0) total = 1; o for(i = 1; i <= n; i++) o { o total *= a; o } o total = total % 1000; o printf("The last 3 numbers is %d.\n",total); o return 0; } 第五周作业 1.锻炼身体吧 成绩 10 开启时间 2014年11月4日 星期二 07:50 折扣 0.8 折扣时间 2014年11月19日 星期三 07:50 允许迟交 否 关闭时间 2014年11月26日 星期三 07:50 题目描述: 沫沫,灰灰和渣渣去锻炼身体,如果对他们跑步的距离分别只计整数 a、 b、 c,由于他们身高的差距,造成了 a<=b<=c,并且渣渣跑了N米之后就再也跑不动了。但是,按照他们事先的约定: 只有当 c*c==a*a+b*b 时,他们的锻炼才有效果。 现在他们三个人想知道,如果渣渣的极限N已知,那么有多少种有锻炼效果的跑步方案(即a, b, c有多少种可能的取值)。 输入: 一个整数N,表示渣渣的体力极限, N <= 5000。 输出: 一个整数,代表他们跑步方案的个数。 Hint:对于输入N=5,有方案 a=3, b=4, c=5, 共一种。   测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 1. 5↵ 以文本方式显示 1. 1↵ 1秒 64M 0 测试用例 2 以文本方式显示 1. 22↵ 以文本方式显示 1. 6↵ 1秒 64M 0 Code: #include<stdio.h> int main() { int a = 1,b = 1,c = 1,maxnum,count = 0; scanf("%d",&maxnum); for(c = 1;c <= maxnum;c++) { for(a = 1; a < c; a++ ) { for(b = 1; b < c; b++) { if((c*c == a*a +b*b)&&(a <= b)) count++; } } } printf("%d\n",count); return 0; } 2.寻找特殊偶数 成绩 10 开启时间 2014年11月4日 星期二 08:00 折扣 0.8 折扣时间 2014年11月19日 星期三 08:00 允许迟交 否 关闭时间 2014年11月26日 星期三 08:00 背景 有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。 输入 所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。 输出 列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。   测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 1. 3000  3020↵ 2. 6040  6090↵ 3. 0 0↵ 以文本方式显示 1. 3012  3014  3016  3018  ↵ 2. counter=4↵ 3. 6042  6048  6052  6054  6058  6072  6074  6078  6082  6084  ↵ 4. counter=10↵ 1秒 64M 0 测试用例 2 以文本方式显示 1. 9  101↵ 2. 87 -1↵ 3. 0 0↵ 以文本方式显示 1. Error↵ 2. Error↵ 1秒 64M 0 Code: #include<stdio.h> int main() { int maxnum, minnum, n, g, s, b, q, count = 0; while(1){ scanf("%d%d",&minnum,&maxnum); if(minnum == 0 && maxnum == 0) return 0; if((minnum > 999 && minnum < 10000) && (maxnum > 999 && maxnum < 10000) && (maxnum >= minnum)) { for(n = minnum; n <= maxnum; n++) { if(n % 2 == 0){ q = n / 1000; b = n % 1000 / 100; s = n % 100 / 10; g = n % 10; if(q != b && q != s && q != g && b != s && b != g && s != g) { count++; printf("%d ",n); } } } printf("\n"); printf("counter=%d\n",count); count = 0; } else printf("Error\n"); } return 0; } 3.求最小 m 值 成绩 10 开启时间 2014年11月4日 星期二 08:05 折扣 0.8 折扣时间 2014年11月19日 星期三 08:05 允许迟交 否 关闭时间 2014年11月26日 星期三 08:05 求满足下列不等式的最小 m。     1 + 2 + 3 + 4 + ...... + m ≥ n 例如:n=100,当 m =14 时,满足:1+2+3+4+...+13=91<100,而 1 +2+3+4+......+14=105>100。 输入:n 输出:m   测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 1. 100↵ 以文本方式显示 1. 14↵ 1秒 64M 0 Code: #include<stdio.h> int main() { int max, i = 0, sum = 0; scanf("%d",&max); while(sum < max) { i++; sum += i; } printf("%d\n",i); } 第六周作业 数字正方型 成绩 10 开启时间 2014年11月12日 星期三 05:55 折扣 0.8 折扣时间 2014年11月26日 星期三 05:55 允许迟交 否 关闭时间 2014年12月3日 星期三 05:55 这是双重循环的入门题目,大家来看看,你会做吗? 输入 n 的值,输出如下例( n=4 )所示的由数字组成的正方型。   1  2  3  4   5  6  7  8   9 10 11 12  13 14 15 16 输入:      n 输出:    数字组成的正方型   测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 1. 1↵ 以文本方式显示 1.   1↵ 1秒 64M 0 测试用例 2 以文本方式显示 1. 2↵ 以文本方式显示 1.   1  2↵ 2.   3  4↵ 1秒 64M 0 测试用例 3 以文本方式显示 1. 3↵ 以文本方式显示 1.   1  2  3↵ 2.   4  5  6↵ 3.   7  8  9↵ 1秒 64M 0 测试用例 4 以文本方式显示 1. 5↵ 以文本方式显示 1.   1  2  3  4  5↵ 2.   6  7  8  9 10↵ 3.  11 12 13 14 15↵ 4.  16 17 18 19 20↵ 5.  21 22 23 24 25↵ 1秒 64M 0 Code #include<stdio.h> int main() { int n, x, y, count = 0; scanf("%d",&n); for(y = 0; y < n; y++) { for(x = 0; x < n; x++) { count++; printf("%3d",count); } printf("\n"); } return 0; } 空心字符菱形 成绩 10 开启时间 2014年11月13日 星期四 06:10 折扣 0.8 折扣时间 2014年11月26日 星期三 06:10 允许迟交 否 关闭时间 2014年12月3日 星期三 06:10 输入:     菱型起始字母和菱形的高度。 输出:     参看测试用例,打印空心的由字符组成的菱形。   测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服