目录
一、aabb问题
二、7744问题
三、3n 1 问题
四、近似计算
五、阶乘之和
六、数据统计
一、aabb问题
问题描述:输出所以形式为没有 aabb 的完全平方数(例如1122,3344),bb可以为00,aa则不行,又aabb知,这是个四位数,由穷举就可以把每个符合条件的列出来
没有输入:
样例输出:
1100
1111
1122
*****
源代码:
代码语言:javascript复制#include
int main()
{
int a,b;
for(a=1;a<=9;a )
for(b=0;b<=9;b )
{
printf("%dn",a*1100 b*11);
}
return 0;
}
二、7744问题
问题描述:输入一个整数,判断其是否为完全平方数(用一个int 形变量m存储sqrt(n)四舍五入后的整数,然后判断m^2是否等于n,函数floor(x)返回不超过x的最大整数)
样例输出:
7744
源代码:
代码语言:javascript复制#include
#include
int main()
{
int a,b;
for(a=1;a<=9;a )
for(b=0;b<=9;b )
{
int n = a*1100 b*11;
int m = floor(sqrt(n) 0.5);
if(m*m == n)
printf("%dn",n);
}
return 0;
}
三、3n 1 问题
问题描述:对于任意大于1的自然数n,若n为奇数,则将n变为3n 1,否则变为n的一半,经过若干次这样的变换,一定会使n变为1,例如3—>10—>5—>16—>8—>4—>2—>1,可能输入的n非常的大,有时候要把n改为long long型 输入n,输出变换的次数
样例输入:
3
样例输出:
7
源代码:
代码语言:javascript复制#include
int main()
{
int n,count = 0;
scanf("%d",&n);
while(n != 1)
{
if(n%2 == 1)
n=3*n 1;
else
n=n/2;
count ;
}
printf("%d",count);
return 0;
}
四、近似计算
问题描述:
,直到最后一项小于
样例输出:
0.785399
源代码:
代码语言:javascript复制#include
int main()
{
double sum =0;
for(int i = 0;;i )
{
double term = 1.0/(i*2 1);
if(i%2 == 0)
sum =sum term;
else sum = sum - term;
if(term<1e-6)//e代表底数10 -6代表负六次方
break;
}
printf("%.6fn",sum);
return 0;
}
五、阶乘之和
问题描述:输入n,计算1! 2! 3! 4! * * * n!的末六位(不含前导0,只保留后六位数字)。n<=10^6,
样例输入:
10
样例输出:
37913
源代码:
代码语言:javascript复制#include
int main()
{
int n,S;
scanf("%d",&n);
for(int i=1;i<=n;i )
{
int f=1;//每次循环都要初始化变量
for(int j=1;j<=i;j )
f*=j;
S =f;
}
printf("%dn",S00000);
return 0;
}
六、数据统计
问题描述:输入一些整数,求出他们最大值,最小值,平均值(保留三位小数),输入保证这些数都是不超过1000的整数
样例输入
1 2 3
样例输出
1 3 2.000
源代码:
代码语言:javascript复制#include
int main()
{
int x,n=0,min,max,s=0;
while(scanf("%d",&x)==1)
{
s =x;
if(xmax)max =x;
n ;
}
printf("%d %d %.3f",min,max,s*1.0/n);
return 0;
}
PS:有时候,按下回车键,不一定意味着输入结束,在windows环境下,我们输入完成后,还要按下 ctrl z,这个时候代表输入结束,Linux环境下,按下ctrl D 可代表输入结束
数据统计(重定向版)
代码语言:javascript复制//重定向法
#define LOCAL
#include
#define INF 1000000000
int main()
{
#ifdef INF LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif
int x,n = 0,min =INF,max = -INF,s = 0;
while(scanf("%d",&x) == 1)
{
s = x;
if(xmax) max = x;
n ;
}
printf("%d %d %.3fn",min,max,(double)s/n);
return 0;
}
数据统计(fopen版)
代码语言:javascript复制#include
#define INF 1000000000
int main()
{
FILE *fin, *fout;
fin = fopen("data.in","rb");
fout = fopen("data.out","wb");
int x,n = 0,min = INF,max = -INF,s = 0;
while(fscanf(fin,"%d",&x)==1)
{
s =x;
if(xmax) max = x;
n ;
}
fprintf(fout,"%d %d %.3fn",min,max, (double)s/n);
fclose(fin);
fclose(fout);
return 0;
}