本文主要是介绍高级语言讲义2011软专(仅高级语言部分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.某公司采用公用电话传递敷据,数据是四位的整数,为了安全,在传递过程中数据是加密的。加密规则如下,每位数字加5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,编程序,请将输入的数据加密并输出加密结果。例如,输入的传递数据为3726, 输出的加密数据为1728.
#include <stdio.h>int main() {int a[1000];int count = 0;int dat;scanf("%d",&dat);while(dat>0) {a[count++]=(dat%10+5)%10;dat/=10;}swap(&a[0],&a[3]);swap(&a[1],&a[2]);for(int i=count-1; i>=0; i--)printf("%d",a[i]);return 0;
}void swap(int *a,int *b) {int temp=*a;*a=*b;*b=temp;
}
2.对于一个自然敬,若为偶数,则把它除以2,若为奇数,则把它乘以3加1,经过如此有限次运算后,总可以得到自然数值1.编写程序,输入一个自然敷,求经过多少次变换可得到自然数1.例如:输入22, 输出STEP=16.
#include <stdio.h>int main() {int dat;int step=0;scanf("%d",&dat);while(dat!=1) {if(dat%2==0)dat/=2;elsedat=dat*3+1;step+=1;}printf("%d",step);return 0;
}
3.平面有10个点,任意两点可以构成个钱段.编写个程序:输出在构成的的所有线段中,长度最长的线段长度
#include <stdio.h>
#include <math.h>double fun(int a[100][2]) {double max=-1;double d;for(int i=0; i<100; i++)for(int j=i; j<100; j++) {d=sqrt(pow(a[i][1]-a[j][1],2)+pow(a[i][2]-a[j][2],2));if(max==-1&&d>0)max=d;else if(d>max)max=d;}return max;
}
4.排序问题,给定一个10*10的矩阵,编一程序,对a进行排序。要求:
●a[i1][j1]<=a[i1][j2],若j1<j2
●a[i1][j1]<=a[i2][j2],若i1<i2
#include <stdio.h>
#include <stdlib.h>void sort(int *arr,int n) {for(int i=0; i<n-1; i++)for(int j=0; j<n-i-1; j++)if(arr[j]>arr[j+1]) {int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}
}int finsort(int **arr,int m,int n) {int *finarr=(int *)malloc(sizeof(int)*m*n);int k=0;for(int i=0; i<m; i++)for(int j=0; j<n; j++)finarr[k++]=arr[i][j];sort(finarr,m*n);k=0;for(int i=0; i<m; i++)for(int j=0; j<n; j++)arr[i][j]=finarr[k++];
}
这篇关于高级语言讲义2011软专(仅高级语言部分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!