习题8

1、编程实现任意输入10个整数,将这10个数字降序排列输出。(分别用选择排序、冒泡排序、插入排序完成)

1.1选择排序

#include <stdio.h>

void main()

{

      int i,j,x[10],t,n;//n表示位置

      printf("请输入10个整数:");

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

           scanf("%d",&x[i]);

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

      {

           n=i;

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

                 if(x[n]<x[j])

                      n=j;

           if(n!=i)

           {

                 t=x[i];

                 x[i]=x[n];

                 x[n]=t;

           }

      }

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

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

      printf("\n");

}

 

1.2冒泡排序

#include <stdio.h>

void main()

{

      int i,j,x[10],t;//n表示位置

      printf("请输入10个整数:");

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

           scanf("%d",&x[i]);

      for(i=1;i<10;i++)

      {

           for(j=0;j<10-i;j++)

                 if(x[j]<x[j+1])

                 {

                      t=x[j];

                      x[j]=x[j+1];

                      x[j+1]=t;

                 }

      }

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

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

      printf("\n");

}

 

1.3插入排序

#include <stdio.h>

void main()

{

      int i,j,x[10],t,n;//n插入的位置

      printf("请输入10个整数:");

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

           scanf("%d",&x[i]);

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

      {

           t=x[i];

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

                 if(x[j]<t)

                      break;

           if(j==i)

                 continue;

           for(n=i;n>j;n--)

                 x[n]=x[n-1];

           x[n]=t;

      }

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

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

      printf("\n");

}

 

 

 

 

2、编程实现凯撒密码加密,任意输入一段原文后请输出密文。求余

原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

#include<stdio.h>

void main()

{

      int i;

      char x[100];

      printf("请输入一段原文:");

      gets(x);

      printf("输出的密文为:");

      for(i=0;x[i]!='\0';i++)

      {

           if(x[i]>='A' && x[i]<='Z')

           {

                 x[i]+=3;

                 if(x[i]>'Z')

                 x[i]=((x[i]-'A')%26)+'A';

           }

           else if(x[i]>='a' && x[i]<='z')

           {

                 x[i]+=3;

                 if(x[i]>'z')

                 x[i]=((x[i]-'a')%26)+'a';

           }

      }

      puts(x);

}

 

3、编程实现任意输入5个手机号码,最后输出手机号码时第4位到第7位用*表示

#include<stdio.h>

#include<string.h>

void main()

{

      int i,j,n=0,a=0;//a表示标识符

      char x[5][12]={0,0};

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

      {

           a:

           printf("请输入第%d个手机号码:",i+1);

           gets(x[i]);

           for(j=0;j<11;j++)

           {

                 n=strlen(x[i]);

                 while(n!=11)

                 {

                 printf("手机号码有误,重新输入!\n");

                 goto a;

                 }

           }

      }

      printf("号码部分隐藏后的效果:\n");

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

      {

           for(j=0;j<11;j++)

                 {

                      if(j>2 && j<7)

                            putchar('*');

                      else

                            putchar(x[i][j]);

                 }

           putchar('\n');

      }

}

 

posted @ 2021-12-14 20:15  小耿想努力呀  阅读(203)  评论(0编辑  收藏  举报