C程序设计 第四版(谭浩强)-学习笔记-第八天

/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:用函数实现输入两个整数,要求输出其中值最大者 
    位置:C程序设计(第四版)2010年6月第四版 176页例7.2 
*/
#include<stdio.h>
int main()
{   
    int max(int x,int y);
    int a,b,c;
    printf("please enter two integer numbers:");
    scanf("%d,%d",&a,&b);
    c=max(a,b);
    printf("max is %d\n",c);
    return 0;
}
int max(int x,int y)
{
    int z;
    z=x>y?x:y;
    return(z);
} 
/*Dev-c++输出结果: 
    please enter two integer numbers:88,0
    max is 88
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:用函数实现输入两个整数,要求输出其中值最大者(函数类型决定返回值类型) 
    位置:C程序设计(第四版)2010年6月第四版 178页例7.3
*/
#include<stdio.h>
int main()
{   
    int max(float x,float y);
    float a,b,c;
    printf("please enter two integer numbers:");
    scanf("%f,%f",&a,&b);
    c=max(a,b);
    printf("max is %f\n",c);
    return 0;
}
int max(float x,float y)//函数类型是整型 
{
    float z;
    z=x>y?x:y;
    return(z);//返回类型是浮点型 
} 
/*Dev-c++输出结果: 
    please enter two integer numbers:1.5,2.6
    max is 2.000000
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:输入两个实数,用一个函数求出它们之和 
    位置:C程序设计(第四版)2010年6月第四版 180页例7.4
*/
#include<stdio.h>
int main()
{   
    float add(float x,float y);//或float add(float,float); 
    float a,b,c;
    printf("Please enter a and b:");
    scanf("%f,%f",&a,&b);
    c=add(a,b);
    printf("sum is %f\n",c); 
    return 0;
}
float add(float x,float y)
{
    float z;
    z=x+y;
    return(z);
} 
/*Dev-c++输出结果: 
    Please enter a and b:5,3
    sum is 8.000000
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:输入4个整数,找出其中最大的数。用函数的嵌套调用来处理 
    位置:C程序设计(第四版)2010年6月第四版 183页例7.5
*/
#include<stdio.h>
//方法一: 
//int main()
//{ 
//  int max4(int a,int b,int c,int d);//声明函数 
//  int a,b,c,d,max;
//  printf("Please enter 4 interger numbers:");
//  scanf("%d %d %d %d",&a,&b,&c,&d);
//  max=max4(a,b,c,d);
//  printf("max=%d \n",max);
//  return 0;
//}
//int max4(int a,int b,int c,int d)//返回四个整数的最大值 ,定义函数 
//{
//  int max2(int a,int b);//声明函数 
//  int m;
//  m=max2(a,b);//返回a,b最大值 
//  m=max2(m,c);//返回a,b,c最大值 
//  m=max2(m,d);//返回a,b,c,d最大值 
//  return(m);
//}
//int max2(int a,int b)//返回两个整数的最大值 
//{
//  if(a>=b)
//      return a;
//  else
//      return b;
//}

#include<stdio.h>
//方法二(改进): 
int main()
{   
    int max4(int a,int b,int c,int d);//声明函数 
    int a,b,c,d,max;
    printf("Please enter 4 interger numbers:");
    scanf("%d %d %d %d",&a,&b,&c,&d);
    max=max4(a,b,c,d);
    printf("max=%d \n",max);
    return 0;
}
int max4(int a,int b,int c,int d)//返回四个整数的最大值 ,定义函数 
{
    int max2(int a,int b);//声明函数 
    return max2(max2(max2(a,b),c),d);
}
int max2(int a,int b)//返回两个整数的最大值 
{
    return (a>b?a:b);
}
/*Dev-c++输出结果: 
    Please enter 4 interger numbers:11 55 2 999
    max=999
*/
/*Dev-c++输出结果: 
    Please enter 4 interger numbers:88 22 5 1
    max=88
*/



/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:有五个学生,问第5个学生年龄,他说比第4个学生大2岁;
                      问第4个学生年龄,他说比第3个学生大2岁;
                      问第3个学生年龄,他说比第2个学生大2岁;
                      问第2个学生年龄,他说比第1个学生大2岁;
                      问第1个学生年龄,他说10岁;
                      请问第5个学生多达? 
    位置:C程序设计(第四版)2010年6月第四版 185页例7.6
