c语言添加长度在首位。

求解答。
img

img
不知道为什么,第一个字程序输出来不对 。
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>
#define N 10
#define M 80
int insert(char ss[][M])
{int i,j,len,sum=0;
for(i=0;i<N;i++)
{len=strlen(ss[i]);//len=13
sum=sum+len; //
for(j=len;j>0;j--)
ss[i][j]=ss[i][j-1];
ss[i][j]=len+48;
ss[i][len+1]='\0';
}
return (sum+48)/N;
}
int delstr(char ss[][M],int k)
{

}
int main()
{
char ss[N][M]={"Manufacturing","History","Trade","Construction",
"Administrative","Policies","Spotrs","Infrastruct",
"EconnomyOA","DeliciousFoods"};
int i,k,p;
k=insert(ss);
p=delstr(ss,k);
printf("处理后结果:\n");
for(i=0; i<p; i++)
puts(ss[i]);
return 0;
}

因为长度一旦大于等于10,就是两位数,你不能用一个字符表示一个两位数

供参考:

#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
    string ss[] = { "Manufacturing","History","Trade","Construction",
                    "Administrative","Policies","Spotrs","Infrastruct",
                    "EconnomyOA","DeliciousFoods" };
    int sum = 0, ave = 0, k = 0;
    char str1[100] = { '\0' };
    for (int i = 0; i < 10; i++)
    {
        sum += ss[i].length();
        sprintf(str1, "%d", ss[i].length()); //整型转为字符串
        string tem_str(str1);
        ss[i] = tem_str + ss[i];
        //上面两行也可以用 ss[i] = std::to_string(ss[i].length()) + ss[i]; 这一行来代替
        //但这是C++11的特性,只有最新的编译器才支持,比如VS2019用的编译器就支持,DEV用的不支持
    }
    ave = sum / 10;
    for (int i = 0; i < 10; i++)
    {
        if (ss[i].length() <= ave) //这里实际并没有删除,只是不符合要求的并没有输出
        {
            cout << ss[i] << endl;
        }
    }
    return 0;
}

img