C语言 程序设计题(2题)

1.编一个函数fun(char*s),函数的功能是把字符串中的内容逆置,例如:字符串中原有的内容为:song xiaoyong,则调用该函数后,串中的内容为:gnoyoaix gnos.
2.编一个函数fun(char*s),函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移动到最后。例如:Mn.123xyZ,则调用该函数后,串中的内容为:n.123xyZM.

题1:
#include<stdio.h>
void fun(char *s,int n)
{
int i;
char b[40];
for(i=0;i<n;i++)
b[i]=s[n-i-1];
for(i=0;i<n;i++)
s[i]=b[i];
}
int main()
{
int i,n=0;
char arr[40];
printf("Please input char:\n");
i=0;
do
{
scanf("%c",&arr[i]);
n++;
i++;
}while(arr[i-1]!=10&&arr[i-1]!=12);
fun(arr,n);
for(i=0;i<=n;i++)
printf("%c",arr[i]);
printf("\n");
}
题2:
#include<stdio.h>
void fun(char *s,int n)
{
int i;
char b;
b=s[0];
for(i=0;i<n;i++)
s[i]=s[i+1];
s[n-2]=b;
}
int main()
{
int i,n=0;
char arr[40];
printf("Please input char:\n");
i=0;
do
{
scanf("%c",&arr[i]);
n++;
i++;
}while(arr[i-1]!=10&&arr[i-1]!=12);
fun(arr,n);
for(i=0;i<n;i++)
printf("%c",arr[i]);
printf("\n");
}
两题基本一样,做了小小的改动!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-12
fun (char a[10])
{
char b[10];
b=a;
int i;
for(i=9;i>=0;i++)
printf("%c",b[i]);
}
你要的第一题解法类似这个,我好久没都碰C了,不知道那个指针怎么定义,你要是急的话,你先从里面找些思路,不急等我回来帮你看看.这个不难.
第二题你可以这样解
数组a你可以用for来随便赋值.
for(i=0;i<9;i++)
{
if (i=0)
printf("%d",a[9]);
printf("%d",a[i]);
}
我给出的跟你大同小异,在指针里面也可以用好像是*a[i]这类的来取值跟赋值吧
第2个回答  2008-06-12
上面这朋友说得好像不怎么对,比如你第一个函数实现的功能只是把字符串从后往前输出,而出题者要求的是改变串里的值!
1 题解如下:
void fun(char *s)
{
int i,len;
len = strLen(s);
char temp;
for(i = 0;i<len/2;i++)
{
temp = s[i];
s[i] = s[len-i-1];
s[len-i-1] = temp;
}
}

2 题解如下:
void fun(char *s)
{
int i,len;
len = strLen(s);
char temp = s[0];
for(i = 0;i<len-1;i++)
{
s[i] = s[i+1];
}
s[i] = temp;
}

答案如上,也许算法不是最好的,但功能已经实现了.
相似回答