习题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');
}
}