题目:
解析:
方法一:
#include<stdio.h> //自定义函数之字符串反转
void fun(char a[100], int n)
{
int i, j; char b[100];
j = n - 1;
for (i = 0; i <= n; i++)
{
b[i] = a[j]; j--;
}
printf("逆序之后的序列为:");
for (i = 0; i < n; i++)
printf("%c", b[i]);
return ;
}
int main()
{
char a[100]; int i, n;
printf("请问字母有多少个:");
scanf_s("%d", &n);
for (i = 0; i < n + 1; i++) //n+1表示:包含了字符串末尾的\0的存储位置
scanf_s("%c", &a[i]);
fun(a, n + 1); //n+1表示:包含了字符串末尾的\0的存储位置
//a表示把数组的首地址传过去
return 0;
}
方法二:进阶函数调用(指针函数的调用)
注意:
(1)static(静态变量):占据一个永久性的存储单元(共享)。随着文件的存在而在。只能被初始化一次。
(2)指针函数的使用。
#include<stdio.h>
char* fun(char a[100],int n) //指针函数
{
int i, j; static char b[100]; char* c;
//static(静态变量):占据一个永久性的存储单元(共享)。
//随着文件的存在而存在。只能被初始化一次。
j = n - 1;
for (i = 0; i <= n; i++)
{
b[i] = a[j]; j--;
}
c = &b[0]; //指针c记录数组b的起始地址
return c; //返回数组b的地址
}
int main()
{
char a[100]; int i, n; char* c; //指针c用于记录被调函数返回值
printf("请问字母有多少个:");
scanf_s("%d", &n);
for (i = 0; i < n+1; i++) //n+1表示:包含了字符串末尾的\0的存储位置
scanf_s("%c",&a[i]);
c=fun(a,n+1); //n+1表示:包含了字符串末尾的\0的存储位置
printf("逆序之后的序列为:");
for (i = 0; i < n; i++)
printf("%c", c[i]); //直接共享了static(静态变量)的内容
return 0;
}