题目:科研工作者经常要向不同的期刊投稿。但不同期刊的参考文献的格式往往各不相同。有些期刊要求参考文献所发表的期刊名必须采用缩写形式,否则直接拒稿。现对于给定的期刊名,要求按以下规则缩写: (1)长度不超过4的单词不必缩写; (2)长度超过4的单词仅取前4个字母,但其后要加“.”; (3)所有字母都小写。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。 每组测试输入一个包含大小写字母和空格的字符串(长度不超过85),单词由若干字母构成,单词之间以一个空格间隔。
输出格式:
对于每组测试,在一行上输出缩写后的结果,单词之间以一个空格间隔。
输入样例:
2
Ad Hoc Networks
IE Transactions on Nanotechnology
输出样例:
ad hoc netw.
ie. tran. on nano.
我写的代码:
#include<stdio.h>
void abbr(int i, char a[]);
void trans(int i,char a[]);
main(){
int a, o, len, i=0;
char str[86];
scanf("%d",&a);
for(o=1; o<=a; o++){
while((str[i]=getchar())!=EOF){
i++;
}
len=sizeof(str);
if(i=0){
abbr(i, &str[i]);
}
for(i=1; i<len-1; i++)
{
if(str[i]=' '&&str[i+1]!=' '){
i=i+1;
abbr(i,&str[i]);
}
}}}
void abbr(int i,char a[]){
int n=0, m;
for(i;a[i]!=' ';i++){
n=n+1;}
if(n<=4){
for(i; a[i]!=' ';i++){
trans(i, &a[i]);}
printf(" ");
}
else
for(m=1; m<=4; m++, i++){
trans(i,&a[i]);}
printf(". ") ;
}
void trans(int i,char a[]){
if(a[i]>='a'&&a[i]<='z'){
printf("%c", a[i]);}
else{
a[i]=a[i]-32;
printf("%c", a[i]);
}
}
可以帮忙看看哪里错了吗,谢谢
你的main函数没有加类型啊
#define jokerboost 666666
#include <stdio.h>//取了一个巧,直接输出
#include <string.h>
void change(char a[])
{
int i;
for (i = 0; a[i] != '\0'; i++)
{
if (a[i] >= 'A' & a[i] <= 'Z')
{
a[i] += 32;
}
}
}
int main()
{
int n;
scanf("%d\n", &n);
for (int i = 0; i < n; i++)
{
char a[85], b[85];
int num = 0;
gets(a);
change(a);
for (int j = 0; a[j]!='\0'; j++)
{
num++;
if (a[j] == ' ')
{
num = 0;
}
if (num < 5)
{
printf("%c", a[j]);
}
else if (num == 5)
{
printf(".");
}
}
printf("\n");
}
return 0;
}