c/c++练习–14

来源:互联网 发布:java汽车租赁系统 编辑:程序博客网 时间:2024/05/21 15:03

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 0
原创粉丝点击