1、第一周作业 【练习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》,也延用这个示例。
2、
一般来说,这是每一种计算机编程语言中最基本、最简单的程序,亦通常是初学者所编写的第一个程序。它还可以用来确定该语言的编译器、程序开发环境,以及运行环境是否已经安装妥当。将“Hello World”作为第一个示范程序,已经成为编程语言学习的传统。
我们在这里继续传统,这也是一种向前辈们致敬的方式之一吧!
最早的程序基本是这个样子的:
#include
3、面的习题吧。 略 第二周作业 【练习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 第二行输入圆
4、柱的高 h
输出:
s=< 圆柱的侧面积 >,v=< 圆柱的体积 >
要求
1. 所有变量都定义为双精度类型
2. 结果精确到小数点后两位。
作为练习题目:
我们已经给您编写好了大部分的代码,请您自己修改几个地方,完成程序的剩余部分。
**********************************************分隔线************
#include
5、 );
s=2*PAI*r*h;
v=PAI*r*r*h;
printf("s=%.2f,v= \n",s, );
return 0;
}
**********************************************分隔线************
Code:
#include
6、 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码
7、 输入: 一个字符 输出: 该字符对应的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 chara
8、cter '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
9、 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 4
10、44 输出: 分别输出按照整型数据进行 +、-、*、/、* 之后的运行结果。 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 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↵
11、1秒
64M
0
Code
#include
12、 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 一般三角形:triangl
13、e 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 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
14、 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
15、↵
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
16、 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 开启时
17、间 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, 5
18、9] 上 ) 。 输出: 对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。 再看一看,想一想:是否可以不用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
19、 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
20、 测试用例 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↵ 以
21、文本方式显示
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
22、 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,m
23、inute,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↵ 以文本方式显
24、示
1. 11↵
1秒
64M
0
测试用例 2
以文本方式显示
1. 2015↵
以文本方式显示
1. 10↵
1秒
64M
0
测试用例 3
以文本方式显示
1. 2012↵
以文本方式显示
1. 13↵
1秒
64M
0
Code:
#include
25、 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 /
26、 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; }
27、 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。先想
28、一想:我们现在只会使用 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 29、>
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){
p 30、rintf("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(da 31、y > 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"); retu 32、rn 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 33、 == 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 = 34、 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 35、月12日 星期三 10:45
允许迟交
否
关闭时间
2014年11月19日 星期三 10:45
小明在中学会求一个数的 n 次方了,但计算机还不会,请你来编写一个程序吧。由于计算机比较“笨”,所以我们编写程序的功能不用太强,只要能算出 a 的 n 次方的最后 3 位数就可以了。
输入:
a 和 n 的值。假设 a<=150 。
输出:
求 a 的 n 次方的最后 3 位数。
提示:再想一想,你的方法对吗?你用的是什么数据类型?
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
以文本方式显示
1. 10 0↵
以文 36、本方式显示
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:
#include 37、0)
c=1;
for(d=1;d<=b;d++)
{
c*=a;
c=c%1000;}
if(c==0)
printf("The last 3 numbers is 000.\n");
else
{
printf("The last 3 numbers is %d.",c);
return 0;}
}第五周作业
1.锻炼身体吧
成绩
10
开启时间
2014年11月4日 星期二 07:50
折扣
0.8
折扣时间
2014年11月19日 星期三 07:50
允许迟交
否
关闭时间
2014年11月26日 星期三 07:50
题目描述:
38、
沫沫,灰灰和渣渣去锻炼身体,如果对他们跑步的距离分别只计整数 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, 共一种。
测试输入
期待的输出
时间限 39、制
内存限制
额外进程
测试用例 1
以文本方式显示
1. 5↵
以文本方式显示
1. 1↵
1秒
64M
0
测试用例 2
以文本方式显示
1. 22↵
以文本方式显示
1. 6↵
1秒
64M
0
Code:
#include 40、 )
{
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年 41、11月26日 星期三 08:00
背景
有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。
输入
所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。
输出
列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
以文本方式显示
1. 3000 3020↵
2. 6040 6090↵
3. 0 0↵
以文本方式显示
1. 3012 3014 3016 3018 42、↵
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 43、 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;
44、 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;
}
els 45、e
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。
46、
输入:n
输出:m
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
以文本方式显示
1. 100↵
以文本方式显示
1. 14↵
1秒
64M
0
Code:
#include 47、
成绩
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
输出:
数字组成的正方型
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 48、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 49、 13 14 15↵
4. 16 17 18 19 20↵
5. 21 22 23 24 25↵
1秒
64M
0
Code
#include 50、 }
return 0;
}
空心字符菱形
成绩
10
开启时间
2014年11月13日 星期四 06:10
折扣
0.8
折扣时间
2014年11月26日 星期三 06:10
允许迟交
否
关闭时间
2014年12月3日 星期三 06:10
输入:
菱型起始字母和菱形的高度。
输出:
参看测试用例,打印空心的由字符组成的菱形。
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
以文本方式显示
1. C 4↵
以文本方式显示
1. C↵
2. D D↵
3. E






