例题2_1
# include <stdio.h>
# include <math.h>
int main(){
int a,b,n;
double m;
for(a=1;a<=9;a++){
for(b=0;b<=9;b++){
n=1100*a+b*11;
m=sqrt(n);
if(floor(m+0.1)==m){
printf("%d",n);
}
}
}
return 0;
}
例题2_2
# include <stdio.h>
int step=0;
int main(){
int n;
scanf("%d",&n);
while(n!=1){
if(n%2==0){
n=n/2;
step++;
}
else{
n=3*n+1;
step++;
}
}
printf("%d",step);
return 0;
}
int step=0;
int main(){
int n;
scanf("%d",&n);
while(n!=1){
if(n%2==0){
n=n/2;
step++;
}
else{
n=3*n+1;
step++;
}
}
printf("%d",step);
return 0;
}
例题2_3
# include <stdio.h>
int main(){
int s=0,f=1,i=1,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
f=(f*i)%1000000;
s=(s+f)%1000000;
}
printf("%d",s);
return 0;
}
int main(){
int s=0,f=1,i=1,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
f=(f*i)%1000000;
s=(s+f)%1000000;
}
printf("%d",s);
return 0;
}
例题2_4
重定向
# define LOCAL
# include <stdio.h>
# define INF 1000000000
int main(){
# ifdef 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(x<min)min=x;
if(x>max)max=x;
}
// printf("x= %d min =%d max= %d",x,min ,max );
return 0;
}
# include <stdio.h>
# define INF 1000000000
int main(){
# ifdef 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(x<min)min=x;
if(x>max)max=x;
}
// printf("x= %d min =%d max= %d",x,min ,max );
return 0;
}
例题2_5 fopen
# include <stdio.h>
# 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(x<min)min = x;
if(x>max)max = x;
n++;
}
fprintf(fout,"%d %d %.3lf\n",min,max,(double)s/n);
return 0;
}
# 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(x<min)min = x;
if(x>max)max = x;
n++;
}
fprintf(fout,"%d %d %.3lf\n",min,max,(double)s/n);
return 0;
}
例题2_6 浮点数的陷阱
# include <stdio.h>
int main(){
double i;
for(i=0;i!=10;i+=0.1)
printf("%.1lf\n",i);
return 0;
}
/*
实验预计
程序输出100次停止;
实验现象
程序没有停下一直在运行
实验结果
int main(){
double i;
for(i=0;i!=10;i+=0.1)
printf("%.1lf\n",i);
return 0;
}
/*
实验预计
程序输出100次停止;
实验现象
程序没有停下一直在运行
实验结果
由于double 型是浮点数存在误差,所以不能使用!=来判断
*/
*/
例题2_7 64位数
# include <stdio.h>
# include <math.h>
int count=0;
int main(){
long long n;
long long m;
scanf("%I64d",&n); //我现在所处的环境是windows,在windows 中MinGW ,gcc, vc6 都是用%I64d
m=sqrt(n);
for(int i=1;i<=m;i++ ){
if(n%i==0){
count++;
}
} //linux 中gcc 使用的都是%lld
printf("%d",count); //但是在vs2008及以上的都是用的%lld
}
# include <math.h>
int count=0;
int main(){
long long n;
long long m;
scanf("%I64d",&n); //我现在所处的环境是windows,在windows 中MinGW ,gcc, vc6 都是用%I64d
m=sqrt(n);
for(int i=1;i<=m;i++ ){
if(n%i==0){
count++;
}
} //linux 中gcc 使用的都是%lld
printf("%d",count); //但是在vs2008及以上的都是用的%lld
}
习题2_1
# include <stdio.h>
int count=0;
int main(){
int n;
scanf("%d",&n);
while(n){
n=n/10;
count++;
}
printf("%d",count);
return 0;
}
int count=0;
int main(){
int n;
scanf("%d",&n);
while(n){
n=n/10;
count++;
}
printf("%d",count);
return 0;
}
习题2_2
# include <stdio.h>
int main(){
int a,b,c;
for(a=1;a<=9;a++){
for(b=0;b<=9;b++){
for(c=0;c<=9;c++){
if((a*a*a+b*b*b+c*c*c)==100*a+10*b+c){
printf("%d\n",a*100+b*10+c);
}
}
}
}
return 0;
}
int main(){
int a,b,c;
for(a=1;a<=9;a++){
for(b=0;b<=9;b++){
for(c=0;c<=9;c++){
if((a*a*a+b*b*b+c*c*c)==100*a+10*b+c){
printf("%d\n",a*100+b*10+c);
}
}
}
}
return 0;
}
习题2_3
# include <stdio.h>
int main(){
int a,b,c,n,flag=0;
scanf("%d%d%d",&a,&b,&c);
for(n=10;n<=100;n++){
if(n%3==a){
if(n%5==b){
if(n%7==c){
printf("%d\n",n);
flag=1;
break;
}
}
}
}
if(flag==0){
printf("no answer");
}
return 0;
}
int main(){
int a,b,c,n,flag=0;
scanf("%d%d%d",&a,&b,&c);
for(n=10;n<=100;n++){
if(n%3==a){
if(n%5==b){
if(n%7==c){
printf("%d\n",n);
flag=1;
break;
}
}
}
}
if(flag==0){
printf("no answer");
}
return 0;
}
习题2_6
# include <stdio.h>
int main(){
int n,i;
double s=0,temp=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
temp=1.0/i;
s=s+temp;
}
printf("%.3lf",s);
return 0;
}
int main(){
int n,i;
double s=0,temp=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
temp=1.0/i;
s=s+temp;
}
printf("%.3lf",s);
return 0;
}
习题2_7
# include <stdio.h>
# include <math.h>
int main(){
double flag=1.0,temp=1;
double s=0;
while(fabs(flag/temp)>=1e-6){
s=s+(flag/temp);
flag=-1*flag;
temp=temp+2;
}
printf("%.3lf",4*s);
return 0;
}
# include <math.h>
int main(){
double flag=1.0,temp=1;
double s=0;
while(fabs(flag/temp)>=1e-6){
s=s+(flag/temp);
flag=-1*flag;
temp=temp+2;
}
printf("%.3lf",4*s);
return 0;
}
习题2_8
# include <stdio.h>
int main(){
int n,m;
double s=0;
scanf("%d%d",&n,&m);
for(;n<=m;n++){
double t=n; //****
s=s+1.0/(t*t);
}
printf("%.5lf",s);
return 0;
}
/*
这道题的题目上提示要小心陷阱
该题给出了两组测试数据
2 4
结果 0.42361
65536 655360
结果 0.00001
注***号的这一行如果不写的话造成错误
65536*65536会超出int 的取值范围
所以应该转换成double
*/
int main(){
int n,m;
double s=0;
scanf("%d%d",&n,&m);
for(;n<=m;n++){
double t=n; //****
s=s+1.0/(t*t);
}
printf("%.5lf",s);
return 0;
}
/*
这道题的题目上提示要小心陷阱
该题给出了两组测试数据
2 4
结果 0.42361
65536 655360
结果 0.00001
注***号的这一行如果不写的话造成错误
65536*65536会超出int 的取值范围
所以应该转换成double
*/
习题2_9
# include <iostream>
# include <iomanip>
using namespace std;
int main(){
double a,b,c;
cin>>a>>b>>c;
cout<<fixed<< setprecision(c)<<a/b<<endl;
return 0;
}
# include <iomanip>
using namespace std;
int main(){
double a,b,c;
cin>>a>>b>>c;
cout<<fixed<< setprecision(c)<<a/b<<endl;
return 0;
}
习题2_10
# include <stdio.h>
int main(){
int x,y,z,i,j,flag=0;
int a[9];
for(x=100;x<=333;x++){
flag=0; //记得每次都需要重置标志
y=2*x;
z=3*x;
a[0]=x/100;
a[1]=x/10%10;
a[2]=x%10;
a[3]=y/100;
a[4]=y/10%10;
a[5]=y%10;
a[6]=z/100;
a[7]=z/10%10;
a[8]=z%10;
for(i=0;i<9;i++){
for(j=i+1;j<9;j++){
if(a[j]==a[i]){
flag=1;
}
}
}
if(flag==0){
printf("%d %d %d\n",x,y,z);
}
}
return 0;
}
int main(){
int x,y,z,i,j,flag=0;
int a[9];
for(x=100;x<=333;x++){
flag=0; //记得每次都需要重置标志
y=2*x;
z=3*x;
a[0]=x/100;
a[1]=x/10%10;
a[2]=x%10;
a[3]=y/100;
a[4]=y/10%10;
a[5]=y%10;
a[6]=z/100;
a[7]=z/10%10;
a[8]=z%10;
for(i=0;i<9;i++){
for(j=i+1;j<9;j++){
if(a[j]==a[i]){
flag=1;
}
}
}
if(flag==0){
printf("%d %d %d\n",x,y,z);
}
}
return 0;
}