【头歌C语言程序与设计】字符数组

这篇具有很好参考价值的文章主要介绍了【头歌C语言程序与设计】字符数组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

写在前面

正文

第1关:字符逆序

第2关:字符统计

第3关:字符插入

第4关:字符串处理

第5关:字符串统计

第6关:字符串排序

写在最后


写在前面

本文代码是我自己所作,本人水平有限,可能部分代码看着不够简练,运行效率不高,但都能运行成功。另外,如果想了解更多,请订阅专栏头歌C语言程序与设计


正文

第1关:字符逆序

题目描述:输入一个字符串,输出反序后的字符串。

样例输入: 123456abcdef

样例输出: fedcba654321

#include<stdio.h>
#include<string.h>
int main(void)
{
    /*********Begin*********/
   char str[20]={0};
   int i=0;
   gets(str);
   int len=strlen(str);
   for(i=len-1;i>=0;i--)
   {
       printf("%c",str[i]);
   }
    /*********End**********/
    return 0;
}

第2关:字符统计

题目描述:对于给定的一个字符串,统计其中数字字符出现的次数。

样例输入:

2

asdfasdf123123asdfasdf

asdf111111111asdfasdfasdf

样例输出:

6

9

#include<stdio.h>
int main(void)
{
    /*********Begin*********/
    int n=0,i=0,j=0,count=0;
   
    char str[5][40]={0};
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s",&str[i]);
    }
    
    for(i=0;i<n;i++)
    {
       j=0;
       count=0;
       while(str[i][j]!='\0')
       {
          if(str[i][j]>='0'&&str[i][j]<='9')
             count++;
          j++;
       }
      printf("%d\n",count);
    }
    
    /*********End**********/
    return 0;
}

第3关:字符插入

题目描述:输入两个字符串ab,将b串中的最大字符插入到a串中最小字符后面。

样例输入:

MynameisAmy

MynameisJane

样例输出:

MynameisAymy

#include <stdio.h>
#include <string.h>
int main(void)
{
    /*********Begin*********/
    int i=0,j=0;
    char MAX,MIN;
    char str1[100]={0};
    char str2[100]={0};
    gets(str1);
    gets(str2);
    int len1=strlen(str1);
    int len2=strlen(str2);
    //找最大字符
    MAX=str2[0];
    for(i=0;i<len2;i++)
    {
        if(MAX<str2[i])
            MAX=str2[i];
    }
    //找最小字符
    MIN=str1[0];
    for(i=0;i<len1;i++)
    {
        if(MIN>str1[i])
        {
            MIN=str1[i];
            j=i;
        }    
    }
    
    for(i=len1-1;i>j;i--)
    {
       str1[i+1]=str1[i];
    }
    str1[j+1]=MAX;
    
       printf("%s",str1);
    /*********End**********/
    return 0;
}

第4关:字符串处理

题目描述:编写程序,输入字符串s1s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如输入"BEIJING""123"3,则输出:"BEI123JING"

样例输入:

BEIJING

123

3

样例输出:

BEI123JING

#include<stdio.h>
#include<string.h>
int main(void)
{
    /*********Begin*********/
    char s1[200],s2[200];
    int i,n;
    gets(s1);
    gets(s2);
    scanf("%d",&n);

    strcat(s2,s1+n);//把s1中n之后的字符串接到s2中
    strcpy(s1+n,s2);//把s2整体复制到s1的n之后

    printf("%s",s1);
    /*********End**********/
    return 0;
}
//本关使用字符串函数比较简单些

第5关:字符串统计

题目描述:输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。

样例输入:

My name is Amy

My name is Jane

stop

样例输出:

11 name

12 name

变量作用须知:

i 用于倒序遍历字符串

WordLength 用于记录字符串中`单个单词的长度`

LongestWord 记录单词长度中的最大值

LongestWord_mark 记录最长单词的下标,方便后面打印输出

count 记录字符串中`所有单词的总长度`(不包含空格)——这就要求遍历一个非空格字符,count要+1

