c语言期末复习例题及其程序Word格式.docx

上传人:b****6 文档编号:17910465 上传时间:2022-12-12 格式:DOCX 页数:30 大小:23.37KB
下载 相关 举报
c语言期末复习例题及其程序Word格式.docx_第1页
第1页 / 共30页
c语言期末复习例题及其程序Word格式.docx_第2页
第2页 / 共30页
c语言期末复习例题及其程序Word格式.docx_第3页
第3页 / 共30页
c语言期末复习例题及其程序Word格式.docx_第4页
第4页 / 共30页
c语言期末复习例题及其程序Word格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

c语言期末复习例题及其程序Word格式.docx

《c语言期末复习例题及其程序Word格式.docx》由会员分享,可在线阅读,更多相关《c语言期末复习例题及其程序Word格式.docx(30页珍藏版)》请在冰豆网上搜索。

c语言期末复习例题及其程序Word格式.docx

%d-%d-%d"

&

n,&

y,&

r);

if(y==1)

day=r;

if(y==2)

day=31+r;

if(y==3)

day=31+28+r;

if(y==4)

day=31+28+31+r;

if(y==5)

day=31+28+31+30+r;

if(y==6)

day=31+28+31+30+31+r;

if(y==7)

day=31+28+31+30+31+30+r;

if(y==8)

day=31+28+31+30+31+30+31+r;

if(y==9)

day=31+28+31+30+31+30+31+31+r;

if(y==10)

day=31+28+31+30+31+30+31+31+30+r;

if(y==11)

day=31+28+31+30+31+30+31+31+30+31+r;

if(y==12)

day=31+28+31+30+31+30+31+31+30+31+30+r;

if(y>

=3&

&

(n%4==0&

y%100!

=0||y%400==0))

day=day+1;

这天是该年的第%d天\n"

day);

}

方法二:

intn,y,r,day,i;

day=0;

for(i=1;

i<

=y-1;

i++)

{

switch(i)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

day=day+31;

break;

case4:

case6:

case9:

case11:

day=day+30;

case2:

day=day+28;

}

}

day+r);

方法三:

intmonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};

day=day+month[i-1];

n%100!

=0||n%400==0))

2.任意输入一个起始年月日,再输入一个终止年月日,计算这2天之间一共有多少天?

分析:

1.数据部分:

该程序需要输入变量start_n,start_y,start_r,end_n,end_y,end_r等变量。

(此处略去一些变量暂时不写)

2.算法

1)定义变量

2)输入一个起始年月日,再输入一个终止年月日

3)分2大类讨论:

(1)起始和终止为同年

(2)起始和终止为非同年

4)分类计算为同年的计算

5)分类计算为非同年的计算

6)输出结果

intstart_n,start_y,start_r,end_n,end_y,end_r;

inti,s1,s2,day,s3;

intyf[12]={31,28,31,30,31,30,31,31,30,31,30,31};

输入一个起始年月日(格式必须如2000-01-09):

start_n,&

start_y,&

start_r);

输入一个终止年月日(格式必须如2000-01-09):

end_n,&

end_y,&

end_r);

if(start_n==end_n)

s1=0;

for(i=1;

=start_y-1;

s1=s1+yf[i-1];

s1=s1+start_r;

if(start_n%4==0&

start_n%100!

=0||start_n%400==0)

s1=s1+1;

s2=0;

=end_y-1;

s2=s2+yf[i-1];

s2=s2+end_r;

if(end_n%4==0&

end_n%100!

=0||end_n%400==0)

s2=s2+1;

day=s2-s1+1;

printf("

这2天之间一共有%d天\n"

else

s1=366-s1+1;

else

s1=365-s1+1;

 

for(i=start_n+1;

=end_n-1;

if(i%4==0&

i%100!

=0||i%400==0)

s2=s2+366;

else

s2=s2+365;

s3=0;

s3=s3+yf[i-1];

s3=s3+end_r;

s3=s3+1;

day=s1+s2+s3;

3.任意输入一个24小时制的时间(例如23:

15),要求输出与之对应的12小时制的时间(例如11:

15PM)。

inthour,minute;

任意输入一个24小时制的时间,必须格式是(XX:

XX):

%d:

%d"

hour,&

minute);

while(hour<

0||hour>

=24||minute<

0||minute>

60)

你所输入的24小时制的时间有误,请你重新输入,必须格式是(XX:

scanf("

/*因为24小时制的时间小时范围是0-23,,1小时制的时间小时范围是1-12*/

/*我把时间处理分为四个部分:

小时、:

、分钟、AM/PM*/

if(hour==0)

12"

if(hour>

=1&

hour<

=9)

0%d"

hour);

=10&

=11)

if(hour==12)

=13&

=21)

hour-12);

=22&

=23)

:

if(minute>

=0&

minute<

minute);

=59)

AM\n"

=12&

PM\n"

4.任意输入一个正整数,判断它属于下列哪种情况之一

a)能被3,5,7同时整除

b)只能被其中的2个数字整除,但是必须指出具体是哪2个数字整除

c)只能被其中的1个数字整除,但是必须指出具体是哪1个数字整除

d)不能被3,5,7中任意一个数字整除

intx,i;

任意输入一个正整数给x:

x);

while(x<

=0)

输入的是一个非正整数,请重新输入一个值给x:

for(i=3;

=7;

i=i+2)

if(x%i==0)

