我有一個區間(m,n),那裏我必須打印出所有具有不同數字的數字。我寫了這個,但它只適用於2位數字。我根本不知道如何使它適用於除2位數字之外的任何內容。我想象一下,如果我爲循環添加儘可能多的數字,它將起作用,但間隔(m,n)未指定,因此它必須是可靠的。我一直試圖在6個小時內自己解決這個問題,我絕對厭倦了。X元素數組中的重複項
輸入97,113; 輸出97,98,102,103,104,105,106,107,108,109 數字99,100,101,110+不會被打印,因爲它們有兩個數字,即 相同。
#include<conio.h>
#include<math.h>
#include<stdio.h>
int main()
{
int m,n,test,checker=0;
scanf("%d%d",&m,&n);
if(m>n)
{
int holder=n;
n=m;
m=holder;
}
for(int start=m;start<=n;start++)
{
int itemCount=floor(log10(abs(start)))+1;
int nums[itemCount];
int index=0;
test=start;
do
{
int nextVal = test % 10;
nums[index++]=nextVal;
test = test/10;
}while(test>0);
for (int i = 0; i < itemCount - 1; i++)
{ // read comment by @nbro
for (int j = i + 1; j < itemCount; j++)
{
if (nums[i] == nums[j])
{
checker++;
}
}
if(checker==0)printf("%d ",start);
}
checker=0;
}
}
嗨。發佈代碼時,您可以通過正確的方式提高可讀性。許多編輯有某種自動縮進功能。另外,你能提供一些預期的輸入/輸出的例子嗎? – user1582024
那麼,你想打印給定數字的排列嗎? –
除了'main'中的所有工作之外,還要創建一個函數'bool is_unique_digits(int num)',並且只在該函數內部工作,如果傳遞的數字具有唯一數字則返回'true',否則返回'false'。然後它變成一個簡單的循環在'main' - 'for(int i = startnum; i
PaulMcKenzie