湘潭大学C语言整理xtuoj.docx
《湘潭大学C语言整理xtuoj.docx》由会员分享,可在线阅读,更多相关《湘潭大学C语言整理xtuoj.docx(211页珍藏版)》请在冰豆网上搜索。
![湘潭大学C语言整理xtuoj.docx](https://file1.bdocx.com/fileroot1/2023-1/1/24882a3b-a2b3-4a38-957e-6d74a93f2013/24882a3b-a2b3-4a38-957e-6d74a93f20131.gif)
湘潭大学C语言整理xtuoj
1054平方数
Description
描述
给你一个整数集合A(无重复元素),如果x,y都属于A,且y=x*x,那么组成一个数对,请找出这个集合中满足条件的数对的个数。
比如说集合A={2,3,4},则只有4=2*2,则答案为1。
输入
每个样例占2行,第一行为一个非负整数n,n<=1000,为集合中元素的个数,如果n为0则输入结束。
第二行为n个整数,为集合的元素,所有的元素为非负整数,且<=100,000,000,两个整数之间有一个空格隔开。
输出
每行输出一个样例的结果。
SampleInput
3
234
5
336596
0
SampleOutput
1
2
#include
#include
#include
intmain()
{
intn,i,i1,i2,x,y,s,str[1001];
while(scanf("%d",&n)==1&&n)
{
s=0;
for(i=0;i{
scanf("%d",&str[i]);
}
for(i1=0;i1{
x=str[i1]*str[i1];
for(i2=0;i2{
y=str[i2];
if(x==y)
{
s++;
}
}
}
printf("%d\n",s);
}
return0;
}
1155整数分类
Description
按照下面方法对整数x进行分类:
如果x是一个个位数,则x属于x类;否则将x的各位上的数码累加,得到一个新的x,依次迭代,可以得到x的所属类。
比如说24,2+4=6,则24的类别数是6;39,3+9=12,1+2=3,则39的类别数是3。
输入
每行输入一个非负整数n,n≤10500,n为0时结束。
输出
每行输出对应整数的分类数。
SampleInput
24
39
0
SampleOutput
6
3
#include
#include
intmain()
{
charstr[501];
inti,sum,a;
gets(str);
while(str[0]!
='0')
{
for(i=0,sum=0;i{
sum+=str[i]-'0';
}
while(sum>=10)
{
a=sum;
sum=0;
while(a)
{
sum+=a%10;
a=a/10;
}
}
printf("%d\n",sum);
gets(str);
}
return0;
}
1157XTU方阵
Description
eXtremeTalentUniversity(XTU)需要为他们的校名打印一些特别的图形,为了美观,他们选择了方阵。
现在他们需要你的帮助,帮他把这些方阵打印出来。
如果方阵一边只由一个XTU的校名组成,则方阵为:
XTU
XTU
XTU
输入
每个样例占一行,每行是一个整数n(0<=n<=10),表示一行需要使用多少个校名,n为0是输入结束标志。
输出
对于每个样例,先输出样例序号,比如说第一个样例输出“Case1:
”,换行再输出对应样例的方阵,每个方阵后有一个空行。
SampleInput
1
2
0
SampleOutput
Case1:
XTU
XTU
XTU
Case2:
XTUXTU
XTUXTU
XTUXTU
XTUXTU
XTUXTU
XTUXTU
#include
main()
{
chara[4]={'X','T','U'};
inti,n,k,t,h;
i=1;
while(scanf("%d",&n)==1&&n)
{
printf("Case%d:
\n",i++);
for(h=0;h{
for(t=0;t<3;t++)
{
for(k=0;k{
printf("%s",a);
}
printf("\n");
}
}
printf("\n");
}
}
1058青蛙王子
Description
一个王子被巫师诅咒,变成了一只青蛙。
500年后的一天,青蛙王子碰到了一个仙女,仙女告诉他,如果他能通过一个简单的测试,她就能帮他解除诅咒。
测试是这样子的,仙女要青蛙王子在一条直线上跳跃(青蛙王子最开始站在坐标为0的地方),但只能按照她给定的两种长度跳跃(假设这两种长度王子都能跳到),可以往前或者往后跳,如果能达到指定的地点,那么就通过测试;仙女给定的方式有多种,但有些是不可能满足达到指定地点的。
请你帮帮可怜的青蛙王子,寻找出那些可以完成测试的跳跃方式。
输入
每个样例占一行,为3个整数,都可以用一个unsignedint表示。
前两个表示可以跳跃的长度,最后一个表示需要达到的地点的坐标。
如果三个数为0,表示输入结束。
输出
每行输出一个样例的结果,如果可以到达指定的地点,输出Yes,否则输出No。
SampleInput
259
372
483
000
SampleOutput
Yes
Yes
No
#include
main()
{
unsignedinta,b,c;
inte,k;
for(k=1;;k++)
{
scanf("%u%u%u",&a,&b,&c);
if(a==0&&b==0&&c==0)
break;
if(a==0&&b==0)
printf("No\n");
else
{
if(a
{
e=a;a=b;b=e;
}
while(b!
=0)
{
if(a>b)
{
e=a;a=b;b=e;
}
b=b%a;
}
if(c%a==0)
printf("Yes\n");
else
printf("No\n");
}
}
}
1059有多少个1?
Description
计算机中存储的整数都是按补码的型式,一个32位有符号整数的补码的定义为:
如果x>=0,则x的补码等于x的二进制表示;如果x<0,那么x的补码为2^32+x的二进制表示。
请根据给定的整数,求出它的补码包含有多少位为1。
输入
每行一个样例,为一个整数(可以用int表示)。
输出
每行输出一个对应样例的结果。
SampleInput
1
0
-1
SampleOutput
1
0
32
#include
#definesum4294967296
intmain()
{
longlonginti,n;
intc=0;
while(scanf("%I64d",&i)!
=EOF)
{
if(i<0)
i=i+sum;
while(i!
=0)
{
n=i%2;
i=i/2;
if(n==1)
c++;
}
printf("%d\n",c);
c=0;
}
return0;
}
1062大小写转换
Description
接收一个字母,如果是小写,则将其转换成大写;如果是大写,就将其转换成小写。
SampleInput
b
SampleOutput
B
#include
main()
{
charch;
scanf("%c",&ch);
if(ch>=97&&ch<=122)
{
ch=ch-32;
printf("%c",ch);
}
else
{
ch=ch+32;
printf("%c",ch);
}
}
1063输入输出1
Description
请输入一个非负整数,输出其10进制和16进制(使用A-F)的值,中间用逗号隔开,不要输出换行.
SampleInput
15
SampleOutput
15,F
#include
main()
{
inta;
scanf("%d",&a);
printf("%d,%X",a,a);
}
1064输入输出2
Description
读取一个整数和一个字符并输出它们,中间用逗号隔开,不要输出回车
SampleInput
234H
SampleOutput
234,H
#include
main()
{
inta;charb;
scanf("%d%c",&a,&b);
printf("%d,%c",a,b);
}
1065io3
Description
1. 读取一个单精度浮点数并输出它(保留小数点后3位)
SampleInput
1.23
SampleOutput
1.230
#include
main()
{
floata;
scanf("%f",&a);
printf("%.3f",a);
}
1066io4
Description
1. 读取一个双精度浮点数,并输出它(保留小数点后8位),无须输出换行
SampleInput
1.098765432
SampleOutput
1.09876543
#include
main()
{
doublea;
scanf("%lf",&a);
printf("%.8lf",a);
}
1067io5
Description
输入一个字符,按格式输出这个字符及它的ASCII码
SampleInput
A
SampleOutput
TheASCIIof'A'is65.
#include
main()
{
chara;
scanf("%c",&a);
printf("TheASCIIof'%c'is%d.",a,a);
}
1068if语句1
Description
输入一个整数,如果整数在90和100之间,那么输出A;否则输出B。
SampleInput
90
SampleOutput
A
#include
main()
{
inta;
scanf("%d",&a);
if((90<=a)&(a<=100))
{
printf("A");
}
else
{
printf("B");
}
}
1069if语句2
Description
输入整数n,如果n是偶数,则输出“niseven.”,否则输出"nisodd."
SampleInput
6
SampleOutput
6iseven.
#include
main()
{
intn,a;
scanf("%d",&n);
a=n%2;
if(a==0)
{
printf("%diseven.",n);
}
else
{
printf("%disodd.",n);
}
}
1070if3
Description
输入一个三位的整数,如果它有且仅有两位数码相同,那么就输出Yes,否则输出No
SampleInput
112
SampleOutput
Yes
#include
#include
main()
{
inta,b,c,d;
(100<=a)&(a<=999);
scanf("%d",&a);
b=a/100;
c=((a-(a%10))/10)%10;
d=a%10;
if((b==c&&d!
=b)||(b==d&&c!
=b)||(c==d&&b!
=c))
{
printf("Yes");
}
else
{
printf("No");
}
}
1071if4
Description
输入三角形的三条边a,b,c;如果构成三角形那么就计算三角形的面积并输出,保留2位小数,否则输出“Notatriangle.”
SampleInput
354
SampleOutput
6.00
#include
#include
main()
{
inta,b,c,d;
(100<=a)&(a<=999);
scanf("%d",&a);
b=a/100;
c=((a-(a%10))/10)%10;
d=a%10;
if((b==c&&d!
=b)||(b==d&&c!
=b)||(c==d&&b!
=c))
{
printf("Yes");
}
else
{
printf("No");
}
}
1072switch
Description
计算下面函数的值
y=cos(x+3.0) 当0<=x<10;
y=(cos(x+7.5))^2当10<=x<20;
y=(cos(x+4.0))^4当20<=x<30;
^表示幂运算,如x^2表示x的平方
如果x不在定义域内,输出“Notdefine”,否则输出y,保留5位小数
SampleInput
40
SampleOutput
Notdefine
#include
#include
main()
{
floatx,a,b,c;
scanf("%f",&x);
a=cos(x+3.0);
b=pow(cos(x+7.5),2);
c=pow(cos(x+4.0),4);
if(0<=x&&x<10)
{
printf("%.5f",a);
}
elseif(10<=x&&x<20)
{
printf("%.5f",b);
}
elseif(20<=x&&x<30)
{
printf("%.5f",c);
}
else
{
printf("Notdefine");
}
}
1073最大最小数
Description
输入3个互不相等的整数a,b,c,请输出最大的和最小的数,中间用一个空格隔开。
SampleInput
123
SampleOutput
31
#include
main()
{
inta,b,c,max,min;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
max=a,min=b;
}
else
{
max=b,min=a;
}
if(c>max)
{
max=c;
}
if(c{
min=c;
}
printf("%d%d",max,min);
}
1074求和
Description
第一行是一个整数n(1<=n<=1000),表示有多少个数求和;
第二行是n个整数,每个整数都在-10^5到10^5之间,每个整数之间用空格隔开。
输出和的值(不要输出回车)
SampleInput
5
12345
SampleOutput
15
#include
#include
main()
{
intn,x,c,sum;
sum=0,c=0;
scanf("%d",&n);
for(x=1;x<=n;x++)
{
scanf("%d",&c);
sum=sum+c;
}
printf("%d",sum);
}
1075求最小公倍数
Description
有多个测试用例,每行两个正整数x,y,保证x*y不超过2^31-1。
如果x与y都为0,则输入结束。
每行输出一个测试用例的结果,即x与y的最小公倍数。
(最后一行有回车)
SampleInput
45
36
00
SampleOutput
20
6
#include
main()
{
inti,a,b,q,w;
for(i=1;;i++)
{
scanf("%d%d",&a,&b);
if(a==0||b==0)break;
w=a*b;
if(b>a)
{
q=a,a=b,a=q;
}
q=a%b;
while(q!
=0)
{
a=b,b=q;
q=a%b;
}
printf("%d\n",w/b);
}
}
1076素数
Description
对于大于1的自然数,如果n为素数,那么所有大于1且不大于n的平方根的自然数都不能整除n,反之亦然。
所以我们可以通过测试来确定n是否为素数。
现在给出n,要你求是否为素数,是输出Yes,否则输出No
每行一个正整数n,n<=2^32-1,如果n为0,则输入结束。
判断n是否为素数
每行输出一个用例的结果,如果是输出"Yes",否则输出“No”
SampleInput
2
3
4
5
6
0
SampleOutput
Yes
Yes
No
Yes
No
#include
#include
main()
{
__int64x,i,j,k;
i=2;
while(scanf("%I64d",&x),x!
=0)
{
j=sqrt((double)x)+1;
k=1;
for(i=2;i<=j&&k!
=0;i++)
{
k=x%i;
}
if(i<=j||x==1)
printf("No\n");
else
printf("Yes\n");
}
}
1077数字塔
Description
有多个输入测试用例,每个用例一行,是一个1-9的整数,输入为0则结束。
请输出一个数字塔,若输入是4,则输出的数字塔为:
1
222
33333
4444444
因为有多个样例,那么样例需要先输出一行"case样例号:
"
比如第一个样例是3,则输出
case1:
1
222
33333
SampleInput
2
3
0
SampleOutput
case1:
1
222
case2:
1
222
33333
#include
main()
{
inti,n,k,t,q,a,m;
a=0;
while(scanf("%d",&n)==1&&n)
{
a++;
q=n;
printf("case%d:
\n",a);
for(i=1;i<=n;i++)
{
m=q-1;
for(t=0;t{
printf("%c",32);
}
for(k=1;k<=(2*i-1);k++)
{
printf("%d",i);
}
printf("\n");
q--;
}
}
}
1078字母三角形
Description
输出形如
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
的字母三角形。
输入有多个样例,每个样例是一行,每行是一个大写字母。
当输入字符是‘#’时结束。
样例前需要输出“case样例号:
”。
如示例所示。
SampleInput
C
D
#
SampleOutput
case1:
ABCBA
ABA
A
case2:
ABCDCBA
ABCBA