首页 > 代码库 > 词组缩写
词组缩写
1039:词组缩写分数: 10
时间限制:1 秒
内存限制:32 兆
特殊判题: 否
提交:35
解决: 11
标签
- 简单字符串处理
题目描述
定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。
比如,C语言里常用的EOF就是end of file的缩写。
输入格式
输入的第一行是一个整数T,表示一共有T组测试数据。
接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;
单词长度不超过10,由一个或多个空格分隔这些单词。
输出
请为每组测试数据输出规定的缩写,每组输出占一行。
样例输入
1
end of file
样例输出
EOF
#include<stdio.h> #include<string.h> int main(){ int i,n,sign=1; char word[1000]; scanf("%d\n", &n); while(n--){ gets(word); for(i=0;;i++){ // if(word[i]=='\0') // break; // if(sign==1){ // if(word[i]<='Z'){ // printf("%c",word[i]); // sign=0; } // else{ // printf("%c",word[i]-32); // sign=0; // } // } // else if(sign==0){ // if(word[i]==' ') //最终问题出在这里的==变成了=,导致这个if永远成立! // sign=1; // if(word[i]==' '&&word[i+1]==' '&&word[i+2]!=' ') // sign=1,i++; // if(word[i]==' '&&word[i+1]==' '&&word[i+2]==' ') // sign=1,i=i+2; // //修正! if(word[i]=='\0') break; if(i==0&&word[i]!=' '){ if(word[i]<='z'&&word[i]>='a') printf("%c",word[i]-32); else if(word[i]<='Z'&&word[i]>='A') printf("%c",word[i]); } if(i>0&&word[i-1]==' '&&word[i]<='Z'&&word[i]>='A') printf("%c",word[i]) ; if(i>0&&word[i-1]==' '&&word[i]<='z'&&word[i]>='a') printf("%c",word[i]-32) ; } // // sign=1; printf("\n"); } }
补充:
后来学了strtok的分割函数后,做出了另外一种方法,用了很多指针
#include<string.h> #include<stdio.h> int main(void){ int i=0,j,n; char *p[10];//一个元素存储一个字符串的地址 char word[100]; char *buf=word; char ch[10]; scanf("%d\n",&n); while(n--){ gets(word); while((p[i]=strtok(buf," "))!=NULL){ buf=NULL; i++; }//分割字符串,有i个单词 for(j=0;j<i;j++){ strcpy(ch,p[j]);//不需要用*p[j],因为p[j]=“。。。” //指针可以作为strcpy的参数,事实上,数组本身就是指针 if(ch[0]<='Z'&&ch[0]>='A') printf("%c",ch[0]); else if(ch[0]<='z'&&ch[0]>='a') printf("%c",ch[0]-32); } printf("\n"); buf=word; i=0; } }
词组缩写
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。