《算法竞赛入门经典》第二章 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)

你可能感兴趣的:(算法)