高级语言程序题
1.数字加密
/*1.数字加密*/
void data(){
int n;
scanf("%d",&n);
int num = 0;
while(n!=0){
int temp = n% 10;
temp = (temp + 5) % 10; //加密
num = num * 10 +temp;
n /= 10;
}
printf("%d\n",num)
}
2.计算步数
/*2.计算步数*/
int calstep(int x, int step)
{
if(x == 1){
return step;
}
if(x % 2 == 0 ){
x = x/2;
}
else if(x % 2 == 1){
x = x*3 + 1;
}
calstep(x,++step);
}
3.计算线段最大长度
#include<math.h>;
typedef struct Point{
int x,y; //点的坐标
}Point;
double f(Point a , Point b){
return (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y);
}
void MaxLength(){
Point A[100];
for(int i = 0; i < 100; i++)
scanf("%d %d",&(A[i].x),&(A[i].y));
double maxlength = 0; //初始化最大长度为0
for(int i = 0; i < 99; i++){
for(int j = i + 1; j < 100; j++)
{
double length = f(A[i],A[j]); //计算两点间线段长度
if(length > maxlength)
{
maxlength = length //更新maxlength
}
}
}
printf("最长的线段长度为%lf",sqrt(maxlength));
}
4.矩阵排序
/*4.矩阵排序*/
/*算法思想:
1)创建一个一维数组B,依次存储二维数组A中的每个元素,然后对数组B进行冒泡排序
2)将数组B的内容依次赋值到二维数组A中*/
void swap(int *a,int *b){
int temp = *a;
*a = *b;
*b = temp;
}
void BubbleSort(int A[], int n) //冒泡排序
{
for(int i = n-1; i > 0; i--)
for(int j = 0;j < i; j++)
if(A[j] > A[j+1])
swap(&A[j],&A[j+1]);
}
void Sort(int A[10][10], int M, int N)
{
int B[M*N]; //创建一个一维数组B,依次存储二维数组A中的每个元素
int k = 0;
for(int i =0; i < M; i++)
{
for(int j = 0; j < N; j++)
{
B[k++] = A[i][j]; //按行存储
}
}
BubbleSort(B,M*N); //数组B进行冒泡排序
k = 0;
for(int i = 0; i < M; i++) //将数组B的内容依次赋值到二维数组A中
for(int j = 0; j < N; j++)
A[i][j] = B[k++];
}