C 我的程序需要输入

C 我的程序需要输入,c,C,我需要用它来写一个代码 给定一个输入字符串,通过优先于其类型的第一个字符对其进行编码 输入格式 输入包含带有 约束条件 1 <= length <= 200 这是我的密码: #include <math.h> #include <stdio.h> #include <string.h> #define N 201 #define dif ('a'-'A') int main() { char arr[N],res[N],lower[N

我需要用它来写一个代码 给定一个输入字符串,通过优先于其类型的第一个字符对其进行编码

输入格式

输入包含带有

约束条件

1 <= length <= 200
这是我的密码:

#include <math.h>
#include <stdio.h>
#include <string.h>

#define N 201
#define dif ('a'-'A')

int main() {
    char arr[N],res[N],lower[N];
    scanf("%s",arr);
    int index=0,cnt=0,i;
    for(i=0;arr[i]!='\0';i++)
    {
        lower[i] = arr[i];
        if(arr[i]>='A'&&arr[i]<='Z')
            lower[i] += dif;
    }
    index = 0;
    res[cnt] = arr[0];
    cnt++;
    for(i=0;lower[i]!='\0';i++)
    {
        if(lower[i]!=lower[i+1])
        {
            if(i+1-index!=1)
            {
                res[cnt] = i-index+1+48;
                cnt++;
            }
            res[cnt] = arr[i+1];
            cnt+=1;
            index = i+1;
        }
    }
    res[cnt] = '\0';
    printf("%s",res);
    return 0;
}
#包括
#包括
#包括
#定义N 201
#定义dif('a'-'a')
int main(){
字符arr[N],res[N],lower[N];
scanf(“%s”,arr);
int指数=0,cnt=0,i;
对于(i=0;arr[i]!='\0';i++)
{
下[i]=arr[i];
如果(arr[i]>='A'&&arr[i]您可以执行以下操作:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define N 201

int main() {
    char arr[N],res[N];
    int count,i,j;

    printf ("Enter alphabetic string:\n");
    fgets(arr, N, stdin);
    arr[strcspn(arr, "\n")] = 0;

    size_t len = strlen(arr);

    for (i = 0, j = 0, count = 0; i < len; i++) {
            if (!isalpha(arr[i])) {
                    printf ("Invalid character <%c> in string %s\n", arr[i], arr);
                    return -1;
            }
            if (i == 0) {
                    res[j++] = arr[i];
                    continue;
            }
            if (tolower(arr[i]) == tolower(arr[i-1]))
                    count++;
            else {
                    if (count == 0) {
                            res[j++] = arr[i];
                    } else {
                            res[j++] = count + '0' + 1;
                            res[j++] = arr[i];
                            count = 0;
                    }
            }
    }

    if (count != 0)
            res[j++] = count + '0' + 1;
    res[j] = '\0';
    printf ("result : %s\n", res);
    return 0;
}

请注意,该程序没有检查
count
值,如果一个字符在输入字符串中连续出现超过9次,那么您得到的输出将在输出字符串中包含一些字符,而不是该字符计数。我将让您自行添加代码来处理此特定情况。

请重新表述您的prose来提高可读性。前几行很难理解,或者(至少对我来说)根本无法理解。另外,阅读。
#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define N 201

int main() {
    char arr[N],res[N];
    int count,i,j;

    printf ("Enter alphabetic string:\n");
    fgets(arr, N, stdin);
    arr[strcspn(arr, "\n")] = 0;

    size_t len = strlen(arr);

    for (i = 0, j = 0, count = 0; i < len; i++) {
            if (!isalpha(arr[i])) {
                    printf ("Invalid character <%c> in string %s\n", arr[i], arr);
                    return -1;
            }
            if (i == 0) {
                    res[j++] = arr[i];
                    continue;
            }
            if (tolower(arr[i]) == tolower(arr[i-1]))
                    count++;
            else {
                    if (count == 0) {
                            res[j++] = arr[i];
                    } else {
                            res[j++] = count + '0' + 1;
                            res[j++] = arr[i];
                            count = 0;
                    }
            }
    }

    if (count != 0)
            res[j++] = count + '0' + 1;
    res[j] = '\0';
    printf ("result : %s\n", res);
    return 0;
}
$ ./a.out
Enter alphabatic string:
abbcc
result : ab2c2

$ ./a.out
Enter alphabatic string:
aAABbb
result : a3B3

$ ./a.out
Enter alphabatic string:
rrrfVvVd
result : r3fV3d

$ ./a.out
Enter alphabatic string:
QQQaaaaeeeeeeeeeccFg
result : Q3a4e9c2Fg