苏嵌//赵妍//2018.7.19

 

 

 

 

今日学习任务

 

 

嵌入式 C 语言强化编程练习

日任务完成情况

 

 

今日任务按计划完成

1.完成trianing2(指针、数组、字符串编程练习)

 

日开发中出现的问题汇总

 

  1. 在编程单词逆序时,逻辑不是太清晰,导致程序出现了问题,在请教完同学后完成了单词的逆序编程
  2. 在编写程序时要注意指针临时变量和变量的返回值,返回首地址

 

日未解决问题

 

日开发收获

1.熟练掌握了函数的调用过程(传参时:当只使用不修改实参变量值时,传实参变量名;当修改实参变量值时,传实参变量的地址)

2.熟练掌握字符串的操作;(实现并使用字符串处理函数)

 

 

自我评

 

 

 

今天基本能够跟上老师的教学安排

其他

 

 

  1. 请编写一个C函数,该函数将一个字符串逆序

  1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include <string.h>

  4

  5 #define MAX_LEN sizeof (char) * 100

  6

  7 char * convert(char *ptr)         //逆序输出函数

  8 {

  9     int i;

 10     int len;                //定义输入字符串的长度

 11     len = strlen(ptr);

 12

 13     char *str = (char *) malloc (MAX_LEN);

 14     char *p_temp = ptr;

 15     char *s_temp = str;

 16

 17     for(i = 0; i < len; i++)  //从第一个字符开始,逆序输出

 18     {

 19         *(s_temp + i) = *(p_temp + len - i - 1);

 20     }

 21     *(s_temp + i) ='\0';

 22

 23     return s_temp;

 24 }

 25

 26 int main()

27{

 28     char *ptr = (char *) malloc (MAX_LEN);//为指针分配空间

 29

 30     if(ptr == NULL)                    //检查是否分配成功

 31     {

 32         printf("malloc error!\n");

 33         exit(1);

 34     }

 35

 36     memset(ptr, 0, MAX_LEN);          //初始化这块内存

 37

 38     printf("Please input string:");      //输入字符串

 39     scanf("%s",ptr);

 40

 41     char *str = convert(ptr);    //调用逆序输出函数

 42     printf("The after string : %s\n",str);

//输出逆序后的字符串

 43

 44     ptr = NULL;                //指针置为NULL

 45     return 0;

 46 }

 

 

2.编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.

 

