题目
本题是2021年中国海洋大学研究生入学考试930程序设计基础编程题第2题。
题目:
有一份包含三行字符的农产品资料,每行最多100个字符。实现如下函数(本题共20分)
1.统计农产品资料中的大写字母,小写字母,数字,空格及其他字符的个数,
要求用二维数组s[][]存放包含三行字符的农产品资料,并将该二维数组s[][]
作为所编写函数的参数,统计结果通过作为函数参数的一维数组c[]返回。请给出
设计思路,并写出函数实现。(15分)
2.请编写主函数,实现功能:由键盘输入包含3行字符的农产品资料,调用第一问
中完成的函数,输出统计出的农产品资料中的大写字母,小写字母,数字,空格及其他字符的个数。(5分)
以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj。QQ:2394799692
一、解题思路
思路:
1,先写主函数,根据题目得知我们需要定义一个二维字符型数组来存放一份包含三行字符的农产品资料,每行最多100个字符。也就是定义char s[3][100]。
2,接下来定义一个一维整型数组,因为我们需要5个整形元素来存放大写字母,小写字母,数字,空格及其他字符的个数,并且这个值在函数运行后在主函数里也能使用。
3,使用for循环+gets函数输入3行信息到s数组中。
4,将s数组和c数组的首元素地址传到find函数,进行大写字母,小写字母,数字,空格及其他字符的个数的寻找。
5,使用双重for循环遍历整个农产品资料,也就是s数组,然后在循环中使用多分支if语句来根据题目要求进行相应的判断,并且加相应的值。
6,经过find函数后,将c数组中存放的数据依次输出即可。
二、代码部分
1.引入库
代码如下(示例):
#include<stdio.h>
2.主函数部分
代码如下(示例):
int i, j;
void find(char s[][100], int c[])
{
for(i=0;i<3;i++)
for (j = 0; s[i][j]; j++)
{
if (s[i][j] >= 'A' && s[i][j] <= 'Z')//大写字母
c[0]++;
else if (s[i][j] >= 'a' && s[i][j] <= 'z')//小写字母
c[1]++;
else if (s[i][j] >= '0' && s[i][j] <= '9')//数字
c[2]++;
else if (s[i][j] == ' ')//空格
c[3]++;
else
c[4]++;//其他字符
}
}
void main()
{
char s[3][100];//一份包含三行字符的农产品资料,每行最多100个字符。
int c[5] = {0};//统计结果通过作为函数参数的一维数组c[],先设其所有元素为0
printf("请输入一份包含三行字符的农产品资料,每行最多100个字符:\n");
for (i = 0; i < 3; i++)
gets(s[i]);
find(s, c);
printf("大写字母,小写字母, 数字, 空格, 其他字符\n");
for (i = 0; i < 5; i++)
printf("%d ", c[i]);
}
三、执行结果
输入:
请输入一份包含三行字符的农产品资料,每行最多100个字符:
XiGua 1.2
QieZi 3.8
LWJ 0.0
输出:
大写字母,小写字母, 数字, 空格, 其他字符
7 6 6 3 3