实验目的及要求: 1掌握指针做为函数参数与变量作为函数参数的区别; 2掌握指针作为函数参数与数组做为函数参数的关系; 2能正确使用指针作为函数参数进行程序设计; 3掌握函数返回值类型为指针类型的含义; 4能正确使用函数返回值类型为指针类型进行程序设计。 |
软硬件环境: 1、硬件环境:PC机一台 2、软件环境:Codeblocks |
算法或原理分析(实验内容): 1.写一函数,将一个字符串逆置。 ●编程要求: (1)要求使用指针作为函数参数; (2)在主函数中输入字符串,并输出逆置后的字符串。 ●编程提示: (1)在主函数中定义一个指向字符串的指针变量pstr,并将输入的字符串的首地址赋给pstr; (2)调用逆置函数reverse(char *p),将字符串逆置; (3)在主函数中输出逆置后的函数。 2.编写函数,实现两个串的连接。 ●编程要求: (1)要求连接函数的参数和返回值类型均为指针类型; (2)要求在主函数中输入连接前的两个字符串,连接后,在主函数中输出连接后的字符串。 ●编程提示: 函数原型可以写成如下形式: (1)char* strcat(char* str1,char* str2); (2)返回连接好的字符串的首地址。 运行代码 1、#include <stdio.h> #include <string.h> void reverse(char* p) { int len = strlen(p); for (int i = 0; i < len / 2; i++) { char temp = *(p + i); *(p + i) = *(p + len - i - 1); *(p + len - i - 1) = temp; } } int main() { char str[100]; printf("请输入一个字符串:"); fgets(str, sizeof(str), stdin); str[strcspn(str, "\n")] = '\0'; char* pstr = str; reverse(pstr); printf("逆置后的字符串为:%s\n", pstr); return 0; } 2、#include <stdio.h> #include <stdlib.h> #include <string.h> char* concat(char* str1, char* str2) { int len1 = strlen(str1); int len2 = strlen(str2); char* new_str = (char*)malloc((len1 + len2 + 1) * sizeof(char)); strcpy(new_str, str1); strcat(new_str, str2); return new_str; } int main() { char str1[100]; char str2[100]; printf("请输入第一个字符串:"); fgets(str1, sizeof(str1), stdin); printf("请输入第二个字符串:"); fgets(str2, sizeof(str2), stdin); str1[strcspn(str1, "\n")] = '\0'; str2[strcspn(str2, "\n")] = '\0'; char* new_str = concat(str1, str2); printf("连接后的字符串为:%s\n", new_str); free(new_str); return 0; |