1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include <string.h>

  4

  5 #define MAX_LEN sizeof (char) * 100

  6

  7 char b[MAX_LEN];             //定义一个全局变量 数组

  8

  9 void init(char *ptr)

 10 {

 11     if(ptr == NULL)           //检查是否分配成功

 12     {

 13         printf("malloc error!\n");

 14         exit(1);

 15     }

 16

 17     memset(ptr, 0, MAX_LEN);    //初始化这块内存

 18

 19 }

 20

 21 char * convert(char *ptr)            //逆序输出函数

 22 {

 23     int i;

 24     int len;                   //定义输入字符串的长度

 25     len = strlen(ptr);

 26

 27     char *str = (char *) malloc (MAX_LEN);

 28     init(str);

 29

 30     char *p_temp = ptr;

 31     char *s_temp = str;

 32

 33     for(i = 0; i < len; i++)  //从第一个字符开始,逆序输出

 34     {

 35         *(s_temp + i) = *(p_temp + len - i - 1);

 36     }

 37     *(s_temp + i) =' ';

//为了方便后面的单词逆序输出,在字符完全逆序后加一个空格

 38     *(s_temp + i +1) ='\0';      //再加结束标志

 39     s_temp = str;

 40

 41     return s_temp;

 42 }

 43

 44 char * word_inversion(char *str)   //单词逆序函数

 45 {

 46     int i;

 47     int len = 0;

 48     int len1 = 0;             //统计每个单词的长度

 49     int len2;

 50

 51     char *wtr = (char *) malloc (MAX_LEN);//为指针分配空间

 52     char *wtr1 = (char *) malloc (MAX_LEN);//为指针分配空间

 53     init(wtr);

 54     init(wtr1);

 55

 56     char *s_temp = str;

 57     char *w_temp = wtr;

 58     char *w1_temp = wtr1;

 59

 60     while(*s_temp != '\0')

 61     {

 62         if(*s_temp != ' ')      //当逆序的字符串是单词时

 63         {

 64             len1++;            //单词的长度加一

 65         }

 66         if(*s_temp == ' ')     //当指针遍历完一个单词时

 67         {

 68             s_temp = s_temp - len1;

//指针回到该单词的第一个字符

 69             strncpy(w1_temp, s_temp, len1);       

//利用拷贝函数将该单词的长度拷贝到临时的指针保存

 70             len2 = len1;                         

 //用临时变量len2代替len1,否则len1减到0时,空格会将之前的字母覆盖

 71             while(*w1_temp != '\0')              

 //当临时的指针开始遍历时

 72             {

 73                 b[len + len2 - 1] = *w1_temp;     

//用数组来接临时指针中的内容

 74                 len2--;

 75                 w1_temp++;

 76             }

 77             b[len + len1] = ' ';

//在所有单词逆序完之后加上空格,

 78             s_temp = s_temp + len1;

//指针再回到该单词的末尾

 79             memset(w1_temp, 0, len1);             

//用memset清空临时指针指向的内容

 80             len = len + len1 + 1;                 

//len为总长度(+1是加上空格的长度)

 81             len1 = 0;                             

//当统计下一个单词的长度时,将len1置为0,重新统计长度

 82

 83         }

 84         s_temp++;

 85

 86

 87     }

 88     b[len] = '\0';                               

//所有单词逆序完,加上结束标志\0

 89     return b;

 90 }

 91

 92 int main()

 93 {

 94     char *ptr = (char *) malloc (MAX_LEN);//为指针分配空间

 95     init(ptr);

 96

 97     ptr ="I am from shanghai";

 98     printf("Original String is: %s\n",ptr);  //输入字符串

 99

100     char *str = convert(ptr);          //调用逆序输出函数

101     char *wtr = word_inversion(str);

102     printf("The after string : %s\n",w);

//输出逆序后的字符串

103

104     ptr = NULL;                    //指针置为NULL

105     str = NULL;

106     wtr = NULL;

107     return 0;

108 }

                                                                                                        

3.请编写一个C函数,该函数可以实现将一个字符串转为整数输出

  1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include <string.h>

  4

  5 #define MAX_LEN sizeof (char) * 100

  6

  7 void init(char *str)  //检查是否分配好空间,并对其初始化

  8 {

  9     if(str == NULL)                //检查是否分配成功

 10     {

 11         printf("malloc error!\n");

 12         exit(1);

 13     }

 14

 15     memset(str, 0, MAX_LEN);        //初始化这块内存

 16 }

 17

 18 int string_convert_interger(char *ptr)         

//字符串转化为整数的函数

 19 {

 20     int num = 0;

 21     char *p_temp = ptr;

 22

 23     while(*p_temp != '\0')     //对输入的字符串进行遍历

 24     {

 25         num = num * 10 + (*p_temp - '0'); //挨个输出整数   

 26         p_temp++;

 27     }

 28

 29     return num;

 30 }

 31

 32

 33 int main()

 34 {

 35     int num;

 36     char *ptr = (char *) malloc (MAX_LEN);

 37     init(ptr);

 38

 39     printf("Please input string:");    //输入字符串

 40     scanf("%s",ptr);

 41

 42     num = string_convert_interger(ptr);

//调用字符串转化为整数的函数

 43

 44     printf("The convert interger : %d\n",num);

//输出转化后的整数

 45

 46     ptr = NULL;                       //指针置为NULL

 47     return 0;

 48 }

 

 

