北京理工大学级C程序设计非信息类答案解析part.docx

上传人:b****8 文档编号:9135901 上传时间:2023-02-03 格式:DOCX 页数:104 大小:58.63KB
下载 相关 举报
北京理工大学级C程序设计非信息类答案解析part.docx_第1页
第1页 / 共104页
北京理工大学级C程序设计非信息类答案解析part.docx_第2页
第2页 / 共104页
北京理工大学级C程序设计非信息类答案解析part.docx_第3页
第3页 / 共104页
北京理工大学级C程序设计非信息类答案解析part.docx_第4页
第4页 / 共104页
北京理工大学级C程序设计非信息类答案解析part.docx_第5页
第5页 / 共104页
点击查看更多>>
下载资源
资源描述

北京理工大学级C程序设计非信息类答案解析part.docx

《北京理工大学级C程序设计非信息类答案解析part.docx》由会员分享,可在线阅读,更多相关《北京理工大学级C程序设计非信息类答案解析part.docx(104页珍藏版)》请在冰豆网上搜索。

北京理工大学级C程序设计非信息类答案解析part.docx

北京理工大学级C程序设计非信息类答案解析part

北京理工大学2013级C程序设计非信息类答案Part1

1.【入门】Helloworld.

成绩

5

开启时间

2014年03月3日星期一08:

00

折扣

0.8

折扣时间

2014年03月18日星期二23:

55

允许迟交

关闭时间

2014年03月18日星期二23:

55

让我们用C语言向世界问好。

最早的程序基本是这个样子的:

#include

intmain()

{

   printf("Helloworld.\n");

   return0;

}

请模仿上面的程序,看看是否可以通过编译?

如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。

输入:

无输出:

Helloworld.

 

测试输入

期待的输出

时间限制

内存限制

额外进程

测试用例1

1.↵

1.Hello world.↵

1秒

64M

0

1.#include   

2.int main(){printf("Hello world.\n"); return 0;}  

 

2.【入门】输出你的第一个图形

成绩

5

开启时间

2014年02月25日星期二14:

00

折扣

0.8

折扣时间

2014年03月18日星期二23:

55

允许迟交

关闭时间

2014年03月18日星期二23:

55

背景:

我们已经学习了printf函数的基本使用方法,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。

程序如下:

#include 

int main()

{

printf("****\n");

printf("****\n");

printf("****\n");

printf("****\n");

return 0;

}  

要求:

按照上面的程序范例,编写一个小程序,要求输出的是4行由*号组成的等腰三角形。

输入:

无。

输出:

指定图形。

 

测试输入

期待的输出

时间限制

内存限制

额外进程

测试用例1

1.↵

   *↵

1.  ***↵

2. *****↵

3.*******↵

1秒

64M

0

1.#include   

2.int main()  

3.{  printf("   *\n");  

4.    printf("  ***\n");  

5.    printf(" *****\n");  

6.    printf("*******\n");  

7.    return 0;}  

 

3.【入门】求A+B

成绩

5

开启时间

2014年02月3日星期一14:

00

折扣

0.8

折扣时间

2014年03月18日星期二23:

55

允许迟交

关闭时间

2014年03月18日星期二23:

55

我们已经学了如何使用scanf函数中输入整型数据(%d),下面让我们使用scanf函数来输入两个整数,然后求它们的和。

输入:

整数1 整数2输出:

   整数1+整数2=和

 

测试输入

期待的输出

时间限制

内存限制

额外进程

测试用例1

1.10↵

2.20↵

1.10+20=30↵

1秒

64M

0

测试用例2

1.-10↵

2.10↵

1.-10+10=0↵

1秒

64M

0

测试用例3

1.300 200↵

1.300+200=500↵

1秒

64M

0

1.#include   

2.int main()  

3.{ int a,b; scanf("%d",&a); scanf("%d",&b);  

4.printf("%d+%d=%d\n",a,b,a+b);return 0;}  

 

4.【入门】求整数的3次方

成绩

5

开启时间

2014年02月25日星期二14:

00

折扣

0.8

折扣时间

2014年03月18日星期二23:

55

允许迟交

关闭时间

2014年03月18日星期二23:

55

输入一个整数x,输出x的3次方。

想一想,在C语言中如何用公式来表达x的3次方?

输入:

一个整数。

输出:

该整数的3次方值。

 

测试输入

期待的输出

时间限制

内存限制

额外进程

测试用例1

1.3↵

1.27↵

1秒

64M

0

测试用例2

1.-3↵

1.-27↵

1秒

64M

0

1.#include   

2.int main(){int x;scanf("%d",&x);printf("%d\n",x*x*x);return 0;}  

 

5.【入门】输出字符的ASCII码

成绩

5

开启时间

2014年02月25日星期二14:

00

折扣

