max=a[i];
if(min>a[i])
min=a[i];
}
printf("%d%d\n",min,max);
return0;
}
39~水仙花数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
描述
请判断一个数是不是水仙花数。
其中水仙花数定义各个位数立方和等于它本身的三位数。
输入
有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)
输入0表示程序输入结束。
输出
如果n是水仙花数就输出Yes
否则输出No
#include
intmain()
{
inta,b,c,n;
scanf("%d",&n);
while(n)
{
a=n/100;
b=(n-100*a)/10;
c=n-a*100-b*10;
if(a*a*a+b*b*b+c*c*c==n)
printf("Yes\n");
else
printf("No\n");
scanf("%d",&n);
}
return0;
}
40~公约数和公倍数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
描述
小明被一个问题给难住了,现在需要你帮帮忙。
问题是:
给出两个正整数,求出它们的最大公约数和最小公倍数。
输入
第一行输入一个整数n(0随后的n行输入两个整数i,j(0
输出
输出每组测试数据的最大公约数和最小公倍数
#include
intmain(){
intN;
scanf("%d",&N);
while(N--){
intn,m,p;
scanf("%d%d",&n,&m);
p=n*m;
while(m!
=n){
if(m>n)
m=m-n;
else
n=n-m;
}
printf("%d%d\n",n,p/n);
}
41~三个数从小到大排序
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
0
描述
现在要写一个程序,实现给三个数排序的功能
输入
输入三个正整数
输出
给输入的三个正整数排序
#include
intmain(){
inta[3],i,j,temp;
for(i=0;i<3;i++)
scanf("%d",&a[i]);
for(i=0;i<3;i++)
for(j=i;j<3;j++)
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(i=0;i<3;i++)
printf("%d",a[i]);
return0;
}11~奇偶数分离
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
1
描述
有一个整型偶数n(2<=n<=10000),你要做的是:
先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出。
输入
第一行有一个整数i(2<=i<30)表示有i组测试数据;
每组有一个整型偶数n。
输出
第一行输出所有的奇数
第二行输出所有的偶数
#include
intmain()
{
intt;
scanf("%d",&t);
while(t--)
{
inti,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
if(i%2!
=0)printf("%d",i);
printf("\n");
for(i=1;i<=n;i++)
if(i%2==0)printf("%d",i);
}
return0;
}
输入20个1~20的数,在1~5中的有几个
#include
voidmain()
{
intnum[20],time=0,i;
for(i=0;i<20;i++)
scanf("%d",&num[i]);
for(i=0;i<20;i++)
{
if(num[i]>=1&&num[i]<=20)
{
if(num[i]<=5&&num[i]>=1)
time+=1;
}
}
printf("%d\n",time);
}
验证哥德巴赫猜想
#include
#include
intisprime(intn)
{
inti;
intm=sqrt(n);
for(i=2;i<=m;i++)
if(n%i==0)
break;
return(i==m+1);
}
voidmain()
{
inti,even;
do
{
scanf("%d",&even);
}
while(even<4||even%2!
=0);
for(i=2;i{
if(isprime(i)==1&&isprime(even-i)==1)
printf("%d=%d+%d\n",even,i,even-i);
}
}
在数组中找key元素
普通法
#include
intf(inta[],intn,intkey)
{
inti;
for(i=0;iif(a[i]==key)
returni;
return-1;
}
intmain()
{
intn,a[100],key,i,s=-1;
key=8;
scanf("%d\n",&n);
for(i=0;iscanf("%d",&a[i]);
for(i=0;iif(a[i]==key)
s=i;
if(s!
=-1)
printf("%d\n",s);
else
printf("%2d\n",-1);
return0;
}
函数法
#include
intf(inta[],intn,intkey)
{
inti;
for(i=0;iif(a[i]==key)
returni;
return-1;
}
intmain()
{
intn,a[100],key,i;
key=8;
scanf("%d\n",&n);
for(i=0;iscanf("%d",&a[i]);
printf("%d\n",f(a,n,key));
return0;
}
递归法
#include
intf(inta[],intn,intkey)
{
if(n<0)
return-1;
if(a[n-1]==key)
returnn-1;
returnf(a,n-1,key);
}
intmain()
{
intn,a[100],key,i;
key=8;
scanf("%d\n",&n);
for(i=0;iscanf("%d",&a[i]);
printf("%d\n",f(a,n,key));
return0;
}
素数距离问题
#include
#include
#include
int f1(int m)
{
int i;
int k=(int)(sqrt(m));
for(i=2;i<=k;i++)
{
if(m%i==0)
{
m=m-1;
return f1(m);
}
}
if(i>k)
return m;
}
int f2(int m)
{
int i;
int k=(int)(sqrt(m));
for(i=2;i<=k;i++)
{
if(m%i==0)
{
m=m+1;
return f2(m);
}
}
if(i>k)
return m;
}
int main()
{
int n,a;
scanf("%d",&n);
while(n--)
{
scanf("%d",&a);
if(a==1)
printf("2 1\n");
else
{
int d1=abs(a-f1(a));
int d2=abs(a-f2(a));
if(d1<=d2)
printf("%d %d\n",f1(a),d1);
else
printf("%d %d\n",f2(a),d2);
}
}
return 0;
}
代换
#include
#defineN3.14159
#definemylove(x)x*x
voidmain()
{
doubler=3,s;
s=N*mylove(r);
printf("%lf\n",s);
}
参数化宏与函数
#include
#defineA(x)((x)>0?
(x):
(-x))
doublemy(doublex)
{
returnx>0?
x:
-x;
}
voidmain()
{
printf("A(-3)=%d\n",A((-3)));
printf("my(-3)=%lf\n",my(-3));
printf("A(-3-1)=%d\n",A((-3-1)));
printf("my(-3-1)=%lf\n",my(-3-1));
printf("A(-3.5)=%.1f\n",A((-3.5)));
printf("my(-3.5)=%lf\n",my(-3.5));
}
定义一个求两数较小者的宏
#include
#definemin(x,y)(x>y?
y:
x)
voidmain()
{
intx,y;
scanf("%d%d",&x,&y);
printf("%d\n",min(x,y));
}
定义宏,小变大,大不变
#include
#defineUPPER
voidmain()
{
charstr[100];
inti;
gets(str);
#ifdefUPPER
for(i=0;str[i]!
='\0';++i)
if(str[i]>='a'&&str[i]<='z')
str[i]-='a'-'A';
#else
for(i=0;str[i]!
='\0';++i)
if(str[i]>='A'&&str[i]<='Z')
str[i]+='a'-'A';
#endif
puts(str);
}
输入字符串和一个整数,整数为1,变大,为2,变小
#include
voidmain()
{
charstr[100];
inti,flag;
gets(str);
do
{
printf("请输入一个整数:
1大写,2小写!
\n");
scanf("%d",&flag);
}while(flag!
=1&&flag!
=2);
if(flag==1)
{
for(i=0;str[i]!
='\0';++i)
if(str[i]>='a'&&str[i]<='z')
str[i]-='a'-'A';
}
else
{
for(i=0;str[i]!
='\0';++i)
if(str[i]>='A'&&str[i]<='Z')
str[i]+='a'-'A';
}
puts(str);
}