*/
#include<stdio.h> 
int main()
{   
    int age(int n);//声明函数
    printf("No.5,age:%d\n",age(5));
    return 0;
}
int age(int n)//定义函数 
{
    int c;
    if(n==1)
        c=10;
    else
        c=age(n-1)+2;//比前一个学生大两岁 
    return(c);
}
/*Dev-c++输出结果: 
    No.5,age:18
*/



/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:用递归方法求n!
    公式:n!(n=0,1)=1;n!(n>1)=n(n-1)! (0!=1是一种规定) 
    位置:C程序设计(第四版)2010年6月第四版 187页例7.7
*/
#include<stdio.h> 
int main()
{   
    int fac(int n);
    int n;
    int y;
    printf("input an integer number:");
    scanf("%d",&n);
    y=fac(n);
    printf("%d!=%d\n",n,y);
    return 0;
}
int fac(int n)
{
    int f;
    if(n<0)
        printf("n<0,data error!");
    else if(n==0 || n==1)//0!=1是一种规定 
        f=1;
    else
        f=fac(n-1)*n;
    return(f);
}
/*Dev-c++输出结果: 
    input an integer number:10
    10!=3628800
*/



/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:汉诺塔问题
    位置:C程序设计(第四版)2010年6月第四版 189页例7.8
*/
#include<stdio.h> 
int main()
{   
    void hanoi(int n,char one,char two,char three);//声明函数
    int m;
    printf("input the number of diskes:");
    scanf("%d",&m);
    printf("The step to move %d diskes:\n",m);
    hanoi(m,'A','B','C'); 
    return 0;
}
void hanoi(int n,char one,char two,char three)
{
    //将n个盘从one座借助two座移到three座
    void move(char x,char y);//函数声明
    if(n==1)
        move(one,three);
    else
    {
        hanoi(n-1,one,three,two);//将n-1个盘从one座借助three座移到two 
        move(one,three);//将一个盘从one座到three 
        hanoi(n-1,two,one,three);//将n-1个盘从two座借助one座移到three 
    } 
}
void move(char x,char y)
{
    printf("%c->%c\n",x,y);
} 
/*Dev-c++输出结果: 
    input the number of diskes:3
    The step to move 3 diskes:
    A->C
    A->B
    C->B
    A->C
    B->A
    B->C
    A->C
*/



/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:输入10个数,要求输出其中值最大的元素和该数是第几个数 
    位置:C程序设计(第四版)2010年6月第四版 193页例7.9
*/
#include<stdio.h> 
int main()
{   
    int max(int x,int y);//声明函数 
    int a[10],m,n,i;
    printf("enter 10 integer numbers:");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    printf("\n");
    for(i=1,m=a[0],n=0;i<10;i++)
    {   
        if(max(m,a[i])>m)//和后面的数比较大小(重点)m存放的是已经比较过的最大值 
        {
            m=max(m,a[i]);
            n=i;//把此数组元素序号记录,放在n 
        }
    }
    printf("The largest number is %d\nit is the %dth number\n",m,n+1);
    return 0;
}
int max(int x,int y)
{
    return(x>y?x:y);
} 
/*Dev-c++输出结果: 
    enter 10 integer numbers:1 2 3 4 5 6 7 8 9 10

    The largest number is 10
    it is the 10th number
*/



/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:有一个一维数组,内放10个学生成绩,求平均成绩 
    位置:C程序设计(第四版)2010年6月第四版 194页例7.10
