//
// main.m
// C语言考试题库
//
// Created by MRBean on 15/5/20.
// Copyright (c) 2015年 MRBean. All rights reserved.
//
#import <Foundation/Foundation.h>
/** 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<radiusSum)//圆心之间的距离小于半径之和
{
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)的值
*/
// printf("请输入两个整数\n");
// int a;
// int n;
// int fac = 0;//形式如 a,aa,aaa...的表达式
// int sum = 0;//计算和
// scanf("%d%d",&a,&n);
// for (int i=0; i<n; i++)
// {
// fac = fac*10+a;// aa = a*10+a,后一个等于前一个数*10+a
// sum +=fac;
//
// }
// printf("a+aa+aaa.... = %d\n",sum);
//=======================================================
/**
* 4,输入一个正整数n,求 1!+2!+...n!的值(n!表示n的阶乘)
*/
// int sum = 0;//记录阶乘之和
// int fac = 1;//记录 一个数的阶乘
// int n;//个数限制
// printf("请输入一个不大于10的整数\n");
// scanf("%d",&n);
// for (int i=1; i<=n; i++) {
// fac *=i;
// sum +=fac;
// }
//
// printf("1!+2!+...+n! = %d",sum);
//==================================================
/**
* 5,写一个判断质数的函数,在主函数中输入一个整数,输出是否为质数的信息
*/
// int n;
// printf("请输入一个整数");
// scanf("%d",&n);
// if (isZhiShu(n)==1) {
// printf("是质数!\n");
// }
// else
// {
// printf("不是质数!");
// }
//==================================================
/**
* 6,定义一个结构体包含三角形三边长度,写一个函数,输入这个结构体变量,返回此三角形面积(注意三角形是否有效问题)
*/
// SanJiaoXing s ;
// printf("请输入三角形的三边\n");
// scanf("%lf%lf%lf",&s.a,&s.b,&s.c);
// mianJi(s);//计算三角形的面积
//
//=================================================================
/**
* 7,定义一个结构体包含圆心和半径,写一个函数,输入两个结构体变量,返回两个圆是否有重叠部分
*/
// Circle a;//第一个圆
// Circle b;//第二个圆
// printf("请输入第一个圆的圆心和半径\n");
// scanf("%lf%lf%lf",&a.x,&a.y,&a.r);
// printf("请输入第二个圆的圆心和半径\n");
// scanf("%lf%lf%lf",&b.x,&b.y,&b.r);
// chongDie(a, b);
//================================================================
/**
* 8,写一个函数,将字符串加密,加密规则为,a->b z->a 以此类推。
*/
// char s[1000];
// gets(s);
// JiaMi(s);
//================================================================
/**
* 9,用户输入10个数,返回最大和最小值
*/
// int a[10];
// int max = 0;
// int min = 0;
// printf("输入10个数\n");
// for (int i=0; i<10; i++)
// {
// scanf("%d",&a[i]);
// if(i==0)
// {
// max = a[0];
// min = a[0];
// }
//
// if (max<a[i])
// {
// max=a[i];
// }
//
// if (min>a[i])
// {
// min =a[i];
// }
//
// }
// printf("最大值为%d\n最小值为%d\n",max,min);
//
// printf("请输入十个数\n");
// int a[10];
// for (int i=0; i<10; i++) {
// scanf("%d",&a[i]);
// }
// int max = a[0];//最大值
// int min = a[0];//最小值
// for (int i=1; i<10; i++) {
// if (max<a[i]) {
// max = a[i];
// }
// if (min>a[i]) {
// min = a[i];
// }
// }
//
// printf("最大值是 %d,最小值是 %d",max,min);
//
//===================================================================
/**
*
10,下列代码有和问题,请指出
int * p;
{
int a;//a出括号后会被释放
p = &a;
}
*p = 3;// 问题是: 野指针异常
*/
//===================================================================
/**
* 11.定义一个3个顶点(使用结构体),判断该3个点是否可以构成三角形,如果可以构成三角形,计算三角形的面积(海伦公式);否则打印”不能构成三角形”.
*/
// MPoint a;//三角形的顶点
// MPoint b;
// MPoint c;
// printf("请依次输入3个点!\n");
// scanf("%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y);
// mianJi2(a, b, c);
//===================================================================
/**
* 12.打印100个质数
*/
// int count = 0;//已经打印的质数的个数
// for (int i=1; count<=100; i++)//循环条件是在 count<=100也就是没有找到100个质数就循环下去
// {
// if (isZhiShu(i)==1) {//遇到一个质数
// printf("%d ",i);
// count++;
// }
//
// }
//===================================================================
/**
* 13.用户输入10个数,计算平均值
*/
// double a[10];//用来保存10个数
// double avg;//平均值
// double sum = 0.0;
// printf("请输入十个数\n");
// for (int i=0; i<10; i++)
// {
// scanf("%lf",&a[i]);
// sum+=a[i];
// }
//
// avg = sum/10;
// printf("平均值是 %g",avg);
//==================================================
/**
* 14.计算 1-2+3-4+5-6+...100的结果
*/
// int sum = 0;
// for ( int i=1; i<=100; i++)
// {
// if (i%2==0)
// {
// sum-=i;
// }
// else
// {
// sum+=i;
// }
// }
//
// printf("和是 %d",sum);
//=======================================================
/**
* 15.输入正整数n 程序输出 1/2+2/3+...n/n+1的值
*/
// int sum = 0;
// int n;
// printf("请输入一个正整数!\n");
// scanf("%d",&n);
// for (int i=1; i<=n; i++)
// {
// sum+=i/(i+1);
// }
// printf("计算之和是 %d",sum);
//===================================================================
return 0;
}
原文地址:http://blog.csdn.net/yangbingbinga/article/details/45892147