1.不重复的3位数
问题描述:用1,2,3,4共4个数字,能组成多好个相互不同且无重复的3位数?并打印。
#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.结束问题
问题描述:小明有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.删除*号
问题描述:现有一串字符需要输入,规定输入的字符串中只能包含字母和*号,编写程序,实现以下功能:除了字符串前后的*浩之外,将字符串中其他的*号全部去除。如: 输入****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已经拿走了一份鱼,于是他将剩下的鱼平分成为5份,扔掉多余 的一条,然后拿走了自己的一份,依次类推。问这5人至少合伙捕捞到多少条鱼?每人醒来后看到的鱼的条数?
提示:递归解决
5.掷骰子
问题描述:两个人轮流投掷,并将每次投掷的点数加起来,点数大的获得胜利,相同则为平局,模拟游戏过程,并求出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.字符串匹配
问题描述:输入一串字符,找出字符中匹配括号()的数目;
网友评论