もしあなたが逆流能力があるとしたら、あなたはどのようにこの面接問題をしますか?あなたのコード能力を試す
19676 ワード
関数strcpy()の役割(1つの文字列に'0'を含むすべてを別の文字列にコピーして上書きする)は知っていますが、今は面接官がいて、自分で関数を書くように要求しています.この関数の役割はstrcpyとそっくりです.
*strcpy()**関数を使用するコード
面接官はあなたのコードを要求します.
いいやつ???ここまでで終わりだと思ったのか???本当にこんなに简単ですか???普通のサイクルで终わったの???肝っ玉は大きいですね.
それから面接官はあなたに教えて、もし10点ならば、あなたは4点しか得られなくて、あなたのプログラムの能力はだめです...
よし、逆流する時間があるから、戻って最適化を考えて、カウントダウンを始めて、3 2 1 0
最適化されたコード:
うん?針を使うことができますか?コードの能力は無理でもいいから、6点をあげて、それからあなたに聞いて、若者??コードを最適化する能力はありますか?ダメなら淘汰されるぞ…
mmp、どうやって最適化するのか、そして仕方なく、頭を絞って、やっと考えました.時間が逆流して、
再最適化されたコード:
あれ?このコードのデザインはいいですね.無理に7点をあげます.うん、最適化してあげてもいいですが、それから最適化する方法はありませんか.私の最適化はこのように関数をこのように変更します.
???what??? LZは苦労してこのようにして、あなたは意外にも私に最適化して、それから私に更に最適化することができますか??私は神様ですか?
うん...人は軒下で、頭を下げなければならなくて、心の中でmmp、顔はやはりにこにこして、何を最適化しますか?資料を調べる...時間が逆流する...
次のように設計されています.
うん...若者、私は少しあなたが好きで、このような書き方、私はあなたに7.5点をあげて、考えたのはやはりとても悪くなくて、うん...あなたはあなたのコードを最適化することができますか?
ええと...本当にこれで最適化できるのかなと思います.私を游んでいるのではないでしょうか.こんなに何度も最適化して、一度に一回よりいいですが、いったいどうすればいいのでしょうか.今回は空ポインタを避けたためと判断したのですが、次回は??あ~、わかりました.これではあまり問題ありませんが、エラーは提示されません.arr 1が見えません.コピーされていなければ何が原因ですか.
さあ、時は流れて...
今回のコード:
へへへ、私は断言を使って、あなたがまだどのように言うかを見ます
ええと、若者、コードの能力はとても強くて、このような設計はプログラムを比較的に強くて、悪くなくて、私は好きです...、あなたに8点をあげて、しかし1つの問題があって、最適化することができますか?
なに???さらに最適化???こんなことになったのに、最適化できますか??考えてみれば...
どうやって最適化できますか?さっきは他の人の間違いを避けていたのに、自分の間違いを避ける必要があるのではないでしょうか.あれ?分かったみたい...時間が逆流...
うん...若者、いいですね.このコードは私があなたに9点をあげます.優秀なプログラマーに完全に合っていますが、アドバイスをします.もう一度最適化してもらえませんか.my_strlenは?できれば、直接採用します.
いいやつ、数えて、何回最適化したと言ったの?6回...また最適化...もう一度やってみます...时間が逆流します...
コード#コード#
うん???指针、断言、他人が间违って考えて、自分が间违って考えて、チェーンアクセス...私は行って、宝を拾って、このプログラムは10分、若者、早く来て、早く来て...面接しなくても、直接仕事をしましょう...
これでやっと一段落…成功した
*strcpy()**関数を使用するコード
#include
#include
int main()
{
char arr1[]="#################";
char arr2[]="123**";
strcpy(arr1,arr2);
ptintf("%s",arr1);
return 0;
}
面接官はあなたのコードを要求します.
#include
void my_strcpy(char arr1[], char arr2[])
{
while (1)
{
if (arr2[i] != '\0')
arr1[i] = arr2[i];
else if (arr2[i] == '\0')
{
arr1[i] = arr2[i];
break;
}
}
}
int main()
{
char arr1[] = "#################";
char arr2[] = "123**";
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
いいやつ???ここまでで終わりだと思ったのか???本当にこんなに简単ですか???普通のサイクルで终わったの???肝っ玉は大きいですね.
それから面接官はあなたに教えて、もし10点ならば、あなたは4点しか得られなくて、あなたのプログラムの能力はだめです...
よし、逆流する時間があるから、戻って最適化を考えて、カウントダウンを始めて、3 2 1 0
最適化されたコード:
#include
void my_strcpy(char* arr1, char* arr2)
{
while(*arr2 != '\0')
{
*arr1 = *arr2;
arr2++;
arr1++;
}
*arr1 = *arr2;/* '\0' */
}
int main()
{
char arr1[] = "#################";
char arr2[] = "123**";
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
うん?針を使うことができますか?コードの能力は無理でもいいから、6点をあげて、それからあなたに聞いて、若者??コードを最適化する能力はありますか?ダメなら淘汰されるぞ…
mmp、どうやって最適化するのか、そして仕方なく、頭を絞って、やっと考えました.時間が逆流して、
再最適化されたコード:
#include
void my_strcpy(char* arr1, char* arr2)
{
while(*arr2 != '\0')
{
*arr1++ = *arr2++;
}
*arr1 = *arr2;/* '\0' */
}
int main()
{
char arr1[] = "#################";
char arr2[] = "123**";
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
あれ?このコードのデザインはいいですね.無理に7点をあげます.うん、最適化してあげてもいいですが、それから最適化する方法はありませんか.私の最適化はこのように関数をこのように変更します.
void my_strcpy(char* arr1, char* arr2)
{
while(*arr1++ = *arr2++) /* '\0' 0*/
{
;
}
}
???what??? LZは苦労してこのようにして、あなたは意外にも私に最適化して、それから私に更に最適化することができますか??私は神様ですか?
うん...人は軒下で、頭を下げなければならなくて、心の中でmmp、顔はやはりにこにこして、何を最適化しますか?資料を調べる...時間が逆流する...
次のように設計されています.
#include
void my_strcpy(char* arr1, char* arr2)
{
if(arr1 != NULL && arr2 != NULL) /* */
{
while(*arr1++ = *arr2++)
{
;
}
}
}
int main()
{
char arr1[] = "#################";
char arr2[] = "123**";
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
うん...若者、私は少しあなたが好きで、このような書き方、私はあなたに7.5点をあげて、考えたのはやはりとても悪くなくて、うん...あなたはあなたのコードを最適化することができますか?
ええと...本当にこれで最適化できるのかなと思います.私を游んでいるのではないでしょうか.こんなに何度も最適化して、一度に一回よりいいですが、いったいどうすればいいのでしょうか.今回は空ポインタを避けたためと判断したのですが、次回は??あ~、わかりました.これではあまり問題ありませんが、エラーは提示されません.arr 1が見えません.コピーされていなければ何が原因ですか.
さあ、時は流れて...
今回のコード:
#include
#include
void my_strcpy(char* arr1, char* arr2)
{
assert(*arr1 != NULL);
assert(*arr2 != NULL);
while(*arr1++ = *arr2++)
{
;
}
}
int main()
{
char arr1[] = "#################";
char arr2[] = "123**";
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
へへへ、私は断言を使って、あなたがまだどのように言うかを見ます
ええと、若者、コードの能力はとても強くて、このような設計はプログラムを比較的に強くて、悪くなくて、私は好きです...、あなたに8点をあげて、しかし1つの問題があって、最適化することができますか?
なに???さらに最適化???こんなことになったのに、最適化できますか??考えてみれば...
どうやって最適化できますか?さっきは他の人の間違いを避けていたのに、自分の間違いを避ける必要があるのではないでしょうか.あれ?分かったみたい...時間が逆流...
#include
#include
void my_strcpy(char* arr1,const char* arr2) /* , *arr2++ = *arr1++*/
{
assert(*arr1 != NULL);
assert(*arr2 != NULL);
while(*arr1++ = *arr2++)
{
;
}
}
int main()
{
char arr1[] = "#################";
char arr2[] = "123**";
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
うん...若者、いいですね.このコードは私があなたに9点をあげます.優秀なプログラマーに完全に合っていますが、アドバイスをします.もう一度最適化してもらえませんか.my_strlenは?できれば、直接採用します.
いいやつ、数えて、何回最適化したと言ったの?6回...また最適化...もう一度やってみます...时間が逆流します...
コード#コード#
#include
#include
char* my_strcpy(char* arr1,const char* arr2) /* , *arr2++ = *arr1++*/
{
assert(*arr1 != NULL);
assert(*arr2 != NULL);
char* result = arr1;
while(*arr1++ = *arr2++)
{
;
}
return result; /* arr1 */
}
int main()
{
char arr1[] = "#################";
char arr2[] = "123**";
printf("%s", my_strcpy(arr1, arr2));/* , */
return 0;
}
うん???指针、断言、他人が间违って考えて、自分が间违って考えて、チェーンアクセス...私は行って、宝を拾って、このプログラムは10分、若者、早く来て、早く来て...面接しなくても、直接仕事をしましょう...
これでやっと一段落…成功した