*/
#include<stdio.h> 
int main()
{   
    float average(float array[10]);//声明函数
    float score[10],aver;
    int i;
    printf("input 10 scores:\n");
    for(i=0;i<10;i++)
        scanf("%f",&score[i]);
    printf("\n");
    aver=average(score);//实参为数组名,传递的是数组首元素的地址,实参会被形参所改变即:score[10]数组会被array[10]改变 
    printf("average score is %5.2f\n",aver);
    return 0;
}
float average(float array[10])
{
    int i;
    float aver,sum=array[0];//定义并初始化sum为第一个学生的成绩 
    for(i=1;i<10;i++)//将第二个到第十个学生成绩累加到sum中 
        sum=sum+array[i];
    aver=sum/10;//求是个学生的平均成绩 
    return(aver);
} 
/*Dev-c++输出结果: 
    input 10 scores:
    100 56 78 98 67.5 99 54 88.5 76 58

    average score is 77.50
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班的学生的平均成绩 
    位置:C程序设计(第四版)2010年6月第四版 195页例7.11
*/
#include<stdio.h> 
int main()
{   
    float average(float array[],int n);
    float score1[5]={98.5,97,91.5,60,55};
    float score2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};
    printf("The average of class A is %6.2f\n",average(score1,5));
    printf("The average of class B is %6.2f\n",average(score2,10));
    return 0;
}
float average(float array[],int n)
{
    int i;
    float aver,sum=array[0];
    for(i=1;i<n;i++)//第二个到第n个的数 
        sum=sum+array[i];
    aver=sum/i;
    return(aver);
}
/*Dev-c++输出结果: 
    The average of class A is  80.40
    The average of class B is  78.20
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:用选择法对数组中10个整数按由小到大排序 
    位置:C程序设计(第四版)2010年6月第四版 196页例7.12
*/
#include<stdio.h> 
int main()
{   
    void sort(int array[],int n);//声明函数
    int a[10],i;
    printf("enter array:\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);//输入10个整数存进数组 
    sort(a,10);//选择法排序 ,传入数组名即:数组的首地址,返回的值将改变数组中各元素的值 
    printf("The sorted array:\n");
    for(i=0;i<10;i++)//输出排序好的数组 
        printf("%d ",a[i]);//函数的形参将影响实参,因为数组的地址是一样的 
    printf("\n"); 
    return 0;
}
void sort(int array[],int n)//定义函数,参数是:不确定长度的数据,个数 
{
    int i,j,k,t;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)//后面的数 
            if(array[j]<array[k])//找出最小的数 
                k=j;
        t=array[k];//最小的数交换 
        array[k]=array[i];
        array[i]=t;
    }
} 
/*Dev-c++输出结果: 
    enter array:
    11 22 12 1 0 23 5 89 5 2
    The sorted array:
    0 1 2 5 5 11 12 22 23 89
*/



/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:有一个3*4的矩阵,求所有元素中的最大值 
    位置:C程序设计(第四版)2010年6月第四版 198页例7.13