4.请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出

  1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include <string.h>

  4

  5 #define MAX_LEN sizeof (char) * 100

  6

  7 void init(char *str)   //检查是否分配好空间,并对其初始化

  8 {

  9     if(str == NULL)          //检查是否分配成功

 10     {

 11         printf("malloc error!\n");

 12         exit(1);

 13     }

 14

 15     memset(str, 0, MAX_LEN); //初始化这块内存

 16 }

 17

 18 char * convert(char *ptr)      //逆序输出函数

 19 {

 20     int i;

 21     int len;           //定义输入字符串的长度

 22     len = strlen(ptr);

 23

 24     char *str = (char *) malloc (MAX_LEN);

 25     init(str);

 26

 27     char *p_temp = ptr;

 28     char *s_temp = str;

 29

 30     for(i = 0; i < len; i++)//从第一个字符开始,逆序输出

 31     {

 32         *(s_temp + i) = *(p_temp + len - i - 1);

 33     }

 34     *(s_temp + i) ='\0';

 35

 36     return s_temp;

 37 }

 38

 39 char * interger_convert_string(int num)         

//整数转化为字符串的函数

 40 {

 41     int temp;

 42

 43     char *str = (char *) malloc (MAX_LEN);//为指针分配空间

 44     init(str);    //检查是否分配好了空间,并初始化指针

 45

 46     char *s_temp = str;

 47

 48     while(num != 0)

//当输入的整数不为0时,分离每一位数,并转化为字符

 49     {

 50         temp = num % 10;             //整数取余

 51         *s_temp = temp + '0';

 52         num = num / 10;               //整数取整

53         s_temp++;

 54     }

 55     *s_temp = '\0';

 56

 57     return str;

 58 }

 59

 60

 61 int main()

 62 {

 63     int num;

 64

 65     printf("Please input interger number:");

//输入整型变量

 66     scanf("%d",&num);

 67

 68     char *ptr = interger_convert_string(num);       

//调用整数转化为字符串的函数

 69     printf("not convert string = %s\n",ptr);                       //转化为字符串但并未逆序

 70

 71     char *str = convert(ptr);                      

//调用逆序的函数,逆序后的字符串

 72     printf("The convert string : %s\n",str);        

//输出转化后的字符串

 73

 74     ptr = NULL;                      //指针置为NULL

 75     str = NULL;

 76     return 0;

 77 }

 

 

 

 

今日学习任务

 

 

嵌入式 C 语言强化编程练习

日任务完成情况

 

 

今日任务按计划完成

1.完成trianing2(指针、数组、字符串编程练习)

 

日开发中出现的问题汇总

 

  1. 在编程单词逆序时,逻辑不是太清晰,导致程序出现了问题,在请教完同学后完成了单词的逆序编程
  2. 在编写程序时要注意指针临时变量和变量的返回值,返回首地址

 

日未解决问题

 

日开发收获

1.熟练掌握了函数的调用过程(传参时:当只使用不修改实参变量值时,传实参变量名;当修改实参变量值时,传实参变量的地址)

2.熟练掌握字符串的操作;(实现并使用字符串处理函数)

 

 

自我评

 

 

 

今天基本能够跟上老师的教学安排

其他

 

 

  1. 请编写一个C函数,该函数将一个字符串逆序

  1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include <string.h>

  4

  5 #define MAX_LEN sizeof (char) * 100

  6

  7 char * convert(char *ptr)         //逆序输出函数

  8 {

  9     int i;

 10     int len;                //定义输入字符串的长度

 11     len = strlen(ptr);

 12

 13     char *str = (char *) malloc (MAX_LEN);

 14     char *p_temp = ptr;

 15     char *s_temp = str;

 16

 17     for(i = 0; i < len; i++)  //从第一个字符开始,逆序输出

 18     {

 19         *(s_temp + i) = *(p_temp + len - i - 1);

 20     }

 21     *(s_temp + i) ='\0';

 22

 23     return s_temp;

 24 }

 25

 26 int main()

27{

 28     char *ptr = (char *) malloc (MAX_LEN);//为指针分配空间

 29

 30     if(ptr == NULL)                    //检查是否分配成功

 31     {

 32         printf("malloc error!\n");

 33         exit(1);

 34     }

 35

 36     memset(ptr, 0, MAX_LEN);          //初始化这块内存

 37

 38     printf("Please input string:");      //输入字符串

 39     scanf("%s",ptr);

 40

 41     char *str = convert(ptr);    //调用逆序输出函数

 42     printf("The after string : %s\n",str);

//输出逆序后的字符串

 43

 44     ptr = NULL;                //指针置为NULL

 45     return 0;

 46 }

 

 

