結構:原題-變式1-變式2
- 1:原題
- 2:變式1
- 3:變式2
1:原題
C語言100題之第一題:四個數字分別為1,2,3,4,能組成多少個互不相同且無重復數字的三位數,它們分別是什么?
分析 :三位數字中的每一位均可以是1,2,3,4;通過三層回圈將三位數字表達出來,再去掉重復的數字即可,`
代碼:
int main()
{
int i,j,k,m=0;
printf("They are as follows:\n");
for(i=1;i<=4;i+=1)
{
for(j=1;j<=4;j+=1)
{
for(k=1;k<=4;k+=1)
if(i!=k&&i!=j&&k!=j)
{
printf("%d%d%d ",i,j,k);
m+=1;
}
}
}
printf("\nThe total of the numbers is %d.\n",m);
}
2:變式1
如果是非連續的若干個正整數進行相同情況排列呢?
分析:回圈此時應只起次數控制的作用,
可將數字存到某個陣列中,用回圈變數呼叫陣列元素即可,
代碼:
int main()
{
int a[4]={1,3,6,8},m=0;
printf("They are as follows:\n");
for(i=0;i<4;i+=1)
{
for(j=0;j<4;j+=1)
{
for(k=0;k<4;k+=1)
if(a[i]!=a[j]&&a[i]!=a[k]&&a[j]!=a[k])
{
printf("%d%d%d ",a[i],a[j],a[k]);
m+=1;
}
}
}
printf("\nThe total of the numbers is %d.",m);
}
3:變式2
若該組數當中含有數字0,怎么辦?
分析:將第一層回圈中含有數字零的陣列元素下標去掉即可,
代碼:
int main()
{
int a[4]={0,3,6,8},m=0;
printf("They are as follows:\n");
for(i=1;i<4;i+=1)
{
for(j=0;j<4;j+=1)
{
for(k=0;k<4;k+=1)
if(a[i]!=a[j]&&a[i]!=a[k]&&a[j]!=a[k])
{
printf("%d%d%d ",a[i],a[j],a[k]);
m+=1;
}
}
}
printf("\nThe total of the numbers is %d.",m);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/243872.html
標籤:其他
