2014-1
//验证哥德巴赫猜想
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//判断素数
bool isPrim(int n) {
int i;
for (i = 2; i <= sqrt(n); i++) {
if (n%i == 0)
return false;
}
return true;
}
void gdbh(int n) {
int i,j;
//创建数组存储区间内的所有素数
int *Prim = (int *)malloc(n*sizeof(int *));
//遍历判断并填充数组
for (i = 2; i < n; i++) {
if (isPrim(i))
Prim[i - 2] = i;
else
Prim[i - 2] = 0;
}
//暴力方法,验证匹配哥德巴赫猜想
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (n == Prim[i] + Prim[j] && Prim[i] < Prim[j]) {
printf("%d=%d+%d\n",n,Prim[i],Prim[j]);
}
}
}
}
int main() {
int n = 0;
scanf("%d",&n);
gdbh(n);
system("pause");
return 0;
}
2014-2
//输入ABCD四个坐标,假设ABC可以组成一个三角形,判断D不在ABC中
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 4
//定义点的结构体
struct Point {
float x, y;
};
//计算p1-p2,并返回计算后的点
Point decPoint(Point p1, Point p2) {
Point p;
p.x = p1.x - p2.x;
p.y = p1.y - p2.y;
return p;
}
//计算2点叉乘p1*p2
float multiPoint(Point p1, Point p2) {
float result;
result = p1.x*p2.y - p1.y*p2.x;
return result;
}
//计算3点叉乘p1*p2*p3
float multiPoint(Point p1, Point p2, Point p3) {
float result;
result = multiPoint(decPoint(p1,p2),decPoint(p3,p2));
return result;
}
//精度控制
int sign(float x) {
float eps = 1e-8;
if (fabs(x) < eps)
return 0;
if (x > 0)
return 1;
return -1;
}
int main() {
Point p[N];
int sgn[N - 1];
int i;
p[0].x = 0.0; p[0].y = 1.0;
p[1].x = 3.0; p[1].y = 3.0;
p[2].x = 4.0; p[2].y = 4.0;
p[3].x = 5.0; p[3].y = 5.0;
//for (i = 0; i < N; i++) {
// scanf("%f,%f",&p[i].x,p[i].y);
//}
sgn[0] = sign(multiPoint(p[0],p[1],p[3]));
sgn[1] = sign(multiPoint(p[1], p[2], p[3]));
sgn[2] = sign(multiPoint(p[2], p[0], p[3]));
if (sgn[0] == 0 || sgn[1] == 0 || sgn[2] == 0)
printf("Point of D is on the triangle");
else if (sgn[0] == sgn[1] == sgn[2])
printf("Point of D in on the triangle");
else
printf("Point of D in out of the triangle");
system("pause");
return 0;
}
2014-3
//为了进行高精度的计算,我们可以用一个数组表示一个整数,一个数组元
//素表示整数一位,396可以用数组A表示,即A[1]=6,A[2]=9,A[3]=3.编写一
//个函数计算这样表示的两个整数,和存放在C中.注:假设不会超过100位.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define M 100
//大整数加法
void BigSum(char *A, char *B,char *C) {
int la = strlen(A), lb = strlen(B); //获取大整数的长度
int lmax = la > lb?la:lb;
int i, j,k=M;
int r=0; //进位数
int temp;
//char *C = (char*)malloc((lmax+ 1)*sizeof(char*));
//char C[M + 1] = { 0 };
for (i = la-1, j = lb-1; i >=0&&j >=0; i--, j--) {
temp = (A[i] - '0') + (B[j] - '0') + r;
C[k--] = temp % 10;
r = temp / 10;
}
if (la > lb) {
for (; i >= 0; i--) {
temp = A[i] - '0' + r;
C[k--] = temp % 10;
r = temp / 10;
}
}
else if (la < lb) {
for (; j >= 0; j--) {
temp = B[j] - '0' + r;
C[k--] = temp % 10;
r = temp / 10;
}
}
else {
C[k--] = r;
}
}
int main() {
int i, j;
char A[M], B[M], C[M + 1] = { 0 };
gets_s(A);
gets_s(B);
BigSum(A, B,C);
for (i =0; i <M-1; i++)
if (C[i])
break;
//输出
for (j = i; j<M+1; j++)
printf("%d", C[j]);
system("pause");
return 0;
}
2014-4
//已知平面有100个点,假设任意三个可以组成三角形,输入100个点,输出最大
//的三角形的面积
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 4
struct Point {
double x, y;
};
Point decPoint(Point p1,Point p2) {
Point p;
p.x = p1.x - p2.x;
p.y = p1.y - p2.y;
return p;
}
double multiPoint(Point p1,Point p2) {
double result;
result = (p1.x - p2.y)*(p2.x - p1.y);
return result;
}
double area(Point p1, Point p2, Point p3) {
double area;
area = fabs(multiPoint(decPoint(p1,p2),decPoint(p1,p3)));
return area;
}
int main() {
int i, j, k;
double maxArea=0;
Point p[N];
p[0].x = 0.0; p[0].y = 1.0;
p[1].x = 3.0; p[1].y = 3.0;
p[2].x = 4.0; p[2].y = 4.0;
p[3].x = 5.0; p[3].y = 5.0;
for (i = 0; i < N; i++)
for (j = i+1; j < N; j++)
for (k = j+1; k<N;k++){
if (area(p[i], p[j], p[k])>maxArea)
maxArea = area(p[i], p[j], p[k]);
}
printf("maxArea:%f",maxArea);
system("pause");
return 0;
}
吉林大学967-高级语言程序设计-2014
猜你喜欢
转载自blog.csdn.net/qq_36109528/article/details/86231522
今日推荐
周排行