梁力《程序设计与C语言》_第五章 函数【未完】

#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <string>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <stack>
using namespace std;
#define maxSize 101
//
简单递归,算年龄 P158 5.11
//int age(int n)
//{
//    if(n==5)
//        return 1;
//    else
//        return age(n+1)+2;
//}
//int main()
//{
//    int n;
//    cout<<age(1)<<endl;
//}
//
//
希尔排序 P161 5.15
//void BubbleSort(int a[],int low,int high,int jump)
//{
//    int flag=0;
//    for(int i=low;i<high-jump;i+=jump)
//    {
//        for(int j=low;j<high-i-jump;j+=jump)
//        {
//            if(a[j+jump]<a[j])
//            {
//                int t=a[j+jump];
//                a[j+jump]=a[j];
//                a[j]=t;
//                flag=1;
//            }
//        }
//        if(flag==0)
//        {
//            return;
//        }
//    }
//}
//
//void ShellSort(int a[],int n)
//{
//    int i=0;
//    int jump=n;
//    while(jump>1)
//    {
//        jump=jump/2;
//        for(int i=0;i<jump;i++)  //对每个子序列采用某种已知的排序算法排序
//        {
//            BubbleSort(a,i,n,jump);
//        }
//    }
//}
//
//int main()
//{
//    int n;
//    cin>>n;
//    int a[101];
//    for(int i=0;i<n;i++)
//    {
//        cin>>a[i];
//    }
//    ShellSort(a,n);
//    for(int i=0;i<n;i++)
//        cout<<a[i]<<" ";
//}



将字符串转化为数字 P165
//int Transfer(char ch[],int len)
//{
//    int cnt=0;
//    for(int i=len-1;i>=0;i--)
//    {
//        cnt+=(ch[i]-'0')*pow(10,len-1-i);
//    }
//    return cnt;
//}
//int main()
//{
//    char ch[maxSize];
//    cin>>ch;
//    int i=0,len=0;
//    while(ch[i]!='\0')
//    {
//        i++;
//    }
//    int d=Transfer(ch,i);
//    cout<<d<<endl;
//}
//
//
//
将一个偶数分解成两个素数之和 P179 5.27
//int Judge(int n)  //判断是否是素数
//{
//    for(int i=2;i<=sqrt(n);i++)
//    {
//        if(n%i==0)
//            return 0;
//    }
//    return 1;
//}
//int main()
//{
//    int n;
//    cin>>n;
//    for(int i=2;i<=n/2;i++)
//    {
//        if(Judge(i)==1&&Judge(n-i)==1)
//        {
//            cout<<n<<"="<<i<<"+"<<n-i<<endl;
//        }
//    }
//}
//

int a[101][101];
int k;
void MakeLine(int row_start,int col_start,int row_end)
{
    int i,j,sign=(row_end>row_start)?1:-1;
    for(i=row_start,j=col_start;(row_end-i)*sign>=0;i+=sign,j+=sign)
    {
        a[i][j]=k++;
    }
}
void MakeArray(int n)
{
    int d;
    for(d=1;d<=2*n+1;d++)
    {
        if(d<=n)
        {
            if(d%2)
            {
                MakeLine(n,d-1,n+1-d);
            }
            else
            {
                MakeLine(n+1-d,0,n);
            }
        }
        else
        {
            if(d%2)
            {
                MakeLine(2*n+1-d,n,0);
            }
            else
            {
                MakeLine(0,d-n-1,2*n+1-d);
            }
        }
    }
}
//将自然数存入矩阵中 P181 5.28
int main()
{
    int N;
    for(int N=3;N<=10;N++)
    {
         k=1;
        int n=N-1;
        MakeArray(n);
        printf("\n N= %d:\n",n+1);
        for(int i=0;i<=n;i++)
        {
            for(int j=0;j<=n;j++)
            {
                printf("% 4d",a[i][j]);
            }
            cout<<endl;
        }
    }
    
}



求积分的面积 P182 5.2。辛普森算法
//double f(double x)
//{
//    return exp(x);
//}
//double Simpson(double a,double b)
//{
//    double s=f(a)-f(b);
//    double h=(b-a)/10;
//    double x=a;
//    do
//    {
//        x=x+h/2;
//        s=s+4*f(x);
//        x=x+h/2;
//        s=s+2*f(x);
//    }while(x<b);
//    s=s*h/6;
//    return s;
//}
//int main()
//{
//    double a,b,s;
//    cin>>a>>b;
//    s=Simpson(a,b);
//    cout<<s<<endl;
//}



