c语言基础编程——循环类型的练习

(注:下面的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; 
}

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值