#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的值赋给数组中相应元素就行了*/
#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);}
#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中写的~楼主英明的话就选这个吧!