求体积,面积 P184 5.30
//int Volume(int l,int w,int h)
//{
//    return l*w*h;
//}
//int Sqare1(int h,int l) //正面积
//{
//    return h*l;
//}
//int Sqare2(int h,int w) //侧面积
//{
//    return h*w;
//}
//int Sqare3(int l,int w) //顶面积
//{
//    return l*w;
//}
//int main()
//{
//    int l,w,h;
//    cin>>l>>w>>h;
//    int v1,s1,s2,s3;
//    v1=Volume(l,w,h);
//    s1=Sqare1(h,l);
//    s2=Sqare2(h,w);
//    s3=Sqare3(l,w);
//    cout<<v1<<" "<<s1<<" "<<s2<<" "<<s3<<endl;
//}
//
//
给出年月日,计算第几天 P185 5.32
//int Yeap(int y)
//{
//    if(y%400==0||(y%100!=0&&y%4==0))
//    {
//        return 1;
//    }
//    return 0;
//}
//int month[13][2]={
//    0,0,
//    31,31,
//    28,29,
//    31,31,
//    30,30,
//    31,31,
//    30,30,
//    31,31,
//    31,31,
//    30,30,
//    31,31,
//    30,30,
//    31,31,
//};
//void nextDay(int &y,int &m,int &d)
//{
//    d++;
//    if(d>month[m][Yeap(y)])
//    {
//        d=1;
//        m++;
//        if(m>12)
//        {
//            m=1;
//            y++;
//        }
//    }
//}
//int buf[3001][13][32];
//int main()
//{
//    int y0=0,m0=0,d0=0,cnt=0;
//    while(y0!=3001)
//    {
//        buf[y0][m0][d0]=cnt;
//        nextDay(y0,m0,d0);
//        cnt++;
//    }
//    int year,month,day;
//    cin>>year>>month>>day;
//    cout<<buf[year][month][day]-buf[year][1][1]+1;
//}
//
//
//
求出两位数的绝对素数 P187 5.35
//int Judge(int n)
//{
//    for(int i=2;i<n;i++)
//    {
//        if(n%i==0)
//            return 0;
//    }
//    return 1;
//}
//int Reverse(int n)
//{
//    int t1=n%10;
//    int t2=n/10;
//    int cnt=t1*10+t2;
//    return cnt;
//}
//int main()
//{
//    for(int i=10;i<100;i++)
//    {
//        int t=Reverse(i);
//        if(Judge(i)==1&&Judge(t)==1)
//        {
//            cout<<i<<" ";
//        }
//    }
//}
//
//
//
求和和平均值 P188 1
//int main()
//{
//    int n;
//    double a[maxSize];
//    cin>>n;
//    double sum=0,avg=0;
//    for(int i=0;i<n;i++)
//    {
//        cin>>a[i];
//        sum+=a[i];
//    }
//    avg=sum/n;
//    cout<<sum<<" "<<avg<<endl;
//
//}
//
//
//
将数组从大到小排序,去掉重复的元素 P188 2
//int main()
//{
//    int n,a[maxSize];
//    cin>>n;
//    for(int i=0;i<n;i++)
//    {
//        cin>>a[i];
//    }
//    for(int i=n-1;i>=1;i--)
//    {
//        for(int j=1;j<=i;j++)  //j从1开始
//        {
//            if(a[j-1]<a[j])
//            {
//                int t=a[j-1];
//                a[j-1]=a[j];
//                a[j]=t;
//            }
//        }
//    }
//
//    cout<<a[0];
//    for(int i=1;i<n;i++)
//    {
//        if(a[i]!=a[i-1])
//        {
//            cout<<" "<<a[i];
//        }
//    }
//
//}
//
//
//
将字符串反序存放输出 P188 3
//int main()
//{
//    char ch[maxSize];
//    cin>>ch;
//    char ch2[maxSize];
//    int len=0;
//    for(int i=0;ch[i]!='\0';i++)
//    {
//        len++;
//    }
//    for(int i=0;i<len;i++)
//    {
//        ch2[i]=ch[len-1-i];
//    }
//    cout<<ch2<<endl;
//}
//
//
//
求出每个大学生的总分,每门课程的平均分,最高分学生的姓名和总分 P188 4
//typedef struct Student
//{
//    char name[maxSize];
//    int score0[maxSize],score;
//}Student;
//int main()
//{
//    int n;
//    cin>>n;
//    Student s[maxSize];
//    for(int i=0;i<n;i++)
//    {
//        cin>>s[i].name;
//        for(int j=0;j<4;j++)
//        {
//            cin>>s[i].score0[j];
//            s[i].score+=s[i].score0[j];
//        }
//        cout<<s[i].score<<" ";
//    }
//    double s2[maxSize];
//    for(int j=0;j<4;j++)
//    {
//        for(int i=0;i<n;i++)
//        {
//            s2[j]+=s[i].score0[j];
//        }
//        cout<<s2[j]/n<<" ";
//    }
//    int max=0,maxp=0;
//    for(int i=0;i<n;i++)
//    {
//        if(s[i].score>max)
//        {
//            max=s[i].score;
//            maxp=i;
//        }
//    }
//    cout<<s[maxp].name<<" "<<s[maxp].score<<endl;
//}
//
//5
//zs 78 89 90 87
//344 ls 89 67 79 80
//315 ww
//67 78 95 74
//314 ze
//98 67 90 63
//318 cj
//88 77 85 74
//324 84 75.6 87.8 75.6 zs 344
//
//
//
//
证明哥德巴赫猜想 任何一个充分大的偶数,总可以表示成两个素数之和 P188 5
//int Sushu(int n)
//{
//    for(int i=2;i<=sqrt(n);i++)
//    {
//        if(n%i==0)
//            return 0;
//    }
//    return 1;
//}
//int main()
//{
//    int n;
//    cin>>n;
//    for(int i=2;i<=n/2;i++)  //只写到n/2处
//    {
//        int t=n-i;
//        if(Sushu(i)==1&&Sushu(t)==1)
//        {
//            cout<<n<<"可以表示为两个素数"<<i<<"和"<<t<<"之和"<<endl;
//        }
//    }
//}
//
//
//
输出一个十进制数,输出相应的二进制数、八进制数、十六进制数 P188 6
//void Binary(int n)
//{
//    int stack[maxSize];
//    int top=-1;
//    while(n)
//    {
//        stack[++top]=n%2;
//        n=n/2;
//    }
//    while(top!=-1)
//    {
//        cout<<stack[top--];
//    }
//    cout<<endl;
//}
//void Eight(int n)
//{
//    int stack[maxSize];
//    int top=-1;
//    while(n)
//    {
//        stack[++top]=n%8;
//        n=n/8;
//    }
//    while(top!=-1)
//    {
//        cout<<stack[top--];
//    }
//    cout<<endl;
//}
//void Hex(int n)
//{
//    int stack[maxSize];
//    int top=-1;
//    while(n)
//    {
//        stack[++top]=n%16;
//        n=n/16;
//    }
//    while(top!=-1)
//    {
//        int t=stack[top--];
//        if(t>=0&&t<=9)
//        {
//            cout<<t;
//        }
//        else if(t>9)
//        {
//            printf("%c",t-10+'A');
//        }
//    }
//}
//int main()
//{
//    int n;
//    cin>>n;
//    Binary(n);
//    Eight(n);
//    Hex(n);
//}
//
//
//
用递归法求n! P188 7
//int Calu(int n)
//{
//    if(n==1)
//        return 1;
//    else
//        return n*Calu(n-1);
//}
//int main()
//{
//    int n;
//    cin>>n;
//    cout<<Calu(n);
//}
//
//
//
返回数字的第k个值 P188 8
//int digit(int n,int k)
//{
//    int a[maxSize];
//    int len=0;
//    int t=n;
//    while(t)
//    {
//        a[len++]=t%10;
//        t=t/10;
//    }
//    if(k<=len)
//    {
//        return a[k-1];
//    }
//    else
//        return 0;
//
//}
//int main()
//{
//    int n,k;
//    cin>>n>>k;
//    int d=digit(n,k);
//    cout<<d<<endl;
//}
//
//