大题思路是,倒序遍历,遇到字符,单词长度+1和字符个数+1,遇到空格,记录最大单词长度,并将单词长度清零
下面拿实际例子来说,至于为什么倒着遍历,还得多看看题目的一个小要求😀
My name is Jane
stop
1.拿这个例子举例,首先输入My name is Jane,倒着从e遍历,遇到字符会执行这段代码,遍历M后循环结束
    if(a[i]!=' ')
    {
       WordLength++;
       count++;
    }
2.中途遇到空格,会执行这段代码,更新一下LongestWord和LongestWord_mark,WordLength重置为0,方便记录下一个单词的长度
    if(WordLength >= LongestWord)
    {
          LongestWord=WordLength;
          LongestWord_mark=i //记录最长单词前的空格的下标
    }
    //遇到空格之后,单词长度重置
    WordLength=0;
3.但是这样会有问题,遍历完M这时,需要执行1来计数,也需要执行2来判断最长单词,但实际上只会执行1
    既执行1又执行2,但是if-else语句只执行其一
    我的想法是将遍历到M的情况单独讨论,禁止在1中执行,而在2中单独列出来
#include<stdio.h>
#include <string.h>
int main( )
{
   int i,WordLength=0,LongestWord_mark,count,LongestWord;
   char a[1000];
   //输入一行,判断一次,打印一次
   while(1)
   {
      //输入
      gets(a);
      count=0,LongestWord=0,LongestWord=0,WordLength=0;  
      //终止条件
      if(strcmp(a,"stop")==0)
        break;
      //倒序遍历
      for(i=strlen(a)-1;i>=0;i--)
      {
         //处理字符(首字符除外)
         if(a[i]!=' '&& i!=0)
         {
            WordLength++;
            count++;
         }
         //处理空格和首元素
         else
         {
            if(i==0)
            {
               count++;
               WordLength++;
            }
            //将最长单词前,空格的下标记录
            if(WordLength >= LongestWord)
            {
                LongestWord=WordLength;
                LongestWord_mark=i+1;
                //应对最长单词是首单词的情况
                if(i==0)
                {
                  LongestWord_mark=i;
                }
            }
            //遇到空格之后,单词长度重置
            WordLength=0;
          }
       }
        
       //输出
       printf("%d ",count);
       for(i=LongestWord_mark;i<LongestWord_mark+LongestWord;i++)
           printf("%c",a[i]);
       printf("\n");
   }
   return 0;
}

第6关:字符串排序

题目描述:输入3行,每行n个字符串,按由小到大的顺序输出

样例输入:

cde

afg

abc

样例输出:

abc

afg

cde

#include<stdio.h>
#include<string.h>
int main(void)
{
    /*********Begin*********/
    char str[4][35];
    int i;
    for(i=0;i<3;i++)
       gets(str[i]);
    if(strcmp(str[0],str[1])>0)
    {
        strcpy(str[3],str[1]);
        strcpy(str[1],str[0]);
        strcpy(str[0],str[3]);
    }
    if(strcmp(str[0],str[2])>0)
    {
        strcpy(str[3],str[2]);
        strcpy(str[2],str[0]);
        strcpy(str[0],str[3]);
    }
    if(strcmp(str[1],str[2])>0)
    {
        strcpy(str[3],str[1]);
        strcpy(str[1],str[2]);
        strcpy(str[2],str[3]);
    }
    for(i=0;i<3;i++)
       printf("%s\n",str[i]);
    /*********End**********/
    return 0;
}

写在最后

👍🏻点赞,你的认可是我创作的动力!

⭐收藏,你的青睐是我努力的方向!

✏️评论,你的意见是我进步的财富!文章来源地址https://www.toymoban.com/news/detail-488162.html

