二面算法題

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ù)目;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,319評論 0 10
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,007評論 0 2
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,707評論 0 5
  • 一、PyCharm的基本使用1.1、注釋:為了方便自己或者其他人查看單行注釋:用 # 號單行注釋多行注釋: 用 ...
    IIronMan閱讀 9,077評論 3 18
  • 又來到了熟悉的小村莊 一切都還在 只是少了你 花開花落 春去秋來 你在哪里 你可知道 我在想你
    8ef915bea7ad閱讀 128評論 0 0

友情鏈接更多精彩內(nèi)容