给出年月日,回答是星期几 P188 9
//int Yeap(int n)
//{
//    if(n%400==0||(n%4==0&&n%100!=0))
//    {
//        return 1;
//    }
//    return 0;
//}
//int month[14][2]={0,0,
//    31,31,
//    28,29,
//    31,31,
//    30,30,
//    31,31,
//    30,30,
//    31,31,
//    31,31,
//    30,30,
//    31,31,
//    30,30,
//    31,31,
//};
//void nextDay(int &y,int &m,int &d)
//{
//    d++;
//    if(d>month[m][Yeap(y)])
//    {
//        d=1;
//        m++;
//        if(m>12)
//        {
//            m=1;
//            y++;
//        }
//    }
//}
//int buf[3001][13][32];
//int main()
//{
//    int y,m,d;
//    int y0=0,m0=0,d0=0;
//    int cnt=0;
//    while(y0<3001)
//    {
//        nextDay(y0,m0,d0);
//        cnt++;
//        buf[y0][m0][d0]=cnt;
//    }
//    cin>>y;
//    if(y<0||y>3001)
//    {
//        cout<<"请输入正确年份!"<<endl;
//        exit(1);
//    }
//    cin>>m;
//    if(m>12||m<0)
//    {
//        cout<<"输入正确月份!"<<endl;
//        exit(1);
//    }
//    cin>>d;
//    if(d<28||d>31)
//    {
//        cout<<"输入正确的日份"<<endl;
//        exit(1);
//    }
//
//}


