习题2-1 水仙花数(daffodil)
#include<stdio.h>
int main()
{
for(int i = 100; i <= 999; i++)
{
int a = i/100;
int b = i/10%10;
int c = i%10;
if (a*a*a + b*b*b + c*c*c == i)
printf("%d\n", i);
}
return 0;
}
习题2-2 韩信点兵(hanxin)
#include<stdio.h>
int main()
{
int a, b, c, kase = 0;
while(scanf("%d %d %d", &a, &b, &c) != NULL)
{
int flag = false;
for (int n = 10; n <= 100; n++)
{
if ((n-a)%3 == 0 && (n-b)%5 ==0 && (n-c)%7 == 0)
{
flag = true;
printf("Case %d: %d\n", ++kase, n);
break;
}
}
if (flag == false)
printf("Case %d: No answer\n", ++kase);
}
return 0;
}
习题2-3 倒三角形(triangle)
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
for (int i = n, j = 0; i >= 1; i--, j++)
{
for (int a = 0; a < j; a++)
printf(" ");
for (int b = 1; b <= i*2-1; b++)
printf("#");
printf("\n");
}
return 0;
}
习题2-4 子序列的和(subsequence)
#include<stdio.h>
int main()
{
int n, m, kase = 0;
while(scanf("%d%d", &n, &m) != NULL && (n != 0 || m != 0))
{
double sum = 0;
for (int i = n; i <= m; i++)
{
double sub = 1.0 / i / i; //1.0 / (i * i) 乘法溢出
sum += sub;
}
printf("Case %d: %.5lf\n", ++kase, sum);
}
return 0;
}
习题2-5 分数化小数(decimal)
#include<stdio.h>
int main()
{
int a, b, c;
int kase = 0;
while(scanf("%d%d%d", &a, &b, &c) != 0 && a+b+c != 0)
{
printf("Case %d: %.*f\n", ++kase, c, (double)a/b);
}
}
习题2-6 排列(permutation)
#include<stdio.h>
int main()
{
void judge(int array[], int num);
for(int i = 123; i < 330; i++)
{
int flag = true;
int array[10] = {0};
int abc = i, def = i*2, ghi = i*3;
judge(array, abc);
judge(array, def);
judge(array, ghi);
for(int j = 1; j <= 9; j++)
{
if (array[j] != 1)
{
flag = false;
break;
}
}
if (flag)
printf("%d %d %d\n", abc, def, ghi);
}
return 0;
}
void judge(int array[], int num)
{
int n1 = num/100;
int n2 = num/10%10;
int n3 = num%10;
array[n1]++;
array[n2]++;
array[n3]++;
}
思考题目2
#include<stdio.h>
int main()
{
double i;
for (i = 0; i != 10; i += 0.1)
printf("%.1f\n", i); //除了i==10都会输出,i>10也会输出
return 0;
}