当前位置:   article > 正文

高级语言讲义2011计专(仅高级语言部分)

高级语言讲义2011计专(仅高级语言部分)

1.某公司采用公用电话传递数据,数据是四位的整数,为了安全。在传递过程中数据是加密的。加密规则如下,每位数字加5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,编一程序,请将输入的数据加密并输出加密结果。例如,输入的传递数据为3726, 输出的加密數据为1728.

  1. #include <stdio.h>
  2. void getpass(int n) {
  3. int arr[4];
  4. for(int i=0; i<4; i++) {
  5. int temp=(n%10+5)%10;
  6. arr[i]=temp;
  7. n/=10;
  8. }
  9. for(int i=0; i<4; i++)
  10. printf("%d",arr[i]);
  11. }
  12. int main() {
  13. getpass(3726);
  14. }

2.对于一个自然数,若为偶数,则把它除以2。若为奇数,则把它乘以3加1,经过如此有限次运算后,总可以得到自然数值1。编写程序,输入一个自然数,求经过多少次变换可得到自然数1。例如:输入22,输出STEP=16。

  1. #include <stdio.h>
  2. void getstep(int n) {
  3. int count=0;
  4. while(n!=1) {
  5. if(n%2==0)
  6. n/=2;
  7. else
  8. n=n*3+1;
  9. count++;
  10. }
  11. printf("%d",count);
  12. }
  13. int main() {
  14. getstep(22);
  15. }

3.平面有100个点,任意两点可以构成一个线段。编十个程序:输出在构成的所有线段中,长度最长的线段长度、两点(x1, y1), (x2, y2)之间的距离公式为

D=\sqrt{(x1-x2)^{2}+(y1-y2)^{2}}

  1. #include <stdio.h>
  2. #include <math.h>
  3. typedef struct point {
  4. double x,y;
  5. } point;
  6. double getdist(struct point p1,struct point p2) {
  7. return sqrt(pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2));
  8. }
  9. double mexlength() {
  10. struct point Points[100];
  11. for(int i=0; i<100; i++)
  12. scanf("%d %d",&Points[i].x,&Points[i].y);
  13. double max=0;
  14. for(int i=0; i<99; i++)
  15. for(int j=i+1; j<100; j++) {
  16. double temp=getdist(Points[i],Points[j]);
  17. if(temp>max)
  18. max=temp;
  19. }
  20. return max;
  21. }

4.排序问题,给定一个10*10的矩阵,编一程序,对a进行排序。要求:

●a[i1][j1]<=a[i1][j2],若j1<j2

●a[i1][j1]<=a[i2][j2],若i1<i2

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void sort(int *arr,int n) {
  4. for(int i=0; i<n-1; i++)
  5. for(int j=0; j<n-i-1; j++)
  6. if(arr[j]>arr[j+1]) {
  7. int temp=arr[j];
  8. arr[j]=arr[j+1];
  9. arr[j+1]=temp;
  10. }
  11. }
  12. int finsort(int **arr,int m,int n) {
  13. int *finarr=(int *)malloc(sizeof(int)*m*n);
  14. int k=0;
  15. for(int i=0; i<m; i++)
  16. for(int j=0; j<n; j++)
  17. finarr[k++]=arr[i][j];
  18. sort(finarr,m*n);
  19. k=0;
  20. for(int i=0; i<m; i++)
  21. for(int j=0; j<n; j++)
  22. arr[i][j]=finarr[k++];
  23. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/224035
推荐阅读
相关标签
  

闽ICP备14008679号