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

19 阅读2分钟

1 题目描述

根据要求编写程序P817.C的指定部分:
  程序P817.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序(在指定的位置添加代码或将__________换成代码)——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
  程序的功能是:从键盘输入一行可带空格的字符串(约定:字符数≤127字节),按逆序输出该字符串。注意,程序中不能使用库函数strrev或使用同名的变量、函数、单词。
  程序的运行效果应类似地如图1所示,图1中的abc xyz是从键盘输入的内容。
Input a string: abc xyz

The result is: zyx cba

2 下载文件

#include<stdio.h>
#include<string.h>

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

int main(void)
{
	char str[128];

	printf("Input a string: ");
	gets(str);

	______________________________  /* userCode(<50字符): 调用函数将字符串str逆序存放 */
	printf("\nThe result is: %s\n", str);
	return 0;
}

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

3 改后代码

#include<stdio.h>
#include<string.h>

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

int main(void)
{
	char str[128];

	printf("Input a string: ");
	gets(str);

	reversePrintString(str);  /* userCode(<50字符): 调用函数将字符串str逆序存放 */
	printf("\nThe result is: %s\n", str);
	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void reversePrintString(char *str)
{
	int i;
	int len;
	char tmp;
	len = strlen(str);
	for(i=0;i<len/2;i++)
	{
		tmp = str[i];
		str[i]=str[len-i-1];
		str[len-i-1]=tmp;
	}
}

4 知识点

  • 函数的声明、定义、调用
  • 按需要,确定函数的参数个数,一般情况下,传入数组,同时也传入数组的长度参数
  • 按题目要求,选定可用算法
    • 中轴对称,首尾对应做交换即可逆转一个字符串