进制数问题,探究了一下while与for的运用

弄清楚“符合条件的最后一项”和“不符合条件的第一项”

#include<stdio.h>
void main(){
    
    
	int i,n,r,a[33];
	while(scanf("%d%d",&n,&r)!=EOF){
    
    
		i=0;
		if(n<0){
    
    
			printf("-");
			n=-n;
		}
		while(n){
    
    //=while(n!=0) 等于0时跳出,假设一共C个
			a[i]=n%r;//a[0],a[1],a[2],……,a[C-1]
			n/=r;
			i++;//最后i=C
		}
		while(i--){
    
    //a[C-1],a[C-2],……,a[3],a[2],a[1],a[0] while(i--)是先使用再自减,所以是判断的是C>0? C-1>0? 1>0?但是使用的是C-1,c-2  0
			if(a[i]<10)
				printf("%d",a[i]);
			else
				printf("%c",a[i]-10+'A');
		}
		printf("\n");
	}
}
#include<stdio.h>
void main(){
    
    
	int i,r,n,a[33];
	while(~scanf("%d%d",&n,&r)){
    
    
		if(n<0){
    
    
			printf("-");
			n=-n;
		}
		for(i=0;n;i++){
    
    
			a[i]=n%r;
			n/=r;
		}
		for(i-=1;i+1;i--){
    
    
			if(a[i]<10)
				printf("%d",a[i]);
			else
				printf("%c",a[i]-10+'A');
		}
		printf("\n");
	}
}

总结
//while(n–) 的具体过程是 从n到1判断是否为零,下面用到n的值从n-1用到0。一共循环n次。等同于for(i=n-1;i+1;i–)
//while(n) 相当于 for(;n;)
//while() for() 很多时候区别在于判断的是当前项还是前一项还是下一项
//i++ i–自增自减运算符 先用再加,先用再减

猜你喜欢

转载自blog.csdn.net/cwindyc/article/details/107009557