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

c语言-数组(3)

字符串数组例题

注:上一节的函数只能用于字符型数组
例如:strcpy() ,strcat(),strcmp()

注:注意for循环的范围,注意字符串结束符是'\0',注意函数的实现原理。


1、下面程序段的运行结果是_________.
char a[7]="abcdef";
char b[4]="ABC";
strcpy(a,b);
printf("%c",a[5]);
a)空格 b)\0 c)e d)f
答案: D

2、输入一行字符,统计其中大写字母的个数,并将所有的大写字母转化成小写字母后输出

int main()
{//输入一行字符printf("请输入一行字符串:\n");char ch[1024] ="\0";scanf("%s",ch);//统计其中大写字母的个数int count = 0;for(int i =0;i<strlen(ch);i++){if(ch[i]>='A' && ch[i]<='Z'){count++;//将所有的大写字母转化成小 写字母ch[i]+=32;}}printf("大写字母的个数:%d\n",count);printf("转换后:%s\n",ch);return 0;
}

3、按以下规律翻译密码: 将每一个字母变成它后面的字母,例如,将 A 变成 B,B 变成 C,…,Z 变成 A,非字母字符不变,“!”作为电文结束标志。
注: 要在字符串的最后加个'\0'

int main()
{//1.输入密码printf("请输入密码:\n");char pwd[1024] = "\0";scanf("%s",pwd);//将每一个字母变成它后面的字母,例如,将 A 变成 B,B 变成 C,…,Z 变 成 A,非字母字符不变int i = 0;for(i = 0;pwd[i] !='\0';i++){if(pwd[i]>='A' && pwd[i]<'Z'){pwd[i]++;}else if(pwd[i] == 'Z'){pwd[i] = 'A';}else if(pwd[i]>='a' && pwd[i]<'z'){pwd[i]++;}else if(pwd[i] == 'z'){pwd[i] = 'a';}}//3. “!”作为电文结束标志pwd[i] = '!';pwd[i+1] = '\0';//输出printf("%s\n",pwd);return 0;
}

4、输入密码,设置一个密码,然后输入密码,机会为 3 次,三次密码错误就直接退出。

int main()
{//设置密码char pwd[20] = "123456";for(int i=0;i<3;i++){//输入密码printf("请输入密码:\n");char mm[20] = "\0";scanf("%s",mm);//判断密码是否正确if(strcmp(pwd,mm) == 0){printf("密码正确!\n");return 0;}else{printf("密码输入错误!");if(i == 2){printf("您的机会已用完!\n");}else{printf("您还有%d次机会!\n",2-i);}}}return 0;
}

5、不使用 strlen 函数,实现字符串的求长度,复制,比较,连接。

注:ch[i] != '\0' ==> ch[i] != 0 (ASCLL码)

#include <stdio.h>
#include <string.h>
#define N  4
/*作者: zcy日期:功能描述:不使用 strlen 函数,实现字符串的求长度,复制,比较,连接
*/
int main()
{#if N == 1//长度 char ch[1024] = "he\0llo";//判断该字符是否是\0,若是结束统计,不是 进行统计int i = 0; // 默认从第0个字符开始while(ch[i]){i++;}printf("i = %d\n",i);#elif N == 2//复制char dest[1024] = "hello";char src[1024] = "ab\0cd";//根据源串中字符是否是\0,若是结束复制 ,不是则把字符赋值给目的串int i = 0;while(src[i]){dest[i] = src[i];i++;}dest[i] = '\0';printf("dest = %s\n",dest);#elif N == 3//连接char dest[1024] = "he\0llo";char src[1024] = "abc\0d";//先找到目的串\0的位置int i =0;while(dest[i]){i++;}//根据源串中字符是否是\0,若是结束拼接 ,不是则把字符赋值给目的串int j = 0;while(src[j]){dest[i] = src[j];i++;j++;}//补'\0'dest[i] = '\0';printf("dest = %s\n",dest);#elif N == 4//比较char s1[1024] = "abcd";char s2[1024] = "abcd";//求两个字符串的长度int l1 = 0;while(s1[l1]){l1++;}int l2 = 0;while(s2[l2]){l2++;}//获得两个数最长的int l = l1>l2?l1:l2;//循环比较并相减int n = 0;for(int i = 0;i<l;i++){if(s1[i] - s2[i] != 0){n = s1[i] - s2[i];          //只需判断一位不同的差值即可,只要有差值,就说明不同,无需在意差值多少。break;}}printf("n = %d\n",n);#endifreturn 0;
}

