//

//  main.c

//  tt

//

//  Created by Ibokan on 15/8/3.

//  Copyright (c) 2015年 Ibokan. All rights reserved.

//

/*C考试题

 

1,输入一行字符串,统计小写字母的个数

 

2,打印100个质数

 

3,定义一个结构体包含圆心和半径,写一个函数,返回此圆形的面积以及圆心在第几象限

 

4,输入两个数,打印这两个数的最大公约和最小公倍数

 

5,计算 1-2+3-4+5-6+...100的结果

 

6,写一个函数,将字符串加密,加密规则为,a->b、z->a、A->B、Z->A以此类推

 

7,输入一个正整数n,求 1!+2!+...n!的值(n!表示n的阶乘)

 

8,用户输入10个数,返回最大值和最小值(数组实现)

 

9,输入一个数字,将其按位 拆开 例如 1234 ---> 1 2 3 4

 

10,判断字符串是否为回文字符串(qwerewq和qwerrewq均为回文字符串)

*/

//1,输入一行字符串,统计小写字母的个数

/*

#include <stdio.h>

#include <string.h>

int fun(char * string)

{

    int length=(int)(strlen(string));

    int i=0;

    int count=0;

    while (length)

    {

        if(((*(string+i)>='a'&&(*(string+i))<='z')))

        {

            count++;

            

        }

        i++;

        length--;

    }

    

    return count;

}

int main(int argc, const char * argv[])

{

    

    char str[255];

    scanf("%s",str);

    int count = fun(str);

    printf("count = %d",count);

    return 0;

}

*/

/*

#include <stdio.h>

void lowercaseCount()

{

    char string[100];

    int count = 0;

    scanf("%s",string);

    int length = strlen(string);

    for (int i = 0; i <length; i++)

    {

        char c = string[i];

        if (c>='a'&&c<='z')

        {

            count++;

            

        }

        

    }

    printf("小写字母的个数是:%d",count);

}

 

int main(int argc, const char * argv[]) {

    // insert code here...

    

    lowercaseCount();

    return 0;

}

*/

//2.打印100个质数

/*

#include <stdio.h>

#include <math.h>

void count()

{

    int i=2;

    int j,flag;

    int count=0;

        while (i)

        {     flag=1;

            for (j=2; j<i; j++)

            {

                if (i%j==0)

                {   flag=0;

                    break;

                }

            }

            

            

                if (flag==1)

                {

                    count++;

              printf("%d ",i);

                }

            i++;

                if(count>=100)

              {

                return;

              }

            

        }

            

            

}

    

int main()

{

    count();

 

 

}

 */

/*

*判断是否是质数

 

*是返回1 不是返回0

 

 

 

int checkPrimeNumber(int number)

 

{

    if (number == 2)

        

    {

        

        return 1;

        

    }

    

    for (int i = 2; i < number ; i++)

        

    {

        

        if (number % i == 0)//如果能够被1和它本身以外的数整除

            

        {

            

            return 0;//返回0,不是质数

            

        }

        

    }

    

    return 1;//如果一直不能被整除,说明还是质数,返回1

    

}

 

int main(int argc, const char * argv[])

{

    int count = 0;

    int  i = 2;

    while (count < 100)

    {

        

        if (checkPrimeNumber(i))

        {

            printf("%d: %d \n",count + 1,i);

            count++;

        }

        i++;

        

    }

    return 0;

}

*/

//3,定义一个结构体包含圆心和半径,写一个函数,返回此圆形的面积以及圆心在第几象

/*

#include <stdio.h>

# define T 3.14

typedef struct wei

{

    int x;

    int y;

 

}wei;

typedef struct yuan

{

    struct wei q;

    int r;

}yuan;

double se(struct yuan p,int r)

{    double area;

    area=T*(r*r);

    if (p.q.x>0&&p.q.y>0)

    {    printf("圆心在第一象限!\n");

        

    }

    if (p.q.x>0&&p.q.y<0)

    {

        printf("圆心在第二象限!\n");

    }

    if (p.q.x<0&&p.q.y>0)

    {

        printf("圆心在第三象限!\n");

    }

    if (p.q.x<0&&p.q.y<0)

    {

        printf("圆心在第四象限!\n");

    }

 

    return area;

}

 

int main()

{

    struct yuan yuan1;

    scanf("%d %d %d",&yuan1.q.x,&yuan1.q.y,&yuan1.r);

 

    double area;

    area=se(yuan1,yuan1.r);

    printf("%.2lf\n",area);

 

}

*/

// 3,定义一个结构体包含圆心和半径,写一个函数,返回此圆形的面积以及圆心在第几象限

