c/c++练习–14

c/c++练习–14


  • 习题来源:C语言经典编程282例

131.使用指针实现整数排序

输入3个整数,将这3个整数按照由大到小的顺序输出

#include <stdio.h>

void    sort(int *p,int size){
    int *n=p,*m;
     int    tmp;
    for(;n<p+size;n++){
        for(m=n+1;m<p+size;m++){
            if(*n<*m){
                tmp = *n;
                *n = *m;
                *m =tmp;
            }
        }
    }
}

int main(void){
    int a[3];
    printf("请输入3个整数:");
    for(int i=0;i<3;i++)
        scanf("%d",a+i);
    sort(a,3);
    for(int i=0;i<3;i++)
        printf("%d",*(a+i));

    return(0);
}                                                   

132.指向结构体变量的指针

通过结构体指针变量实现在窗体上显示学生信息。

#include <stdio.h>
#include <string.h>

struct  student{
    char        name[10];
    int     number;
    int     age;
    float   score;
};

int main(void){
    struct student s,*p=&s;

    strcpy(p->name,"xiaoming");
    p->age = 18;
    p->number = 1122;
    p->score = 99.1;

    printf("Name:%s\nNumber:%d\nAge:%d\nScore:%f\n",p->name,p->number,p->age,p->score);

    return(0);
}                                                       

133.使用指针输出数组元素

#include <stdio.h>
#include <string.h>

int main(void){
    int a[5]={1,2,3,4,5};
    int *p=a;
    for(;p<a+5;)
        printf("%d\t",*p++);
    return(0);
}                                                   

134.使用指针查找数列中的最大值和最小值。

#include <stdio.h>
#include <string.h>

int main(void){
    int a[5]={1,2,3,4,5};
    int *p=a+1,m=*a,mi=*a;
    for(;p<a+5;) {
        m = m>*p++?m:*p;
        mi = mi<*p++?mi:*p;
    }
    printf("max:%d\t min:%d",m,mi); 
    return(0);
}                                                   

135.使用指针的指针输出字符串

#include <stdio.h>
#include <string.h>

int main(void){
    char *s[]={"agc","bcd","efg"};
    char **p=s;
    for(;p<s+3;)
        puts(*p++);
    return(0);
}                                                   

136.使用指向指针的指针对字符串排序

#include <stdio.h>
#include <string.h>

void    sort(char **p,int size){
    char        *tmp;
    for(int i=0;i<size;i++){
        for(int j=i+1;j<size;j++){
            if(strcmp(p[i],p[j])>0){
                tmp = p[j];
                p[j] = p[i];
                p[i] = tmp;
            }
        }
    }

}

int main(void){
    char *s[]={"agc","hcd","efg"};
    char **p=s;

    sort(p,3);
    for(;p<s+3;)
        puts(*p++);
    return(0);
}                                                       

137.使用返回指针的函数查找最大值

#include <stdio.h>
#include <string.h>

int*    max_num(int *num,int size){
    int *m=num,*p=num;
    for(;p<num+size;)
        m = *m>*p?m:p++;
    return(m);
}

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

    printf("%d",*max_num(s,6));
    return(0);
}                                               

138.使用指针连接两个字符串

#include <stdio.h>
#include <string.h>

char*   str_cmt(char *dest,char* sou){
    char *p,*q=sou;

    p = dest+strlen(dest);
    while(*q != '\0')
        *p++ = *q++;
    return(dest);
}

int main(void){
    char str[100] = "abcd";
    char str2[] = "edf";

    puts(str_cmt(str,str2)) ;
    return(0);
}

139.指针实现逆序存放数组

#include <stdio.h>
#include <string.h>

void    inv(int *dest,int size){
    int *p=dest,*q=dest+size-1;
    int tmp;
    while(p<q) {
        tmp = *p;
        *p = *q;
        *q = tmp;
        p++;
        q--;
    }

}

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

    inv(a,5) ;
    for(int i=0;i<5;i++)
        printf("%d\t",a[i]);
    return(0);
}                                                   

140.用指针数组构造字符串数组

#include <stdio.h>

int main(void){
    char *s[]={"agc","hcd","efg"};
    char **p=s;

    for(;p<s+3;)
        puts(*p++);
    return(0);
}                                                       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值