自我提升计划 善于利用指针课后习题1

发布时间:2025-03-30 18:02

自我学习平台:利用在线课程进行自我提升 #生活技巧# #自我提升技巧# #技能提升指南#

  指针是c语言的灵魂,为了更好的掌握c语言,作者想在寒假之余,补强自己的指针能力,先浅浅码一下c程序设计(第五版)的善于利用指针的课后习题1-3题

1.输入3个整数,按由小到大的顺序排序

解法一 选择法

#include<stdio.h>
#include<stdlib.h>
void paixv(int *p)
{
    int k;
    int j,m,x;
    for (j=0;j<2;j++)
    {
        k=j;
        for (m=j+1;m<3;m++)
        {
            if (*(p+k)>*(p+m))
                x=*(p+k);
            *(p+k)=*(p+m);
            *(p+m)=x;
        }
    }
    for (j=0;j<3;j++)
        printf("%d ",*(p+j));
}
int main()
{
    int *p1;
    int i;
    p1=(int *)malloc(3*sizeof(int));
    for (i=0;i<3;i++)
        scanf("%d",p1+i);
    paixv(p1);
    free(p1);
    return 0;

解法二 冒泡法

#include<stdio.h>
#include<stdlib.h>
void maopao(int *p)
{
    int j;
    int m;
    int temp;
    for (j=0;j<2;j++)
        for (m=0;m<2-j;m++)
        {
            if (*(p+m)>*(p+m+1))
            {
                temp=*(p+m+1);
                *(p+m+1)=*(p+m);
                *(p+m)=temp;
            }
        }
        for (m=0;m<3;m++)
            printf("%d ",*(p+m));
}
int main()
{
    int *p1;
    int i;
    p1=(int *)malloc(3*sizeof(int));
    for (i=0;i<3;i++)
        scanf("%d",p1+i);
    maopao(p1);
    return 0;

}

2.输入3个字符串,按由小到大的顺序输出

 #include<stdio.h>
#include<string.h>
void paixv(char (*p)[100])
{
    char b[100];
    int i;
    if (strcmp(*(p+0),*(p+1))>0)
    {
        strcpy(b,*(p+1));
        strcpy(*(p+1),*(p+0));
        strcpy(*(p+0),b);
    }
    if (strcmp(*(p+1),*(p+2))>0)
        {
        strcpy(b,*(p+2));
        strcpy(*(p+2),*(p+1));
        strcpy(*(p+1),b);
        }
    if (strcmp(*(p+0),*(p+1))>0)
    {
        strcpy(b,*(p+1));
        strcpy(*(p+1),*(p+0));
        strcpy(*(p+0),b);
    }
        for (i=0;i<3;i++)
            puts(*(p+i));
}
int main()
{
    char a[3][100];
    char (*p1)[100];
    int i;
    p1=NULL;
    for (i=0;i<3;i++)
        gets(*(a+i));
    p1=a;
    paixv(p1);
    return 0;

3.输入10个整数,将其最小的数与第一个数对换,把最大的数与最后一个数对换

 #include<stdio.h>
void chazhao(int *p)
{
    int max,min;
    int i,j,m,n1,n2;
    max=*(p+0);
    min=*(p+0);
    for (i=1;i<10;i++)
    {
        if (max<*(p+i))
        {
            max=*(p+i);
            n1=i;
        }
    }
    for (j=1;j<10;j++)
    {
        if (min>*(p+j))
        {
            min=*(p+j);
            n2=j;
        }
    }
    m=*(p+0);
    *(p+0)=min;
    *(p+n2)=m;
    m=*(p+9);
    *(p+9)=max;
    *(p+n1)=m;
}
int main()
{
    int a[10];
    int i;
    int *p1;
    p1=a;
    for (i=0;i<10;i++)
    scanf("%d",(p1+i));
    chazhao(p1);
    for (i=0;i<10;i++)
        printf("%d ",*(p1+i));
    return 0;

如果有错误,或者各位看官有更好的思路请大家指点。

网址:自我提升计划 善于利用指针课后习题1 https://www.yuejiaxmz.com/news/view/843192

相关内容

教师自我提升计划 教师学习计划
自我提升工作计划(通用11篇)
拆解计划,养成好习惯,利用碎片时间自我提升
教师自我能力提升计划(通用16篇)
自我能力提升计划与行动计划10篇
学习提升计划
自我提升计划(精选21篇)
自我提升及改进计划
自我提升计划精选15篇
自我工作能力提升计划(通用14篇)

随便看看