学生课外上机练习题目 下载本文

学生课外上机练习题目

1. 在计算机屏幕上输出自己的学号和姓名。

# include int main() {

printf(\,201312345679!\ return 0; }

2.输入两个整数,求它们的乘积和商。

# include int main (void) {

int x,y,p,s; scanf(\ p=x*y; s = x/y;

printf(\ return 0; }

3.将大写字母转换为小写字母

#include int main() {

char c1='a',c2='b'; c1=c1-('a'-'A'); c2=c2-('a'-'A');

printf(\ return 0; }

4.已知int a=7;float x=2.5,y=4.7;编程计算表达式x?a%3*(int)(x?y)%2/4的值

#include int main() {

int a=7;

float x=2.5,y=4.7;

printf(\)%2/4);

return 0; }

5.计算s=1+2+3+……+n

#include int main() {

int i,n,s=0; scanf(\ i=1;

while(i<=n) {

s=s+i; i++; }

printf(\ return 0; }

6.计算s=n!

#include int main() {

int i,n,s=1; scanf(\ i=1;

while(i<=n) {

s=s*i; i++; }

printf(\ return 0; }

7.运行下面程序,指出输出结果

#include int main() {

int x=1234;

float f=123.456; double m=123.456; char ch='a';

char a[]=\ int y=3,z=4;

printf(\

printf(\ printf(\

printf(\ printf(\ printf(\

printf(\ return 0; }

8.编写一个程序,从键盘上输入两个整数,输出其中最大者。

#include int main() {

int x,y,max;

scanf(\ max=x>y?x:y;

printf(\ return 0; }

9.从键盘输入一个整数,如果该整数为奇数则将其乘3加1后输出,如果为偶数则直接输出。

#include int main() {

int n,b;

scanf(\ b=n;

if(n%2==1) b=n*3+1;

printf(\处理的结果是:%d\\n\ return 0; }

10.从键盘输入三个整数a、b、c,对这三个数从小到大排序。

#include int main() {

int a,b,c,t;

scanf(\ if(a>b) {

t=a; a=b; b=t; }

if(a>c) {

t=a; a=c; c=t; }

if(b>c) {

t=b; b=c; c=t; }

printf(\ return 0; }

11.从键盘上输入字符,判断输入字符的类型。

#include int main() {

char c;

printf(\输入一个字符:\ c=getchar();

if(c<32) printf(\是控制字符\\n\

else if(c>='0'&&c<='9') printf(\是数字字符\\n\

else if(c>='A'&&c<='Z'||c>='a'&&c<='z') printf(\是字母\\n\

else printf(\是其他字符\\n\ return 0; } 12.输入学生的成绩,输出学生的等级:90~100(优)、80~89(良)、70~79(中)、60~69(及格)、60以下(不及格)。

#include int main() {

int cj;

scanf(\ if(cj<0||cj>100) {

printf(\数据输入错误\\n\ return 1; }

if(cj>=90&&cj<=100) printf(\优\\n\

else if (cj>=80&&cj<90) printf(\良\\n\

else if(cj>=70&&cj<80) printf(\中\\n\

else if(cj>=60&&cj<70) printf(\及格\\n\ else

printf(\不及格\\n\ return 0; }

13.找出2000-2050年份的闰年 #include #include int main() {

int year=2000; while(year<=2050) {

if(year%4==0&&year0!=0||year@0==0) printf(\ year++; }

return 0; }

14.从键盘输入一元二次方程ax2?bx?c?0的系数a、b、c,求它的根

#include #include int main() {

double a,b,c,delta,x1,x2,p,q; scanf(\

if(a==0)

printf(\不是一元二次方程!\\n\else {

delta=b*b-4*a*c; if(delta==0) {

printf(\方程有两个相等的实数根!\\n\ x1=-b/(2*a); x2=x1;

printf(\ }

else if(delta>0) {

printf(\方程有两个不相等的实数根!\\n\ x1=-b/(2*a)+sqrt(delta)/(2*a); x2=-b/(2*a)-sqrt(delta)/(2*a);

printf(\ } else {

printf(\方程有两个不相等的复数根!\\n\ p=-b/(2*a);

q=sqrt(-delta)/(2*a);

printf(\ printf(\ } }

return 0; }

15.已知银行整存整取存款不同期限的年利率分别为: 2.25% 期限1年 2.79% 期限2年 年息= 3.33% 期限3年 3.60% 期限5年 4.14% 期限8年

要求输入本金和期限,求到时候能从银行得到的利息与本金的合计。 #include int main() {

int year;

double money,rate,total; printf(\输入存款和存期:\

scanf(\ switch(year) {

case 1:rate=0.0225;break; case 2:rate=0.0279;break;

case 3:rate=0.0333;break; case 5:rate=0.0360;break; case 8:rate=0.0414;break;

default:rate=0.0;printf(\输入的存期错误!\\n\ }

total=money+money*rate*year;

printf(\从银行获得的总金额为:%.2lf\\n\ return 0; }

16.从键盘上输入年份和月份,求该月有多少天?

#include #include int main() {

int year,month,day,leapyear; scanf(\ if(year<0||month<1||month>12) {

printf(\输入的数据错误!\\n\ exit(0); }

leapyear=year%4==0&&year0!=0||year@0==0; /*是否为闰年*/ switch(month) {

case 1: case 3: case 5: case 7: case 8: case 10:

case 12:day=31;break; case 4: case 6: case 9:

case 11:day=30;break;

case 2:day=28+leapyear;break; }

printf(\年%d月的天数为:%d\\n\ return 0; } 17.输入一个正整数,将它反位组成一个新的数输出(如输入12345,组成54321输出)。

#include #include int main() {

int n,m,t=0; scanf(\ if(n<0)

{

printf(\数据输入错误!\\n\ exit(0); }

while(n!=0) {

m=n; t=t*10+m; n=n/10; }

printf(\反序数为:%d\\n\ return 0; }

18.从键盘上输入两个整数,求它们的最大公约数。

#include int main() {

int a,b,r;

scanf(\ do {

r=a%b; a=b; b=r;

}while(r!=0);

printf(\最大公约数为:%d\\n\ return 0; } 19.计算1!+2!++n!。

#include #include int main() {

int i,sum=0,p=1,n; scanf(\ if(n<0) {

printf(\负数没有阶乘!\\n\ exit(0); }

for(i=1;i<=n;i++) {

p=p*i;

sum=sum+p; }

printf(\阶乘的和为:%d\\n\ return 0; }

20.从键盘输入一个正整数,判断该数是否为素数。

#include #include #include int main() {

int i,m,n;

scanf(\ if(n<0) {

printf(\输入数据错误!\\n\ exit(0); }

m=sqrt(n);

for(i=2;i<=m;i++)

if(n%i==0)break; /*break跳出循环*/ if(i>m)

printf(\是素数\\n\ else

printf(\不是素数\\n\ return 0; }

21.求所有水仙花数。

#include int main() {

int i,m,n,k;

for(i=100;i<1000;i++) {

m=i/100; /*求百位数*/ k=i; /*求个位数*/ n=(i-100*m)/10; /*求十位数*/ if(i==m*m*m+n*n*n+k*k*k) printf(\ }

return 0; }

22.验证哥德巴赫猜想:任一充分大的偶数,可以用两个素数之和表示。例如: 4=2+26=3+3

98=19+79#include #include #include int main() {

int i,p,q,n,p_flag,q_flag; scanf(\

if((n%2==1)||n<4) {

printf(\数据输入出错\\n\ exit(0); } p=1; do {

p=p+1; q=n-p; p_flag=1;

for(i=2;i<=sqrt(p);i++) {

if(p%i==0) {

p_flag=0; break; } }

q_flag=1;

for(i=2;i<=sqrt(q);i++) {

if(q%i==0) {

q_flag=0; break; } }

}while(p_flag*q_flag==0);

printf(\ return 0; }

23.判断一个正整数是否为回文数。回文数是这样的数:一个正整数从左往右读和从右往左读都是一样的数(如121,123321)

#include int main() {

int n,m=0,k; do {

scanf(\ if(n<=0)

printf(\数据输入错误,请重新输入!\\n\ }while(n<=0); k=n;

while(k!=0) {

m=m*10+k; k=k/10;

}

}

if(n==m)

printf(\是回文数!\\n\else

printf(\不是回文数!\\n\return 0;

2358,-,,-,123524.求分数数列

,前20项之和。

#include

int main() {

int a=2,b=1,s=1,i; double sum=0.0; for(i=1;i<=20;i++) {

sum=sum+s*a/(double)b; a=a+b; b=a-b; s=-s; }

printf(\数列的和为:%.4lf\\n\ return 0; }

25.有一函数:

ìx(x<1)???y=?í2x-11(1≤x<10)

?????3x11(x≥10)编写一程序,输入x,输出y值。

#include int main() {

double x,y;

scanf(\ if(x<1) y=x;

else if(x>=1&&x<10) y=2*x-11; else

y=3*x-11;

printf(\ return 0; }

26.从键盘上输入3个整数,求最小的数。 #include

int main() {

double x,y,z,min;

scanf(\ if(x>y) min=y; else

min=x; if(min>z) min=z;

printf(\ return 0; }

27.输入某人的出生日期,计算并显示其出生的当天是星期几。(注:要计算出生日是星期几,首先要计算出出生前一年的12月31日是星期几,其计算公式如下

骣犏(year-1)犏(year-1)犏(year-1)÷?(year-1)*365+犏-犏+犏%7,如果是闰年出生的且出生÷?÷?÷犏犏犏4100400桫臌臌臌月份大于2月,则总天数要加1。) #include int main() {

int y,m,d,flag,s=0,w,i; scanf(\

flag=(y%4==0&&y0!=0||y@0==0);

w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7; for(i=1;i<=m;i++) {

switch(i) {

case 1:s=d;break; case 2:s=31+d;break; case 3:s=59+d;break; case 4:s=90+d;break; case 5:s=120+d;break; case 6:s=151+d;break; case 7:s=181+d;break; case 8:s=212+d;break; case 9:s=243+d;break; case 10:s=273+d;break; case 11:s=304+d;break; case 12:s=334+d;break; } }

if(flag==1&&m>2)

s=s+1; s=(w+s)%7; if(s==0)

printf(\星期日\\n\else

printf(\星期%d\\n\ return 0; }

28.企业发放的奖金根据利润提成:利润低于或等于10万元时,奖金可提10%;利润高于10万元低于20万元时,低于10万元的部分按10%提成,高于10万元的部分可提成7.5%;20万到40万之间时,高于20万元的部分可提成5%;40万到60万之间时,高于40万元的部分可提成3%;60万到100万之间时,高于60万元的部分可提成1.5%;高于100万元时,超过100万元的部分按1%提成。从键盘输入当月利润,求应发放奖金总数。 #include int main() {

float p,r;

scanf(\ if(p<=10) r=p*0.1;

else if(p>10&&p<=20)

r=10*0.1+(p-10)*0.075; else if(p>20&&p<=40)

r=10*0.1+10*0.075+(p-20)*0.05; else if(p>40&&p<=60)

r=10*0.1+10*0.075+20*0.05+(p-40)*0.03; else if(p>60&&p<=100)

r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015; else if(p>100)

r=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01; printf(\ return 0; }

29.输入字符,并以回车结束。将其中的小写字母转换成大写字母,而其他字符不变。 #include int main() {

char c;

while((c=getchar())!='\\n') {

if(c>='a'&&c<='z') c=c-32; putchar(c); }

return 0; }

30.输入一个正整数,求它的所有素数因子。 #include int main() {

int m,k=2; }

printf(\输入一个正整数:\\n\scanf(\while(k

printf(\ m=m/k; } else k++;

printf(\return 0;

31.从键盘输入正整数a,求s=a+aa+aaa+#include int main() {

int a,n,s=0,p=0,i; scanf(\ for(i=1;i<=n;i++) {

p=p*10+a; s=s+p; }

printf(\ return 0; }

+aa。

32.输出用0~9这10个数字能组成的三位数。 #include int main() {

int i,j,k;

for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++)

printf(\ return 0;

}

33.用二分法求方程2x3-4x2+3x-6=0在区间(–10,10)之间的根。 #include #include int main() {

float a=-10,b=10,x,f1,f2,f; f1=(((2*a-4)*a+3)*a)-6; f2=(((2*b-4)*b+3)*b)-6; do {

x=(a+b)/2;

f=(((2*x-4)*x+3)*x)-6; if(f*f1<0) {

b=x; f2=f; } else {

a=x; f1=f; }

}while(fabs(f)>=1e-6); printf(\ return 0; }

1x313x5135x734.编写一个程序,计算x-+-+242462468对值小于eps)。

#include

的近似值(直到最后一项的绝

#include int main() {

int n=2;

double eps,t,s=0,x;

scanf(\ t=x; s=t;

while(fabs(t)>=eps) {

t=-t*(2*n-3)*x*x/(2*n-2); s=s+t/(2*n); n++;

}

printf(\ return 0; }

35.取出一个无符号的十进制整数中所有奇数数字,按原来的顺序组成一个新的数。 #include int main() {

unsigned long s,t=0,p=1; scanf(\ while(s!=0) {

if((s)%2!=0) {

t=t+(s)*p; p=p*10; }

s=s/10; }

printf(\ return 0; }

36.A与B玩剪刀、石头、布游戏,假定剪刀记为0、石头记为1、布记为2,已知A、B本轮各自的出法,编程判断A、B谁获胜 #include #include int main() {

unsigned int a,b;

scanf(\ if(a>=3||b>=3) exit(0); else

switch(a) {

case 0:switch(b) {

case 1:printf(\ case 2:printf(\ }

break;

case 1:switch(b) {

case 0:printf(\ case 2:printf(\

}

}

break;

case 2:switch(b) {

case 0:printf(\ case 1:printf(\ } }

return 0;

37.机器人移动:在一个平面直角坐标系上,一个机器人处于某格点(X0,Y0)处,格点的横纵坐标均为整数,有一个遥控机器人实现9种可能的运动方式,他们依次是: (1)向左走一个单位; (2)向右走一个单位; (3)向上走一个单位; (4)向下走一个单位;

(5)走到格点(X0,Y0)关于x轴的对称点; (6)走到格点(X0,Y0)关于y轴的对称点; (7)走到格点(X0,Y0)关于原点的对称点;

(8)以格点(X0,Y0)与原点的连接线为轴,逆时针旋转90度; (9)以格点(X0,Y0)与原点的连接线为轴,顺时针旋转90度; 输入初始坐标及指令(1-9):5 3 9 输出:新的位置3 -5 #include #include int main() {

int x0,y0,x,y,i;

scanf(“%d%d%d”,&x0,&y0,&i); if(i<1||i>9) {

printf(\ exit (0); }

switch(i) {

case 1:x=x0-1;y=y0;break; case 2:x=x0+1;y=y0;break; case 3:x=x0;y=y0+1;break; case 4:x=x0;y=y0-1;break; case 5:x=x0;y=-y0;break; case 6:x=-x0;y=y0;break; case 7:x=-x0;y=-y0;break; case 8:x=-y0;y=x0;break;

}

case 9:x=y0;y=x0;break; }

printf(\n”,x,y); return 0;

38. 笑笑作为数学课代表,每次考试后,数学老师都会让他统计成绩,老师并不关心具体某个人的成绩,而只关心参加考试的人数、平均成绩、最低分和最高分。 #include int main() {

int n=0;;

double score,tot=0,min=0,max=0; scanf(\ while(score>=0) {

n++;

tot=tot+score;

if(min>score) min=score; if(max

if(n==0)

printf(\ else { }

printf(\学生人数=%d\\n\

printf(\学生的平均成绩=%.2lf\\n\ printf(\最高分=%lf\\n\ printf(\最低分=%lf\\n\ }

return 0;

39. 爱因斯坦走楼梯:有一条长阶梯,若每步跨2阶,则最后剩1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7阶,则最后正好一阶不剩;问该楼梯有多少阶? #include int main() {

int n=7;

while(!((n%2==1)&&(n%3==2)&&(n%5==4)&&(n%6==5))) n=n+7;

printf(“%d\\n”,n); return 0;

}

40. 如果一个正整数是素数,它的反位数也是素数,这称这样的数为绝对素数 ,求是正绝对素数的所有两位数。 #include #include int main() {

int i,j,k,m,flag1=0,flag2=0; for(i=10;i<100;i++) {

m=sqrt(i);

for(j=2;j<=m;j++) if(i%j==0) {

flag1=0; break; }

if(j>m) flag1=1;

if(flag1==1)

{

k=(i)*10+i/10; m=sqrt(k);

for(j=2;j<=m;j++) if(k%j==0) {

flag2=0; break; }

if(j>m) flag2=1; }

if(flag1*flag2==1) printf(“%d “,i);

}

return 0; }

41. 输出10000以内的所有完数(这个数正好等于它的所有真因子的和) #include int main() {

int i,j,s;

for(i=1;i<=10000;i++) {

s=0;

}

for(j=1;j

printf(“%d “,i); }

return 0;

42. 求4位数以内的相亲数(两个数i和s为相亲数是指i的真因子和为s,而s的真因子和为i)

#include int main() {

int i,s1,s2,j;

for(i=1;i<10000;i++) {

s1=0;

for(j=1;j

for(j=1;j

printf(“%d “,i); }

return 0; }

43. 谁是偷盗者问题:甲、乙、丙、丁4人为偷盗嫌疑犯,只有一个是真正的偷盗者,在审讯过程,四人都有可能说真话或假话。 甲:乙没有偷、丁偷的 乙:我没有偷,丙偷的 丙:甲没有偷,乙偷的 丁:我没有偷

请编写一个程序,推断谁是偷盗者 #include int main() {

int a,b,c,d;

for(a=0;a<=1;a++) for(b=0;b<=1;b++) for(c=0;c<=1;c++) for(d=0;d<=1;d++)

if(a+b+c+d==1&&((!b&&d)||(b&&!d))==1&&((!b&&c)||(b&&!c))==1&&((!a&&b)||(a&&!b))==1&&(d||!d)==1) {

if (a==1)

printf(\甲是小偷!\\n\else if(b==1)

printf(\乙是小偷!\\n\else if(c==1)

printf(\丙是小偷!\\n\else if(d==1)

printf(\丁是小偷!\\n\ }

return 0; }

44. 定义这样一个整数函数f(n),当n是偶数时,f(n)=n/2;当n是奇数时,f(n)=(3n+1)/2。这个猜想是说:对于任意的整数n,计算f(n),f(f(n)),f(f(f(n))),…….,若干步之后,总会得到1。输出对于给定的n,求出数字序列中第一次出现1的位置。 #include int main() {

int n,f,k=0; do {

scanf(“%d”,&n); }while(n<=0); do {

if(n%2==0) f=n/2; else

f=(3*n+1)/2; n=f; k++;

printf(“%d,”,f); }while(f!=1);

printf(“\\n%d\\n”,k); return 0; }

45.在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。

46.有大、中、小三个酒桶,分别能装A斤、B斤和C斤酒,其中A、B、C均为整数,A=B+C,B>C>0,且A为偶数。现在大桶装满了酒,另外两个桶都空着。写程序求解用这三个桶将酒平分成为两份的操作序列。当无解时输出字符串“No”。 47.中国有句俗语叫“三天打鱼两天晒网”。某人从进入大学报到开始“三天打鱼两天晒网”,问这个人在四年的大学生活中的某一天中是“打鱼”还是“晒网”。

48.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。 输入:一个四位数字 输出:Y或N

48.该存多少钱: 假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的五年中的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少? 49.捕鱼和分鱼: A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。C、D、E依次醒来,也按同样的方法拿走鱼。问他们合伙至少捕了多少条鱼? 50.奇异的三位数: 一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码正好相反,求这个三位数(十进制)。 51.自守数: 自守数是指一个数的平方的尾数等于该数自身的自然数。例如: 252=625 762=5776 93762=87909376 请求出200000以内的自守数 52.年龄几何: 张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。 53.马克思手稿中的数学题:马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人、女人和小孩各有几人? 54.分数比较: 比较两个分数的大小。 55.计算分数的精确值:精确计算M/N(0

输入:6 9

输出:最大公约数:3 最小公倍数:18

64.输入三个正整数,求它们的最大公约数和最小公倍数。

输入:6 9 32 输出:最大公约数:1

最小公倍数:1728

65.求2~n之间的所有素数的个数,输入n=100,则输出:21

66.Hanoi塔问题。有A、B、C三根柱子,A柱上有n个大小不等的空心盘子,且大的在下,小的在上。要求把这些盘子从A柱上移到C柱上(借助于B),盘子移动的条件是:

(1)每次只能移动一个盘子。

(2)盘子可以放在A、B、C中的任意一根柱子上。

(3)移动过程中,每根柱子上的盘子都要保持大的在下面,小的在上面。 输入盘子数,问经过多少次,能完成上述移动 输入: 3 输出:7

s=1-111+-+223334444+1nn之值

67.输入n,求求数列

输入:6 输出:0.957340

68.输入正整数n,将它的所有约数保存起来。

输入:8

输出:1 2 4 8

69.求两个一维数组的和(对应元素相加)

输入:1 2 3 4 5 6 7 8 2 3 4 5 6 7 8 9 输出:3 5 7 9 11 13 15 17

70.求两个n行m列矩阵的和(对应元素相加)

输入:1 2 3 4 1 3 5 7 5 6 7 8 9 11 13 15 9 10 11 12 17 19 21 23 输出:2 5 8 11 14 17 20 23 26 29 32 35

71.将一个一维数组中的元素首尾依次逆转存放。 输入:8 6 7 1 0 9 3 5 4 2

输出:2 4 5 3 9 0 1 7 6 8 72.将一维数组中的元素循环左移一个位置 输入:1 2 3 4 5 6 7 8 9 10 输出:2 3 4 5 6 7 8 9 10 1 72.将一维数组中的元素循环右移一个位置 输入:1 2 3 4 5 6 7 8 9 10 输出:10 1 2 3 4 5 6 7 8 9 73.将一维数组中的元素循环左移k个位置 输入:3

1 2 3 4 5 6 7 8 9 10

输出:4 5 6 7 8 9 10 1 2 3

74.给定一个数组,使用冒泡排序完成对元素从大到小的排序操作 输入:4 5 6 7 8 9 10 1 2 3 输出:10 9 8 7 6 5 4 3 2 1

75.给定一个数组,使用选择排序完成对元素从小到大的排序操作 输入:4 5 6 7 8 9 10 1 2 3 输出:1 2 3 4 5 6 7 8 9 10

76.将两个一维数组从小到大合并到一个一维数组中,保持原来的序不变。 输入:9 8 7 3 2 7 5 4 1

输出:9 8 7 7 5 4 3 2 1

77.某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。输出马路上剩余的树的数目。 输入: 500 3 150 300

100 200 470 471 输出: 298

*78.数字反转:给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。数据范围:-1,000,000,0000 ≤ N≤ 1,000,000,0000 输入:输入共 1 行,一个整数N。

输出:输出共 1 行,一个整数,表示反转后的新数。 样例1: 输入:123 输出:321 样例2: 输入:-380 输出:-83

79.矩阵转置:将一个n*m的矩阵进行行列互换。 输入:

第1行两个整数:n,m分别表示矩阵的行数和列数,然后是n行,m列的矩阵 输出:m行,n列的矩阵 样例: 输入: 3 2 1 2 3 4 5 6 输出: 1 3 5 2 4 6

80.级数求和:已知:Sn= 1+1/2+1/3+?+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn

>K。

[输入] 键盘输入 k [输出] 屏幕输出 n

[输入输出样例] 输人:1 输出:2

81.不高兴的津津:津津上大学后。认为应该更加用功学习,所以津津除了上学之外,还要参加各种社团。另外每周还会去学习编程、数学建模和一定的课外实践。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。 【输入文件】

输入数据包括七行,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和其它活动的时间。 【输出文件】

输出包括一行,这一行只包含一个数字。如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。 【样例输入】 5 3 6 2 7 2 5 3 5 4 0 4 0 6

【样例输出】 3

*82.火星人::人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。 火星人用一种非常简单的方式来表示数字——掰手指。火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为1,2,3??。火星人的任意两根手指都能随意交换位置,他们就是通过这方法计数的。

一个火星人用一个人类的手演示了如何用手指计数。如果把五根手指——拇指、食指、中指、无名指和小指分别编号为1,2,3,4和5,当它们按正常顺序排列时,形成了5位数12345,当你交换无名指和小指的位置时,会形成5位数12354,当你把五个手指的顺序完全颠倒时,会形成54321,在所有能够形成的120个5位数中,12345最小,它表示1;12354第二小,它表示2;54321最大,它表示120。下表展示了只有3根手指时能够形成的6个3位数和它们代表的数字: 三进制数 代表的数字 123 1 132 2 213 3 231 4 312 5

321 6

现在你有幸成为了第一个和火星人交流的地球人。一个火星人会让你看他的手指,科学家会告诉你要加上去的很小的数。你的任务是,把火星人用手指表示的数与科学家告诉你的数相加,并根据相加的结果改变火星人手指的排列顺序。输入数据保证这个结果不会超出火星人手指能表示的范围。 【输入】

输入包括三行,第一行有一个正整数N,表示火星人手指的数目(1 <= N <= 100)。第二行是一个正整数M,表示要加上去的小整数(1 <= M <= 10)。下一行是1到N这N个整数的一个排列,用空格隔开,表示火星人手指的排列顺序。 【输出】

输出只有一行,这一行含有N个整数,表示改变后的火星人手指的排列顺序。每两个相邻的数中间用一个空格分开,不能有多余的空格。 【样例输入】 5 3

1 2 3 4 5

【样例输出】 1 2 4 5 3

83.陶陶摘苹果:陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。 【输入】

输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。 【输出】

输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。 【样例输入】

100 200 150 140 129 134 167 198 200 111 110

【样例输出】 5

*83.采药:辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你是辰辰,你能完成这个任务吗? 【输入】

输入的第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 10),用一个空格隔开,T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包

括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。 【输出】

输出包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。 【样例输入】

70 3 71 100 69 1 1 2 【样例输出】 3

84.明明的随机数:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 【输入】

输入有2行,第1行为1个正整数,表示所生成的随机数的个数:N 第2行有N个用空格隔开的正整数,为所产生的随机数。 【输出】

输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。 【输入样例】 10

20 40 32 67 40 20 89 300 400 15 【输出样例】 8

15 20 32 40 67 89 300 400

85.ISBN号:每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2??以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+??+2×9=158,然后取158 mod 11的结果4作为识别码。

你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。 【输入】

输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码

的格式要求)。 【输出】

输出t共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。 输入样例1:0-670-82162-4 输出样例1:Right

输入样例2:0-670-82162-0 输出样例2:0-670-82162-4

*85.分数线划定:青奥会志愿者的选拔工作正在南京 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。

现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成 绩。 【输入】:

第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的志愿者人数。输入数据保证m*150%向下取整后小于等于n。 第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。数据保证选手的报名号各不相同。 【输出】

第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。

从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。

【输入输出样例】 输入: 6 3 1000 90 3239 88 2390 95 7231 84 1005 95 1001 88 输出: 88 5 1005 95 2390 95 1000 90 1001 88

3239 88 【样例说明】

m*150% = 3*150% = 4.5,向下取整后为4。保证4 个人进入面试的分数线为88,但因为88有重分,所以所有成绩大于等于88 的选手都可以进入面试,故最终有5 个人进入面试。

86.数字统计:请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。 比如给定范围[2, 22],数字 2 在数2中出现了 1次,在数 12中出现 1 次,在数 20 中出现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6次。 【输入】

输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。 【输出】

输出共 1 行,表示数字 2 出现的次数。 【输入样例1】 2 22 【输出样例1】 6

【输入样例2】 2 100 【输出样例1】 20