吉林大学967-高级语言程序设计-2011

2011-1
//加密规则:每位数字加5,然后用和除以10的余数代替该数字,
//再将第一位和第四位交换,第二位和第三位交换.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 4
int main() {
	int a[N] = { 3,7,2,6 };

	int i;
	int temp;
	for (i = 0; i < N; i++) {
		a[i] += 5;
		a[i] %= 10;
	}
	for (i = 0; i < N / 2; i++) {
		temp = a[i];
		a[i] = a[N - i-1];
		a[N - i - 1] = temp;
	}
	for (i = 0; i < N; i++)
		printf("%d",a[i]);
	system("pause");
	return 0;
}

2011-2
//对于一个自然数,若为偶数,则把它除以2,若为奇数,
//则把它乘以3加1,经过如此有限次运算后边,总可以得到自然数值1.
//编写程序,输入一个自然数,求经过多少次变换后可得到自然数1
//例如:输入22,输出STEP=16
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
	int n = 9;
	int step = 0;
	do{
		if (n % 2 != 0) {
			n = n * 3 + 1;
			step++;
		}
		if (n == 1)
			break;
		if (n % 2 == 0) {
			n /= 2;
			step++;
		}
	} while (n >1);
	printf("step=%d",step);
	system("pause");
	return 0;
}

2011-3
//平面有100个点,任意两点可以构成一个线段.
//编写一个程序,输出在构成的所有线段中,长度
//最长的线段长度.
//两点(x1,y1),(x2,y2)之间的距离公式为:
//D=sqrt((x1-x2)^2+(y1-y2)^2)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 5
struct Point {
	double x, y;
};
double plen(Point p1, Point p2) {
	double result = sqrt(pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2));
	return result;
}
int main() {
	Point p[N];
	int i,j;
	double max;
	for (i = 0; i < N; i++) {
		scanf("%lf,%lf",&p[i].x,&p[i].y);
	}
	max = plen(p[0], p[0]);
	for (i = 0; i < N; i++)
		for (j = i+1; j < N; j++) {
			if (max < plen(p[i],p[j])) {
				max = plen(p[i], p[j]);
			}
		}
	printf("the max length:%lf",max);
	system("pause");
	return 0;
}

2011-4
//排序问题,给定一个10*10的矩阵a,编写一程序,对a
//进行排序。要求:
//a[i1][j1]<=a[i1][j2]    若j1<j2
//a[i1][j1]<=a[i2][j2]	  若i1<i2
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a[100] = {
		1,2,3,4,5,6,7,8,9,10,
		1,2,3,4,5,6,7,8,9,10,
		1,2,3,4,5,6,7,8,9,10 ,
		1,2,3,4,5,6,7,8,9,10 ,
		1,2,3,4,5,6,7,8,9,10 ,
		1,2,3,4,5,6,7,8,9,10 ,
		1,2,3,4,5,6,7,8,9,10 ,
		1,2,3,4,5,6,7,8,9,10 ,
		1,2,3,4,5,6,7,8,9,10 ,
		1,2,3,4,5,6,7,8,9,10 };
	int b[10][10];
	int i, j, k, e;
	//输出原始矩阵
	for (i = 0; i < 100; i++) {
		printf("%-4d", a[i]);
		if (i != 0 && (i + 1) % 10 == 0) {
			printf("\n");
		}
	}
	printf("\n\n");
	//对100个数冒泡排序
	for (i = 0; i < 100; i++)
		for (j = 0; j < 100 - i; j++) {
			if (a[j] < a[j + 1]) {
				e = a[j];
				a[j] = a[j + 1];
				a[j + 1] = e;
			}
		}
	//输出排序后的矩阵
	for (i = 0; i < 100; i++) {
		printf("%-4d", a[i]);
		if (i != 0 && (i + 1) % 10 == 0) {
			printf("\n");
		}
	}
	printf("\n\n");
	//将a中的数据复制到b中
	k = 0;
	for (i = 0; i < 10; i++)
		for (j = 0; j < 10; j++) {
			b[i][j] = a[k];
			k++;
		}
	for (i = 0; i < 10; i++){
		for (j = 0; j < 10; j++) {
			printf("%-4d", b[i][j]);
		}
		printf("\n");
	}
	printf("\n");
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36109528/article/details/86231186