2.编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.

 

1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include <string.h>

  4

  5 #define MAX_LEN sizeof (char) * 100

  6

  7 char b[MAX_LEN];             //定义一个全局变量 数组

  8

  9 void init(char *ptr)

 10 {

 11     if(ptr == NULL)           //检查是否分配成功

 12     {

 13         printf("malloc error!\n");

 14         exit(1);

 15     }

 16

 17     memset(ptr, 0, MAX_LEN);    //初始化这块内存

 18

 19 }

 20

 21 char * convert(char *ptr)            //逆序输出函数

 22 {

 23     int i;

 24     int len;                   //定义输入字符串的长度

 25     len = strlen(ptr);

 26

 27     char *str = (char *) malloc (MAX_LEN);

 28     init(str);

 29

 30     char *p_temp = ptr;

 31     char *s_temp = str;

 32

 33     for(i = 0; i < len; i++)  //从第一个字符开始,逆序输出

 34     {

 35         *(s_temp + i) = *(p_temp + len - i - 1);

 36     }

 37     *(s_temp + i) =' ';

//为了方便后面的单词逆序输出,在字符完全逆序后加一个空格

 38     *(s_temp + i +1) ='\0';      //再加结束标志

 39     s_temp = str;

 40

 41     return s_temp;

 42 }

 43

 44 char * word_inversion(char *str)   //单词逆序函数

 45 {

 46     int i;

 47     int len = 0;

 48     int len1 = 0;             //统计每个单词的长度

 49     int len2;

 50

 51     char *wtr = (char *) malloc (MAX_LEN);//为指针分配空间

 52     char *wtr1 = (char *) malloc (MAX_LEN);//为指针分配空间

 53     init(wtr);

 54     init(wtr1);

 55

 56     char *s_temp = str;

 57     char *w_temp = wtr;

 58     char *w1_temp = wtr1;

 59

 60     while(*s_temp != '\0')

 61     {

 62         if(*s_temp != ' ')      //当逆序的字符串是单词时

 63         {

 64             len1++;            //单词的长度加一

 65         }

 66         if(*s_temp == ' ')     //当指针遍历完一个单词时

 67         {

 68             s_temp = s_temp - len1;

//指针回到该单词的第一个字符

 69             strncpy(w1_temp, s_temp, len1);       

//利用拷贝函数将该单词的长度拷贝到临时的指针保存

 70             len2 = len1;                         

 //用临时变量len2代替len1,否则len1减到0时,空格会将之前的字母覆盖

 71             while(*w1_temp != '\0')              

 //当临时的指针开始遍历时

 72             {

 73                 b[len + len2 - 1] = *w1_temp;     

//用数组来接临时指针中的内容

 74                 len2--;

 75                 w1_temp++;

 76             }

 77             b[len + len1] = ' ';

//在所有单词逆序完之后加上空格,

 78             s_temp = s_temp + len1;

//指针再回到该单词的末尾

 79             memset(w1_temp, 0, len1);             

//用memset清空临时指针指向的内容

 80             len = len + len1 + 1;                 

//len为总长度(+1是加上空格的长度)

 81             len1 = 0;                             

//当统计下一个单词的长度时,将len1置为0,重新统计长度

 82

 83         }

 84         s_temp++;

 85

 86

 87     }

 88     b[len] = '\0';                               

//所有单词逆序完,加上结束标志\0

 89     return b;

 90 }

 91

 92 int main()

 93 {

 94     char *ptr = (char *) malloc (MAX_LEN);//为指针分配空间

 95     init(ptr);

 96

 97     ptr ="I am from shanghai";

 98     printf("Original String is: %s\n",ptr);  //输入字符串

 99

100     char *str = convert(ptr);          //调用逆序输出函数

101     char *wtr = word_inversion(str);

102     printf("The after string : %s\n",w);

//输出逆序后的字符串

103

104     ptr = NULL;                    //指针置为NULL

105     str = NULL;

106     wtr = NULL;

107     return 0;

108 }

                                                                                                        

