|
|
今日学习任务
|
嵌入式 C 语言强化编程练习 |
今日任务完成情况
| 今日任务按计划完成 1.完成trianing2(指针、数组、字符串编程练习)
|
今日开发中出现的问题汇总
|
|
今日未解决问题
| 无 |
今日开发收获 | 1.熟练掌握了函数的调用过程(传参时:当只使用不修改实参变量值时,传实参变量名;当修改实参变量值时,传实参变量的地址) 2.熟练掌握字符串的操作;(实现并使用字符串处理函数)
|
自我评价
| 今天基本能够跟上老师的教学安排 |
其他
| 无 |
- 请编写一个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.熟练掌握字符串的操作;(实现并使用字符串处理函数)
|
自我评价
| 今天基本能够跟上老师的教学安排 |
其他
| 无 |
- 请编写一个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 }