一个简单C语言程序问题
发布网友
发布时间:2024-07-04 02:36
我来回答
共4个回答
热心网友
时间:2024-07-04 08:42
#include "stdio.h"
inverse (char array[])
{int i,j,len=strlen(array); /len:字符串长度
char t;
/for语句用来反转字符串,将字符串分成两部分,将两部分对应的字符进行交换
for(i=0;i<len/2;i++)/从字符串的第一个循环到字符串中间(字符串前半部分)
{t=array[i]; /将前半部分的某个字符存入临时变量t中
array[i]=array[len-i-1];/将后半部分对应字符存入前半部分中
array[len-i-1]=t; /将临时变量t中(即前半部分)的字符存入后半部分中
}
}
void main()
{
int i,j,a[10];
printf("enter a string:\n");
scanf("%s",a); /输入字符串存在数组a中,注意:从a[0]开始存
inverse (a);
printf("the result is:%s\n",a);
}
举例说明:如果字符串为abcde,长度为5,
则:len=5,for语句中循环条件为i<2,循环体执行3次(i从0到2)
第一次:循环体中将array[0]和array[4](即a和e)交换位置
第二次:循环体中将array[1]和array[3](即a和e)交换位置
第三次:循环体中将array[2]和array[2](即a和e)交换位置
热心网友
时间:2024-07-04 08:42
inverse (char array[])
{int i,j,len=strlen(array); ///取数组的长度
char t;
for(i=0;i<len/2;i++)
{t=array[i]; ///交换从头与尾到中间的2个进行交换啊
array[i]=array[len-i-1];
array[len-i-1]=t;
}
}
scanf("%s",a);
inverse (a); ///把输入的字符窜交换的函数
热心网友
时间:2024-07-04 08:43
for(i=0;i<len/2;i++)
{t=array[i];
array[i]=array[len-i-1];
array[len-i-1]=t;
我想关键是这个地方 首先你要清楚他的算法 其实很简单就是首尾对调(把对调中的前面数叫首数 后面数叫尾数,若是奇数个 中间的是首也是尾) 下标0和最后一个[len-1](下标是0到len-1),i<len/2条件要注意一下因为是0到len-1
你可以算一下最大的首数是多少? 就是len/2 -1 或者len/2 -0.5 这两个就变成i<len/2
热心网友
时间:2024-07-04 08:43
你的程序有许多小错误,以下是更正,具体解释就不解释了,好多人都解释了
#include<stdio.h>
#include<string.h>
void inverse(char array[])
{
int i,len=strlen(array);
char t;
for(i=0;i<len/2;i++)
{
t=array[i];
array[i]=array[len-i-1];
array[len-i-1]=t;
}
}
void main()
{
char a[10];
printf("enter a string:\n");
scanf("%s",a);
inverse(a);
printf("the result is:%s\n",a);
}