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

        }

    }
  
相关文章
相关标签/搜索