bronya1465124479 2022-11-17 21:28 采纳率: 82.6%
浏览 9
已结题

程序正常运行了,但是不明白为什么没有按照我的想法来输出每个部分的程序我都加注释了希望能帮忙看一下哪里出问题了

问题遇到的现象和发生背景

程序正常运行了,但是不明白为什么没有按照我的想法来输出每个部分的程序我都加注释了希望能帮忙看一下哪里出问题了
程序的目的,期刊名的缩写,现对于给定的期刊名,要求按以下规则缩写:
1长度不超过4的单词不必缩写;
2长度超过4的单词仅取前4个字母,但其后要加“.”;
3所有字母都小写。
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。
每组测试输入一个包含大小写字母和空格的字符串(长度不超过85),单词由若干字母构成,单词之间以一个空格间隔。
对于每组测试,在一行上输出缩写后的结果,单词之间以一个空格间隔。

用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
#include<string.h>

int main()
{
    char a[85];
    int i,j,k,T;
    
    printf("Please enter how much data to input\n");
    scanf("%d",&T);//输入一共一要测试几组数据
    for(i=0;i<T;i++){
        a[85]=0;//每次输入新一行的数据,重置一次数组
        printf("Please enter data\n");
        getchar();
        gets(a);
        strlwr(a);//让数据全部变成小写字母
        for(j=0,k=0;a[j]!='\0';j++){
            if(a[j]=' '){k=0;}//单词之间以一个空格隔开,用来判断是否到下一个单词
            k++;
            if(k==4){//当超过4个字母时第5个字母变成‘.’
            a[j]='.';
            printf("%s",a[j]);
            continue;
    }else if(k>4){
        continue;//超过4个字母的部分不输出
    }
                
                printf("%s",a[j]);
        }
        printf("\n");//当要测试下一组数据时换行
    }
}

运行结果及报错内容

img

我想要达到的结果

输入样例:
2
Ad Hoc Networks
Transactions on Nanotechnology
输出样例:
ad hoc netw.
tran. on nano.

  • 写回答

1条回答 默认 最新

  • sk20180222 2022-11-18 13:42
    关注

    注意几点:
    1,if判断的时候 用“==”
    2,字符printf 用的是%c
    3,输出最多四位 然后用“.”的时候要考虑位数

    
    ```c
        {
            char a[85] = {0};
            int i, j, k, T;
    
            printf("Please enter how much data to input\n");
            scanf("%d", &T);//输入一共一要测试几组数据
            //每次输入新一行的数据,重置一次数组
            printf("Please enter data\n");
            for (i = 0; i < T; i++)
            {
                memset(a, 0x00, sizeof(a));
                printf("Please enter data\n");
                getchar();
                gets_s(a);
                strlwr(a);//让数据全部变成小写字母
                for (j = 0, k = 0; a[j] != '\0'; j++) {
                    if (a[j] == ' ') { k = 0; j++; printf(" ", a[j]);}//单词之间以一个空格隔开,用来判断是否到下一个单词
                    k++;
                    if (k == 4) {//当超过4个字母时第5个字母变成‘.’
                        a[j+1] = '.';
                        printf("%c%c", a[j],a[j+1]);
                        continue;
                    }
                    else if (k > 4) {
                        continue;//超过4个字母的部分不输出
                    }
    
                    printf("%c", a[j]);
                }
            }
             
            printf("\n");//当要测试下一组数据时换行
        }
    
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月17日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