3.请编写一个C函数,该函数可以实现将一个字符串转为整数输出

  1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include <string.h>

  4

  5 #define MAX_LEN sizeof (char) * 100

  6

  7 void init(char *str)  //检查是否分配好空间,并对其初始化

  8 {

  9     if(str == NULL)                //检查是否分配成功

 10     {

 11         printf("malloc error!\n");

 12         exit(1);

 13     }

 14

 15     memset(str, 0, MAX_LEN);        //初始化这块内存

 16 }

 17

 18 int string_convert_interger(char *ptr)         

//字符串转化为整数的函数

 19 {

 20     int num = 0;

 21     char *p_temp = ptr;

 22

 23     while(*p_temp != '\0')     //对输入的字符串进行遍历

 24     {

 25         num = num * 10 + (*p_temp - '0'); //挨个输出整数   

 26         p_temp++;

 27     }

 28

 29     return num;

 30 }

 31

 32

 33 int main()

 34 {

 35     int num;

 36     char *ptr = (char *) malloc (MAX_LEN);

 37     init(ptr);

 38

 39     printf("Please input string:");    //输入字符串

 40     scanf("%s",ptr);

 41

 42     num = string_convert_interger(ptr);

//调用字符串转化为整数的函数

 43

 44     printf("The convert interger : %d\n",num);

//输出转化后的整数

 45

 46     ptr = NULL;                       //指针置为NULL

 47     return 0;

 48 }

 

 

4.请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出

  1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include <string.h>

  4

  5 #define MAX_LEN sizeof (char) * 100

  6

  7 void init(char *str)   //检查是否分配好空间,并对其初始化

  8 {

  9     if(str == NULL)          //检查是否分配成功

 10     {

 11         printf("malloc error!\n");

 12         exit(1);

 13     }

 14

 15     memset(str, 0, MAX_LEN); //初始化这块内存

 16 }

 17

 18 char * convert(char *ptr)      //逆序输出函数

 19 {

 20     int i;

 21     int len;           //定义输入字符串的长度

 22     len = strlen(ptr);

 23

 24     char *str = (char *) malloc (MAX_LEN);

 25     init(str);

 26

 27     char *p_temp = ptr;

 28     char *s_temp = str;

 29

 30     for(i = 0; i < len; i++)//从第一个字符开始,逆序输出

 31     {

 32         *(s_temp + i) = *(p_temp + len - i - 1);

 33     }

 34     *(s_temp + i) ='\0';

 35

 36     return s_temp;

 37 }

 38

 39 char * interger_convert_string(int num)         

//整数转化为字符串的函数

 40 {

 41     int temp;

 42

 43     char *str = (char *) malloc (MAX_LEN);//为指针分配空间

 44     init(str);    //检查是否分配好了空间,并初始化指针

 45

 46     char *s_temp = str;

 47

 48     while(num != 0)

//当输入的整数不为0时,分离每一位数,并转化为字符

 49     {

 50         temp = num % 10;             //整数取余

 51         *s_temp = temp + '0';

 52         num = num / 10;               //整数取整

53         s_temp++;

 54     }

 55     *s_temp = '\0';

 56

 57     return str;

 58 }

 59

 60

 61 int main()

 62 {

 63     int num;

 64

 65     printf("Please input interger number:");

//输入整型变量

 66     scanf("%d",&num);

 67

 68     char *ptr = interger_convert_string(num);       

//调用整数转化为字符串的函数

 69     printf("not convert string = %s\n",ptr);                       //转化为字符串但并未逆序

 70

 71     char *str = convert(ptr);                      

//调用逆序的函数,逆序后的字符串

 72     printf("The convert string : %s\n",str);        

//输出转化后的字符串

 73

 74     ptr = NULL;                      //指针置为NULL

 75     str = NULL;

 76     return 0;

 77 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值