活动介绍
file-type

ACM编程问题:字符串统计与数字计数

版权申诉

PDF文件

164KB | 更新于2024-07-08 | 155 浏览量 | 0 下载量 举报 收藏
download 限时特惠:#14.90
本资源是一份名为"acm代码.pdf"的文档,主要包含了两个ACM编程问题的解决方案。以下是这两个问题的详细分析: 1. **字符串统计数字字符** - **问题描述**:该部分题目要求编写程序,给定一个包含字母和数字的字符串,统计其中数字字符(0-9)出现的次数。 - **输入**:输入包括多组测试实例,每组测试实例的第一行为一个整数n,表示字符串的数量,随后是n行字符串。 - **输出**:对于每个字符串,程序需要输出该字符串中的数字字符总数,每行输出一个数字。 **代码实现**: ```c #include<stdio.h> int main(){ int n, i; char st[10000]; scanf("%d", &n); while (n--){ int x = 0; scanf("%s", st); for (i = 0; st[i]; ++i){ if (st[i] >= '0' && st[i] <= '9') x++; } printf("%d\n", x); } return 0; } ``` 这段C语言代码通过`scanf`读取输入的整数和字符串,然后遍历字符串,检查每个字符是否为数字,并累加计数。 2. **计算A+B(英文单词表示的十进制数)** - **问题描述**:此问题要求根据给定的英文单词("one"、"two"等)计算它们所代表的十进制数值相加,输入格式为"A+B=",且数字范围小于100。 - **输入**:测试输入包含多个测试用例,每行表示一个加法表达式,如"one+two=",当遇到"zero+zero="时,表示输入结束。 - **输出**:对每个测试用例,输出计算结果,例如"one"代表1,"two"代表2,以此类推。 **代码实现**: ```c #include<stdio.h> #include<string.h> int cmp(char s[]){ // ...省略了字符串与数字对应关系的比较函数实现... } int main() { char input[100]; while (fgets(input, sizeof(input), stdin)) { if (strcmp(input, "zero+zero=") == 0) break; else { int A = cmp(strtok(input, "+=")); int B = cmp(strtok(NULL, "+=")); printf("%d\n", A + B); } } return 0; } ``` 此处代码利用`fgets`读取输入,通过`strtok`函数分割输入并调用`cmp`函数获取对应的十进制数值,然后进行加法运算,输出结果。 这两个问题涉及的基础知识有字符串处理、输入输出操作以及简单的字符判断,展示了在编程中如何处理字符串中的数字,以及如何将英文单词转换为其对应的数值。在ACM竞赛或日常编程中,这类基础的字符串和数字处理能力是必不可少的。

相关推荐