练一练,经典嵌入式C 面试题三道,答案在文末。

2019-07-12 19:47发布

class="markdown_views prism-atom-one-light"> 题一:使用C语言实现字符串倒序。
题二,使用scanf()和gets()输入字符串有何利弊?
题三,for语句与while语句在实现循环时,哪一个更好? 题一参考答案: #include #include 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()函数输入字符串时,默认分隔符是空格、跳格(Tab)等,
因此scanf()函数不能输入含有上述字符的字符串,这是其不足之处;
与gets()相比,其优点是它可以一次输入多个字符串,而且还可以用于输入不同类型的数据,应用面较广。 用gets()函数输入时,可以输入含空格、跳格等字符的字符串,但其不足之处在于,它只能用于输入字符串,且一次只能输入一个。 题三参考答案:
相对而言,for语句更好用,尤其是循环次数确定的情况下: for(int i = 1;i<= 10; ++i) { sum += i; } 而while语句,一般用于循环次数不确定的情况: int i = 1; while(i<=10) { sum+=i; } 可以这么理解,只要while语句能实现的地方,用for语句都能实现
另外,如果是多重循环,while嵌套的时候,看起来比较繁琐。