//
求给定五个数中的最大值 P188 10
//int main()
//{
//    int n;
//    cin>>n;
//    int a[maxSize];
//    int max=0,maxp=0;
//    for(int i=0;i<n;i++)
//    {
//        cin>>a[i];
//        if(a[i]>max)
//        {
//            max=a[i];
//            maxp=i;
//        }
//    }
//    cout<<max<<" "<<maxp<<endl;
//}
//
//
//
//
打印出正切函数表 P188 11
//#define pi 3.1415926
//int main()
//{
//    for(int i=0;i<=360;i+=10)
//    {
//        double t=(i*pi)/180;
//        // cout<<i<<" "<<tan(t)<<endl;
//        printf("%d %.4f\n",i,tan(t));
//    }
//}
//
//
//
用递归的方法求幂函数 P188 12
//int Calu(int m,int n)
//{
//    if(n==0)
//        return 1;
//    else
//        return m*Calu(m,n-1);
//}
//int main()
//{
//    int m,n;
//    cin>>m>>n;
//    cout<<Calu(m,n);
//}
//
打印杨辉三角 P188 13
//#define N 30
//int main()
//{
//    int n;
//    int a[N][N];
//    cin>>n;
//    for(int i=0;i<N;i++)
//    {
//        for(int j=0;j<N;j++)
//        {
//            a[i][j]=0;
//        }
//    }
//    for(int i=1;i<N;i++)
//    {
//        for(int j=1;j<N;j++)
//        {
//            if(i==1&&j==N/2)
//            {
//                a[i][j]=1;
//            }
//            else
//            {
//                a[i][j]=a[i-1][j-1]+a[i-1][j+1];
//            }
//        }
//    }
//    for(int i=0;i<n+2;i++)
//    {
//        for(int j=0;j<N;j++)
//        {
//            if(a[i][j]==0)  //值为0就打印空格,否则打印数值
//                cout<<" ";
//            else
//                cout<<a[i][j];
//        }
//        cout<<endl;
//    }
//}

//
//
用递归的方法,输出一个数的逆序十进制数 P189 14
//void Output(int n)
//{
//    if(n!=0)
//    {
//        cout<<
//    }
//}
//int main()
//{
//    int n;
//    cin>>n;
//    Output(n);
//}
//
//
//
将八进制转化为十进制,将十进制转化为八进制 P189 15
//void readoctal(int ch[],int len,int &n)  //8转10
//{
//    for(int i=0;i<len;i++)
//    {
//        n+=ch[i]*pow(8,i);
//    }
//}
//
//void writeoctal(int ch[],int &len,int n) //10转8
//{
//    while(n)
//    {
//        int t=n%8;
//        n=n/8;
//        ch[len]+=t;
//        if(ch[len]>=8)
//        {
//            ch[len]-=8;
//            ch[len+1]++;
//        }
//        len++;
//    }
//
//}
//int main()
//{
//    int n;
//    cin>>n;
//    int len=0;
//    int ch[maxSize];
//    for(int i=0;i<maxSize;i++)
//        ch[i]=0;
//    writeoctal(ch,len,n);
//    for(int i=len-1;i>=0;i--)
//        cout<<ch[i];
//    cout<<endl;
//    n=0;
//    readoctal(ch,len,n);
//    cout<<n<<endl;
//}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值