6、输入一个字符串,判断是否是回文。(回文:这个字符串顺读和反读是一样的。如“abcba”和”123321”都是回文。

int main()
{//输入一个字符串printf("请输入一个字符串:\n");char ch[1024] = "\0";scanf("%s",ch);int l = strlen(ch);int flag = 1;for(int i=0;i<l/2;i++){if(ch[i] != ch[l-1-i]){flag = 0;printf("%s不是回文!\n",ch);//break;return 0;}} //if(flag)printf("%s是回文!\n",ch);return 0;
}

7、一篇文章,有三行文字,每行有 80 个字符。要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。(二维数组)

#include <stdio.h>
/*作者: zcy日期:功能描述:一篇文章,有三行文字,每行有 80 个字符。 要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数*/
int main()
{//输入三行文字,每行有 80 个字符printf("请输入三行文字:\n");char ch[3][80] = {0};for(int i = 0;i<3;i++){gets(ch[i]);}//统计int dz=0,xz=0,sz=0,kg=0,qt=0;for(int i = 0;i<3;i++){for(int j = 0;j<strlen(ch[i]);j++)  //注意范围{char s = ch[i][j];if(s>='A' && s<='Z'){dz++;}else if(s>='a' && s<='z'){xz++;}else if(s>='0' && s<='9'){sz++;}else if(s==' '){kg++;}else{qt++;}}}printf("大写:%d\n",dz);printf("小写:%d\n",xz);printf("数字:%d\n",sz);printf("空格:%d\n",kg);printf("其他:%d\n",qt);return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • onlyoffice用nginx反向代理
  • 《零散知识点 · SpringBoot Starter》
  • 花几千上万学习Java,真没必要!(三十七)
  • 不得不安利的程序员开发神器,太赞了!!
  • 2、Flink 在 DataStream 和 Table 之间进行转换
  • SQL进阶技巧:用户浏览日志分析【访问量、活跃用户、新增用户、留存用户、流失用户、沉默用户、回流用户】
  • 【初阶数据结构篇】单链表的实现(赋源码)
  • 正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock。锁正由进程 36430(dpkg)持有。遇到这个问题怎么解决
  • ipvlan: operation not supported 导致的POD不断重启
  • 【Spring】——Spring概述、IOC、IOC创建对象的方式、Spring配置、依赖注入(DI)以及自动装配知识
  • 测桃花运(算姻缘)的网站系统源码
  • 全平台|全球最受欢迎的20个黑客工具 小白也可以学会 网络安全必备
  • DjangoRF-10-过滤-django-filter
  • 支付革新:探索WebKit中的Payment Request API
  • 论文写作技巧
  • 【mysql】环境安装、服务启动、密码设置
  • 345-反转字符串中的元音字母
  • crontab执行失败的多种原因
  • echarts花样作死的坑
  • fetch 从初识到应用
  • java8-模拟hadoop
  • js正则,这点儿就够用了
  • log4j2输出到kafka
  • Meteor的表单提交:Form
  • Redis字符串类型内部编码剖析
  • Redux 中间件分析
  • Vue组件定义
  • 动态规划入门(以爬楼梯为例)
  • 诡异!React stopPropagation失灵
  • 回顾 Swift 多平台移植进度 #2
  • 漂亮刷新控件-iOS
  • 微信小程序开发问题汇总
  • zabbix3.2监控linux磁盘IO
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #stm32整理(一)flash读写
  • (9)STL算法之逆转旋转
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (多级缓存)缓存同步
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (一)Linux+Windows下安装ffmpeg
  • (一)SvelteKit教程:hello world
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • **CI中自动类加载的用法总结
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net8.0与halcon编程环境构建
  • .Net多线程总结
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [acm算法学习] 后缀数组SA