明解C语言 练习题第十章

10-1

#include <stdio.h>
void adjust_point(int *n)
{
    if(*n<0)
    {
        *n=0;
    }
    if(*n>100)
    {
        *n=100;
    }
   return;

}

int main(void)
{
    int a;
    printf("请输入一个整数:\n");
    scanf("%d",&a);
    adjust_point(&a);
    printf("最终的值是:%d",a);

}

10-2 

#include <stdio.h>
void increment_date(int *y,int*m,int*d)
{
//以31号为结束的月份
    if(*m==1||*m==3||*m==5||*m==7||*m==8||*m==10)
    {
        if(*d==31)
        {
            *d=1;
            *m+=1;
        }
        else
        {
            *d+=1;
        }
    }
//12月份单独讨论
    if((*m==12)&&(*d==31))
    {
        *y+=1;
        *m=1;
        *d=1;

    }
    if((*m==12)&&(*d<=31))
    {
        *d+=1;

    }
//以30号为结束的月份
    if(*m==4||*m==6||*m==9||*m==11)
    {
        if(*d==30)
        {
            *d=1;
            *m+=1;
        }
        else
        {
            *d+=1;
        }
    }
//2月份单独讨论
    if(*m==2)
    {
        if((*y%4==0)&&(*y%100!=0))
        {
            if(*d==29)
            {
                *d=1;
                *m+=1;
            }
            else
            {
                *d+=1;
            }
        }
        else
        {
            if(*d==28)
            {
                *d=1;
                *m+=1;
            }
            else
            {
                *d+=1;
            }
        }
    }

}
void decrement_date(int *y,int*m,int*d)
{
//以1号为开始的月份,前推是30号
    if(*m==5||*m==7||*m==8||*m==10||*m==12)
    {
        if(*d==1)
        {
            *d=30;
            *m-=1;
        }
        else
        {
            *d-=1;
        }
    }
//1.1单独讨论
    if((*m==1)&&(*d==1))
    {
        *y-=1;
        *m=12;
        *d=31;

    }
    if((*m==1)&&(*d>=1))
    {
        *d-=1;

    }
//以1号为开始的月份,前推是12.31号
    if(*m==2||*m==4||*m==6||*m==9||*m==11)
    {
        if(*d==1)
        {
            *d=31;
            *m-=1;
        }
        else
        {
            *d-=1;
        }
    }
//3月份单独讨论,因为3.1号前是2.29还是2.28要根据闰年来判断
    if(*m==3)
    {
        if((*y%4==0)&&(*y%100!=0))
        {
            if(*d==1)
            {
                *d=29;
                *m-=1;
            }
            else
            {
                *d-=1;
            }
        }
        else
        {
            if(*d==1)
            {
                *d=28;
                *m-=1;
            }
            else
            {
                *d-=1;
            }
        }
    }

}


int main(void)
{
    int a,b,c;
    printf("请输入年月日(用逗号隔开):\n");
    scanf("%d,%d,%d",&a,&b,&c);
    decrement_date(&a,&b,&c);
    printf("该日期的前一天是:%d,%d,%d",a,b,c);
    printf("\n");
    increment_date(&a,&b,&c);//抵消decrement_date
    increment_date(&a,&b,&c);
    printf("该日期的后一天是:%d,%d,%d",a,b,c);

}

10-3

#include <stdio.h>
void sort3(int *n1,int *n2,int *n3)
{
    int a[3]= {*n1,*n2,*n3};
    int i,j;

    //冒泡排序法
    for(i=0; i<2; i++)
    {
        for(j=2; j>i; j--)
        {
            if(a[j-1]>a[j])
            {
                int t=a[j];
                a[j]=a[j-1];
                a[j-1]=t;
            }
        }
    }
    printf("升序后:");
    for(i=0; i<3; i++)
    {
        printf("%d,",a[i]);
    }

}



int main(void)
{
    int a,b,c;
    printf("请输入三个整数,并且用逗号隔开:");
    scanf("%d,%d,%d",&a,&b,&c);
    sort3(&a,&b,&c);
}

10-4 

#include <stdio.h>
void set_idx(int *v,int n)
{
    int i;
    for(i=0; i<n; i++)
    {
        *(v+i)=i;
        printf("*(v+%d)=%d",*(v+i),i);
        printf("\n");
    }

}
int main(void)
{
    int a[]= {0};
    int b;
    printf("请输入一个整数:");
    scanf("%d",&b);
    set_idx(a,b);
}

10-5

#include <stdio.h>

void ary_set(int v[], int n, int val)
{
    int i;

    for (i = 0; i < n; i++)
        v[i] = val;
}

int main(void)
{
    int i;
    int a[] = { 1, 2, 3, 4, 5 };

    ary_set(&a[2], 5, 99);

    for (i = 0; i < 5; i++)
        printf("a[%d] = %d\n", i, a[i]);

    return 0;
}

猜你喜欢

转载自blog.csdn.net/Twinklecando/article/details/87933396
今日推荐