习题2-1 水仙花数
#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);
}
}
return0;
}
习题2-2 韩信点兵
#include<stdio.h>
int main(){
int a,b,c;
int num=0;
while (scanf("%d %d %d",&a,&b,&c)==3) {
int flag=0;
num++;
for (int i=10; i<=100; i++) {
if (i%3==a&&i%5==b&&i%7==c) {
flag=1;
printf("Case %d: %d\n",num,i);
break;
}
}
if (!flag) {
printf("Case %d: No answer\n",num);
}
}
return0;
}
习题2-3 倒三角形
#include<stdio.h>
int main(){
int n;
int space=0;
scanf("%d",&n);
for (int i=n; i>0; i--) {
for (int j=0; j<space; j++) {
printf(" ");
}
for (int j=1; j<=2*i-1; j++) {
printf("#");
}
space++;
printf("\n");
}
return0;
}
习题2-4 子序列的和
#include<stdio.h>
int main(){
int n,m;
int num=0;
while (scanf("%d%d",&n,&m)==2) {
double sum=0;
if (n>m) {
continue;
}
elseif(n==0&&m==0){
break;
}
else{
for (int i=n; i<=m; i++) {
sum+=1.0/i/i;//如果用1.0/(i*i)会溢出
}
num++;
printf("Case %d: %.5f\n",num,sum);
}
} return0;
}
//习题2-5 分数化小数
#include<stdio.h>
int main(){
int a,b,c;
int num=0;
while (scanf("%d%d%d",&a,&b,&c)==3) {
if (a==0&&b==0&&c==0) {
break;
}
elseif(a>0&&b>0&&c>0&&a<=1e6&&b<=1e6&&c<=100){
num++;
printf("Case %d: %.*f\n",num,c,1.0*a/b);
}else{
continue;
}
}
return0;
}
//习题2-6 排列
#include<stdio.h>
void Swap(int *a,int *b){
int t=*a;
*a=*b;
*b=t;
}
void Perm(int List[],int k,int m){
if (k==m) {
int abc=List[0]*100+List[1]*10+List[2];
int def=List[3]*100+List[4]*10+List[5];
int ghi=List[6]*100+List[7]*10+List[8];
if (abc*2==def&&def*3==ghi*2) {
printf("%d %d %d\n",abc,def,ghi);
}
}
else{
for (int i=k; i<=m; i++) {
Swap(&List[k],&List[i]);
Perm(List, k+1, m);
Swap(&List[k],&List[i]);
}
}
}
int main(){
int List[10]={1,2,3,4,5,6,7,8,9};
Perm(List,0, 8);
return0;
}