资源描述
第一周作业
【练习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
以
展开阅读全文