输入一行字符串,统计其中有多少个单词,单词之间用空格(' ’)隔开。例: 字符串:I am a boy,得到结果是4个单词。要求: (1) 将求一行字符串有多少个单词写成函数。例如: int WordNum(char *s)//输入参数char *s是字符串指针,输出参数是单词个数; (2) 写出main调用过程,测试函数的结果; (3) 程序书写规范,关键部分要求给出注释。
输入一行字符串,统计其中有多少个单词,单词之间用空格(' ’)隔开。例: 字符串:I am a boy,得到结果是4个单词。要求: (1) 将求一行字符串有多少个单词写成函数。例如: int WordNum(char *s)//输入参数char *s是字符串指针,输出参数是单词个数; (2) 写出main调用过程,测试函数的结果; (3) 程序书写规范,关键部分要求给出注释。
参考答案和解析
#include <stdio.h> void main() { char ch; int n=0; printf(“请输入一行字符:”); scanf(“%c”,&ch); while(ch!=’\n’) { if(ch>=’a’&&ch<=’z’||ch>=’A’&&ch<=’Z’) n++; scanf(“%c”,&ch); } printf(“您输入了%d个英文字母\n”, n); }
相关考题:
●试题二阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。【函数2.1说明】函数palindrome(char s[])的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:"LEVEL"是回文字符串,而"LEVAL"不是。【函数2.1】int palindrome(char s[]){char*pi,*pj;pi=s;pj=s+strlen(s)-1;while(pi<pj (1) ){pi++;pj--;}if( (2) )return -1;else return 0;}【函数2.2说明】函数f(char*str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。例如若str的值为"33123333435",del的值为"3",调用此函数后,将输出3个子字符串,分别为"12"、"4"和"5"。【函数2.2】void f(char*str,char del){int i ,j ,len;len=strlen(str);i=0;while(i<len){while( (3) )i++;/*忽略连续的标志字符*//*寻找从str[i]开始直到标志字符出现的一个子字符串*/j=i+1;while(str[j]!=del str[j]!=′\0′)j++;(4) =′\0′;/*给找到的字符序列置字符串结束标志*/printf(″%s\t″,str[i]);(5) ;}}
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。【函数2.1说明】函数palindrome(char s[])的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。【函数2.1】int palindrome( char s[ ] ){ char * pi, * pj;pi=s; pj=s+strlen(s)-1;while( pi<pj(1)){pi ++ ;pj --}if((2))return -1;else return 0;}【函数2.2说明】函数f(char * str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。例如若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出3个子字符串,分别为“12”、“4”和“5”。【函数2.2】void f( char * str, char del){ int i ,j ,len;len = strlen (str)i=0;while(i < len) {while((3))i++; /*忽略连续的标志字符*//*寻找从str[i]开始直到标志字符出现的一个子字符串*/j=i+1;while(str[j] != del str[j] ! = '\0')j ++(4): '\0'; /*给找到的字符序列置字符串结束标志*/printf("%s\t",str[i]);(5);}}
编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为asd asasdfg asd as zx67 asd mklo,子字符串为as,则应当输出6。注意:部分源程序给出如下。请勿改动主函数main和具他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <conio.h>include <stdio.h>include <string.h>int fun(char *str, char *substr){}main ( ){char str[81],substr[3];int n;clrscr ();printf ("输入主字符串 ");gets (str);printf ("输入子字符串");gets (substr);puts (str);puts (substr);n=fun (shr, substr);printf("n=%d\n ",n);}
请编写函数fun(),该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include<string. h>include<stdio, h>define N 80int fun (char *s){}main ( ){char line [N];int num=0;printf ("Enter a string: \n ");gets (line);num=fun (line);printf ("The number of word is: %d\n\n ",num);}
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]本程序实现对指定文件内的单词进行计数。其中使用二叉树结构来保存已经读入的不同单词,并对相同单词出现的次数进行计数。此二叉树的左孩子结点的字符串值小于父结点的字符串值,右孩子结点的字符串值大于父结点的字符串值。函数getword(char*filename,char*word)是从指定的文件中得到单词。char*strdup(char*S)是复制S所指向的字符串,并返回复制字符串的地址。[C程序]include <stdio.h>include <ctype.h>include <string.h>define MAXWORD 100struct node {char*word;int count;struct node*left;struct node*right;}struct node*addtree(struct node*P,char*w){ int cond;if(p==NULL){ /*向树中插入结点*/P=(struct node*)malloc(sizeof(struct node));P->word=strdup(w);P->count=1;(1) ;}elseif((oond=strcmp(w,p->word))==0) (2) ;else if(cond<0)p->left=(3);else p->right=(4);return p;}main(){ Struct node*root;char word[MAXWORD];root=NULL;filename="example.dat";while(getword(filename,word)!=EOF))root=(5);}
请补充函数fun(),该函数的功能是:把ASCII码为奇数的字符从字符串str中删除,结果仍然保存在字符串str中。字符串str从键盘输入,其长度作为参数传入函数fun()。例如,输入“abcdef”,输出“bdf”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include <stdio.h>define N 80void fun(char s[],int n){int i, j;j=0;for(i=0;【 】;i++){if(【 】)s [j++]-s [i];}【 】;}main ( ){int i=0, strlen=0;char str [N];clrscr ();printf ("\nInput a string: \n");gets (str);while (str [i] !='\0'){strlen++;i++;}fun(str, strlen);printf("\n*** display string ***\n");puts (str);}
下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3,请填空。#include#include#define M 81int fun(char *ss, char c){ int i=0;for(; ( );ss++)if(*ss==c)i++;return i;}main(){ char a[M], ch;clrscr();printf("\nPlease enter a string: "); gets(a);printf("\nPlease enter a char: "); ch=getchar();printf("\nThe number of the char is: %d\n", fun(a,ch));}
分析两个字符串,分别输出每个字符串的单词并统计出单词个数。阅读程序,填写空行。注意:不改动程序结构,不得增行或删行。import java.util.*;public class ex2{public static void main(String args[]){String s1="I am Chinese,she is my girlfriend";String s2="Oh,really,fine";StringTokenizer fenxi_1=new StringTokenizer(s1,",");StringTokenizer fenxi_2=new StringTokenizer(s2,",");int n1=fenxi_1.countTokens();int n2=fenxi_2.countTokens();while(fenxi_1.hasMoreTokens()){String s=fenxi_1.nextToken();System.out.println(s);}System.out.println("s1单词:"+n1+"个");while(fenxi_1.hasMoreTokens()){String s=______;System.out.println(s);}System.out.println("s2单词:"+n2+"个");}}
请补充函数fun(),该函数的功能是:把字符串str中的字符按字符的ASCⅡ码降序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。例如,如果输入“cdefgh”,则输出为“hgfedc”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include <stdio.h>define N 80void fun (char s [], int n){int i, j;char ch;for (i=0; i<n; i++)for(j=【 】;j<n;j++)if (s[i]<s [j]){ch=s [j];【 】;s [i] =ch;}main ( ){int i=0, strlen=0;char str [N];clrscr ();printf ("\nInput a string: \n");gets (str);while (str [i] !=' \0'){strlen++;i++;}fun (str, strlen);printf ("\n***display string ***\n");puts (str);}
请编写一个函数fun(),它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较K的字符串。若两个字符串长度相等,则返回第1个字符串。例如,输入beijing<CR>shanghai<CR>(<CR>为回车键),函数将返回shanghai。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include<stdio.h>char *fun(char *s, char *t){}main(){char a[20],b[10],*p,*q;int i;printf ("Input 1th string: ");gets(a);printf{"Input 2th string: ");gets(b);printf("%s",fun(a,b));}
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】给定函数fun的功能是:将从键盘上输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用“.”结束输入。【函数】int fun(char *c,int status){if((1)=='')return 1;else{if((2)(3)(4))(5)='A'-'a';return 0;}}main(){int flag=1;char ch;printf("请输入一字符串,用点号结束输入!\n");do {ch=getchar();flag=fun(ch,flag);putchar(ch);}while(ch!='.');printf("\n");}
以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址#include <stdio.h>#include <string.h>char *scmp(char *s1, char *s2){ if(strcmp(s1,s2)0)return(s1);else return(s2);}main( ){ int i; char string[20], str[3][20];for(i=0;i3;i++) gets(str[i]);strcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/strcpy(string,scmp(string,str[2]));printf("%s\n",string);}若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为A.abcdB.abbaC.abcD.abca
下列程序的功能是:求出ss字符串中指定字符c的个数,并返回此值。请编写函数int num(*char ss,char c)以实现程序要求,最后调用函数readwriteDat(),把结果输出到文件out.dat中(注:大小写字母有区别)。例如:若输入字符串“ss="123412132" , c=’1’”,则输出“3”。部分源程序已给出。请勿改动主函数main()和输出数据函数writeDat()的内容。#include conio.h#include stdio.h#define M 81void readwriteDAT(); int num(char *ss,char c){ } main(){ char a[M],ch; clrscr(); printf("\nPlease enter a string:" );gets(a); printf("\nPlease enter a char;" );ch=getchar(); printf("\nThe number of the char is:%d\n" ,num(a,ch)); readwriteDAT();}viod readwriteDAT(){ int i; FILE *rf,*wf; char a[M],b[M],ch; rf=fopen("in.dat" ,"r" ); wf=fopen(" out.dat" ,"w" ); for(i=0;i10;i++){ fscanf(rf," %s",a); fscanf(rf," %s" ,b); ch=*b; fprintf(wf," %c=%d\n:" ,ch,num(a,ch));} fclose(rf); fclose(wf);}
以下程序中函数scmp功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。#includ<string. h>char *scmp(char *s1,char *s2){ if(strcmp(s1,s2)<0) return(s1); else return(s2);}main(){ int i;char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); //库函数 strcpy 对字符串进行复制 strcpy(string,scmp(stfing,str[2])); puts(string); }若运行时依次输入: abed、abba 和abc三个字符串,则输出结果为( )。A.abedB.abbaC.abcD.abca
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。【函数1说明】函数palindrome(char s[])的功能是:判断字符串s是否为回文字符串。若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,则可称该字符串是回文字符串。例如,“LEVEL”是回文字符串,而“LEVAL”不是。【函数1】int palindrome(char s[]{char *pi, *pj;pi=s; pj=s+strlen(s)-1;while(pi<pj(1)){pi++; pj--;}if((2))return-1;else return 0;}【函数2说明】函数f(char *str, char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。例如,若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出三个子字符串,分别为“12”、“4”和“5”。【函数2】void f(char *str, char del){int i,j, len;len=strlen(str);i=0;while(i<len){While((3)) i++; /*忽略连续的标志字符*//*寻找从str[i]开始直到标志字符出现的一个子字符串*/j=i+1;while(str[j]!=del str[j]!='\0')j++;(4)='\0'; /*给找到的字符序列置字符串结束标志*/printf("%s\t",str[i]);(5);}}
str是全部由小写字母字符和空格字符组成的字符串,由 num传入字符串的长度。请补充函数fun(),该函数的功能是:统计字符串str中的单词个数,结果由变量num传回。每个单词之间都由空格隔开,并且字符串str开始不存在空格。例如:str=“how do you do”,结果为:num=4。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include <stdio.h>define N 80void fun(char *s,int *num){int i,n=0;for(i=0;【 】;i++){if(s[i]>='a',s[i]<='z',(s[i+1)==’’||s[i+1]=='\0'))【 】;}【 】;}main(){char str[N];int num=0;printf("Enter a string:\n");gets(str);while(str[num])num++;fun(str,num);printf("The number of word is:%d\n\n",num);
请补充函数fun(),该函数的功能是:把ASCⅡ码为偶数的字符从字符串s打中删除,结果仍然保存在字符串srt中,字符串str从键盘输入,其长度作为参数传入函数fun()。例如,输入“abcdef”,输出“ace”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:inc lude< stdio, h>define N 80【 】{int i, j;【 】for (i=0;i<n;i++){if (s [i] %2!=0)s [j++]=s [i];}【 】;}main ( ){int i=0, strlen=0;char str[N];clrscr ();printf ("\nInput a string:\n");gets (str);while (str [i] !=' \0' ){strlen++;i++;}fun (str, strlen);printf("\n*** display string ***\n");puts (str);}
请补充函数fun(),该函数的功能是:把字符下标能铍2或3整除的字符从字符串str中删除,把剩余的字符重新保存在字符串str中。字符串str从键盘输入,其长度作为参数传入函数fun()。例如,输入“abcdefghijk”,输出“bfh”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include <stdio.h>define N 80void fun(char s[], int n){int i, k;【 】;for(i=0; i<n; i++){s[k++]=s[i];if(【 】)k--;}【 】;}main(){int i=0,strlen=0;char str[N];clrscr();printf("\nInput a string:\n");gets(str);while(str[i]!='\0'){strlen++;i++;}fun(str,strlen);printf('\n*** display string ***\n");puts(str);}
下列给定的程序中,fun()函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。例如,若输入:I am a student to take the examination则应输出:I aM A studenT tO take thE examinatioN请改正程序中的错误,使它能得出正确的结果。注童:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <conio.h>include <ctype.h>include <stdio.h>void fun(char *p){int k=0;for ( ; *p;p++)if (k){/*************found**************/if (p==''){k=0;/*************found**************/*p=toupper(*(p-1));}}elsek=1;}main(){char chrstr[64];int d;clrscr();printf("\nPlease enter an English sentence within 63 letters:");gets(chrstr);d=strlen(chrstr);chrstr[d==' ';chrstr[d+1]=0;printf("\nBofore changing:\n %s",chrstr);fun(chrstr);printf("\nAfter changing:\n%s",chrstr);}
给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。例如,形参s所指的字符串为:This is a C languageprogram.,函数的返回值为6。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!
以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。 #include<string> char*scmp(char*s1,char*s2) { if(strcmp(s1,s2)<0) return(s1); else retrun(s2); } main() { int i;char string[20],str[3][20]; for(i=0;i<3;i+A.abcdB.abbaC.abcD.abca
函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组XX中;请编制函数StrOL,其函数的功能是: 以读入文章的行为单位,以空格或标点符号(数据文件中仅含’,’或’.’作为标点符号)作为分隔符,对行中所有单词进行倒排, 单词间仍以空格作为分隔符,之后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组XX中。最后main函 数调用函数wmeDat把结果XX输出到文件0ut.dat中。提示:对于每一行字符串可以先提取最后一个单词,再提取倒数第二个单词,直至第一个单词,单词之后采用空格为分隔符,连接成一行新的字符串。 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在test.C文件中。 请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat的内容。
下列给定的程序中,proc()函数的功能是:将str所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。例如,若输人:How do you do,则输出:HoW dOyoU d0。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
下面程序的功能是()。include include using namespace std;int main (){ in 下面程序的功能是( )。 #include <iostream> #include <string> using namespace std; int main () { int i=1, n=0; char s[80],*p; p=s; strcpy(p,"It is a book.."); for (; *p !=' \0' ;p++) { if(*p=='') i=0; else if (i==0) { n++; i=1; } } cout<<"n=" <<n<<end1; return 0; }A.统计字符串中的单词个数B.统计字符串中的空格个数C.统计字符串中的字母个数D.统计字符串中的全部字符个数
试题三(共15分)阅读以下说明和C函数,填补C函数中的空缺(1)~(6),将解答写在答题纸的对应栏内。【说明】函数numberOfwords (char message[])的功能是计算存储在message字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过20时仅输出其前20个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似don't形式的词,单词之后都为空格或标点符号。函数中判定单词的规则是:(1)一个英文字母串是单词;(2) 一个数字串是单词;(3)表示名词所有格的撇号(')与对应的单词看作是一个单词。除上述规则外,其他情况概不考虑。例如,句子“The 1990's witnessed many changes in people's concepts ofconservation”中有10个单词,输出如下:The1990'switnessedmanychangesinpeople'sconceptsofconservation函数numberOfijvords中用到的部分标淮库函数如下所述。【C函数】int numberOfwords (char message[]){char wordbuffer[21],i=0; /*i用作wordbuffer的下标*/(1) pstr;int ps[26]={0); /*ps[0]用于表示字母'A'或'a'的频数*//*ps[1]用于表示字母'B'或'b'的频数,依此类推*/int wordcounter=0;pstr=message;while (*pstr){if((2)(*pstr)){/*调用函数判断是否为一个单词的开头字符*/i=0;do{/*将一个单词的字符逐个存入wordbuffer[],并对字母计数*/wordbuffer[i++]=*pstr;if(isalpha(*pstr)){if (3) (*pstr))ps[*pstr-'a']++;else ps[*pstr-'A']++;}(4) ; /*pstr指向下一字符*/}while (i20(isalnum(*pstr)||*pstr=='\"));if (i=20) /*处理超长单词(含名词所有格形式)*/while (isalnum(*pstr)||*pstr=='\"){pstr++;}(5) ='\0';/*设置暂存在wordbuffepstrr中的单词结尾*/wordcounter++; /*单词计数*/puts(wordbuffer); /*输出单词*/}(6); /*pstr指向下一字符*/}retum wordcounter;}
编程. 已知字符串:”this is a test of java”.按要求执行以下操作:(1) 统计该字符串中字母s出现的次数(2) 取出子字符串”test”(3) 将本字符串复制到一个字符数组Char[] str中.(4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。(5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的英文单词,并输出到控制台
阅读以下说明和C代码,填写代码中的空(1)~(6),将解答写入答题纸的对应栏内。【说明】下面的C代码在输入的100个英文单词中找出最小单词和最大单词。约定每个单词是仅由英文字母构成的字符串,且都不超过20个字符。单词的大小按照字典序定义。例如,单词“entry”大于“enter”、“art”小于“ article”、“an”等于“An”。 【C代码】#include #define NUMBER 100int isValid(const char *s1); //若字符串s1仅包含英文字母则返回1,否则返回0char toLower(char ch); //将大写字母转换为小写字母int usr_strcmp(char *s1, char *s2); //比较字符串s1和s2,相等时返回0, //s1大则返回正整数,s1小则返回负整数void usr_strcpy(char *s1,const char *s2); //字符串s2拷贝给s1 int main(){ char word[32]; char maxWord[32]="", minWord[32] =""; int numWord=0; while(num Word0) / /调用usr_strcmp比较单词 usr_strcpy(max Word, word); / /用max Word记下最大单词 else if( (3) ='a' && *s='A' && *s='A' && ch
单选题有以下函数:int fun(char *s,char *t){ while((*s)(*t)(*t++==*s++)); return (*s-*t);}函数的功能是( )。A求字符串的长度B比较两个字符串的大小C将字符串s复制到字符串t中D连接字符串s和字符串t