例题2-1 aabb
题目:输出所有形如aabb的四位完全平方数(即前两位数字相等,后两位数字相等)
要点:
函数名: floor
功 能: 返回小于或者等于指定表达式的最大整数
用 法: double floor(double x);
头文件:math.h
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,x;
double c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
{
x=1100*a+11*b;
c=sqrt(x);
if(fabs(c-floor(c+0.5))<0.00000001) //四舍五入是为了避免在运算中由于小数的截断误差
printf("%d\n",x); //而造成的最后结果不是精确的整数时(比如是49.999999999)
}
return 0;
}
例题2-3 阶乘之和
题目:输入n,计算S=1!+2!+3!+...+n!的末6位(不含前导0),n<=10^6
#include <stdio.h>
#include <time.h>
int main()
{
const int MOD=1000000;
int i,j,n,S=0;
scanf("%d",&n);
double t1=(double)clock()/CLOCKS_PER_SEC;
for(i=1;i<=n;i++)
{
int factorial=1;
for(j=1;j<=i;j++)
factorial=factorial*j%MOD;
S=(S+factorial)%MOD;
}
double t2=(double)clock()/CLOCKS_PER_SEC;
printf("%d\n",S);
printf("Time used = %.2lf\n",t2-t1);
return 0;
}
例题2-4 数据统计
题目:输入一些整数,求出他们的最小值、最大值和平均值(保留3位小数),输入保证这些数都是不超过1000的整数。
要点1:scanf函数的返回值是成功输入的变量个数 当输入结束时,scanf无法再次读取x,将返回0 按Enter键并不意味着输入的结束 Windows下:输入完毕后先按Enter,再按Ctrl+Z, 最后再按Enter键。
要点2:重定向: 写起来简单、自然,但是不能同时读写文件和标准输入输出; fopen : 写法稍显繁琐,但是灵活性比较大。
(重定向版):
#define LOCAL
#include <stdio.h>
int main()
{
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);