C语言编程:从键盘中输入一个英文字符串

从键盘中输入一个英文字符串,以‘#’作为结束标志,编程统计字符串中英文单词的个数,并按单词出现频次升序排序显示每个单词出现的次数

#include<stdio.h>

#include<stdlib.h>


int main()

{

int strSize = 100;

char *str = (char *)malloc(sizeof(char) * strSize);

int charNum = 0;

char input;

//逐个字符输入字符串,可以输入int可以表示的最大值个字符

printf("请输入任意个字符:\n");

while(true)

{

scanf("%c",&input);

if(input != '#')

{

if((input >= 'A' && input <= 'Z') || (input >= 'a' && input <= 'z'))

{

if(charNum > strSize)

{

strSize += 100;

str = (char *)realloc(str,strSize);

}

str[charNum] = input;

charNum++;

}

}

else

{

break;

}

}

//输入结果分析

int i = 0,j = 0;

char *tempChar = (char *)malloc(sizeof(char) * charNum);

int *tempCharNum = (int *)malloc(sizeof(int) * charNum);

int charType = 0;

bool exist = false;

for(i = 0; i < charNum; i++)

{

exist = false;

tempChar[i] = '#';

tempCharNum[i] = 0;

for(j = 0; j < charNum; j++)

{

if(tempChar[j] == '#')

{

break;

}

if(tempChar[j] == str[i])

{

exist = true;

tempCharNum[j] += 1;

}

}

if(exist == false)

{

tempChar[charType] = str[i];

tempCharNum[charType] = 1;

charType++;

}

}

int t1;

char t2;

for(j = 0; j < charType - 1; j++)

{

for(i = 0; i < charType; i++)


if(tempCharNum[i] > tempCharNum[i+1])//如果a[i]大于a[i+1]

{

//交换a[i]和a[i+1]的值,即把较大的元素往后排

t1 = tempCharNum[i];

tempCharNum[i] = tempCharNum[i+1];

tempCharNum[i+1] = t1;


t2 = tempChar[i];

tempChar[i] = tempChar[i+1];

tempChar[i+1] = t2;

}

}

for(i = 0; i < charNum; i++)

{

if(tempChar[i] != '#')

{

printf("单词:%c,次数:%d\n",tempChar[i],tempCharNum[i]);

}

}

free(str);

free(tempChar);

free(tempCharNum);

return 0;

}


温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-18
#include "stdio.h"
main()
{
 char s[81],c;
 int i,num=0,word=0;
 printf("请输入一行英文:\n");
 gets(s);
 for(i=0;(c=s[i])!='#';i++)  //遇到#结束 
 if(c==' ') word=0;
  else if(word==0)
    {
      word=1;
      num++;
    }
 printf("本行中共有%d个单词.\n",num);
}

第2个回答  2013-11-18
gets读入,
计算长度
对于每个字符,如果是字母就记单词开始,当遇到空白和#就是单词结束,单词结束时,计数+1,单词对应的个数加1,
最后排序
第3个回答  2013-11-18
到底是单词还是字母?

C语言编程:从键盘中输入一个英文字符串
include<stdlib.h> int main(){ int strSize = 100;char *str = (char *)malloc(sizeof(char) * strSize);int charNum = 0;char input;\/\/逐个字符输入字符串,可以输入int可以表示的最大值个字符 printf("请输入任意个字符:\\n");while(true){ scanf("%c",&input);if(input != '#...

在C语言中如何实现用键盘输入一个字符串,并打印出来
在C语言中实现用键盘输入字符串并打印的方法步骤如下:首先,需定义一个数组空间用于存放字符串,例如分配100个数组单元。接着,使用gets()函数读取键盘输入的字符串,调用格式为gets(字符数组名)。然后,应用puts()函数输出之前读取的字符串内容,使用方法为puts(字符数组名)。最后,运行程序,即可成功实...

在C语言中如何实现用键盘输入一个字符串,并打印出来
在C语言中输入并打印字符串的编程方法如下:定义一个存放字符串的数组空间,比如为字符串分配100个数组空间。使用gets()函数获取键盘输入的字符串,输入格式为gets(定义的字符数组名)。使用puts()函数输出之前输入的字符串,输出格式为puts(定义的字符数组名)。运行程序后,成功实现输入字符串并原样在屏...

c语言:输入一行英文字符串,把每个单词第一个字母变为大写,输出修改后的...
include<string.h> include<stdio.h> int main(int argc,char*argv[]){ char str[100+1];int isfirst=1;char ch;int i=0;while((ch=getchar())!=EOF){ if(isalpha(ch)){ if(isfirst==1){ ch=toupper(ch);isfirst=0;} } else { isfirst=1;} str[i++]=ch;} str='\\0';...

C语言:从键盘输入一篇英文文本,统计每个英文字母(分大小写)及空格、数...
程序代码:include <stdio.h>#include <string.h>#define MAX 10000void input(char source[]);void output(int sign[], int n);void main(){char source[MAX];int sign[256];int i;input(source);for(i=0; i<256; i++){sign[i] = 0;}\/\/统计字符串中每个字符的数量for(i=0; i...

C语言编程 从键盘上输入一字符串,将字符串里的英文字母大写输出,不是...
char c[82];int i;printf("请输入字符串:");scanf("%s",c);printf("\\n");for( i = 0; i < strlen(c); i++){ if( c[i]>='A' && c[i]<='z')putchar(toupper(c[i]));} printf("\\n");system("PAUSE");return 0;} 直接使用toupper函数就可以了;还有一种方法 if (...

在C语言中如何实现用键盘输入一个字符串,并打印出来
在C语言中输入字符串后然后打印出来的编程方法如下:1. 首先需要先定义一个存放字符串的数组空间,如给字符串100个数组空间。2.接着使用gets()函数来获取键盘输入的字符串。一般格式为gets(定义的字符数组名)。3.然后再使用puts()函数来输出之前输入的字符串内容。一般格式puts(定义的字符数组名)。4...

C语言 从键盘上输入一串单词,输出其中最长的单词
void main(void){ char w[300];int i,j,wl,lm,l;printf("Enter a string composed of words...\\n");l=strlen(gets(w));for(wl=lm=j=i=0;i<=l;i++){ if(w[i]!=' ' && w[i]!='\\n' && w[i]!='\\0') wl++;else if(w[i]==' ' || w[i]=='\\n' || w[i...

c语言 输入一个字符串,统计这个字符串的元音字母的个数,并输出。求源...
英文中的元音字母只有a、e、i、o、u五个,但要考虑大小写问题。代码如下:include "stdio.h"int main(int argc,char *argv[]){int n,i;char s[301],t;printf("Input a string...\\n");scanf("%300s",s);for(n=i=0;s[i];i++) \/*以下判断语句完成大小写元音字母都统计功能...

C语言 从键盘输入一个字符串,将其中是英文字母的就输出,并且大写输出...
include <stdio.h> void main(){ char buf[1024], *p=buf ,c;fgets(buf);while((c=*p++)){ if(c>='a'&&c<='z') printf("%c",c-'a'+'A');else if(c>='A'&&c<='Z') printf("%c",c);} }

相似回答