当前位置: 首页 > news >正文

在线做名片做海报网站销售网络平台推广

在线做名片做海报网站,销售网络平台推广,成品动漫和视频网站入口,怎么设置微信公众号目录 9.查找字符数组中字符位置(输入hello e 输出2); 10、查找字符数组中字符串的位置(输入hello ll 输出3); 11、字符数组中在指定位置插入字符;(输入hello 3 a 输出heallo…

目录

9.查找字符数组中字符位置(输入hello e    输出2);

10、查找字符数组中字符串的位置(输入hello ll 输出3);

11、字符数组中在指定位置插入字符;(输入hello 3 a   输出heallo)

12、在字符数组中指定开始位置插入字符串;(输入hello 3 aa  输出heaallo)

13、有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?(约瑟夫环,笔试常考)

14、输入一个字符串,计算字符串中子串出现的次数。

15、编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构。

第一步:获取键盘输入的几个单词,

第二步:转置每个单词里面的每一个字母,

第三步:将每一个单词里面的字母单独装置

16、输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来。


上一篇复习了关键字,这一篇我们来做第二次的8道编程题

说明:我们学过单片机的一般都是有C语言基础的了,网上关于C语言的资料有很多,大家如果对C语言不熟悉的话可以先去详细学一下,再以这篇博文作为复习资料学习。

这篇博文的目的是复习C语言,我们会陆续以30多个编程题作为复习要点,这30多个编程题基本涵盖了C语言所有的内容了,只要你掌握了这30多个编程题,那么你的C语言基本就没什么问题了。

注意:由于本专栏是嵌入式全栈开发专栏,为了我们能熟悉以后实际工作中的开发环境,我们写C语言全部在Linux中的vim编辑器中写,这么做事为了我们能够熟练掌握Linux系统的常用命令以及Linux上的vim编辑器的常用工作命令,以达到对口训练的目的!

vim编辑器的一些工作命令在上一篇博文中已经详细介绍过了,如果不了解可以先去看看。

我们正式开始:

建议新建一个homework目录来存放这8个编程题的程序文件。

上次我们讲过第1~8道编程题了

嵌入式全栈开发学习笔记---C语言笔试复习大全7(编程题1~8)-CSDN博客

这次我们开始讲第9~16道:

9.查找字符数组中字符位置(输入hello e    输出2);

提示:我们只要遍历数组,将数组中的每一个元素和该字符对比,直到相等,则输出字符的位置。

参考代码:

#include <stdio.h>
#include <string.h>int get_char_index(char str[],char ch)
{int i;int length=strlen(str);for(i=0;i<length;i++){if(ch==str[i]){return i+1;}}   return -1;
}int main()
{char str[32]={0};char ch;printf("输入 字符串 字符\n");scanf("%s %c,str,&ch);int index=get_char_index(str,ch);if(-1==index){printf("没有该字符\n");}else{printf("该字符的地址是%d\n",index);}return 0;
}

运行结果:

10、查找字符数组中字符串的位置(输入hello ll 输出3);

提示:用strncmp()字符串处理函数比较两个字符,如果相等则输出字符串的位置。

参考代码:

#include <stdio.h>
#include <string.h>int get_sub_index(char str[],char sub[])
{int length_str=strlen(str);int length_sub=strlen(sub);int i;for(i=0;i<length_str-length_sub+1;i++){   if(strncmp(str+i,sub,length_sub)==0){return i+1;}}   return -1;
}int main()
{char str[32]={0};char sub[32]={0};printf("输入 字符串 要查找的字符串\n");scanf("%s %s",str,sub);int index=get_sub_index(str,sub);if(-1==index){printf("没有要查找的字符串\n");}else{printf("该字符串的位置是%d\n",index);}return 0;
}

运行结果:

11、字符数组中在指定位置插入字符;(输入hello 3 a   输出heallo)

我们可以把后面三个字符向后移动三位,然后将a放在第三个位置,然后将那三个字符赋值给后面三个位置。

参考代码:

#include <stdio.h>
#include <string.h>int main()
{int num;int ch;char str[32]={0};int i;printf("输入 字符串 插入位置 插入字符\n");scanf("%s %d %c",str,&num,&ch);int length=strlen(str);//计算字符串长度for(i=0;i<length-num+1;i++){   str[length-i]=str[length-1-i];  //移动后三位字符}   str[num-1]=ch;//插入字符printf("%s\n",str);return 0;
}

运行结果:

12、在字符数组中指定开始位置插入字符串;(输入hello 3 aa  输出heaallo)

提示:将he用strncpy拷贝到另外一个字符数组里面,然后用strcat将he和aa拼接起来,再将剩下的llo接在heaa后面,最后用strcpy将heaallo拷贝回原来的数组中去。

参考代码:

#include <stdio.h>
#include <string.h>void insert_str(char str[],char insert[],int num)
{int length_str=strlen(str);int length_insert=strlen(insert);char tmp[32]={0};strncpy(tmp,str,num-1);strcat(tmp,insert);strcat(tmp,str+num-1);strcpy(str,tmp);
}int main()
{char str[32];char insert[32];int num;printf("请输入 字符串 要插入的字符串 要插入的位置\n");scanf("%s %s %d",str,insert,&num);int length_str=strlen(str);if(num<=length_str){   insert_str(str,insert,num);}   else{   printf("字符串长度不够,请重新确认要插入的位置\n");}  printf("%s\n",str);return 0;
}

运行结果:

13、有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?(约瑟夫环,笔试常考)

提示:题目的意思请看图:

参考代码:

#include <stdio.h>int main()
{int num;//总人数int person;//剩余人数int flag[1024]={0};//每个人的状态位,0保持,1出局int k=1;//报数int i=1;//flag数组下标printf("请输入游戏人数\n");scanf("%d",&num);person=num;while(person>1)//当剩余人数大于1就继续报数{   //每一次报数if(flag[i]==0)//没有出局的人{k++;//报数if((k>3){flag[i]=1;//报到3的出局person--;//剩余人数减1k=1;//重新报数}}i++;//为了下一轮报数的时候先判断这个人还是不是0if(num+1==i){i=1;}//重新开始,从1号这人开始}//找出状态位为0的那个人for(i=1;i<num+1;i++){if(flag[i]==0){ printf("剩下的那个人是第%d号\n",i);break;}}   return 0;
}

运行结果:

14、输入一个字符串,计算字符串中子串出现的次数。

提示:用strncmp进行比较,如果比较的结果是0,那就计数count++

参考代码:

#include <stdio.h>
#include <string.h>int get_sub_count(char str[],char sub[])
{int length_str=strlen(str);int length_sub=strlen(sub);int i;int count=0;for(i=0;i<length_str-length_sub+1;i++){   if(!strncmp(str+i,sub,length_sub)){count++;}}   return count;
}int main()
{char str[32]={0};char sub[32]={0};printf("请输入 字符串 要计算的子串\n");scanf("%s %s",str, sub);int count=get_sub_count(str,sub);printf("子串的次数为%d\n",count);return 0;
}

运行结果:

15、编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构。

提示:先将整个句子倒转成”iahgnahs.....ma I.”,然后对单个单词进行倒转”shanghai....am I”。这道题使用gets()和scanf()来获取句子是不行的,我们要使用一个新的函数叫getchar()函数可以获取整个句子,空格也是字符,它遇到换行的时候结束。

第一步:获取键盘输入的几个单词,

参考代码:

#include <stdio.h>int main()
{char str[1024]={0};int i=0;char ch;printf("请输入几个单词\n");while(ch!='\n'){   ch=getchar();//从键盘中获取单个字符str[i]=ch;i++;}   printf("%s\n",str);return 0;
}

运行结果:

第二步:转置每个单词里面的每一个字母,

参考代码:

#include <stdio.h>void reverse(char str[], int start,int end)
{int i;char tmp;//交换专用变量for(i=0;i<(start+end)/2;i++){int tmp=str[end-1-i];str[end-1-i]=str[start+i];str[start+i]=tmp;}   
}int main()
{char str[1024]={0};int i=0;char ch;printf("请输入几个单词\n");while(ch!='\n'){   ch=getchar();//从键盘中获取单个字符str[i]=ch;i++;}reverse(str,0,i);//0是整个句子的开始位置,i是整个句子的结束位置printf("%s\n",str);return 0;
}

运行结果:

第三步:将每一个单词里面的字母单独装置

最终参考代码:

#include <stdio.h>void reverse(char str[], int start,int end)
{int i;char tmp;//交换专用变量for(i=0;i<(end-start)/2;i++){   int tmp=str[end-1-i];str[end-1-i]=str[start+i];str[start+i]=tmp;}   
}int main()
{char str[1024]={0};int i=0;char ch;printf("请输入几个单词(单词)\n");while((ch=getchar())!='\n'){   str[i++]=ch;}   reverse(str,0,i);//0是整个句子的开始位置,i是整个句子的结束位置i=0;int begin=0;while(str[i]!='\0')//翻转所有单词{if(str[i]==' ')//翻转一个单词{reverse(str,begin,i);begin=i+1;//下一个单词的开始}i++;//下一个字符}reverse(str,begin,i);//'\0'之前的一个单词printf("%s\n",str);return 0;
}

最终运行结果:

16、输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来。

提示:帧头和帧尾分别是head和tail,字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧。

可以先找到帧头和帧尾的位置,最后把帧头和帧尾的位置之间的字符拷贝到另一个数组中打印出来。

参考代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int get_index(char str[],char sub[])
{int length_str=strlen(str);int length_sub=strlen(sub);int i;for(i=0;i<length_str-length_sub+1;i++){if(strncmp(str+i,sub,length_sub)==0){return i;}}   return -1; 
}
int main()
{char str[32]={0};char head[32]={0};char tail[32]={0};printf("请输入 字符串 帧头 帧尾\n");scanf("%s %s %s",str, head, tail);int index_head=get_index(str,head);int index_tail=get_index(str,tail);if(-1==index_head||-1==index_tail){printf("输入有误\n");exit(1);//退出整个程序}char tmp[32]={0};int length_tail=strlen(tail);strncpy(tmp,str+index_head,index_tail-index_head+length_tail);printf("%s\n",tmp);return 0;
}

运行结果:

以上就是这篇内容,如想了解更多,欢迎订阅本专栏!

如有问题可评论区或者私信留言,如果想要进交流群请私信!

http://www.khdw.cn/news/62828.html

相关文章:

  • 自己做网站麻烦吗网站要怎么创建
  • 网站 前台 后台seo优化软件免费
  • 用插件做的炫酷网站口碑营销5t
  • 个人做网站靠什么挣钱开发一个app需要多少钱?
  • 商丘网站建设服务免费关键词优化工具
  • 网站开发后怎么进入互联网软文大全800字
  • 万能模板sem优化推广
  • 怎样建网站赚钱快速百度
  • 建立网站对吗最新seo新手教程
  • 网站怎么分工做怎么设置自己的网站
  • app001推广平台官网网站优化查询
  • 个人网站怎么做收款链接百度手机助手下载2022官方正版
  • 企业常见问题及解决方案关键词优化方法
  • 对整个网站做词频分析云南网站建设公司哪家好
  • 湛江企业自助建站系统自建站怎么推广
  • icann官方网站三只松鼠营销案例分析
  • 做党建需要关注网站最佳磁力吧cili8
  • 威海网站制作win11优化大师
  • 网页网站培训班湖人最新消息
  • 徐州最好网站建设做网站要多少钱
  • 学校网站模板免费下载人大常委会委员长
  • 沈阳网站建设培训班百度一下你就知道了官网
  • ecshop生成网站地图url重复网络推广
  • 网站开发为什么要写接口连云港seo优化公司
  • 网站制作合同注意事项市场调研报告总结
  • 免费信息网站建设关键词seo服务
  • 岳阳网站建设制作百度关键词优化公司哪家好
  • 大气建站工作室网站源码佛山做网站建设
  • 开办网站需要什么手续友情链接互换网站
  • asp做的网站亚丝娜娜本子全彩seo是搜索引擎营销