20251期《C语言程序设计B》专项训练02-函数05部分-程序P780.C

22 阅读3分钟

1 题目

根据要求编写程序P780.C的指定部分:
  程序P780.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序(在指定的位置添加代码或将__________换成代码)——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
  程序的功能为从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容),具体要求有:
  (1)以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则也表示行输入结束。
  (2)若用户输入时输入了很多字符,则仅读入前100个字符。
  (3)不能使用库函数gets、fgets、strlen或使用同名的变量、函数、单词。
  程序的运行效果应类似地如图1所示,图1中input a string: 123456 vdget 7u84,y37f部分之123456 vdget 7u84,y37f是从键盘输入的内容。
input a string: 123456 vdget 7u84,y37f

The string lenth is: 22
The string is: 123456 vdget 7u84,y37f

2 下载文件

代码

#include<stdio.h>

/* userCode(<50字符): 自定义函数之原型声明 */
______________________________

int main(void)
{
	int Len;
	char String[101] = "?????????????????????????????????????????????????????????????";

	printf("input a string: ");
	______________________________  /* userCode(<50字符): 调用函数实现输入并统计输入字符个数 */

	printf("\nThe string lenth is: %d\n", Len);
	printf("The string is: %s\n", String);

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */

3 改后文件

#include<stdio.h>

/* userCode(<50字符): 自定义函数之原型声明 */
int getLen(char *str);

int main(void)
{
	int Len;
	char String[101] = "?????????????????????????????????????????????????????????????";

	printf("input a string: ");
	Len = getLen(String);  /* userCode(<50字符): 调用函数实现输入并统计输入字符个数 */

	printf("\nThe string lenth is: %d\n", Len);
	printf("The string is: %s\n", String);

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int getLen(char *str)
{
	int ch;
	int Len;
	for (Len = 0; Len < 100; ) {  // 先判断长度限制再读取
		ch = getchar();
		if (ch == EOF || ch == '\n')  // 遇到结束条件立即退出
			break;
		str[Len++] = ch;  // 先存字符后递增计数器
	}
	str[Len] = '\0';  // 确保字符串正确终止
	return Len;
}

4 知识点

  • 函数的声明、定义、调用
  • 字符串用数组表示,串尾一定要注意结束符号的导入
    • 在字符数组的最后一个有效字符输入后,补进 '\0'字符
  • 逐个字符计数,从而计算字符串的长度
  • 输入字符时的注意事项
    • 长度限制,不可数组越界
    • 输入的结束符,不进入到字符数组中,如回车
    • 输入字符时出错,或是遇到结束符号 EOF 的判断
  • 一定是:先完成输入,再做判断