要求:
1)在主函数中输入字符串,有空格数字和字母。
2)自定义函数char *strToS(char *str)形成缩写。缩写规律:A)提取每个单词的第一个字母形成缩写;B)数字开头或长度不足4个字母的单词不进入缩写。
3)缩写结果以大写存放在输入字串的数组中。
4)在主函数中输出。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char *p = "无法生成缩写词!";
char s[10001], buf[10001];
char * strTos(char *str) {
if (strlen(str) < 4)
return p;
int word = 0, len = 0, i = 0;
char *t = str, temp;
while (*t) {
if (*t == ' ' || *t == '\n') {
word = 0;
if (len >= 4 && isalpha(temp)) {
buf[i++] = toupper(temp);
len = 0;
}
}
else if (word == 1) {
len++;
}
else if (word == 0) {
temp = *t;
word = 1;
len = 1;
}
t++;
}
if (i == 0)
return p;
return buf;
}
int main(void) {
char *r;
fgets(s, 10001, stdin);
r = strTos(s);
puts(r);
return 0;
}
代码文本:
#include "stdio.h"
#define N 300
char *strToS(char *str){
char s[N>3 ? N/3 : 1],t[25],*pend,*p;
int i,j,k,n;
for(pend=str;*pend;pend++);//求str长度,记结束地址
for(pend--,s[j=0]='\0',p=str;p<pend;p+=n){
sscanf(p,"%s%n",t,&n);
for(k=0;t[k];k++);
if(k>3 && (t[0]>='a' && t[0]<='z' || t[0]>='A' && t[0]<='Z'))
s[j++]=t[0]&0xDF;//记录缩写并变成大写
}
for(s[j]=i=0;str[i]=s[i];i++);
return str;
}
int main(int argc,char *argv[]){
char str[N];
printf("Please enter a string contain Spaces and figures...\n");
fgets(str,N,stdin);
printf("\nAbbreviations results: '%s'\n",strToS(str));
return 0;
}
本回答被提问者和网友采纳C语言编程:主函数输入一行有空格和数字的字符串,求这行字符串的缩写,怎...
include <stdio.h> include <string.h> include <ctype.h> char *p = "无法生成缩写词!";char s[10001], buf[10001];char * strTos(char *str) { if (strlen(str) < 4)return p;int word = 0, len = 0, i = 0;char *t = str, temp;while (*t) { if (*t == ' ' |...
编写一段C语言程序,程序功能是: 输入一行字符,分别统计其中英文字母...
printf("英文字母:%d\\n",zm);printf("空格:%d\\n",kg);printf("数字:%d\\n",sz);printf("其它:%d\\n",qt);return 0;}
c语言中输入一串字符,计算此字符串中字母、数字、空格和其
1. 若需scanf支持输入包含空格的字符串,应使用%[^\\n]格式,这表示只接受\\n作为结束符,避免空格误判为字符串结束。或可选用gets函数实现。2. 空格的判断,直接利用其ASCII码值即可。
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符 用C语言...
include <stdio.h> main(){char cs;int zimu,shuzi,kongge,qita;while((cs=getchar())!='\\n'){ if(cs>'a'&&cs<'z'||cs>'A'&&cs<'Z') zimu++;else if(cs>0&&cs<9) shuzi++;esleif(cs="") kongge++;else qita++;printf("zimu=%d,shuzi=%d,kongge=%d,qita=%d\\n"...
C语言如何输入一行有空格的字符串?
C语言中,处理含有空格的字符串输入有多种方法。首先,如果你使用char数组,可以这样操作:声明一个char类型的数组,如char s[100];然后利用cin.getline()函数读取输入,例如cin.getline(s,1000),这里1000是最大长度。输入例如"He llo",输出结果会保持原样。对于string类型的字符串,操作更为简洁:声...
编写一段C语言程序,要求输入一行字符,找出其中的大写字母、小写字母、空...
int main(int argc,char *argv[]){ char s[300];int i,uc,lc,sp,di,ot;printf("Please enter a string...\\n");i=0;while(s[i]=getchar(),s[i]!='\\n' && ++i<300);uc=lc=sp=di=ot=0;for(s[i]='\\0',i=0;s[i];i++)if(s[i]>='A' && s[i]<='Z')uc++;...
C语言如何输入一行有空格的字符串?
C语言输入一行有空格的字符串的方法:1、对于char char s[100];cin.getline(s,1000);\/\/第二个参数表示允许输入的最大长度while(cin.getline(s,1000));输入输出样例 输入:He llo 输出:He llo 2、对于string string s;getline(cin,s);while(getline(cin,s));输入输出样例 输入:He llo 输出:...
...从键盘输入一个带有空格的字符串,去掉字符串后再输出(要求只能定义...
1、首先,随便创建一个有main方法的类。2、定义一个字符串变量,这里给变量赋值,前后都留有一个空格。3、先运行一遍,看输出效果,可以看到百度包括空格的几个字符都打印出来了。4、为了更加清晰,用字符串对象另外一个方法“length()”得到此字符串的长度为6, 说明的确是“百度”加两个空格的长度...
c语言题 输入一行字符,只包括数字或字母,以回车结束。输出该字符串的...
include<stdio.h>int main(){char s[100];int i;bool digit=false;bool letter=false;scanf("%s",s);for(i=0;s[i]!='\\0';i++){if(s[i]>='0' && s[i]<='9')digit=true;if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z'))letter=true;}if...
C语言编程:输入一行字符,统计出其中英文字母、空格、数字和其他字符的个...
呵呵,下面是C的,其实这里输入的时候输入空格就被认为输入中止,所以计算空格没意义,所以目前有个假设空格能输入哈 include<stdio.h> void main(){ int nE=0,nS=0,nN=0,nO=0,i=0;char a[1000];scanf("%s",a);while (a[i]!='\\0') { if (a[i]<='z' && a[i]>='a' || a[i...