//习题2-1#include<stdio.h>#include<math.h>intmain(){int A, B, C;for(int i =100; i <=999; i++){
A = i /100;
B = i /10%10;
C = i %10;if(i ==pow(A,3)+pow(B,3)+pow(C,3))printf("%d ", i);}return0;}//习题2-2#include<stdio.h>intmain(){int a, b, c, i, count =0;
FILE *fin;
fin =fopen("input.txt","r");while(fscanf(fin,"%d%d%d",&a,&b,&c)==3){for(i =10; i<=100; i++){if(i %3== a && i %5== b && i %7== c){printf("Case %d: %d\n",++count, i);break;}}if(i ==101)printf("Case %d: No answer\n",++count);}fclose(fin);return0;}//习题2-3#include<stdio.h>intmain(){int n,i =1;;scanf("%d",&n);for(; n >=1; n--){for(int j =1; j <=2*i-1; j++)printf(" ");
i++;for(int k =1; k <=2*n-1; k++)printf("# ");printf("\n");}return0;}//习题2-4#include<stdio.h>intmain(){
FILE *fin;int m,n,count =0;
fin =fopen("data.txt","r");fscanf(fin,"%d%d",&n,&m);while(m && n){double s =0;int i = n;for(; i <= m; i++){
s +=1.0/((double)i *(double)i);//不强转为double就会int类型溢出}printf("Case %d: %.5f\n",++count, s);fscanf(fin,"%d%d",&n,&m);}fclose(fin);return0;}//习题2-5//方法一:当c>16时,不能解决问题,因为浮点数的精度为小数点后16位#include<stdio.h>#include<math.h>intmain(){
FILE *fin,*fout;
fin =fopen("data2.txt","r");
fout =fopen("output.txt","w");int a, b, c, count =0;fscanf(fin,"%d%d%d",&a,&b,&c);while(a && b && c){double m =(double)a / b;//小数第16位之后就开始不准了fprintf(fout,"Case %d: %.*f\n",++count, c, m);//floor函数原型为 double floor(double org); 返回值还是double型,所以输出时//用%.*f输出//格式化输出(printf)的特殊用法。如printf(“% * . * lf\n”, 8, 4, (double)1/6); 会输出8个字宽保留4位小数的浮点数运算结果。fscanf(fin,"%d%d%d",&a,&b,&c);}fclose(fin);fclose(fout);return0;}//方法二,模拟竖式除法过程#include<stdio.h>int n,m[101];//n整数部分,m小数部分intmain(){int a,b,c,i,k=0;
FILE *fin,*fout;
fin =fopen("data2.txt","r");
fout =fopen("output.txt","w");fscanf(fin,"%d%d%d",&a,&b,&c);while(a && b && c){
k++;
n = a / b;//n是整数部分
a = a % b;//a是余数
m[0]=0;//十分位小数,可以进位为整数for(i=1; i<=c; i++){
m[i]= a *10/ b;//第i个余数除以B的整数部分,也就是我们要求的小数的第i位
a = a *10% b;//第i个余数除以b的余数部分}if(a*10/b >=5)//第C+1位,四舍五入{for(i=c; i>=0; i--)//进位处理{
m[i]= m[i]+1;//进位操作if(m[i]<10)break;//若不存在进位,跳出循环else
m[i]-=10;//否则继续进行进位操作}}
n = n + m[0];//整数部分进位处理。fprintf(fout,"Case %d: %d.", k, n);//打印整数部分及小数点for(i=1; i<=c; i++)fprintf(fout,"%d", m[i]);//打印小数部分。fprintf(fout,"\n");fscanf(fin,"%d%d%d",&a,&b,&c);}fclose(fin);fclose(fout);return0;}//习题2-6#include<stdio.h>intmain(){int x, y, z;for(x =123; x <=329; x++){
y =2* x;
z =3* x;int flag =0;int num[10]={0};
num[x/100]++; num[x%100/10]++; num[x%10]++;
num[y/100]++; num[y%100/10]++; num[y%10]++;
num[z/100]++; num[z%100/10]++; num[z%10]++;for(int i=1; i<=9; i++){if(num[i]==0){
flag =1;break;}}if(!flag){printf("%d %d %d \n", x, y, z);}}return0;}
//习题2-1#include <stdio.h>#include <math.h>int main(){ int A, B, C; for(int i = 100; i <= 999; i++) { A = i / 100; B = i / 10 % 10; C = i % 10; if(i == pow(A, 3) + pow(B, 3) + pow(C, 3)) printf