C问题,用FOR语句做:输入一行字符,分别统计其中英文字母,空格,数字和其他字符的个数.

我想请说下,C问题,用FOR语句做:输入一行字符,分别统计其中英文字母,空格,数字和其他字符的个数.
最新回答
平胸小欧巴

2024-06-02 03:32:04

#include<stdio.h>

main()
{ char s;
int i=0,j=0,k=0,m=0;
printf("please input the string\n");
for(;(s=getchar())!='\n';) /*循环从键盘读入字符直到一行结束(输入回车)*/
{

if((s<91&&s>65)||(s<123&&s>96)) i++;/*i存入字母数*/
else if(s==' ') j++; /*j存入空格数,
注意s==' '里面是有一个空格的*/
else if(s<58&&s>47)k++; /*k存入数字数*/
else m++; /*m存入其它符号数*/
}
printf("%d\n%d\n%d\n%d\n",i,j,k,m); /*打印行中的字母,空格,数字,其它字符数*/
getchar();

}
/*本题中没有要求记录该行,只要求统计字符数,如有需要只需另
外定义一个字符数组把s的值赋给数组中相应元素就行了*/
听闻白兰鸽

2024-06-02 05:54:58

这种题要想提高自己编程水平最好自己动手去做。还可以扩展成输入一段文字,统计行数、字符数等。The C Programing Language里也有类似的例子,如果能掌握,那么对C语言就有一定理解了。
此姻花弥散

2024-06-02 00:23:20

#include <stdio.h>
void main(void)
{
char string[100];
int i,a=0,b=0,c=0,d=0;
char x;
printf("请输入:\n");
gets(string);
for(i=0;x=string[i];i++)
{
if(x==32) //空格
{
a++;
}else
{
if(x>=65&&x<=90||x>=97&&x<=122) //英文字母
{
b++;
}else
{
if(x>=48&&x<=57) //数字
{
c++;
}else
{
d++; //其它
}
}
}
}
printf("空格%d个\n英文字母%d个\n数字%d个\n其它%d个\n",a,b,c,d);
}
暧昧不是爱情是毒药

2024-06-02 00:27:45

#include <stdio.h>
#define MAXLINE 1000 /* maximum input line length */

int getline(char line[], int max)
int strindex(char source[], char searchfor[]);

char pattern[] = "ould"; /* pattern to search for */

/* find all lines matching pattern */
main()
{
char line[MAXLINE];
int found = 0;

while (getline(line, MAXLINE) > 0)
if (strindex(line, pattern) >= 0) {
printf("%s", line);
found++;
}
return found;
}

/* getline: get line into s, return length */
int getline(char s[], int lim)
{
int c, i;

i = 0;
while (--lim > 0 && (c=getchar()) != EOF && c != '\n')
s[i++] = c;
if (c == '\n')
s[i++] = c;
s[i] = '\0';
return i;
}

/* strindex: return index of t in s, -1 if none */
int strindex(char s[], char t[])
{
int i, j, k;

for (i = 0; s[i] != '\0'; i++) {
for (j=i, k=0; t[k]!='\0' && s[j]==t[k]; j++, k++)
;
if (k > 0 && t[k] == '\0')
return i;
}
return -1;
}

这是c bible中写的~楼主英明的话就选这个吧!