DAY(9)_指针+字符指针

作业

一、使用指针实现冒泡 void Bubble(int *p,int n)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Bubble(int *p,int n);

int main(int argc, const char *argv[])
{
    int n;
    printf("请输入数组的个数:");
    scanf("%d",&n);
    int a[n];

    for(int i=0;i<n;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }

    Bubble(a,n);

    for(int i=0;i<n;i++)
    {
        printf("%d\n",a[i]);
    }


    return 0;
}

void Bubble(int *p,int n)
{
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<n-i;j++)
        {
            if(*(p+j)>*(p+j+1))
            {
                int t;
                t=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=t;
            }
        }
    }
}

结果:

二、使用选择排序实现 void simple_sort(int*p,int n)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Simple(int *p,int n);

int main(int argc, const char *argv[])
{
    int n;
    printf("请输入数组的个数:");
    scanf("%d",&n);
    int a[n];

    for(int i=0;i<n;i++)
    {
        printf("a[%d=]",i);
        scanf("%d",&a[i]);
    }

    Simple(a,n);

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

void Simple(int *p,int n)
{
    int max=0;
    for(int i=0;i<n-1;i++)
    {
        max=i;
        for(int j=i+1;j<n;j++)
        {
            if(*(p+max)<*(p+j))
            {
                max=j;
            }
        }

        if(max!=i)
        {
            int t;
            t=*(p+max);
            *(p+max)=*(p+i);
            *(p+i)=t;

        }
    }
}

结果:

三、使用指针实现字符串比较 int my_strcmp(char *s1, char *s2)

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

int My_strcmp(char *s1,char *s2);

int main(int argc, const char *argv[])
{
    char s1[50]="";
    char s2[50]="";

    printf("请输入第一串字符串:");
    gets(s1);
    printf("请输入第二串字符串:");
    gets(s2);

    int n=My_strcmp(s1,s2);

    if(n>0)
        printf("s1>s2\n");
    else if(n<0)
        printf("s1<s2\n");
    else
        printf("s1==s2\n");

    return 0;
}

int My_strcmp(char *s1,char *s2)
{
    int i=0;
    int dev=0;

    while(*(s1+i)==*(s2+i))
    {
        if(*(s1+i)=='\0')
        {
            break;
        }

        i++;
    }

    dev=*(s1+i)-*(s2+i);

    return dev;
}

结果:

四、使用指针实现字符串追加 void my_strcat(char *s1,char *s2)

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

void My_strcat(char *s1,char *s2);

int main(int argc, const char *argv[])
{
    char s1[50]="";
    char s2[50]="";

    printf("请输入第一串字符串:");
    gets(s1);
    printf("请输入第二串字符串:");
    gets(s2);

    My_strcat(s1,s2);

    puts(s1);

    return 0;
}

void My_strcat(char *s1,char *s2)
{
    int i=0,j=0;

    while(*(s1+i))
    {
        i++;
    }

    while(*(s2+j))
    {
        *(s1+i)=*(s2+j);
        i++;
        j++;

    }

    *(s1+i)=*(s2+j);
}

结果:

static S32 parse_day_plan_str(const char *str, U32 wday, PTR_REC_PLAN_SECTION day_plan_section) { S32 section_count = 0; const char *pchr = str; S32 sh, sm, eh, em; S32 type = REC_PLAN_TYPE_NULL; S32 ret = OK; if (NULL == str || wday >= WEEK_DAY_NUM || NULL == day_plan_section) { RECORD_ERROR("ptr is NULL"); return ERROR; } while((pchr = strstr(pchr, NORMAL_DOUBLE_QUOTATION)) != NULL)//查找str中 \" 第一次出现的位置 { if (section_count >= MAX_SECTION_PER_DAY) { break; } pchr += strlen(NORMAL_DOUBLE_QUOTATION);//指针移动 越过 \" if (!isdigit(*pchr))//如果不是十进制数,继续执行 { pchr++; continue; } /* 读取time */ if(4 != sscanf(pchr, "%02d%02d-%02d%02d", &sh, &sm, &eh, &em))//开始小时、开始分钟、结束小时、结束分钟 { RECORD_ERROR("time parse_rec_plan_section parse error\n"); ret = ERROR; continue; } /* 定位到冒号后的字符,读取type */ pchr += (strlen(PARSE_TIME_FOMORT) + strlen(NORMAL_COLON)); if(1 != sscanf(pchr, "%d", &type)) { RECORD_ERROR("type parse_rec_plan_section parse error\n"); ret = ERROR; continue; } switch (type) { case REC_PLAN_TYPE_NULL: case REC_PLAN_TYPE_TIME: case REC_PLAN_TYPE_EVENT: day_plan_section[section_count].type = type; break; default: ret = ERROR; RECORD_ERROR("day[%s] section[%d] slp_rec_type[%d] error ", option_day_name[wday], section_count, type); day_plan_section[section_count].type = REC_PLAN_TYPE_NULL; } day_plan_section[section_count].start_minute = sh * 60 + sm; day_plan_section[section_count].end_minute = eh * 60 + em; section_count++; } /* 将当天未设置的时段全部置0 */ while (section_count < MAX_SECTION_PER_DAY) { day_plan_section[section_count].type = 0; day_plan_section[section_count].start_minute = 0; day_plan_section[section_count].end_minute = 0; section_count++; } RECORD_DEBUG("parse %s, %s return[%d]", option_day_name[wday], str, ret); return ret; }详细解析一下这段函数
08-29
#include <stdio.h> #include <time.h> #include <string.h> #include "aip_common.h" #define ZERO (0) #define DEFAULT_YEAR (1900) #define DEFAULT_MON (1) #define HALFDAY (12) U4 main() { time_t u4_t_time_now = time(NULL); struct tm st_t_time_members; localtime_s(&st_t_time_members, &u4_t_time_now); // 中文星期数组 const U1* u1p_tp_cnweeks_members[] = { "日", "一", "二", "三", "四", "五", "六" }; // 英文月份数组 const U1* u1p_tp_enmonths_members[] = { "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" }; // 英文星期数组 const U1* u1p_tp_enweeks_members[] = { "Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday" }; // 日文星期数组 const U1* u1p_tp_jpweeks_members[] = { "日", "月", "火", "水", "木", "金", "土" }; // 格式1:2017年9月28日 星期四 14点26分13秒 printf("格式1:%d年%d月%d日 星期%s %d点%d分%d秒\n",st_t_time_members.tm_year + (U4)DEFAULT_YEAR, st_t_time_members.tm_mon + (U4)DEFAULT_MON, st_t_time_members.tm_mday,u1p_tp_cnweeks_members[st_t_time_members.tm_wday], st_t_time_members.tm_hour, st_t_time_members.tm_min, st_t_time_members.tm_sec); // 格式2:2017/9/28 星期四 14:26:13 printf("格式2:%d/%d/%d 星期%s %d:%02d:%02d\n",st_t_time_members.tm_year + (U4)DEFAULT_YEAR, st_t_time_members.tm_mon + (U4)DEFAULT_MON, st_t_time_members.tm_mday,u1p_tp_cnweeks_members[st_t_time_members.tm_wday], st_t_time_members.tm_hour, st_t_time_members.tm_min, st_t_time_members.tm_sec); // 格式3:2017/9/28 星期四 2:26:13(PM) U4 u4_t_time_halfday = st_t_time_members.tm_hour % (U4)HALFDAY; if ( (U4)ZERO == u4_t_time_halfday) { u4_t_time_halfday = (U4)HALFDAY; } else { } const U1* ampm_str; if ((U4)HALFDAY <= st_t_time_members.tm_hour) { ampm_str = "PM"; } else { ampm_str = "AM"; } printf("格式3:%d/%d/%d 星期%s %d:%02d:%02d(%s)\n",st_t_time_members.tm_year + (U4)DEFAULT_YEAR, st_t_time_members.tm_mon + (U4)DEFAULT_MON, st_t_time_members.tm_mday,u1p_tp_cnweeks_members[st_t_time_members.tm_wday], u4_t_time_halfday, st_t_time_members.tm_min, st_t_time_members.tm_sec,ampm_str); // 格式4:Thursday, September 28, 2017 14:26:13 printf("格式4:%s, %s %d, %d %02d:%02d:%02d\n",u1p_tp_enweeks_members[st_t_time_members.tm_wday],u1p_tp_enmonths_members[st_t_time_members.tm_mon], st_t_time_members.tm_mday, st_t_time_members.tm_year + (U4)DEFAULT_YEAR,st_t_time_members.tm_hour, st_t_time_members.tm_min, st_t_time_members.tm_sec); // 格式5:2017年9月28日() 2:26:13(PM) if ((U4)HALFDAY <= st_t_time_members.tm_hour) { ampm_str = "PM"; } else { ampm_str = "AM"; } printf("格式5:%d年%d月%d日(%s) %d:%02d:%02d(%s)\n",st_t_time_members.tm_year + (U4)DEFAULT_YEAR, st_t_time_members.tm_mon + (U4)DEFAULT_MON, st_t_time_members.tm_mday, u1p_tp_jpweeks_members[st_t_time_members.tm_wday], u4_t_time_halfday, st_t_time_members.tm_min, st_t_time_members.tm_sec,ampm_str); return ZERO; } 给数组加上初始化函数
08-06
解释这段代码的含义: int COM_sub_time(char *d_time_p, char *s_time_p, char *sub_time_p) { struct tm from_stt; time_t from_i; int t_i32; int year_i32, mon_i32, day_i32; int hour_i32, min_i32, sec_i32; int f_date_f32, f_time_f32; char s_temp_time[14+1]; /* Make Time Structure */ f_date_f32 = COM_atoi(s_time_p, 8); f_time_f32 = COM_atoi(s_time_p + 8, 6); t_i32 = f_date_f32; from_stt.tm_year = (t_i32 / 10000) - 1900; t_i32 = t_i32 - (from_stt.tm_year + 1900) * 10000; from_stt.tm_mon = (t_i32 / 100) - 1; t_i32 = t_i32 - (from_stt.tm_mon + 1) * 100; from_stt.tm_mday = t_i32; t_i32 = f_time_f32; from_stt.tm_hour = (t_i32 / 10000); t_i32 = t_i32 - from_stt.tm_hour * 10000; from_stt.tm_min = (t_i32 / 100); t_i32 = t_i32 - from_stt.tm_min * 100; from_stt.tm_sec = t_i32; from_stt.tm_isdst = -1; /* Add Time */ from_stt.tm_mday = from_stt.tm_mday - COM_atoi(sub_time_p, 3); from_stt.tm_hour = from_stt.tm_hour - COM_atoi(sub_time_p + 3, 2); from_stt.tm_min = from_stt.tm_min - COM_atoi(sub_time_p + 5, 2); from_stt.tm_sec = from_stt.tm_sec - COM_atoi(sub_time_p + 7, 2); /* Make Destination Date-Time String */ if((from_i = mktime(&from_stt)) == (time_t)-1) { return MP_FALSE; } year_i32 = from_stt.tm_year + 1900; mon_i32 = from_stt.tm_mon + 1; day_i32 = from_stt.tm_mday; hour_i32 = from_stt.tm_hour; min_i32 = from_stt.tm_min; sec_i32 = from_stt.tm_sec; sprintf(s_temp_time, "%04d%02d%02d%02d%02d%02d", year_i32, mon_i32, day_i32, hour_i32, min_i32, sec_i32); memcpy(d_time_p, s_temp_time, 14); return MP_TRUE; }
11-28
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值