赞
踩
1.某公司采用公用电话传递数据,数据是四位的整数,为了安全。在传递过程中数据是加密的。加密规则如下,每位数字加5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,编一程序,请将输入的数据加密并输出加密结果。例如,输入的传递数据为3726, 输出的加密數据为1728.
- #include <stdio.h>
-
- void getpass(int n) {
- int arr[4];
- for(int i=0; i<4; i++) {
- int temp=(n%10+5)%10;
- arr[i]=temp;
- n/=10;
- }
- for(int i=0; i<4; i++)
- printf("%d",arr[i]);
- }
-
- int main() {
- getpass(3726);
- }
2.对于一个自然数,若为偶数,则把它除以2。若为奇数,则把它乘以3加1,经过如此有限次运算后,总可以得到自然数值1。编写程序,输入一个自然数,求经过多少次变换可得到自然数1。例如:输入22,输出STEP=16。
- #include <stdio.h>
-
- void getstep(int n) {
- int count=0;
- while(n!=1) {
- if(n%2==0)
- n/=2;
- else
- n=n*3+1;
- count++;
- }
- printf("%d",count);
- }
-
- int main() {
- getstep(22);
- }
3.平面有100个点,任意两点可以构成一个线段。编十个程序:输出在构成的所有线段中,长度最长的线段长度、两点(x1, y1), (x2, y2)之间的距离公式为
- #include <stdio.h>
- #include <math.h>
-
- typedef struct point {
- double x,y;
- } point;
-
- double getdist(struct point p1,struct point p2) {
- return sqrt(pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2));
- }
-
- double mexlength() {
- struct point Points[100];
- for(int i=0; i<100; i++)
- scanf("%d %d",&Points[i].x,&Points[i].y);
- double max=0;
- for(int i=0; i<99; i++)
- for(int j=i+1; j<100; j++) {
- double temp=getdist(Points[i],Points[j]);
- if(temp>max)
- max=temp;
- }
- 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++];
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。