程序正常运行了,但是不明白为什么没有按照我的想法来输出每个部分的程序我都加注释了希望能帮忙看一下哪里出问题了
程序的目的,期刊名的缩写,现对于给定的期刊名,要求按以下规则缩写:
1长度不超过4的单词不必缩写;
2长度超过4的单词仅取前4个字母,但其后要加“.”;
3所有字母都小写。
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。
每组测试输入一个包含大小写字母和空格的字符串(长度不超过85),单词由若干字母构成,单词之间以一个空格间隔。
对于每组测试,在一行上输出缩写后的结果,单词之间以一个空格间隔。
#include
#include
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;i85]=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");//当要测试下一组数据时换行
}
}
输入样例:
2
Ad Hoc Networks
Transactions on Nanotechnology
输出样例:
ad hoc netw.
tran. on nano.
注意几点:
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");//当要测试下一组数据时换行
}
```