到了这里,关于【头歌C语言程序与设计】字符数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 实验五 C语言函数程序设计习题 (使用函数计算两点间的距离,请编写函数fun,使用函数输出字符矩阵,使用函数求最大公约数和最小公倍数)

    实验五 C语言函数程序设计习题 (使用函数计算两点间的距离,请编写函数fun,使用函数输出字符矩阵,使用函数求最大公约数和最小公倍数)

    1. 使用函数计算两点间的距离:给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留2位)小数。要求定义和调用dist(x1,y1,x2,y2)计算两点间的距离。坐标中两点坐标之间的距离公式如下: 2. 请编写函数fun,它的功能是计算并输出给定整数n的所有因子(不包括1与自身)

    2024年02月04日
    浏览(11)
  • C语言柔性数组详解:让你的程序更灵活

    C语言柔性数组详解:让你的程序更灵活

    仔细观察下面的代码,有没有看出哪里不对劲? 还有另外一种写法: 你应该一眼就看到了,结构体的最后一个成员数组的写法是 int arr[]; 或者是 int arr[0] ,这两种写法是等价的,意思是这个数组的大小是 不确定的、未知的、可以变化的 。 C99允许这种特殊的结构体存在。这

    2024年02月09日
    浏览(8)
  • 【软件设计师07】程序设计语言与语言处理程序基础

    【软件设计师07】程序设计语言与语言处理程序基础

    编译与解释、文法、正规式、有限自动机、表达式、传值与传址、多中程序语言特点 (逐渐降低考察比例,很少考察) 概念 文法类型 语法推导树 有限自动机 与正规式(重点) 常见问题:给一个串比如01、10、001等,看图中起点到终点能否连起来得到这样的串 正规式 是有限自

    2023年04月08日
    浏览(11)
  • 【C语言_题库】C语言:编写一个程序,输入一组字符串,将字符串中的小写字母转换为大写字母,其它字符不变,并输出。

    【C语言_题库】C语言:编写一个程序,输入一组字符串,将字符串中的小写字母转换为大写字母,其它字符不变,并输出。

    【问题描述】 从键盘输入一行英文字符串,把所有小写字母变成大写字母,其他字母和字符保持不变。 【输入形式】 输入一行字符串,含大小写。 【输出形式】 输出大写字母形式。 【样例输入①】 hello,world. 【样例输出①】 result:HELLO,WORLD. 【样例输入②】 hello,China. 【样例

    2024年02月07日
    浏览(230)
  • 谭浩强C语言程序设计习题-循环结构程序设计
  • Java语言程序设计课程设计

    Java语言程序设计课程设计 一、 java语言程序设计课程设计要求: (1)java语言课程设计软件设计要求 1.题目不做严格限定,可自行选择题目来完成。 2.模块化程序设计 3.锯齿型书写格式 4.必须上机调试通过 (2)撰写课程设计报告,内容包括: 1.课程设计题目; 2.需求分析;

    2024年02月08日
    浏览(14)
  • C语言程序设计——设计一个学生管理系统(完美运行的程序(●‘◡‘●))

    C语言程序设计——设计一个学生管理系统(完美运行的程序(●‘◡‘●))

    通过c语言设计一个学生管理系统,要求有直观的主菜单,可以录入学生的信息,实现添加学生信息、显示学生信息、查找学生信息、删除学生信息、修改学生信息以及退出等功能。 1、首先因为学生有以下几个基本信息:姓名、年龄、学号、性别,依次由name、age、id和sex来表

    2024年02月08日
    浏览(10)
  • 【高级程序设计语言C++】特殊类设计

    拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 用C++11的话,可以使用特殊的语法来实现一个不能被拷贝的类。在C++11中,可以使用删除函数(deleted function)来禁用拷

    2024年02月10日
    浏览(13)
  • 南京邮电大学汇编语言程序设计实验二(用户登录验证程序的设计)

    1.掌握循环程序的编写以及结束循环的方法。 2.掌握DOS、BIOS功能调用的使用方法。 用户登录验证程序的实现 程序执行后,给出提示操作,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名,密码字符串和程序内定的字符串相同时

    2023年04月18日
    浏览(14)
  • Python语言程序设计 习题1

    Python语言程序设计 习题1

    一、选择题 1.python语言属于(C) A.机器语言    B.汇编语言   C.高级语言   D.科学计算语言 2.下列选项中,不属于python特点的是(B) A.面向对象   B.运行效率高   C.可读性好   D.开源 3.python程序文件的扩展名是(D) A.  .python   B.  .pyt    C.   .pt    D.   .py 4.以下叙述

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包