0.8

折扣时间

2014年03月18日星期二23:

55

允许迟交

关闭时间

2014年03月18日星期二23:

55

背景:

我们在计算机基础中已经学过:

字母在计算机中采用ASCII码进行存储。

下面要从键盘上输入任意一个字符,然后输出该字符对应的ASCII码。

输入:

一个字符输出:

   该字符对应的ASCII码

说明:

如果编程有问题,请先看看教材P51的例题3-4,然后再办法发挥一下……

 

测试输入

期待的输出

时间限制

内存限制

额外进程

测试用例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.↵

无限制

64M

0

1.#include     

2.  int main(){char a;scanf("%c",&a);    

3.   printf("The ASCII of character '%c' is %d.\n",a,a);   

4.   return 0;}  

 

6.【入门】大小写字母转换

成绩

5

开启时间

2014年03月17日星期一08:

00

折扣

0.8

折扣时间

2014年04月4日星期五23:

55

允许迟交

关闭时间

2014年04月6日星期日23:

55

我们知道,英文字母是分大小写的,下面我们需要编写一个简单的程序,将输入的全部小写字母变换为大写字母,大写字母变换为小写字母,非写字母保持不变。

输入:

   一个字符输出:

   变换后的字符

 

测试输入

期待的输出

时间限制

内存限制

额外进程

测试用例1

1.A↵

1.a↵

1秒

64M

0

测试用例2

1.Z↵

1.z↵

1秒

64M

0

测试用例3

1.b↵

1.B↵

1秒

64M

0

测试用例4

1.y↵

1.Y↵

1秒

64M

0

测试用例5

1.#↵

1.#↵

无限制

64M

0

1.#include   

2.int main()  

3.{char x,y;scanf("%c",&x);  

4.if(x>=65&&x<=90) y=x+32;  

5.else if(x>=97&&x<=122)y=x-32;  

6.else y=x;  

7.printf("%c\n",y);return 0;}

 

7.【小学】一年级的算术题

成绩

5

开启时间

2014年03月17日星期一08:

00

折扣

0.8

折扣时间

2014年04月4日星期五23:

55

允许迟交

关闭时间

2014年04月6日星期日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

1.#include    

2.int main(){int a,b;scanf("%d%d",&a,&b);  

3.printf("%d+%d=%d\n",a,b,a+b);  

4.printf("%d-%d=%d\n",a,b,a-b);  

5.printf("%d*%d=%d\n",a,b,a*b);  

6.printf("%d/%d=%d\n",a,b,a/b);  

7.printf("%d%%%d=%d\n",a,b,a%b);return 0;}

 

8.【中学】判断三角形的形状

成绩

5

开启时间

2014年03月17日星期一08:

00

折扣

0.8

折扣时间

2014年04月4日星期五23:

55

允许迟交

关闭时间

2014年04月6日星期日23:

55

小明上了初中,开始学习如何求解一元二次方程。

要求:

输入三角型的三条边,判断三角形的形状。

假设输入的三边边长均>0。

(提示:

本题中应该要用到if语句嵌套)

输入:

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

输出:

等边三角形:

equilateraltriangle.等腰三角形:

isocelestriangle.不构成三角形:

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

1.#include        

2.int main(){int a,b,c;scanf("%d%d%d",&a,&b,&c);

3.if(a+b<=c||a+c<=b||b+c<=a)  printf("non-triangle.\n");

4.else if(a==b&&b==c)        printf("equilateral triangle.\n");        

5.else if(a==b&&b!

=c||a==c&&c!

=b||b==c&&c!

=a)          printf("isoceles triangle.\n") ;        

6.else printf("triangle.\n");  

7.return 0;}

 

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

成绩

5

开启时间

2014年03月17日星期一08:

00

折扣

0.8

折扣时间

2014年04月6日星期日23:

55

允许迟交

关闭时间

2014年04月11日星期五23:

55

背景:

钟面上的时针和分针之间的夹角总是在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

1.#include

2.#include