/*

#include <stdio.h>

 

#define PI 3.14

 

//点的结构体

typedef struct myPoint {

    double x;//横坐标

    double y;//纵坐标

} myPoint;

 

//圆的结构体

typedef struct Cricle {

    myPoint point;//圆心

    double r;//半径

}Cricle;

 

//判断圆心在第几象限

void checkPoint(Cricle cricle)

{

    //如果x的坐标大于0,y的坐标大于0,位于第一象限

    if (cricle.point.x > 0 && cricle.point.y > 0)

    {

        printf("圆心在第一象限\n");

    }

    //如果x的坐标小于0,y的坐标大于0,位于第二象限

    else if (cricle.point.x < 0 && cricle.point.y > 0)

    {

        printf("圆心在第二象限\n");

    }

    //如果x的坐标小于0,y的坐标小于0,位于第三象限

    else if (cricle.point.x < 0 && cricle.point.y < 0)

    {

        printf("圆心在第三象限\n");

    }

    //如果x的坐标大于0,y的坐标小于0,位于第四象限

    else if (cricle.point.x > 0 && cricle.point.y < 0)

    {

        printf("圆心在第四象限\n");

    }

    //如果x的坐标等于0或者y的坐标等于0,位于坐标轴或者原点上

    else if (cricle.point.x == 0 || cricle.point.y == 0)

    {

        printf("圆心坐标轴上\n");

    }

}

 

//返回圆的面积

double Area(Cricle cricle)

{

    double area = 0.0;

    

    area = PI * cricle.r * cricle.r;

    

    return area;

}

 

 

int main(int argc, const char * argv[]) {

    

    Cricle cricle;

    

    printf("请输入圆心坐标: ");

    scanf("%lf %lf",&cricle.point.x,&cricle.point.y);

    printf("请输入圆的半径: ");

    scanf("%lf",&cricle.r);

    

    printf("圆的面积是%g\n",Area(cricle));

    checkPoint(cricle);

    return 0;

}*/

//4.入两个数,打印这两个数的最大公约和最小公倍数

/*

#include <stdio.h>

int main()

{

    int a,b,t;

    scanf("%d %d",&a,&b);

     if(a<b)

{t=b;

b=a;

a=t;

}

else

{

    int r,p;

    p=a*b;

    while (b!=0)

    {

        r=a%b;

        a=b;

        b=r;

    }

}

    printf("最大公约数为%d\n",a);

    printf("最小公倍数为%d\n",p/a);

  

}*/

 

//

//  main.c

//  C_exercise_Sun

//

//  Created by 孙海金 on 15/8/3.

//  Copyright (c) 2015年 Sun. All rights reserved.

//

/*

#include <stdio.h>

#include <string.h>

#include <math.h>

 

 

 //返回number1和number2最小公倍数

 

int getMinMultiple(int number1,int number2)

{

    int minMultiple = number1 > number2 ? number1 :number2;

    

    while (1)

    {

        if (minMultiple % number1 == 0  &&  minMultiple % number2 == 0)

        {

            return minMultiple;

        }

        minMultiple++;

    }

}

 

 

 

 //求number1和number2的最大公约数

 

int getMaxCommandSubmultiple(int number1,int number2)

{

    int minNumber = number1 < number2 ? number1 :number2;

    for (int i = minNumber; i > 0; i--)

    {

        //如果number1和number2都能够被整除,既为最大公约数

        if (number1 % i ==0  && number2 % i ==0) {

            return i;

        }

    }

    return 0;

}

 

 

int main(int argc, const char * argv[]) {

    int number1,number2;

    

    printf("请输入两个整数:");

    

    scanf("%d %d",&number1,&number2);

    

    printf("%d和%d的最小公倍数是:%d\n",number1,number2,getMinMultiple(number1, number2));

    

    printf("%d和%d的最大公约数是:%d\n",number1,number2,getMaxCommandSubmultiple(number1,number2));

    

    return 0;

}

 */

//5.计算 1-2+3-4+5-6+...100的结果

/*

#include <stdio.h>

int main()

{

    int i;

    int k=1;

    int sum=0;

    for (i=1; i<=100; i++)

    { sum=sum+i*k;

        k=-k;

    }

    printf("%d\n",sum);

 

 

 

 

}*/

//6,写一个函数,将字符串加密,加密规则为,a->b、z->a、A->B、Z->A以此类推

/*

#include <stdio.h>

#include <string.h>

int main()

{

    char str[20];

    gets(str);

    int l=(int)strlen(str);

    int i=0;

    while (l!=0)

    {    str[i]=str[i]+1;

        

        if (str[i]=='{')

        {

            str[i]='a';

        }

        if (str[i]=='[' )

        {

            str[i]='A';

        }

        i++;

        l--;

        

    }

    puts(str);

}

*/

//

//  main.c

//  6

//

//  Created by 孙海金 on 15/8/3.

//  Copyright (c) 2015年 Sun. All rights reserved.

//

