C 經典算法

選擇排序法:



 
int a[10] = {3,2,4,1,5,6,9,6,7,0};

    int n = 0;

    

    for (int i = 0; i<10-1; i++) {

        for (int j = i+1; j<10; j++) {

            if (a[i]>a[j]) {

                n = a[i];

                a[i]  = a[j];

                a[j] = n;

            }

        }

    }

    for (int i = 0; i<10; i++) {

        printf("%3d",a[i]);



    }



一、 編程實現對鍵盤輸入的英文名句子進行加密。用加密方法爲,當內容爲英文字母時其在26字母中的其後第三個字母代替該字母,若爲其它字符時不變。


void main()

    

    {

        

        char str[1024];

        

        int i=0;

        

        printf("請輸入一串字符:");

        

        scanf("%s",str);

        

        while(str[i]!='\0')

            

        {

            

            if((str[i]>='a'&&str[i]<='w')||(str[i]>='A'&&str[i]<='W'))

                

                str[i]+=3;

            

            else if((str[i]>='x'&&str[i]<='z')||(str[i]>='X'&&str[i]<='Z'))

                

                str[i]=str[i]-26+3;

            

            i++;

            

        }

        

        printf("加密後的字符串爲%s\n",str);

        

    }

 



三、 從鍵盤輸入一指定金額(以元爲單位,如345.78),而後顯示支付該金額的各類面額人民幣數量,要求顯示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少張。


    

 

 
void main()

    {

        int money[9]={10000,5000,1000,500,200,100,10,5,1};

        float temp;

        int data;

        int result[9];

        int i;

        printf("請輸入一金額(精確到分):");

        scanf("%f",&temp);

        if(temp<0)

        {

            printf("輸入金額小於0,錯誤");

            exit(0);

        }

        data=temp*100;

        for(i=0;i<9;i++)

        {

            result[i]=data/money[i];

            data=data%money[i];

            if(i==6)

                printf("%d角%d張;",money[i]/10,result[i]);

            else if(i>6)

                printf("%d分%d張;",money[i],result[i]);

            else

                printf("%d元%d張;",money[i]/100,result[i]);

        }

    }


五、 編程在一個已知的字符串中查找最長單詞,假定字符串中只含字母和空格,空格用來分隔不一樣單詞。


 

  
void main()

    {

        char str[]={"ASEEsdffw WEsdfe joiejorjerojeojr ASOJGWOEJIOJERJJ wejr"};

        int len=0;

        int temp;

        int point;

        int i=0;

        while(str[i]!='\0')

        {

            temp=0;

            while(str[i]!=' '&&str[i]!='\0')

            {

                temp++;

                i++;

            }

            if(len<temp)

            {

                len=temp;

                point=i-len;

            }

            if(str[i]=='\0')

                break;

            else

                i++;

        }

        while(str[point]!=' '&&str[point]!='\0')

        {

            printf("%c",str[point]);

            point++;

        }

        printf("\n");

    }





六、 模擬n我的參加選舉的過程,並輸出選舉結果:假設候選人有四人,分別用A、B、C、D表示,當選某候選人時直接輸入其編號(編號由計算機隨機產生),若輸入的不是A、B、C、D則視爲無效票,選舉結束後按得票數從高到低輸出候選人編號和所得票數。

 

#define N 100

    void main()

    {

        int num[5]={0,0,0,0,0};

        int temp;

        int i,j;

        char str[]={"ABCD0"};

        srand(time(0));

        for(i=0;i<100;i++)

        {

            temp=1+(int)(5.0*rand()/(RAND_MAX+1.0));

            printf("%d ",temp);

            switch(temp)

            {

                case 1:

                    num[0]++;

                    break;

                case 2:

                    num[1]++;

                    break;

                case 3:

                    num[2]++;

                    break;

                case 4:

                    num[3]++;

                    break;

                case 5:

                    num[4]++;

                    break;

            }

        }

        for(i=0;i<4;i++)

        {

            for(j=i+1;j<5;j++)

            {

                if(num[i]<num[j])

                {

                    temp=num[j];

                    num[j]=num[i];

                    num[i]=temp;

                    temp=str[i];

                    str[i]=str[j];

                    str[j]=temp;

                }

            }

            printf("\n編號爲%c,得票數爲%d",str[i],num[i]);

        }

    }




十、輸入一個五位之內的正整數,(1)判斷它是一個幾位數;(2)請按序輸出其各位數字;(3)逆序輸出其各位數字。

如輸入:56439,輸出:5位數

          5,6,4,3,9

                9,3,4,6,5





 
void main()

    {

        int n=0;

        int inter;

        int ys;

        int num[5];

        int i;

        printf("請輸入一個5位之內的正整數:");

        )scanf("%d",&inter);

        if(inter<=0||inter>99999)

        {

            printf("輸入錯誤");

           

        }

        for(i=0;i<5;i++)

        {

            if(inter/int(pow(10,4-i))!=0)

                break;

        }

        n=5-i; //位數

        printf("%d位數\n",n);

        ys=inter; //餘數

        for(i=0;i<n;i++)

        {

            num[i]=ys/int(pow(10,n-i-1));

            ys=ys%int(pow(10,n-i-1));

        }

        for(i=0;i<n;i++)

            printf("%d ",num[i]);

        printf("\n");

        for(i=n-1;i>=0;i--)

            printf("%d ",num[i]);

    }


從0~1000000取值  找出重複的數//QQ號



   
int a[1000000] = {0};

    int b[1000000] = {0};

    

    for (int i = 0; i<1000000; i++) {

        a[i] = arc4random()%1000000;

        b[a[i]]++;

       // printf("%d\t",a[i]);

    }

    for (int i = 0; i<1000000; i++) {

        if (b[i]>1) {

            printf("\n%d",i);

        }

    }
  
相關文章
相關標籤/搜索