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