请同学们先看提示,自行思考实践后无果再看通过代码。学习不要欺骗自己!!!
欢迎校友+q3023225096进行讨论交流
1.字符串长度 (提示:用EOF结束getchar()的循环读取)
题目编号:Exp05-Basic01,GJBook3-07-06
题目名称:字符串长度
题目描述:编写程序实现:使用自编函数int strlen(char *str),求字符串str长度;并在主程序中调用。
输入:从键盘随机输入长度不超过256的字符串,字符串内可能包含若干空白字符。输出:字符串的长度。
样例1:输入:123 456
输出:8
样例2:
输入:A
输出:1
#include<stdio.h> int i = 0; char arr[259]; int newstrlen(char* arr) { if ((arr[i++] = getchar()) != EOF) return 1 + newstrlen(arr); else return 0; } int main() { printf("%d", newstrlen(arr)); return 0; }
2.分类统计字符 (提示:无)
题目编号:Exp05-Basic02,GJBook3-07-14
题目名称:分类统计字符
题目描述:
编写程序实现:使用自定义函数void count(char * str, int * upper, int *lower, int *space, int *num, int*other)统计给定字符串str中的大写字母、小写字母、空格、数字字符、其它字符的数目,并以指针参数传回主程序中的调用点,并输出。
输入:从键盘随机输入一个长度不超过256的字符串,字符串内可能包含若干空白字符。输出:大写字母字符个数、小写字母字符个数、空格字符个数、数字字符个数和其它字符个数,数字间以一个西文空格间隔,最后一个数后无多余字符。
样例:
输入: 123 abc ABC
输出: 3 3 5 3 0
#include<stdio.h> void count(char* arr, int* x, int* y, int* z, int* u, int* v) { for (int i = 0; (arr[i] = getchar()) != EOF; i++) { if (arr[i] >= 65 && arr[i] <= 90) (*x)++; else if (arr[i] >= 97 && arr[i] <= 122) (*y)++; else if (arr[i] == ' ') (*z)++; else if (arr[i] >= 48 && arr[i] <= 57) (*u)++; else (*v)++; } } int main() { int a = 0, b = 0, c = 0, d = 0, e = 0; char arr[259]; count(arr, &a, &b, &c, &d, &e); printf("%d %d %d %d %d", a, b, c, d, e); return 0; }
5.合法标识符 (提示:课本P404)
题目编号:Exp05-Enhanc02,freshman-1031
题目名称:合法标识符
题目描述:
已知C语言中合法标识的定义是,以_或字母开始,并由_、数字、字母构成的连续字符串。编写程序判断给定的字符串是否是合法C语言标识符。
输入:输入第一行给出正整数 N(≤10^2)是输入的字符串个数。随后 N 行,每行给出1个任意长度的字符串(可能含有空白字符,长度不超过256)。输出:
输出第一行以Valid:X 格式给出合法标识符个数 X,第二行以Invalid:Y 格式给出非法标识符个数 Y,无多余字符,冒号为西文冒号。
样例:输入: 2 1242345567788990 abcdedffesfsgfef
输出: Valid:1 Invalid:1
#include<stdio.h> #include<string.h> #include<ctype.h> int check(char* arr); int main() { char arr[258]; int n = 2, x = 0, y = 0; scanf("%d", &n); getchar(); for (; n > 0; n--) { gets(arr); if (check(arr)) x++; else y++; } printf("Valid:%d\nInvalid:%d", x, y); return 0; } int check(char* arr) { if (arr[0] == '_' || isalpha(arr[0])) { for (int i = 1; i < strlen(arr); i++) if (!(isalnum(arr[i]) || arr[i] == '_')) return 0; return 1; } else return 0; }