æè·¯ï¼å符串è¿æ¥å éè¦æ¾å°ç¬¬ä¸å符串çç»æä½ç½®ï¼æ¥çæ第äºå符串å ç´ æ¾å°ç¬¬ä¸å符串åé¢ï¼æåå ä¸ç»ææ å¿å³å¯ã
åè代ç ï¼æ¼æ¥123å456
#include<stdio.h>运行结果:
a b c d e f 1 2 3 4 5 6
我们看到了 str1 保存了和str2连接后的所有元素,前提是保证str1的空间足够大。
这个程序没什么难度的,就是一个足够大的数组 然后把另一个数组的所有元素依次加入到这个大的数组中, 仔细想想这个和现实社会中的好多现象不都是一样的道理吗?
首先你得有思路, 然后你就考虑用c语言如何实现。
给你说下这个程序的思路:
“将两个字符串连接起来”
我们就理解为 有两个字符串 str1和str2 ,其中str1的长度 要大于str1自身的长度加上str2的长度。
我们第8行求出了 str1的长度(此程序中就是元素的个数) 即:6 ,那么恰好这个6可以被拿来使用,你应该知道数组的下标是从0开始的吧? 那么利用这个6不就意味着在str1中插入第7个元素么?这样不就可以在str1 的第7个位置插入元素了么?只是这个第7个位置是用一个下标叫6的来代表而已。
12行到16行为第一个for循环,其实这个循环就是整体循环0~5此,我们给定了循环的条件了, 你应该可以看的出来 这个循环的次数就是str2的元素个数,那么这个for循环的6次循环,此时对于str1意味着 要在它后面追加6个元素,对于str2而言意味着取出str2的六个元素。对不对? 其中
i的值变化为:
6 7 8 9 10 11
j的值变化为:
0 1 2 3 4 5
即: str1[6] = str2[0];
str1[6] = str2[0];
str1[7] = str2[1];
str1[8] = str2[2];
str1[9] = str2[3];
str1[10] = str2[4];
str1[11] = str2[5];
第18行利用i的值 此时i=12 因为i是被后戳++运算符号运算的。
总结一下:这里其实抛开算法 就是考你的c的数组下标和元素序数的关系, (一般我们的思维是觉得开头是从1开始的而数组下标是从0开始的,)
老师一定会告诉你们:“数组的下标是从0开始的,所以第n个元素的下标是n-1”
例如str1中第3个元素‘c’的下标为2 (这句话的3是我们一般意义上的123456······
而其中的2 是数组中的012345·······) 所以不要混淆。
最后for循环输出str1中的所有元素,结果完全没问题。
如果还是不明白,你就自己画图理解吧。。。。
思维的转变是从 对需要被转变的事物和要理解的新事物思维的认识开始的·····
希望帮助到你。