7-23 实验3_6_打印图形一
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
用’-‘(减号)、’+’(加号)、’|’(竖线)、’*’星号和空格打印方格。
输入格式:
只有一行,为用空格分隔的两个整数l,c(0<l,c<10)。其中l和c分别代表格子的行数和列数。请看输入样例。
输出格式:
每组测试用例输出一组(请看输出样例)。
输入样例:
2 3
输出样例:
|*****|*****|*****|
| | | | | | |
|--+--|--+--|--+--|
| | | | | | |
|*****|*****|*****|
| | | | | | |
|--+--|--+--|--+--|
| | | | | | |
|*****|*****|*****|
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
void one(int n,int j)
{
printf("|*****");
if(j==n-1)
printf("|\n");
}
void two(int n,int j)
{
printf("| | ");
if(j==n-1)
printf("|\n");
}
void three(int n,int j)
{
printf("|--+--");
if(j==n-1)
printf("|\n");
}
int main()
{
void one(int n,int j);
void two(int n,int j);
void three(int n,int j);
int m,n;
scanf("%d %d",&m,&n);
int i,j,k;
for(i=0;i<=m;i++)
{
for(k=0;k<4;k++)
{
for(j=0;j<n;j++)
{
if(k==0)
{
one(n,j);
}
else if((k==1||k==3)&&i<m)
{
two(n,j);
}
else if(k==2&&i<m)
{
three(n,j);
}
}
}
}
return 0;
}
7-24 实验3_7_数字拆分
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知一个正整数n,n的范围是1—999999999。你的任务是把这个整数分解为单个数字,然后从左至右依次打印出每一个数字。例如将整数“12345”分解,得到“1 2 3 4 5”。
输入格式:
只有一个正整数。测试用例保证合法。
输出格式:
只有一行,为输入整数的拆分结果,相邻两个数字之间有一个空格,最后一个数字后是换行符。例如12345的拆分结果为:1 2 3 4 5。
输入样例:
12345
输出样例:
1 2 3 4 5
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
long x;
long sum=0;
scanf("%ld",&x);
if(x%10==0)
{
int t=0;
while(x%10==0)
{
x=x/10;
t++;
}
while(x>0)
{
sum=sum*10+x%10;
x=x/10;
}
while(sum>0)
{
printf("%ld ",sum%10);
sum=sum/10;
}
while(t>1)
{
printf("0 ");
t--;
}
printf("0\n");
}
else
{
while(x>0)
{
sum=sum*10+x%10;
x=x/10;
}
while(sum>9)
{
printf("%ld ",sum%10);
sum=sum/10;
}
printf("%ld\n",sum);
}
return 0;
}
7-25 实验3_8_位数对调
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知一个正整数n(可以用int存储),你的任务是将n的最低位与最高位上的数字对调,次低位与次高位上的数字对调,以此类推,直到中间位。最后得到一个新整数并将新的数字输出。需要注意的是:如果当最低位数字与最高位数字对调后,数字的长度变短(也就是最低位为0),则不能对这个数进行位数对调处理。
输入格式:
只有一个正整数,即n。
输出格式:
当n可以进行数字对调时,例如n=123,你应输出“321”;当n不可以进数字对调时,例如n=980,你应输出“The number cannot be changed.”。
输入样例:
1365
输出样例:
5631
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int x;
int sum=0;
scanf("%d",&x);
if(x%10==0)
{
printf("The number cannot be changed.");
}
else
{
while(x>0)
{
sum=sum*10+x%10;
x=x/10;
}
printf("%d",sum);
}
return 0;
}
7-26 实验4_3_回文数
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
回文是指正读和反读都一样的数或文本段。例如,12321、55555、45554、11611都是回文数。输入一个长度不超过10位的整数n,判断它是否是回文数。
输入格式:
只有一个整数n,即待判断的数字。测试用例保证n可以用int存储。
输出格式:
当n为回文数时输出“Yes”,否则输出“No”。
输入样例:
12321
输出样例:
Yes
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
int i=x,y=0;
while(i>0)
{
y=y*10+i%10;
i=i/10;
}
if(x==y)
printf("Yes");
else
printf("No");
return 0;
}
7-27 实验3_10_同构数
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
所谓“同构数”是指这样的数,它出现在它的平方数的右边,例如5的平方数是25, 25的平方数是625,所以5和25都是同构数。你的任务是判断整数x是否是同构数。若是同构数,输出“Yes”,否则输出“No”。x的取值范围是(1<=x<=10000),如果输入的x不在允许范围内,则输出错误提示信息“x out of range”。
输入格式:
只有一个整数。测试用例保证所有输入可以用int存储。
输出格式:
只有一行,为判断结果。
输入样例:
20000
输出样例:
20000 out of range
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int x,z;
long y;
int i=1;
scanf("%d",&x);
if(1<=x&&x<=10000)
{
y=x*x;
while(x/i!=0)
{i=i*10;
}
z=y%i;
if(x==z)
printf("Yes");
else
printf("No");
}
else
{
printf("%d out of range",x);
}
return 0;
}
7-30 实验3_13_最大公约数和最小公倍数
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知两个正整数m和n,求其最大公约数和最小公倍数。
输入格式:
两个用空格分隔的正整数m和n。
输出格式:
只有一行,为两个用空格分隔的正整数,依次代表m和n的最大公约数和最小公倍数。测试用例保证m、n及其最小公倍数可以用int存储。
输入样例:
12 36
输出样例:
12 36
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int max(int x,int y)
{
int w;
if(y==1||y==0)
return y;
else
{
if((x%y)==0)
{
w=y;
}
else{
w=max(y,x%y);
}
}
return w;
}
int min(int x,int y,int m)
{
int n;
n=y/m;
n=n*x;
return n;
}
int main()
{
int max(int x,int y);
int min(int x,int y,int m);
int x,y,m,n;
int t;
scanf("%d %d",&x,&y);
if(x<y)
{
t=x;
x=y;
y=t;
}
m=max(x,y);
n=min(x,y,m);
printf("%d %d",m,n);
return 0;
}
7-32 实验4_2_圆的切分
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
在一个平面上有一个圆和n条直线,这些直线中每一条在圆内同其他直线相交,假设没有3条直线相交于一点,试问这些直线将圆分成多少区域。
输入格式:
只有一个整数n(0<=n<100)。
输出格式:
只有一个整数,为圆被n条直线分成的区域的块数。
输入样例:
1
输出样例:
2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int x=1,i=0;
for(i=0;i<=n;i++)
{
x=x+i;
}
printf("%d",x);
return 0;
}
7-34 实验4_4_进制转换一
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知一个只包含0和1的二进制数,二进制数的长度不大于10。你的任务是将其转换为十进制数并打印出来。
提示:用除法和求余运算每次从右到左获取二进制整数的各位数字。在十进制数值系统中,最右边的数字是个位,个位的左边依次是十位、百位、千位等等。与之类似,在二进制数值系统中,最右边的数字是1位,左边的数字依次为2位、4位、8位等等。十进制数234可分解为4*100+3*101+2*102,二进制数1101可分解为1*20+0*21+1*22+1*23,它等价于十进制数1+0+4+8,即13。
输入格式:
为一个只包含0和1的整数n(长度不超过10位),代表二进制数。
输出格式:
为转换得到的十进制数。
输入样例:
11111
输出样例:
在这里给出相应的输出。例如:
31
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int change(int x)
{
int sum=0;
if(x==1||x==0)
return x;
else
{
sum=x%2+change(x/10)*2;
}
return sum;
}
int main()
{
int x,y;
int change(int x);
scanf("%d",&x);
y=change(x);
printf("%d",y);
return 0;
}
7-9 高空坠球
分数 20
全屏浏览
切换布局
作者 C课程组
单位 浙江大学
皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?
输入格式:
输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内。
输出格式:
在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一位小数。题目保证计算结果不超过双精度范围。
注意:n为 0 时表示球未开始下落。
输入样例:
33 5
输出样例:
94.9 1.0
鸣谢中山职业技术学院邱维阳老师完善题面。
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <math.h>
int main()
{
int h, n;
double sum = 0, height = 0;
int i;
scanf("%d %d", &h, &n);
for (i = 1; i <= n; i++)
{
if (i == 1)
sum += h;
else
sum += 2 * height;
height = h / pow(2, i);
}
printf("%.1f %.1f\n", sum, height);
return 0;
}