練一練,經(jīng)典嵌入式C 面試題三道,答案在文末。

題一:使用C語言實(shí)現(xiàn)字符串倒序。
題二,使用scanf()和gets()輸入字符串有何利弊?
題三,for語句與while語句在實(shí)現(xiàn)循環(huán)時,哪一個更好?
題一參考答案:
#include <stdio.h>
#include <string.h>
void Reverse_String(char a[])
{
int i,length; char t;
length = strlen(a);
for(i=0 ;i < length/2 ; i++)
{
t = a[i];
a[i] = a[length-1-i];
a[length-1-i] = t;
}
}
main()
{
char a[10];
printf("input a string:");
gets(a);
puts(a);
Reverse_String(a);
puts(a);
}
題二參考答案:
用scanf()函數(shù)輸入字符串時,默認(rèn)分隔符是空格、跳格(Tab)等,
因此scanf()函數(shù)不能輸入含有上述字符的字符串,這是其不足之處;
與gets()相比,其優(yōu)點(diǎn)是它可以一次輸入多個字符串,而且還可以用于輸入不同類型的數(shù)據(jù),應(yīng)用面較廣。
用gets()函數(shù)輸入時,可以輸入含空格、跳格等字符的字符串,但其不足之處在于,它只能用于輸入字符串,且一次只能輸入一個。
題三參考答案:
相對而言,for語句更好用,尤其是循環(huán)次數(shù)確定的情況下:
for(int i = 1;i<= 10; ++i)
{
sum += i;
}
而while語句,一般用于循環(huán)次數(shù)不確定的情況:
int i = 1;
while(i<=10)
{
sum+=i;
}
可以這么理解,只要while語句能實(shí)現(xiàn)的地方,用for語句都能實(shí)現(xiàn)
另外,如果是多重循環(huán),while嵌套的時候,看起來比較繁瑣。
更多干貨請關(guān)注微信公眾號百問科技(ID: baiwenkeji)