*/
#include<stdio.h> 
int main()
{   
    int max_value(int array[][4],int n);
    int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
    printf("Max value is %d\n",max_value(a,3));
    return 0;
} 
int max_value(int array[][4],int n)
{
    int i,j,max;
    max=array[0][0];
    for(i=0;i<n;i++)//遍历每行 
        for(j=0;j<4;j++)// 遍历每列 
            if(array[i][j]>max)
                max=array[i][j];
    return(max);
}
/*Dev-c++输出结果: 
    Max value is 34
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分,最高分和最低分 
    位置:C程序设计(第四版)2010年6月第四版 201页例7.14
*/
#include<stdio.h>
float Max=0,Min=0; 
int main()
{   
    float average(float array[],int n);
    float ave,score[10];
    int i;
    printf("Please enter 10 scores:");
    for(i=0;i<10;i++)
        scanf("%f",&score[i]);
    ave=average(score,10);
    printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave); 
    return 0;
} 
float average(float array[],int n)
{
    int i;
    float aver,sum=array[0];
    Max=Min=array[0];
    for(i=0;i<n;i++)
    {
        if(array[i]>Max)
            Max=array[i];
        else if(array[i]<Min)
            Min=array[i];
        sum=sum+array[i+1];//书上是错的,前面已经将array[0]赋值给sum了,不需要重复赋值 
    }
    aver=sum/n;
    return(aver);
}
/*Dev-c++输出结果: 
    Please enter 10 scores:89 95 87.5 100 67.5 97 59 84 73 90
    max=100.00
    min= 59.00
    average= 84.20
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:若外部变量与局部变量同名,分析结果 
    位置:C程序设计(第四版)2010年6月第四版 203页例7.15
*/
#include<stdio.h>
int a=3,b=5;
int main()
{   
    int max(int a,int b);
    int a=8;//全局变量被局部变量屏蔽 
    printf("max=%d\n",max(a,b));
    return 0;
} 
int max(int a,int b)
{   
    return(a>b?a:b); 
} 
/*Dev-c++输出结果: 
    max=8
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:考察静态局部变量的值 
    位置:C程序设计(第四版)2010年6月第四版 205页例7.16
*/
#include<stdio.h>
int main()
{   
    int f(int);//函数声明
    int a=2,i;
    for(i=0;i<3;i++)
        printf("%d\n",f(a)); 
    return 0;
} 
int f(int a)
{
    auto int b=0;
    static c=3;
    b=b+1;
    c=c+1;
    return(a+b+c);
}
/*Dev-c++输出结果: 
    7
    8
    9
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:输出1到5的阶乘值(用静态局部变量static) 
    位置:C程序设计(第四版)2010年6月第四版 207页例7.17
*/
#include<stdio.h>
int main()
{   
    int fac(int n);
    int i;
    for(i=1;i<=5;i++)
        printf("%d!=%d\n",i,fac(i));
    return 0;
} 
int fac(int n)
{
    static int f=1;
    f=f*n;
    return(f);
} 
/*Dev-c++输出结果: 
    1!=1
    2!=2
    3!=6
    4!=24
    5!=120
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:调用函数,求3个整数中的大者(用外部变量声明extern) 
    位置:C程序设计(第四版)2010年6月第四版 208页例7.18
*/
#include<stdio.h>
int main()
{   
    int max();
    extern int A,B,C;
    printf("Please enter three integer numbers:");
    scanf("%d %d %d",&A,&B,&C);
    printf("max is %d\n",max()); 
    return 0;
} 
int A,B,C;
int max()
{
    int m;
    m=A>B?A:B;
    if(C>m)
        m=C;
    return(m); 
}
/*Dev-c++输出结果: 
    Please enter three integer numbers:5 2 1
    max is 5
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能: 给定b的值,输入a和m,求a*b和a^m的值(file1.c) 
    位置:C程序设计(第四版)2010年6月第四版 210页例7.19
*/
#include<stdio.h>
int A; 
int main()
{   
    int power(int);
    int b=3,c,d,m;
    printf("enter the number a and its power m:\n");
    scanf("%d,%d",&A,&m);
    c=A*b;
    printf("%d*%d=%d\n",A,b,c);
    d=power(m);
    printf("%d**%d=%d\n",A,m,d);
    return 0;
} 
/*Dev-c++输出结果: 
    enter the number a and its power m:
    13,3
    13*3=39
    13**3=2197
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能: 给定b的值,输入a和m,求a*b和a^m的值(file2.c) 
    位置:C程序设计(第四版)2010年6月第四版 210页例7.19
*/
extern A;
int power(int n)
{
    int i,y=1;
    for(i=1;i<=n;i++)
        y*=A;
    return(y);
}
/*Dev-c++输出结果: 
    enter the number a and its power m:
    13,3
    13*3=39
    13**3=2197
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能: 有一个字符串,内有诺干个字符,现输入一个字符,要求程序将字符串中该字符删去,用外部函数实现(file1.c) 
    位置:C程序设计(第四版)2010年6月第四版 216页例7.20
*/
#include<stdio.h>
//extern void enter_string(char str[]);
//extern void delete_string(char str[],char ch);
//extern void print_string(char str[]);
//或者可以写成声明形式放进main函数里面 
int main()
{   
    void enter_string(char str[]);
    void delete_string(char str[],char ch);
    void print_string(char str[]);
    char c,str[80];
    enter_string(str);//file2
    printf("请输入要删除的字符:\n"); 
    scanf("%c",&c);
    delete_string(str,c);//file3
    print_string(str); //file4
    return 0;
} 
/*Dev-c++输出结果: 
    请输入字符串:i am a student
    请输入要删除的字符:

    iamastudent 
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能: 有一个字符串,内有诺干个字符,现输入一个字符,要求程序将字符串中该字符删去,用外部函数实现(file2.c) 
    位置:C程序设计(第四版)2010年6月第四版 216页例7.20
*/
#include<stdio.h>
void enter_string(char str[80])
{   
    printf("请输入字符串:"); 
    gets(str);
}
/*Dev-c++输出结果: 
    请输入字符串:i am a student
    请输入要删除的字符:

    iamastudent
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能: 有一个字符串,内有诺干个字符,现输入一个字符,要求程序将字符串中该字符删去,用外部函数实现(file3.c) 
    位置:C程序设计(第四版)2010年6月第四版 216页例7.20
*/
void delete_string(char str[],char ch)
{
    int i,j;
    for(i=j=0;str[i]!='\0';i++)
        if(str[i]!=ch)
            str[j++]=str[i];
    str[j]='\0';
}
/*Dev-c++输出结果: 
    请输入字符串:i am a student
    请输入要删除的字符:

    iamastudent
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能: 有一个字符串,内有诺干个字符,现输入一个字符,要求程序将字符串中该字符删去,用外部函数实现(file4.c) 
    位置:C程序设计(第四版)2010年6月第四版 216页例7.20
*/
void print_string(char str[])
{
    printf("%s\n",str);
}
/*Dev-c++输出结果: 
    请输入字符串:i am a student
    请输入要删除的字符:

    iamastudent
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入 
    位置:C程序设计(第四版)2010年6月第四版 218页习题1 
*/
#include<stdio.h>
//方法一:返回值 
//int main()
//{ 
//  int hcf(int,int);//声明求最大公约数的函数
//  int lcd(int,int,int);//声明求最小公倍数的函数
//  int u,v,h,l;
//  scanf("%d,%d",&u,&v);
//  h=hcf(u,v);
//  printf("H.C.F=%d\n",h);
//  l=lcd(u,v,h);
//  printf("L.C.D=%d\n",l);
//  return 0;
//}
//int hcf(int u,int v)
//{
辗转相除法求最大公约数
如果v>u,则调换位置,保证被除数大于除数
u%v不等于0的时候,将除数变成被除数,余数变成除数,直到u%v==0 
//  int t,r;
//  if(v>u)
//  {
//      t=u;
//      u=v;
//      v=t;
//  }
//  while((r=u%v)!=0)
//  {
//      u=v;
//      v=r;
//  }
//  return(v);
//}
//int lcd(int u,int v,int h)
//{
最小公倍数=两数相乘除以最大公约数 
//  return(u*v/h);
//}

