明解c语言入门篇答案第八章,明解C语言入门篇练习题第十章

练习10-1#include

void adjust_point(int *n)

{

if (*n < 0)

*n = 0;

else

if (*n > 100)

*n = 100;

return;

}

int main(void)

{

int x;

printf("input integer:");

scanf("%d",&x);

adjust_point(&x);

printf("adjusted integer:%d\n",x);

return 0;

}

练习10-2#include

void increment_date(int *y, int *m, int *d)

{

if ((*m == 12) && (*d == 31))//跨年

{

*y += 1;

*m = 1;

*d = 1;

}

else

if (((*m == 1)&& (*d == 31)) || //跨月

((*m == 3) && (*d == 31))||

((*m == 5) && (*d == 31))||

((*m == 7) && (*d == 31))||

((*m == 8) && (*d == 31))||

((*m == 10) && (*d == 31))||

((*m == 12) && (*d == 31))||

((*m == 4) && (*d == 30))||

((*m == 6) && (*d == 30))||

((*m == 9) && (*d == 30))||

((*m == 11) && (*d == 30))||

(((*y)%4!=0)&&(*m==2)&&(*d==28))|| //平年

(((*y)%100==0)&&((*y)%400!=0)&& (*m == 2) && (*d == 28))|| //平年

(((*y)%400==0)&&(*m==2)&&(*d==29))|| //闰年

((*y)%4==0)&&((*y)%100!=0)&&(*m==2)&&(*d==29))//闰年

{

*m += 1;

*d = 1;

}

else//不跨年不跨月

{

*d += 1;

}

return;

}

void decrement_date(int *y, int *m, int *d)

{

if ((*m == 1) && (*d == 1))//跨年

{

*y -= 1;

*m = 12;

*d = 31;

}

else

if (((*m == 2) && (*d == 1)) || //跨月

((*m == 4) && (*d == 1)) ||

((*m == 6) && (*d == 1)) ||

((*m == 8) && (*d == 1)) ||

((*m == 9) && (*d == 1)) ||

((*m == 11) && (*d == 1)))

{

*m -= 1;

*d = 31;

}

else

if (((*m == 5) && (*d == 1)) || //跨月

((*m == 7) && (*d == 1)) ||

((*m == 10) && (*d == 1)) ||

((*m == 12) && (*d == 1)))

{

*m -= 1;

*d = 30;

}

else

if ((((*y) % 4 != 0) && (*m == 3) && (*d == 1)) || //跨月 平年

(((*y) % 100 == 0) && ((*y) % 400 != 0) && (*m == 3) && (*d == 1))) //跨月 平年

{

*m -= 1;

*d = 28;

}

else

if ((((*y) % 400 == 0) && (*m == 3) && (*d == 1)) || //跨月 闰年

((*y) % 4 == 0) && ((*y) % 100 != 0) && (*m == 3) && (*d == 1)) //跨月 闰年

{

*m -= 1;

*d = 29;

}

else //不跨年不跨月

{

*d -= 1;

}

return;

}

int main(void)

{

int y, m, d;

printf("input year month date:");

scanf("%d %d %d",&y,&m,&d);

decrement_date(&y, &m, &d);

printf("decrement_date:%d %d %d\n",y,m,d);

increment_date(&y, &m, &d);//抵消devrement_date

increment_date(&y, &m, &d);

printf("increment_date:%d %d %d\n",y,m,d);

return 0;

}

练习10-3#include

void sort3(int *n1, int *n2, int *n3)

{

int tmp;

if (*n1 > *n2)

{

tmp = *n2;

*n2 = *n1;

*n1 = tmp;

}

if (*n1 > *n3)

{

tmp = *n3;

*n3 = *n1;

*n1 = tmp;

}

if (*n2 > *n3)

{

tmp = *n2;

*n2 = *n3;

*n3 = tmp;

}

return;

}

int main(void)

{

int n1,n2,n3;

printf("input n1 n2 n3:");

scanf("%d %d %d",&n1,&n2,&n3);

sort3(&n1,&n2,&n3);

printf("sort:%d %d %d\n",n1,n2,n3);

return 0;

}

练习10-4#include

#define NUM 5

void set_idx(int *v, int n)

{

int i;

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

{

v[i] = i;

}

return;

}

int main(void)

{

int i;

int a[NUM];

set_idx(a,NUM);

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

{

printf("a[%d] = %d\n",i,a[i]);

}

return 0;

}

练习10-5#include

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值