《算法竞赛入门经典》第二章 2.4

任务1:

  

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i, n;
 5     scanf("%d",&n);
 6     for(i = 1; i <= n; i++)
 7     {
 8         printf("%d\n",2*i);
 9     }
10     return 0;
11 }

 

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i, n;
 5     scanf("%d",&n);
 6     for(i = 2; i <=2* n; i+=2)
 7     {
 8         printf("%d\n",i);
 9     }
10     return 0;
11 }

 

任务2:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     double i;
 5     for(i = 1; i !=10 ;i += 0.1)
 6     {
 7         printf("%0.1f", i);
 8     }
 9     return 0;
10 }

因为我知道浮点数的存储……所知知道会一直运行。。

2.4.4 C++中的输入输出

1 #include<cstdio>
2 int main()
3 {
4     int a, b;
5     while(scanf("%d%d", &a, &b) == 2)
6         printf("%d\n", a+b);
7     return 0;
8 }

上面的用法第一次见到还是考研复试的时候,看了王道的考研机试。。

1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5     int a, b;
6     while(cin>> a >> b) cout<< a+b << "\n";
7     return 0;
8 }

上面的程序在codeblocks没有问题,而在其命令行下则有错误……

错误:/tmp/cc3xkv3G.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
解决办法:将.cpp文件改为.c文件编译
                     或者这样编译gcc <source> -lstdc++
                     或者改用g++编译

之所以前面的例子多没有错误,是因为我保存文件到test.cpp用gcc编译都当成c来处理了,这次写成c++还是用g++编译吧。

 

2.4.6 上机练习

习题2-1 位数(digit)

  

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n, count = 0;
 5     scanf("%d", &n);
 6     while(n!= 0)
 7     {
 8         n/=10;
 9         count++;
10     }
11         printf("%d\n", count);
12     return 0;
13 }

 

习题2-2 水仙花数(daffodil)

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i, j, k, count = 0, tmp1, tmp2;
 5     for(i = 1; i<=9; i++)
 6         for(j = 0;j <=9;j++)
 7             for(k = 0;k <=9; k++)
 8             {
 9                 tmp1 = (100*i+10*j+k);
10                 tmp2 = (i*i*i+j*j*j+k*k*k);
11                 if(tmp1 == tmp2)
12                      printf("%d\n",tmp1);
13             }
14 
15     return 0;
16 }

 

习题2-3 韩信点兵 (hanxin)

习题2-4 倒三角数 (triangle)

#include<stdio.h>
int main()
{
int n, i, j, k;
scanf("%d", &n);
for(i = n; i >=0 ;i--)
{
for(k = 0;k <=i-1; k++)
printf(" ");
printf("\n");
for(j=1; j <=2*i -1;j++)
printf("#");
printf("\n");
}
return 0;
}

习题2-5 统计 (stat)

习题 2-6调和级数(harmony)

习题 2-7 近似计算 (approximation)

#include<stdio.h>
int main()
{
const float eps = 0.0000001;
int i;
float S = 0, tmp;
for(i = 1; ;i++)
{
tmp = 1/(2*i-1);
if(i%2 == 1)
S+= tmp;
else
S-= tmp;
if(tmp - eps <10*eps)
break;
}
printf("%f\n", S);
return 0;
}

习题 2-8 子序列的和(subsequence)

#include<stdio.h>
int main()
{
int n, m, i;
double S = 0;
scanf("%d%d", &n, &m);
for(i = n; i<=m; i++)
{
S+= (double)1/(i*i);
if(i >= 35)
break;
}
printf("%0.5lf",S);
return 0;
}

习题 2-9 分数化小数(decima)

习题 2-10 排列 (permutation)

posted on 2014-12-28 12:52  lz亢龙有悔  阅读(159)  评论(0编辑  收藏  举报

导航