//方法二:全局变量
int Hcf,Lcd; 
int main()
{   
    void hcf(int,int);//声明求最大公约数的函数
    void lcd(int,int);//声明求最小公倍数的函数
    int u,v;
    scanf("%d,%d",&u,&v);
    hcf(u,v);
    lcd(u,v);
    printf("H.C.F=%d\n",Hcf);
    printf("L.C.D=%d\n",Lcd);
    return 0;
}
void hcf(int u,int v)
{
//辗转相除法求最大公约数
//如果v>u,则调换位置,保证被除数大于除数
//u%v不等于0的时候,将除数变成被除数,余数变成除数,直到u%v==0 
    int t,r;
    if(v>u)
    {
        t=u;
        u=v;
        v=t;
    }
    while((r=u%v)!=0)
    {
        u=v;
        v=r;
    }
    Hcf=v;
}
void lcd(int u,int v)
{
//最小公倍数=两数相乘除以最大公约数 
    Lcd=u*v/Hcf;
} 
/*Dev-c++输出结果: 
    24,16
    H.C.F=8
    L.C.D=48
*/
/*Dev-c++输出结果: 
    13,3
    H.C.F=1
    L.C.D=39
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:求二元一次方程的根,用3个函数分别求当:b^2-4ac>0;b^2-4ac=0;b^2-4ac<0;时并输出结果。从主函数输入a,b,c. 
    位置:C程序设计(第四版)2010年6月第四版 218页习题2
*/
#include<stdio.h>
#include<math.h>
float x1,x2,disc,p,q;
int main()
{   
    void greater_than_zero(float,float);
    void equal_to_zero(float,float);
    void smaller_than_zero(float,float);
    float a,b,c;
    printf("input a,b,c:");
    scanf("%f,%f,%f",&a,&b,&c);
    printf("equation:%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);
    disc=b*b-4*a*c;
    printf("root:\n");
    if(disc>0)
    {
        greater_than_zero(a,b);
        printf("x1=%f\t\tx2=%f\n",x1,x2);
    }
    else if(disc==0)
    {
        equal_to_zero(a,b);
        printf("x1=%f\t\tx2=%f\n",x1,x2);
    }
    else
    {
        smaller_than_zero(a,b);
        printf("x1=%f+%fi\tx2=%f-%fi\n",p,q,p,q);
    }
    return 0;
}
void greater_than_zero(float a,float b)
{
    x1=(-b+sqrt(disc))/(2*a);
    x2=(-b+sqrt(disc))/(2*a);
}
void equal_to_zero(float a,float b)
{
    x1=x2=(-b)/(2*a);
}
void smaller_than_zero(float a,float b)
{
    //复根 
    p=-b/(2*a);
    q=sqrt(-disc)/(2*a);
}
/*Dev-c++输出结果: 
    input a,b,c:2,4,1
    equation: 2.00*x*x+ 4.00*x+ 1.00=0
    root:
    x1=-0.292893            x2=-0.292893
*/
/*Dev-c++输出结果: 
    input a,b,c:1,2,1
    equation: 1.00*x*x+ 2.00*x+ 1.00=0
    root:
    x1=-1.000000            x2=-1.000000
*/
/*Dev-c++输出结果: 
    input a,b,c:2,4,3
    equation: 2.00*x*x+ 4.00*x+ 3.00=0
    root:
    x1=-1.000000+0.707107i  x2=-1.000000-0.707107i
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息 
    位置:C程序设计(第四版)2010年6月第四版 218页习题3
*/
#include<stdio.h>
float x1,x2,disc,p,q;
int main()
{   
    int prime(int);
    int n;
    printf("input an integer:");
    scanf("%d",&n);
    if(prime(n))
        printf("%d is a prime\n",n);
    else
        printf("%d is not a prime\n",n);
    return 0;
}
int  prime(int n)
{
    int flag=1,i;
    for(i=2;i<n/2 && flag==1;i++)
        if(n%i==0)//能被2~n/2除就不是素数 
            flag=0;
    return(flag);   
} 
/*Dev-c++输出结果: 
    input an integer:10
    10 is not a prime
*/
/*Dev-c++输出结果: 
    input an integer:5
    5 is a prime
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换 
    位置:C程序设计(第四版)2010年6月第四版 218页习题4
*/
#include<stdio.h>
#define N 3
int array[N][N];
int main()
{   
    void convert(int array[][3]);
    int i,j;
    printf("input array:\n");
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            scanf("%d",&array[i][j]);
    printf("\noriginal array:\n");
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
            printf("%5d",array[i][j]);
        printf("\n");
    }
    printf("\n");
    convert(array);
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
            printf("%5d",array[i][j]);
        printf("\n");
    }
    return 0;
}
void convert(int array[][3])//定义转置数组函数
{
    int i,j,t;
    for(i=0;i<N;i++)
        for(j=i+1;j<N;j++)//只交换array[0][1],array[0][2],array[1][2] 
        {
            t=array[i][j];
            array[i][j]=array[j][i];
            array[j][i]=t;
        } 
} 
/*Dev-c++输出结果: 
    input array:
    1 2 3
    4 5 6
    7 8 9

    original array:
        1    2    3
        4    5    6
        7    8    9

        1    4    7
        2    5    8
        3    6    9
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串 
    位置:C程序设计(第四版)2010年6月第四版 218页习题5
*/
#include<stdio.h>
#include<string.h>
int main()
{   
    void inverse(char str[]);
    char str[100];
    printf("input string:");
    scanf("%s",str);
    inverse(str);
    printf("inverse string:%s\n",str);
    return 0;
}
void inverse(char str[])
{
    char t;
    int i,j;
    for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--)//字母交换 
    {
        t=str[i];
        str[i]=str[j-1];
        str[j-1]=t;
    }
} 
/*Dev-c++输出结果: 
    input string:fangweijun
    inverse string:nujiewgnaf
*/


/*  创建时间:20171228
    创建人:fangweijun(773714759@qq.com)
    功能:写一个函数,将两个字符串连接 
    位置:C程序设计(第四版)2010年6月第四版 218页习题6
*/
#include<stdio.h>
int main()
{   
    void concatenate(char string1[],char string2[],char string[]);
    char s1[100],s2[100],s[100];
    printf("input string1:");
    scanf("%s",s1);
    printf("input string2:");
    scanf("%s",s2);
    concatenate(s1,s2,s);
    printf("\nThe new string is %s\n",s); 
    return 0;
}
void concatenate(char string1[],char string2[],char string[])
{
    int i,j;
    for(i=0;string1[i]!='\0';i++)
        string[i]=string1[i];
    for(j=0;string2[j]!='\0';j++)
        string[i+j]=string2[j];//接在sr1后面 
    string[i+j]='\0';   //结束符 
} 
/*Dev-c++输出结果: 
    input string1:fang
    input string2:weijun

    The new string is fangweijun
*/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值