//
// main.m
// C语言考试题库
//
// Created by MRBean on 15/5/20.
// Copyright (c) 2015年 MRBean. All rights reserved.
//
?
#import
?
/** 5 , 12题
* 判断一个数是否是质数
*
* @param x 要判断的数
*
* @return 返回0代表不是质数,1代表质数
*/
int isZhiShu(int x)
{
int count = 0;
for (int i=1; i<=x; i++) {
if (x%i==0) {
count++;
}
}
if (count==2) {
return 1;
}
return 0;
}
?
//=============================================================
?
/**
* 6.
* 写出一个计算三角形面积的函数
*/
typedef struct SanJiaoXing
{
double a;//三角形的一条边长度
double b;
double c;
?
}SanJiaoXing;//定义一个结构体变量,变量类型是 SanJiaoXing
?
double mianJi(SanJiaoXing s)//第6题计算三角形的面积
{
?
double area = 0;//三角形的面积
if (s.a +s.b >s.c && s.a +s.c >s.b && s.b +s.c >s.a )//能构成三角形的条件是任意两边之和大于第三边
{
double r = (s.a + s.b + s.c)/2;
area = sqrt(r*(r-s.a)*(r-s.b)*(r-s.c));//使用海伦公式来计算面积
printf("三角形的面积是 %g",area);
return area;
}
else
{
printf("不能构成三角形!");
return area;
?
}
?
?
}
//===============================================
?
/**
* 7.判断圆是否重叠
*
*/
?
//定义一个圆结构体
typedef struct Circle
{
double x;//圆心的x坐标
double y;//圆心的y坐标
double r;//圆的半径
}Circle;
?
int chongDie(Circle a,Circle b)
{
double distance = sqrt(pow(a.x-b.x, 2)+pow(a.y-b.y, 2));//圆心之间的距离
double radiusSum = a.r+b.r;
if(distance
{
printf("两个圆之间重叠!\n");
return 1;//重叠
}
else {
printf("两个圆不重叠!\n");
return 0;//不重叠
?
}
}
?
//====================================
/**
* 8.字符串加密
*
*/
?
char *JiaMi(char str[])
{
for (int i=0; str[i]; i++) {
if (str[i]=='z') {
str[i]='a';
}
else if (str[i]=='Z')
{
str[i]='Z';
}
else if ((str[i]>='A' && str[i]<='Y') || (str[i]>='a'&&str[i]<='y'))
{
str[i]++;
}
?
}
printf("加密之后的字符串是 %s",str);
return str;
}
?
//===============================================
/**
* 11.定义一个3个顶点(使用结构体),判断该3个点是否可以构成三角形,如果可以构成三角形,计算三角形的面积(海伦公式);否则打印”不能构成三角形”.
*
*/
?
//定义就一个点结构体类型
typedef struct
{
double x;
double y;
}MPoint;
?
//根据三角形的三个顶点计算其面积
double mianJi2(MPoint a,MPoint b,MPoint c)
{
double len1 = sqrt(pow(a.x-b.x, 2)+pow(a.y-b.y, 2));//ab之间的距离
double len2 = sqrt(pow(a.x-c.x, 2)+pow(a.y-c.y, 2));//ac之间的距离
double len3 = sqrt(pow(c.x-b.x, 2)+pow(c.y-b.y, 2));//cb之间的距离
double area = 0;//三角形的面积
if (len1+len2>len3 && len1+len3>len2 && len2+len3>len1)
{
double r = (len1 + len2 +len3)/2;
area = sqrt(r*(r-len1)*(r-len2)*(r-len3));
printf("三角形的面积是%g",area);
return area;
}
?
else
{
printf("这三个点不能构成三角形!");
return area;
}
?
}
?
?
//=================================================
?
?
?
?
?
?
?
?
?
int main(int argc, const char * argv[]) {
?
//==========================================
/**
* 1.输入两个正整数m,n。输出其最大公约数和最小公倍数
* 使用辗转相除法求两个数a,b的最大公约数c
*/
?
// int m;
// int n;
// printf("请输入两个数:\n");
// scanf("%d%d",&m,&n);
// int temp = m*n;//暂存m*n乘积,以便来计算最小公倍数
// int c = m%n;
// while (c!=0) {
// m = n;//除数作为被除数
// n = c;//余数作为除数
// c = m%n;
// }
// printf("最大公约数:%d,最小公倍数%d\n",n,temp/n);
?
// ==============================================
/**
* 2,输入一行字符串,分别统计大写字母和小写字母的个数
*/
?
// char str[1000];
// int count1 = 0;//小写个数个数
// int count2 = 0;//大写
// printf("请输入一个字符串\n");
// gets(str);
// for (int i=0; str[i]!='\0'; i++) {
// if (str[i]>='a' && str[i]<='z') {
// count1++;
// }
// else if (str[i]>='A' && str[i]<='Z') {
// count2++;
// }
// }
// printf("大写字母的个数是 %d,小写字母的个数是%d",count1,count2);
?
//================================================
?
/**
* 3,输入两个正整数,a和n 程序输出 a+aa+aaa+...(a...a)(n个a)的值
*/