/*

#include <stdio.h>

#include <string.h>

 

//加密字符串c

char *getString(char c[])

{

    //获取字符串长度

    int length = (int)strlen(c);

    

    for (int i = 0; i<length; i++)

    {

        if (c[i] >= 'a' && c[i]<='y')

        {

            c[i] += 1;

        }

        

        else if(c[i] >= 'A' && c[i]<='Y')

        {

            c[i] += 1;

        }

        

        else if(c[i] == 'z')

        {

            c[i] = 'a';

        }

        else if(c[i] == 'Z')

        {

            c[i] = 'A';

        }

    }

    

    return c;

}

 

 

int main(int argc, const char * argv[]) {

    

    char c[255];

    printf("请输入一个字符串:\n");

    gets(c);

    printf("输入的字符串是:%s\n",c);

    char *d = getString(c);

    printf("加密后的字符串是:%s\n",d);

    

    return 0;

}*/

//7,输入一个正整数n,求 1!+2!+...n!的值(n!表示n的阶乘)

/*

#include <stdio.h>

int fun(int n)

{   int i;

    int sum=1;

    for (i=1; i<=n; i++)

    {

        sum*=i;

    }

    return sum;

}

 

int main()

{

    int sum=0;

    int i,n;

    scanf("%d",&n);

    for (i=1; i<=n; i++)

    {

        sum+=fun(i);

    }

 

    printf("%d\n",sum);

 

}

*/

//8,用户输入10个数,返回最大值和最小值(数组实现)

/*

#include <stdio.h>

int main()

{

    int i;

    int a[10];

    int t;

    for (i=0; i<10; i++)

    {

        scanf("%d",&a[i]);

    }

    int max=a[0];

    int min=a[0];

    for (i=0; i<10; i++)

    {

    if (a[i]>max)

      {  t=a[i];

         a[i]=max;

         max=t;

     }

    }

    printf("max=%d\n",max);

    for (i=0; i<10; i++)

    {

        if (a[i]<min)

        {t=a[i];

            a[i]=min;

            min=t;

        }

        }

    printf("min=%d\n",min);

}

*/

//9.输入一个数字,将其按位 拆开 例如 1234 ---> 1 2 3 4

/*

#include <stdio.h>

int main()

{

    int a,i;

    i=0;

    scanf("%d",&a);

    int arr[10];

    while (a>0)

    {

        arr[i]=a%10;

        a=a/10;

        i++;

    }

    

    while (i>=1) {

        printf("%d ",arr[i-1]);

        i--;

    }

 

}

*/

//  Copyright (c) 2015年 Sun. All rights reserved.

//

/*

#include <stdio.h>

 

int main(int argc, const char * argv[]) {

    

    int number;

    int numberArray[100];

    int count = 0;//计数器

    

    printf("请输入一个整数:\n");

    scanf("%d",&number);

    

    while (number != 0) {

        

        numberArray[count] = number % 10;

        

        number /= 10;

        

        count++;

    }

    

    printf("拆开后的数字是:\n");

    

    for (int i = count - 1;i >= 0; i--)

    {

        printf("%d ",numberArray[i]);

    }

    

    return 0;

}

*/

 

//10,判断字符串是否为回文字符串(qwerewq和qwerrewq均为回文字符串)

/*

#include <stdio.h>

#include <string.h>

int main()

{

    char s[100];

    gets(s);

    int l=(int)strlen(s);

    int i,j;

    int flag=1;

    for (i=0,j=l-1; i<l/2; i++,j--)

    {

        if (s[i]==s[j])

        {   flag=1;

        }

        else

        {flag=0;}

    }

    

    if (flag==1) {

 

    

    printf("该字符串为回文字符串\n");

    }

    else

        printf("该字符串不是回文字符串\n");

 

    }

 

 

 

*/

//11.定义一个结构体包含三角形三个顶点,写一个函数,输入这个结构体变量,返回此三角形面积(注意三角形是否有效问题)

/*

#include<stdio.h>

#include <math.h>

typedef struct dian

{

    int x;

    int y;

 

}dian;

typedef struct yuan

{

    dian x;

    dian y;

    dian z;

 

}yuan;

 

double sum(yuan yuan1)

{

    double area;

    double p,q,w,o;

    p=(sqrt((pow((yuan1.x.x-yuan1.y.x),2))+pow((yuan1.x.y-yuan1.y.y),2)));

    q=(sqrt((pow((yuan1.x.x-yuan1.z.x),2))+pow((yuan1.x.y-yuan1.z.y),2)));    w=(sqrt((pow((yuan1.y.x-yuan1.z.x),2))+pow((yuan1.y.y-yuan1.z.y),2)));

    

    if (p+q>w&&p+w>q&&q+w>p)

    {

        o=(q+p+w)/2;

    

        area=sqrt(o*(o-q)*(o-p)*(o-w));

    }

    else{

    return 0;

    }

    return area;

}

int main()

{

 

    yuan yuan1;

    yuan1.x.x=1;

    yuan1.x.y=1;

    yuan1.y.x=1;

    yuan1.y.y=1;

    yuan1.z.x=1;

    yuan1.z.y=1;

    double a;

    a=sum(yuan1);

    if (a!=0) {

        printf("%.2lf",a);

  }

else

    printf("不能构成三角形!");

 

}

*/