Pacccc 2022-05-03 20:50 采纳率: 100%
浏览 492
已结题

这种带字符串的c语言程序应该怎么下手啊

完成具有三种字符串格式处理功能的文本处理器(每种字符串长度不超过80个字符)。
(1)第一种字符串。
从键盘输入的字符串由英文的句子组成(if you are doing your best, you will not have to worry about.)。(注意:单词之间可能不止一个空格)
完成:对输入字符串进行英文字母个数,空格个数,英文单词个数的统计,并且显示统计结果。
(2)第二种字符串。
从键盘输入的字符串中包含多个正整数。(This12345is a23456bc 98765test.)。(注意: 整数位数不超过10位数。)
完成:对字符串中的整数进行求和,并且显示求和结果。
(3)第三种字符串。
从键盘输入的字符串由二个大正整数组成的字符串。(123456123456123456 1234567890123456789)。(注意: 整数位数超过12位数,整数之间用空格分开。)
完成:对字符串中的整数进行求和,求积。并且显示计算结果。

要求:用C语言编写,具备良好的用户操作界面,用户操作方便。

  • 写回答

2条回答 默认 最新

  • 不会长胖的斜杠 后端领域新星创作者 2022-05-03 21:12
    关注
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    #define N 100
    void count() {
        char c;
        int letters = 0;
        int space = 0;
        int digit = 0;
        int others = 0;
        int word = 0;
        printf("请输入字符串:(输入#结束)");
        while ((c = getchar()) != '#')
        {
            if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
            {
                letters++;
            }
            else if (c >= '0' && c <= '9')
            {
                digit++;
            }
            else if (c = ' ')
            {
                space++;
                word++;
            }
            else
            {
                others++;
                word++;
            }
        }
        printf("英文字母有%d个,空格有%d个,数字有%d个,其他字符有%d个,英文单词有%d个\n", letters, space, digit, others,word);
    }
    
    void sum() {
        char c;
        int sum = 0;
        printf("请输入字符串:(输入#结束)");
        while ((c = getchar()) != '#')
        {
            if (c >= '0' && c <= '9')
            {
                sum = sum + (int)c - 48;
            }
        }
        printf("和为%d", sum);
    }
    
    
    void SumandMult() {
        //将两个大整数分别存入字符串数组num1和num2中
        char num1[N] = { '\0' }, num2[N] = { '\0' };//初始化,如果不初始化也可以的,直接定义;
        int n1[N], n2[N], n3[2 * N] = { 0 }, n4[2 * N] = { 0 };//整型数组n3[]必须进行初始化,否则后面逐个计算时会出错!!!
        int a, b, c;
        int i, j;
        printf("请输入两个大整数:(空格隔开)\n");
        scanf("%s %s", num1, num2);//获取数组,加不加&都可以
        //gets(num1);
        //gets(num2);
        a = strlen(num1);//计算字符串数组num1的长度
        b = strlen(num2);//计算字符串数组num2的长度
        c = a + b - 1;//n1*n2得到的结果数组n3的长度
    
        //将字符串数组转化成整型数组
        for (i = 0; i < a; i++)
        {
            n1[i] = num1[i] - '0';
        }
        for (i = 0; i < b; i++)
        {
            n2[i] = num2[i] - '0';
        }
        //逐个相乘
        for (i = 0; i < a; i++)
        {
            for (j = 0; j < b; j++)
            {
                n3[i + j] += n1[i] * n2[j];//这里要用到n3[0]~n3[c-1]的初始值,所以数组n3[2*N]必须初始化,否则容易计算出错
            }
        }
        //对数组n3中的数据至右向左进位
        for (i = c - 1; i > 0; i--)
        {
            n3[i - 1] += n3[i] / 10;
            n3[i] = n3[i] % 10;
        }
        //正向输出结果数组n3
        printf("输出两个大整数相乘的积:\n");
        for (i = 0; i < c; i++)
        {
            printf("%d", n3[i]);
        }
        printf("\n");
        int l = a;
        if (b > a) { l = b; }l;
        int n[N + 1], m[N + 1];
        memset(n, 0, sizeof(n));
        memset(m, 0, sizeof(m));
        for (i = 0; i < a; i++)
         {
             n[i] = n1[a - 1 - i] - '0';
         }
         for (i = 0; i < b; i++)
         {
             m[i] = n2[b - 1 - i] - '0';
         }
         for (i = 0; i < l; i++)
         {
             n4[i] = n4[i] + n[i] + m[i];
             n4[i + 1] = n4[i] / 10;
             n4[i] %= 10;
         }
         if (n4[l] != 0)
         {
             printf("1");
         }
         for (i = l - 1; i >= 0; i--)
         {
             printf("%d", n4[i]);
         }
    
    }
    
    int main()
    {
        int a;
        printf("pls enter (1,2,3):");
        scanf_s("%d", &a);
        switch (a)
        {
        case 1:
            count();
            break;
        case 2:
            sum();
            break;
        case 3:
            SumandMult();
            break;
        }
        //count();
        //sum();
        //SumandMult();
        system("pause");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 赞助了问题酬金20元 5月3日
  • 创建了问题 5月3日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集