A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include <stdio.h>
#include<string.h>
int main(int argc, const char * argv[])
{
    //让用户输入一段英文,
    printf("请输入一段英文:\n");
    char chr[50]={'a'};
    fgets(chr, 50, stdin);
    //用fgets时,默认\0前面为\n所以为了方便后面判断,可以将这个\n改为' '空格,
    if (chr[strlen(chr)-1]=='\n')
    {
        chr[strlen(chr)-1]=' ';
    }
    //声明一个二维字符数组用来保存字符单词
    char ch[10][20]={'a'};
    //声明一个数组用来保存/n的位置
    int num[10] ={0};
    //这里的思路是:让num[0]=0,方便下一步,将英文段中的空格下标全部找出来给整形数组赋值,通过空格的下标来将英文段的每个字母赋值给字符二维数组;
    int j = 0;
    for (int i = 0; i < 50; i++)
    {
        
        if (chr[i]==' ')
        {
            num[++j]=i;
        }
    }
    //将一段英文中的内容赋值到二维数组中
    for (int i = 1; i <= 10; i++)
    {
        int k = 0;//定义一个变量,每次让k从0开始
        for (int j = num[i-1]; j <num[i]; j++)//通过整形数组中的值,来判断每个英文单词的长度,将他们赋值给二维数组,j的值来判断英文段的位置,当为空格的时候,就直接略过,不为空格时,才给二维字符数组赋值,用i值表示行坐标,K的值用来表示列坐标,这样就可以将英文段中的每个单词找出来并且保存到数组的每一行,
        {
            if (chr[j]!=' ')
            {
                ch[i-1][k++]=chr[j];
            }
        }
    }
    //声明一个指针变量用来指向二维数组的第0个元素,找出整个二维数组中的最长
   
    char *t = ch[0];//因为字符数组的地址是常量无法改变,声明一个字符指针,首先指向第0行和其他行的字符串作比较,如果大于第0行就将长的字符串地址赋值给指针变量,输出指针变量就是最长字符串
    for (int i = 1; i< 10; i++)
    {
        if (strlen(t)<strlen(ch[i]))
        {
            t = ch[i];
        }
    }
    printf("最长单词为:%s\n",t);
    //转换为大写的思路就简单了,找到每一行的每一列的第一个元素,将他们减去32,就得到他们大写,再打印出来;
    for (int i = 0; i < 10; i++)
    {
        *ch[i]=*ch[i]-32;
    }
    //循环输出时,会打印出其他代码,可以选择性的打印
    for (int i = 0; i< 10; i++)
    {
        if (*ch[i]!='\340')
        {
            printf("%s ",ch[i]);
        }
        
    }
    printf("\n");
  
    return 0;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马