(注:下面的1~4文件位置为04.21_5~7、04.21_8.1)
1.
//注意变量的类型
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
double fz,fm;
double sum=0;
int i;
double t;
fz=2.0;
fm=1.0;
for(i=1;i<=n;i++){
sum+=fz/fm;
t=fz;
fz=fz+fm;
fm=t;
}
printf("%.2f\n",sum);
return 0;
}
2.
//先用辗转相除法求得最大公约数,思路:
//求两个数的最大公约数---辗转相除法
//如果b等于0,计算结束,a就是最大公约数
//否则,计算a/b的余数,且a=b,b=余数;
//循环上面过程,知道满足第一步
/*
a b t
12 18 12
18 12 6
12 6 0
6 0
*/
//注意此时a的值为最大公约数
#include<stdio.h>
int main()
{
int m,n;
scanf("%d/%d",&m,&n);
int i;
int a=m;
int b=n;
while(b>0){
i=a%b;
a=b;
b=i;//a是最大公约数
}
printf("%d/%d=%d/%d",m,n,m/a,n/a);
return 0;
}
3.
//整数分解,如输入135,输出1 3 5,思路如下:
//x=135
//135/100-> 1这是要输出的那一位上的值
//135%100-> 35这是下一轮循环时要操作的数据
//100/10-> 10这是下一轮循环时数据进行取余及作出除法时的除数
//35/10-> 3
//35%10->5
//10/10->1
//5/1-> 5
//1%1->0
//1/10->0,这是循环结束的条件
//所以第一步是得出135的位数,与此同时得出相应的100;
//然后第二步就是不断地去除,去取余,然后输出。
#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
if(x<0){
printf("fu ");
x=-x;
}
int t=x;
int cnt=1;
while(t>9){
t/=10;
cnt*=10;
}
do{
int
i=x/cnt;
switch(i) {
case 0: printf("ling");break;
case 1: printf("yi");break;
case 2: printf("er");break;
case 3: printf("san");break;
case 4: printf("si");break;
case 5: printf("wu");break;
case 6: printf("liu");break;
case 7: printf("qi");break;
case 8: printf("ba");break;
case 9: printf("jiu");break;
}
if(cnt>9){//一定注意这里用的是cnt来作为判断依据的
printf(" ");//这里作用:非最后一个输出后面都有一个空格;最后一个输出 后面没空格。
}
x%=cnt;
cnt/=10;
}while(cnt>0);//一定注意这里用的是cnt来作为判断依据的
printf("\n");
return 0;
}
4.
#include<stdio.h>
int main()
{
int a,n;
scanf("%d %d",&a,&n);
int i;
int t=0;
int sum=0;
//0*10+2=2 2*10+2=22 22*10+2=224
for(i=1;i<=n;i++){
t=t*10+a;//这个公式用来求每次循环构造的那个数。
sum+=t;
}
printf("%d\n",sum);
return 0;
}