今日学习任务 | 完成Training4字符串训练 |
今日任务完成情况 | 训练四道题目全部做完 |
今日开发中出现的问题汇总
|
|
今日未解决问题
| 无 |
今日开发收获 |
|
自我评价 |
|
其他
| 无 |
1、编写一个C函数,该函数可以实现将一个整数转为字符串输出。
1 #include <stdio.h>
2 #include <string.h>
3
4 #define MAX_LEN 50
5
6 char str[MAX_LEN] = {0};
7
8 char *int_to_str(int num)//将整数变为字符串的函数
9 {
10 int i = 0;
11
12 while(num != 0)//如果整数不为0执行
13 {
14 str[i++] = (num % 10) + '0';//取整数最后一位将其变为字符类型
15
16 num = num / 10;//去除整数最后一位
17 }
18
19 return str;//返回字符数组名str
20 }
21
22 int main()
23 {
24 int i;
25 int num;
26 char *result;
27
28 printf("Please input number:\n");
29 scanf("%d",&num);//输入一个整数
30
31 result = int_to_str(num);//将返回的字符串给字符指针变量result
32
33 printf("int num %d translate into string is:\n",num);
34
35 for(i = (strlen(str) - 1); i >= 0; i--)//倒序输出
36 {
37 printf("%c",*(result + i));
38 }
39 printf("\n");
40
41 return 0;
42 }
运行结果:
Please input number:
123456
int num 123456 translate into string is:
123456
2、编写一个C函数,将”I am from shanghai”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构。
1 #include <stdio.h>
2 #include <string.h>
3
4 #define MAX_LEN 50
5
6 void invert_str(char *str)//字符串倒序函数
7 {
8 int i;
9 char ch;//定义一个中间字符变量
10
11 char *s_temp = str;
12
13 int s_len = strlen(str);//取字符串长度
14
15 for(i = 0; i < (s_len / 2); i++)//遍历字符串,并将字符串倒序
16 {
17 ch = *(s_temp + i);
18 *(s_temp + i) = *(s_temp + s_len - i - 1);
19 *(s_temp + s_len - i - 1) = ch;
20 }
21
22 printf("%s\n",str);
23 }
24
25 void invert_word(char *str)//单词倒序函数
26 {
27 int i;
28 int j;
29 int k = 0;//定义一个整形变量用来保存指针位置
30
31 char a[MAX_LEN];//定义一个字符数组用来存放字符串中的单词
32
33 char *s_temp = str;
34 char *a_temp = a;
35
36 int s_len = strlen(str);//取字符串str的长度
37
38 for(i = 0; i < s_len; i++)//遍历字符串
39 {
40 if(*(s_temp + i) == ' ')//判断空格
41 {
42 for(j = k ; j < i; j++)//将空格前面的单词复制到数组a里面
43 {
44 *a_temp = *(s_temp + j);
45 a_temp++;
46 }
47
48 printf("a = %s\n",a);
49
50 invert_str(a);//将数组a中的单词倒序
51
52 a_temp = a;//初始化a_temp
53
54 for(j = k; j < i; j++)//将数组a中倒序好的单词放回数组str中原来的位置
55 {
56 *(s_temp + j) = *a_temp;
57 a_temp++;
58 }
59
60 a_temp = a;//初始化a_temp
61
62 memset(a,0,MAX_LEN);//初始化数组a
63
64 k = i + 1;//保存空格的位置
65 }
66 }
67
68 if(i == s_len)//对于最后一个单词进行倒序
69 {
70 for(j = k; j < i; j++)
71 {
72 *a_temp = *(s_temp + j);
73 a_temp++;
74 }
75
76 printf("a = %s\n",a);
77
78 invert_str(a);
79
80 a_temp = a;
81
82 for(j = k; j < i; j++)
83 {
84 *(s_temp + j) = *a_temp;
85 a_temp++;
86 }
87 }
88 }
89
90 int main()
91 {
92 char str[MAX_LEN] = "I am from shanghai";
93
94 printf("The original string:\n");
95 printf("%s\n",str);
96
97 invert_str(str);//将字符串倒序
98
99 invert_word(str);//将倒序的字符串中的单词倒序
100
101 printf("The inverted string:\n");
102 printf("%s\n",str);
103
104 return 0;
105 }
运行结果:
The original string:
I am from shanghai
iahgnahs morf ma I
a = iahgnahs
shanghai
a = morf
from
a = ma
am
a = I
I
The inverted string:
shanghai from am I