1 #include <stdio.h> 2 #include <ctype.h> 3 4 using namespace std; 5 6 /* 7 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 8 */ 9 10 void 11 count() { 12 //统计个数. 13 int letters = 0; 14 int spaces = 0; 15 int digit = 0; 16 int others = 0; 17 char curChar; 18 //注意的是,对(一行中)逐个字符进行读取时,‘\n‘对应ASCII值为10,而不是0,所以需要跟‘\n‘判断(不同于逐句判断). 19 while((curChar = getchar()) != ‘\n‘) { 20 if(isalpha(curChar)) //检查参数curChar是否为英文字母,在标准c中相当于使用“isupper(curChar)||islower(curChar)” 21 ++letters; 22 else if(isdigit(curChar)) //检查参数curChar是否为阿拉伯数字0到9. 23 ++digit; 24 else if(isspace(curChar)) 25 ++spaces; 26 else ++others; 27 } 28 29 printf("letters:%d, digits:%d, spaces:%d,others:%d\n", letters, digit, spaces, others); 30 //cout<<"letters:"<<letters<<",digits:"<<digit<<",spaces:"<<spaces<<",others:"<<others<<endl; 31 } 32 33 //统计行数. 34 int 35 countLines(char *input) { 36 int lns = 0; 37 while(gets(input)) 38 ++lns; 39 return lns; 40 } 41 42 int 43 main(void) { 44 printf("enter a string:"); 45 count(); 46 47 //char *t; 48 //gets(t); 49 //Run-Time Check Failure #3 - The variable ‘t‘ is being used without being initialized. 50 /* 51 值得注意的是,如果不小心传递给gets函数的参数是为开辟空间的指针变量‘t‘,会报以上的异常.其实原因也很简单,t没有得到内存空间(即没有指向内存中的合法空间),放到gets中自然不能被使用. 52 */ 53 54 char cs[10240]; 55 int lns = countLines(cs); 56 printf("lines:%d\n", lns); 57 }
时间: 2024-12-11 10:33:52