1、练习10-1
#include<stdio.h>
void adjust_point(int *n){
if(*n<0){
*n=0;
}
else if(*n>100){
*n=100;
}
}
int main(void)
{
int i;
printf("请输入一个负数或大于100的数:"); scanf("%d",&i);
adjust_point(&i);
printf("修改后的数为%d",i);
return 0;
}
2、练习10-2
#include<stdio.h>
void decrement_date(int *y,int *m,int *d){//前一天
if(*y%4==0){
if(*m==1&&*d==1){
*m=12;
*d=31;
}
else if(*m==2&&*d==1){
*m=1;
*d=31;
}
else if(*m==3&&*d==1){
*m=2;
*d=29;
}
else if(*m==4&&*d==1){
*m=3;
*d=31;
}
else if(*m==5&&*d==1){
*m=4;
*d=30;
}
else if(*m==6&&*d==1){
*m=5;
*d=31;
}
else if(*m==7&&*d==1){
*m=6;
*d=30;
}
else if(*m==8&&*d==1){
*m=7;
*d=31;
}
else if(*m==9&&*d==1){
*m=8;
*d=31;
}
else if(*m==10&&*d==1){
*m=9;
*d=30;
}
else if(*m==11&&*d==1){
*m=10;
*d=31;
}
else if(*m==12&&*d==1){
*m=11;
*d=30;
}
else{
--*d;
}
}
else{
if(*m==1&&*d==1){
*m=12;
*d=31;
}
else if(*m==2&&*d==1){
*m=1;
*d=31;
}
else if(*m==3&&*d==1){
*m=2;
*d=28;
}
else if(*m==4&&*d==1){
*m=3;
*d=31;
}
else if(*m==5&&*d==1){
*m=4;
*d=30;
}
else if(*m==6&&*d==1){
*m=5;
*d=31;
}
else if(*m==7&&*d==1){
*m=6;
*d=30;
}
else if(*m==8&&*d==1){
*m=7;
*d=31;
}
else if(*m==9&&*d==1){
*m=8;
*d=31;
}
else if(*m==10&&*d==1){
*m=9;
*d=30;
}
else if(*m==11&&*d==1){
*m=10;
*d=31;
}
else if(*m==12&&*d==1){
*m=11;
*d=30;
}
else{
--*d;
}
}
}
void increment_date(int *y,int *m,int *d){//后一天
if(*y%4==0){
if(*m==1&&*d==31){
*m=2;
*d=1;
}
else if(*m==2&&*d==29){
*m=3;
*d=1;
}
else if(*m==3&&*d==31){
*m=4;
*d=1;
}
else if(*m==4&&*d==30){
*m=5;
*d=1;
}
else if(*m==5&&*d==31){
*m=6;
*d=1;
}
else if(*m==6&&*d==30){
*m=7;
*d=1;
}
else if(*m==7&&*d==31){
*m=8;
*d=1;
}
else if(*m==8&&*d==31){
*m=9;
*d=1;
}
else if(*m==9&&*d==30){
*m=10;
*d=1;
}
else if(*m==10&&*d==31){
*m=11;
*d=1;
}
else if(*m==11&&*d==30){
*m=12;
*d=1;
}
else if(*m==12&&*d==31){
*m=1;
*d=1;
}
else{
++*d;
}
}
else{
if(*m==1&&*d==31){
*m=2;
*d=1;
}
else if(*m==2&&*d==28){
*m=3;
*d=1;
}
else if(*m==3&&*d==31){
*m=4;
*d=1;
}
else if(*m==4&&*d==30){
*m=5;
*d=1;
}
else if(*m==5&&*d==31){
*m=6;
*d=1;
}
else if(*m==6&&*d==30){
*m=7;
*d=1;
}
else if(*m==7&&*d==31){
*m=8;
*d=1;
}
else if(*m==8&&*d==31){
*m=9;
*d=1;
}
else if(*m==9&&*d==30){
*m=10;
*d=1;
}
else if(*m==10&&*d==31){
*m=11;
*d=1;
}
else if(*m==11&&*d==30){
*m=12;
*d=1;
}
else if(*m==12&&*d==31){
*m=1;
*d=1;
}
else{
++*d;
}
}
}
int main(void)
{
int i,j,k;
printf("请输入年份:"); scanf("%d",&i);
printf("请输入月份:"); scanf("%d",&j);
printf("请输入日期:"); scanf("%d",&k);
/*输入还可以这样写,但是不如上面易读
printf("请输入的日期\n");
scanf("%d",&i);
getchar();
scanf("%d",&j);
getchar();
scanf("%d",&k);
*/
printf("---------------\n");
printf("输入的日期为%d年%d月%d日\n",i,j,k);
increment_date(&i,&j,&k);
printf("它的后一天为%d年%d月%d日\n",i,j,k);
decrement_date(&i,&j,&k);
decrement_date(&i,&j,&k);//因为函数increment_date已经将日期调后一天,这里面调用两次就是将日期调到前一天
printf("它的前一天为%d年%d月%d日",i,j,k);
return 0;
}
3、练习10-3
#include<stdio.h>
void swap(int *px, int *py){
int temp=*px;
*px=*py;
*py=temp;
}
void sort3(int *n1,int *n2,int *n3){
if(*n1>*n2){
swap(n1,n2);
if(*n1>*n3){
swap(n1,n3);
if(*n2>*n3){
swap(n2,n3);
}
}
else{
if(*n2>*n3){
swap(n2,n3);
}
}
}
else{
if(*n2>*n3){
swap(n2,n3);
if(*n1>*n2){
swap(n1,n2);
}
}
}
}
int main(void)
{
int i,j,k;
while(1){ //加个循环为了方便验证
printf("请输入第一个数");
scanf("%d",&i);
printf("请输入第二个数");
scanf("%d",&j);
printf("请输入第三个数");
scanf("%d",&k);
sort3(&i,&j,&k);
printf("三个整数按升序排列为%d,%d,%d\n",i,j,k);
}
return 0;
}
4、练习10-4
#include<stdio.h>
void set_idx(int *v, int n){
int i;
for(i=0;i<n;i++){
v[i]=i;
}
}
int main(void)
{
int v[10]={11,12,13,14,15,16,17,18,19,20};
int n=10;
int i;
for(i=0;i<n;i++){
printf("原始数组为v[%d]:%d\n",i,v[i]);
}
printf("-------------------\n");
set_idx(v,n);
for(i=0;i<n;i++){
printf("变更数组为v[%d]:%d\n",i,v[i]);
}
return 0;
}
5、练习10-5
起始位置为a[2]的地址,n变为2,就相当于走两步,将数组中的a[2],a[3]变为99,其它的则无变化。