c语言经典笔试题的坑,C语言笔试两题,有坑

题目一

最近遇到的一个华为笔试题

题目:

对字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母;

题目链接:https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836?tpId=37&tqId=21254&rp=1&ru=%2Fta%2Fhuawei&qru=%2Fta%2Fhuawei%2Fquestion-ranking&tab=answerKey

建议先自己思考再看答案,特别是题目中的第二点。

代码:#include

#include

int main(void){

char str[300][210],temp[2001];

int n = 0,len=0,i,j=0;

memset(str,0,sizeof(str));

while(fgets(temp, sizeof(temp), stdin)){

len=strlen(temp);

for(i=0;i

if((temp[i] >= 'a' && temp[i]<= 'z') || (temp[i] >= 'A' && temp[i]<= 'Z' )){

str[n][j] = temp[i];

j++;

}else if(j > 0){

j=0;

n++;

}

}

for(i = n-1;i>0;i--){

printf("%s ",str[i]);

}

printf("%s\n",str[0]);

n = 0;j = 0;i = 0;len = 0;

memset(str,0,sizeof(str));

memset(temp,0,sizeof(temp));

}

return 0;

}

这个答案实际上用到了栈的思想,依次把每次单词依次入栈,之后再出栈。

format,png

format,png

format,png

题目二

求下面的程序输出:#include "stdio.h"

int main()

{

int arr[5] = {1,2,3,4,5};

int *p = arr;

for(size_t i=0;i<5;i++)

{

printf("i:%d %d\n",p[i],*p++);

}

return 0;

}

这个题目考察两点:

1、printf 和 C++ 中的 cout << 一样,先执行后面的再执行前面的,实现方式用了栈的思想,先入栈的后出栈执行。

2、p[i] = * (p+i)

format,png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值