printf("

%d能被%d整除\n"

x,i);

%d不能被%d整除\n"

intx;

if(x%3==0&

x%5==0&

x%7==0)

%d能被3,5,7整除\n"

x);

elseif(x%3==0&

x%5==0)

%d只能被3,5整除\n"

elseif(x%5==0&

%d只能被5,7整除\n"

%d只能被3,7整除\n"

elseif(x%3==0)

%d只能被3整除\n"

elseif(x%5==0)

%d只能被5整除\n"

elseif(x%7==0)

%d只能被7整除\n"

else

%d不能被3,5,7中任意一个数字整除\n"

intx,a,b,c;

a=x%3;

b=x%5;

c=x%7;

switch(a)

case0:

%d能被3整除\n"

default:

printf("

%d不能被3整除\n"

switch(b)

%d能被5整除\n"

%d不能被5整除\n"

switch(c)

%d能被7整除\n"

%d不能被7整除\n"

}

一.程序设计题:

1.请输入两个整数,求两个数之间所有整数之和,例如:

输入1,3,输出结果为:

6。

请编写程序实现。

2.求fibonacci数列40个数。

这个数列有如下特点:

第1,2两个数为1,1。

从第3个数开始,该数是其前面两个数之和。

(要求不能使用数组完成!

3.给一个不多于5位的正整数,要求:

一、求它是几位数,二、逆序打印出各位数字。

4.输出所有“水仙花”数,所谓“水仙花”数是指一个3位数,其各位数字立方和等于该数本身。

例如:

153就是一个水仙花数。

153=13+53+33

5.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

6.求s=1+12+123+1234+……+123…n的值,其中n是由键盘输入。

输入输入n=5s=1+12+123+1234+12345(此时共有5个数相加)。

7.请编写程序实现功能:

从3个红球,5个白球,6个黑球中任意取出8个球,其中必须要有白球,请输出所有的方案。

8.请编写程序实现功能:

统计0-9可以组成多少个没有重复的3位偶数。

9.输入两个正整数m和n,求其最大公约数和最小公倍数。

10.请编写程序实现功能:

求1000之内的所有完全数。

(说明:

一个数如果恰好等于它的因子之和(除自身外),则该数为完全数。

例如6=1+2+3,6为完全数)

11.请编写程序实现功能:

从键盘上输入6名学生的5门成绩,分别统计出每个学生的平均成绩和总成绩,并输出。

12.有一分数序列:

2/1,3/2,5/3,8/5,13/8,21/13,……….求出这个序列的前20项之和。

13.两个羽毛球队进行比赛,各出3人。

甲队为A、B、C,3人,乙队为X、Y、Z,3人。

已抽签决定比赛名单。

有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程序找出3对赛手的名单

14.编写程序,打印出如下图案(菱形)

*

***

*****

*******

15.求1+2!

+...+20!

的和

1.输入两个正整数m和n,求其最大公约数和最小公倍数。

任意2个数字x与y,最大公约数的最大可能取值是2个中的较小者,最大公约数的最小可能取值是1,如果从范围min—〉1去寻找公约数,所找到的第一个公约数就肯定是最大公约数,并且停止寻找。

寻找条件是该范围内的数字必须满足和x,y之间是整除关系。

intx,y,i,min;

任意输入一个正整数给y:

y);

0||y<

0)

输入有误,请重新输入\n"

重新输入一个正整数给x:

重新输入一个正整数给y:

if(x>

y)

min=y;

min=x;

for(i=min;

i>

=1;

i--)

if(x%i==0&

y%i==0)

%d是最大公约数\n"

i);

break;

%d是最小公倍数\n"

x*y/i);

2.有一本教材页码符号一共有6897个字符,计算该书一共有多少页?

比如:

99就是2个数字字符。

intn,s;

n=0;

/*页数*/

s=0;

/*数符总数*/

while

(1)

n++;

if(n>

n<

s=s+1;

=99)

s=s+2;

=100&

=999)

s=s+3;

=1000&

=9999)

s=s+4;

if(s==6897)

该书一共有%d页\n"

n);

3.任意输入一个四位数字。

然后做一下操作:

(1)将该四位数字进行分解。

(2)求得由该四位数字重新组成的一个新的四位数字的最大值和最小值

(3)然后做这个2个值的差,得到一个新的数字。

(4)回到步骤

(1),重复上述操作。

将会到一个特别的数字。

intx,i,j,q,b,s,g,t,min,max;

任意输入一个四位数:

1000||x>

9999)

你所输入的不是一个四位数,请重新输入:

for(j=1;

j<

=20;

j++)/*控制以下重复作20次*/

q=x/1000;

/*千位*/

b=x/100%10;

/*百位*/

s=x/10%10;

/*十位*/

g=x%10;

/*个位*/

=3;

i++)/*作q,b,s,g四个数字的从小到大的排序*/

if(q>

b)

{t=q;

q=b;

b=t;

if(b>

s)

{t=b;

b=s;

s=t;

if(s>

g)

{t=s;

s=g;

g=t;

min=q*1000+b*100+s*10+g;

max=g*1000+s*100+b*10+q;

x=max-min;

输出2个数字的差:

%d\n"

3.输入两个正整数m和n,求其最大公约数和最小公倍数。

4.有一本教材页码符号一共有6897个字符,计算该书一共有多少页?

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

当前位置:首页 > 外语学习 > 韩语学习

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

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