频道栏目
首页 > 资讯 > C语言 > 正文

C语言基础考试题

15-05-25        来源:[db:作者]  
收藏   我要投稿

//

// 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)的值

*/

 

// 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

// {

// 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

// {

// 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

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

}

相关TAG标签
上一篇:String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰
下一篇:hihocoder #1042 : 跑马圈地
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站