1.不重復(fù)的3位數(shù)
問題描述:用1,2,3,4共4個數(shù)字,能組成多好個相互不同且無重復(fù)的3位數(shù)?并打印。
#include<stdio.h>
int main(void)
{
int a[]={1,2,3,4},count=0;
int i,j,k,b[3];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
{
if(a[i]!=a[j]&&a[j]!=a[k]&&a[k]!=a[i])
{ count++;
printf("%d%d%d ",a[i],a[j],a[k]);
if(count%5==0) printf("\n");
}
}
}
輸出:
123 124 132 134 142
143 213 214 231 234
241 243 312 314 321
324 341 342 412 413
421 423 431 432
2.結(jié)束問題
問題描述:小明有5本新書,要借給A,B,C三位小朋友,若每人每次只能借一本書,則有多少種借法?分別是?
#include<stdio.h>
int main(void)
{
char newBook[5]="ABCDE";
int count=0;
int i,j,k;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
for(k=0;k<5;k++)
{
if(newBook[i]!=newBook[j] &&newBook[j]!=newBook[k] && newBook[k]!=newBook[i] )
{
printf("%c-%c-%c\n",newBook[k],newBook[j],newBook[i]);
count++;
}
}
printf("一共%d種",count);
}
輸出:
C-B-A D-B-A E-B-A B-C-A D-C-A E-C-A B-D-A C-D-A E-D-A B-E-A
C-E-A D-E-A C-A-B D-A-B E-A-B A-C-B D-C-B E-C-B A-D-B C-D-B
E-D-B A-E-B C-E-B D-E-B B-A-C D-A-C E-A-C A-B-C D-B-C E-B-C
A-D-C B-D-C E-D-C A-E-C B-E-C D-E-C B-A-D C-A-D E-A-D A-B-D
C-B-D E-B-D A-C-D B-C-D E-C-D A-E-D B-E-D C-E-D B-A-E C-A-E
D-A-E A-B-E C-B-E D-B-E A-C-E B-C-E D-C-E A-D-E B-D-E C-D-E
一共60種
3.刪除*號
問題描述:現(xiàn)有一串字符需要輸入,規(guī)定輸入的字符串中只能包含字母和*號,編寫程序,實(shí)現(xiàn)以下功能:除了字符串前后的*浩之外,將字符串中其他的*號全部去除。如: 輸入****A*BC*DEF*G***,輸出****ABCDEFG***
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[100]="****A*BCD****E*F*G***",b[100];
int i,m,n,j;
int count=0,k=0;
for(i=0;i<strlen(a);i++)
{
if((a[i]>64&&a[i]<92)||(a[i]>96&&a[i]<113))
count++;
if(count==1) m=i-1;
}
for(j=0;j<strlen(a)+1;j++)
{
if(j>m-1 &&count&& a[j]=='*') continue;
if(j>m-1 && a[j]!='*') count--;
b[k++]=a[j];
}
for(j=0;j<strlen(b);j++) printf("%c",b[j]);
}
輸出:
****ABCDEFG***
4.分魚問題
問題描述:A B C D E 五個人合伙夜間捕撈X條魚,凌晨時疲倦不堪,于是各自在河邊的樹叢中睡著了。第二天,A第一個醒來,他將魚平分成5分,把多余的一條魚扔回河里,然后拿著自己的一份回家了;B第二個醒來,但不知道A已經(jīng)拿走了一份魚,于是他將剩下的魚平分成為5份,扔掉多余 的一條,然后拿走了自己的一份,依次類推。問這5人至少合伙捕撈到多少條魚?每人醒來后看到的魚的條數(shù)?
提示:遞歸解決
5.擲骰子
問題描述:兩個人輪流投擲,并將每次投擲的點(diǎn)數(shù)加起來,點(diǎn)數(shù)大的獲得勝利,相同則為平局,模擬游戲過程,并求出100局后的勝出者。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int compare(int m,int n);
int main(void)
{
int i;
srand((unsigned)time(NULL));
for(i=0;i<100;i++)
{
compare((rand()%6+1)+(rand()%6+1),(rand()%6+1)+(rand()%6+1));
}
printf("\n第%d場:",i);
if(compare((rand()%6+1)+(rand()%6+1),(rand()%6+1)+(rand()%6+1))==1) printf("甲勝");
else if(compare((rand()%6+1)+(rand()%6+1),(rand()%6+1)+(rand()%6+1))==0) printf("平局");
else printf("乙勝");
}
int compare(int m,int n)
{
if(m>n) return 1;
else if(m==n) return 0;
else return -1;
}
輸出:
第100場:乙勝
.
.
.
6.字符串匹配
問題描述:輸入一串字符,找出字符中匹配括號()的數(shù)目;