3.main(){int x,y;float z; scanf("%d%d",&x,&y); 

4. z=fabs(30*x-(float)y*11/2);  z=z>180?

360-z:

z;        

5. if(y<10) printf("At %d:

0%d the angle is %.1f degrees.\n",x,y,z);        

6.else printf("At %d:

%d the angle is %.1f degrees.\n",x,y,z);}

 

10.【日期】根据日期求星期

成绩

5

开启时间

2014年03月17日星期一08:

00

折扣

0.8

折扣时间

2014年04月6日星期日23:

55

允许迟交

关闭时间

2014年04月11日星期五23:

55

任意给出一个年月日,求出是星期几。

输入:

   年月日输出:

   0~6。

   星期日用0表示,星期一用1表示,星期二用2表示......星期六用6表示。

假设年份大于1900。

先想一想:

我们现在只会使用if语句,该如何建立数学模型?

找到数学模型是解决本题的关键。

看了部分先完成同学提交的程序,有人居然使用数组了,这个太不应该,因为我们根本就没有讲数组,让我怀疑使用数组的程序是抄的。

 

测试输入

期待的输出

时间限制

内存限制

额外进程

测试用例1

1.2013 3 11↵

1.1↵

1秒

64M

0

测试用例2

1.2013 3 15↵

1.5↵

1秒

64M

0

测试用例3

1.2013 3 17↵

1.0↵

1秒

64M

0

1.#include     

2.int main()

3.{int year,month,day,ty,m,y,c,d,weeks; scanf("%d%d%d",&year,&month,&day);

4.ty=year;m=month;if(m<3){m=12+m;ty--;}

5.y=ty%100;c=ty/100;d=day;

6.weeks=(y+y/4+c/4-2*c+26*(m+1)/10+d-1)%7;printf("%d\n",weeks);}

 

11.【中学】求解一元二次方程

成绩

5

开启时间

2014年03月17日星期一08:

00

折扣

0.8

折扣时间

2014年04月11日星期五23:

55

允许迟交

关闭时间

2014年04月11日星期五23:

55

初中的小明已经开始学习求解一元二次方程了,下面让我们来教计算机如何求解。

输入a,b,c,求一元二次方程ax²+bx+c=0的根。

输入:

假设a,b,c均int。

输出:

要求输出的根为double型,保留6位小数。

说明:

如果不会作,请参考教材P108的例5-17

 

测试输入

期待的输出

时间限制

内存限制

额外进程

测试用例1

1.0 0 0↵

1.Input error!

1秒

64M

0

测试用例2

1.0 0 10↵

1.Input error!

1秒

64M

0

测试用例3

1.0 10 0↵

1.x=0.000000↵

1秒

64M

0

测试用例5

1.10 0 0↵

1.x1=x2=0.000000↵

1秒

64M

0

测试用例6

1.10 20 0↵

1.x1=0.000000↵

2.x2=-2.000000↵

1秒

64M

0

测试用例8

1.10 0 20↵

1.x1=1.414214i↵

2.x2=-1.414214i↵

1秒

64M

0

测试用例9

1.1 2 1↵

1.x1=x2=-1.000000↵

1秒

64M

0

测试用例10

1.1 2 -1↵

1.x1=0.414214↵

2.x2=-2.414214↵

1秒

64M

0

测试用例11

1.2 2 2↵

1.x1=-0.500000+0.866025i↵

2.x2=-0.500000-0.866025i↵

1秒

64M

0

1.#include 

2.#include         

3.void main(){double a,b,c,d; scanf("%lf%lf%lf",&a,&b,&c);        

4.d=b*b-4*a*c;if(a==0&&b==0) printf("Input error!

\n");        

5.else if(a==0)  printf("x=%lf\n",c==0?

0:

-c/b);        

6.else if(d==0)  printf("x1=x2=%.6lf\n",b==0?

0:

-b/(2*a));        

7.else if(d>0)   printf("x1=%lf\nx2=%lf\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));     

8.else if(b==0)  printf("x1=%lfi\nx2=-%lfi\n",sqrt(-d)/(2*a),sqrt(-d)/(2*a));        

9.else printf("x1=%lf+%lfi\nx2=%lf-%lfi\n",-b/(2*a),sqrt(-d)/(2*a),-b/(2*a),sqrt(-d)/(2*a));}

 

12.【中学】找出最大素数

成绩

5

开启时间

2014年03月17日星期一08:

00

折扣

0.8

折扣时间

2014年04月11日星期五23:

55

允许迟交

关闭时间

2014年04月11日星期五23:

55

小明在中学学习了什么是素数。

素数是指一个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。

输入:

   取值范围输出:

   该范围内的最大素数

 

测试输入

期待的输出

时间限制

内存限制

额外进程

测试用例1

1.100↵

1.The max prime number is 97.↵

1秒

64M

0

1.#include

2.#include

3.int IsPrime(int n) {int i;

4.    for(i=2;i<=sqrt(n);i++)     

5.      if(n%i==0) return(0);     

6.    return

(1);}

7.void main() 

8.{int n;scanf("%d",&n);

9. for(;;n--) if(IsPrime(n)) break; 

10.printf("The max prime number is %d.\n",n);}

 

13.【小学】再做一年级算术题

成绩

5

开启时间

2014年03月17日星期一08:

00

折扣

0.8

折扣时间

2014年04月11日星期五23:

55

允许迟交

关闭时间

2014年04月11日星期五23:

55

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

输入:

   操作数1op操作数2输出:

   计算结果提示:

   关键是在表达式输入过程中如何取出运算符?

 

测试输入

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1