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;
}