Anonymous 发表于 2021-8-3 10:33:20

S1E19 动动手2

本帖最后由 匿名 于 2021-8-3 10:36 编辑

请问这样写为何运行不了
#include <stdio.h>
#include <string.h>

int main()
{
        char str1;//输入的文本
        char str2;//不同的字符
        int i=0,n=0,j=0,k=0,ch,max;//i是str1中的标号,n是比较的循环次数,j是str2中字符的标号,k是比大小的循环次数
        bool flag=0;//输入字符与之前的是否相同的判据
        int s={0};//每个重复字符的个数
       
        printf("请输入英文文本:");
        while((ch=getchar())!='\n')
        {
                str1=ch;
                for(n=0;n<j;n++)
                {
                        if(str1==str2)
                        {
                                flag=1;
                                break;
                        }
                        else
                        {
                                flag=0;
                       }
                }
                if(flag==0)
                {
                        str2=str1;
                }
                else
                {
                        s++;
                }
        }
       
        for(k=0;k<1024;k++)
        {
                max=s>s?k+1:k;
        }
       
        printf("您总共输入了%u个字符,其中不同的字符个数有%u个。\n\
它们是:%s\n出现最多次的字符是\'%c\',\
它一共出现了%d次\n",strlen(str1),strlen(str2),str2,str2,s);
       
        return 0;
}

jackz007 发表于 2021-8-3 12:21:35

本帖最后由 jackz007 于 2021-8-3 12:43 编辑

#include <stdio.h>

int main()
{
      char str1 = {0} ;//输入的文本
      char str2 = {0} ;//不同的字符
      int d = 0 , i = 0 , n = 0 , j = 0 , k = 0 , ch , max ; //i是str1中的标号,n是比较的循环次数,j是str2中字符的标号,k是比大小的循环次数
      int s = {0} ;//每个重复字符的个数
      printf("请输入英文文本:")            ;
      while((ch = getchar()) != '\n') {
                str1 = ch               ;
                for(n = 0 ; n < j ; n ++) {
                        if(ch == str2) {
                              break;
                        }
                }
                if(n == j) {
                        str2 = ch          ;
                        s ++            ;
                } else {
                        s ++               ;      
                }
      }
      for(i = 0 , k = 0 , max = 0 ; k < j ; k ++) {
                if(s > max) {
                        max = s            ;
                        i = k               ;
                }
      }
      printf("您总共输入了%u个字符,其中不同的字符个数有%u个。\n\
它们是:%s\n出现最多次的字符是\'%c\',\
它一共出现了%d次\n", d , j , str2 , str2 , s) ;
      
      return 0;
}
      编译、运行实况
D:\0002.Exercise\C>g++ -o x2 x2.c

D:\0002.Exercise\C>x2
请输入英文文本:Hello , World!
您总共输入了14个字符,其中不同的字符个数有10个。
它们是:Helo ,Wrd!
出现最多次的字符是'l',它一共出现了3次

D:\0002.Exercise\C>

jackz007 发表于 2021-8-3 12:29:04

本帖最后由 jackz007 于 2021-8-3 17:00 编辑

忽略字母大小写的版本
#include <stdio.h>

int main()
{
      char str1 = {0} ;//输入的文本
      char str2 = {0} ;//不同的字符
      int d = 0 , i = 0 , n = 0 , j = 0 , k = 0 , ch , max ; //i是str1中的标号,n是比较的循环次数,j是str2中字符的标号,k是比大小的循环次数
      int s = {0} ;//每个重复字符的个数
      printf("请输入英文文本:")            ;
      while((ch = getchar()) != '\n') {
                if(ch >= 'A' && ch <= 'Z') ch += ' ' ;
                str1 = ch                      ;
                for(n = 0 ; n < j ; n ++) {
                        if(ch == str2) {
                              break;
                        }
                }
                if(n == j) {
                        str2 = ch                  ;
                        s ++                  ;
                } else {
                        s ++                     ;      
                }
      }
      for(i = 0 , k = 0 , max = 0 ; k < j ; k ++) {
                if(s > max) {
                        max = s                  ;
                        i = k                        ;
                }
      }
      printf("您总共输入了%u个字符,其中不同的字符个数有%u个。\n\
它们是:%s\n出现最多次的字符是\'%c\',\
它一共出现了%d次\n", d , j , str2 , str2 , s);
      
      return 0                                     ;
}
页: [1]
查看完整版本: S1E19 动动手2