C語言:PAT練習:組合數的整齊輸出

組合數的輸出(while循環)

  1. 練習題目如下

練習題目

  1. 算法思路
    這種組合數的算法類似於湊硬幣程序,就是通過組合不同的數字來實現輸出。可以將 i,j,k 看成是不同的層,當 i,j 固定時讓循環最內層的k進行累加,k 不滿足條件時,返回到 j 層的循環,以此類推。
    在輸出條件語句的控制上,設置 cnt 計數器滿足 cnt==6 則換行,否則輸出空格。
  2. 代碼如下
/*
   給定不超過6的正整數,考慮從A開始的4個連續數字,
   請輸出所有由它們組成的無重複數字的3位數。
*/ 
#include<stdio.h>
int main()
{
	int i,j,k;
	int a;
	int cnt=1;
	printf("please input number:");
	scanf("%d",&a);
	i=a;
	while(i<=a+3){
		j=a;
		while(j<=a+3){
			k=a; 
			while(k<=a+3){
				if(i!=j&&j!=k&&k!=i){					
					printf("%d%d%d",i,j,k);
					if(cnt==6){						
							printf("\n");
							cnt = 1;							
						}
					else
					{
						printf(" ");
						cnt++;
					}					
				}
				k++;
			}
			j++;
		}
		i++;
	}	
	return 0;
}

代碼輸出:
		please input number:2
		234 235 243 245 253 254
		324 325 342 345 352 354
		423 425 432 435 452 453
		523 524 532 534 542 543
		
		--------------------------------
		Process exited after 1.417 seconds with return value 0
		請按任意鍵繼續. . .

代碼分析:

					if(cnt==6){						
							printf("\n");
							cnt = 1;
							
						}
					else
					{
						printf(" ");
						cnt++;
					}

這裏對 cnt == 6時計數變量又重新初始化,對於大型程序比起使用 (cnt%6)的性能更好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章