C语言,利用指针编写程序:把从键盘输入的字符串逆序存放并输出 用指针编写输入一个字符串逆序输出

作者&投稿:牧旭 (若有异议请与网页底部的电邮联系)
以下是C语言程序,使用指针将键盘输入的字符串逆序存放,并输出结果:

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

int main() {
char str[100], temp;
int len, i;
char *p1, *p2;

printf("请输入一个字符串:");
scanf("%s", str);

len = strlen(str);
p1 = str;
p2 = str + len - 1; // 指向字符串最后一个字符

for (i = 0; i < len/2; i++) {
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}

printf("逆序存放后的字符串为:%s", str);

return 0;
}
```

程序先从键盘输入一个字符串,然后获取字符串的长度和指向字符串首尾的指针。接着,使用指针交换相应位置上的字符,完成字符串逆序存放。最后输出逆序存放后的字符串。

注意,字符串的长度可能为奇数或偶数,因此在for循环中应该只交换字符串长度除以2个字符即可。

#include <stdio.h>
#include <string.h>
void reverse(char* str)
{
char* p = str + strlen(str)-1;
char temp;
while(str<p)
temp=*p, *p--=*str, *str++=temp;
}
void main()
{
char str[1000];
gets(str);
reverse(str);
printf("%s\n", str);
}

一道C语言编程:利用指针作函数参数,将从键盘输入的字符串逆序存放,并输出。我的答案运行之后没有结果~

完全按照你的意愿 改的
问题1:你用指针pt传递数组a,但是在fun函数里,却没有使用该指针反而新建局部数组a;
问题2:fun函数里,定义的b数组,你是指定下标赋值的,缺少结束符‘\0’,如果字符未满,那么输出时无法判断字符串结束符,这里我用memset函数把b每一个字符都初始成‘\0’,你也可以在循环赋值结束后,在b最后一个字符后面再赋一个字符‘\0’.注意定义字符数组,如希望放10个字符,建议定义11大小,因为要留1个‘\0’
问题3:你的赋值循环for(i=0;i<10;i++),直接写的上限10,如果输入小于10字符。那么就会取到空值。这里我用strlen函数读取了a的字符长度作为上限
#include#includeint main(){ void fun(char *pt); char a[10],*pt; pt=a; gets(a); fun(pt); puts(a); return 0;}void fun(char *pt){ char b[10];int i; memset(b,'\0',sizeof(char)*10); for(i=0;i<strlen(pt);i++) b[strlen(pt)-1-i]=pt[i]; strcpy(pt,b);}

#include
using namespace std;
void swapp(char&a,char&b)
{
char t;
t=a;
a=b;
b=t;
}
void work(char*str)
{int len=strlen(str);
for(int i=0;i<=len/2;i++)
swapp(str[i],str[len-i-1]);
}
int main()
{const int maxlen=1e5+10;
char s[maxlen];
char *str=s;
gets(s);
work(str);
cout<<s;
return 0;
}

扩展资料:c++源代码:用字符数组方法的;
#include<iostream>
usingnamespacestd;
int main()
{constn=10;
int i;
chara[n],temp;
cout<<"pleaseinputastring:";
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n/2;i++)
{temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;}
for(i=0;i<n;i++)
cout<<a[i];
cout<<endl;
return0;

用指针编写一个程序,先从键盘上输入一个字符串,然后在该字符串中查找...
答:include"stdio.h"void main(){ int research(char string[]);char str[80];int k;printf("请输入一个字符串:\n");scanf("%s",str);k=research(str);if(k!=-1)printf("第一个x的下表为%d\n",k);else printf("该字符串中没有x!\n");} int research(char string[]){ int i;...

c语言指针:从键盘输入两个整数给c1,c2两个变量,用函数交换c1和c2的...
答:include<stdio.h> void swap(int *x,int *y){ int t=*x;x=*y;y=t;} int main(){ int c1,c2;scanf("%d%d",&c1,&c2);printf("c1=%d\tc2=%d\n",c1,c2);swap(&c1,&c2);printf("c1=%d\tc2=%d\n",c1,c2);return 0;} ...

1、 从键盘输入一个字符串后,利用指针将输入的字符串中的小写字母转换成...
答:include<stdio.h> void main(){ char s[81],*p;printf("请输入字符串:");gets(s);p=s;while(*p){ if(*p>='a'&&*p<='z')*p-=32;p++;} puts(s);} 运行结果:

...采用选择排序法,并利用指针操作完成升序排序
答:include <stdio.h> void sort(int a[10]){ int i,j,*pmin,t;for(i=0; i<9; i++){ pmin = &a[i];for(j=i+1; j<10; j++){ if(*pmin>a[j]){ pmin = &a[j];} } if(pmin != &a[i]){ t = *pmin;pmin = a[i];a[i] = t;} } } int main(){ int ...

...保存在数组中,将其逆序存放。要求使用指针完成数组操作
答:char a[10]换成int a[10]p=strlen();这句放在这不对,strlen是求字符串的长度的,以'\0'为结束标志。include<string.h> void main(void){ char a[10],*p;int i,len,t,j; p=a;len=strlen(a);for(i=0;i<10;i++)scanf("%d",p++);p=a;for(i=0,j=9;i<j;i++,j--) ...

编写程序,定义含有5个元素的数组a和指针p,使指针p指向数组a,从键盘...
答:include<stdio.h> void main(){ int a[5],*p,i;for ( i=0,p=a;i<5;i++,p++ ) scanf("%d",p);}

2、用C语言编写一个程序,从键盘上输入若干个字符,以符号“@”结束,统 ...
答:同时存新输入的字符 } for(int i = 1;i<=a[0];i++)//由于a[0]中存储的字符数量,所以我们输出时,输出字符的数量由a[0]的值来决定。{ putchar(*(p+i));//指针变量p指向数组a,那么*(p+i)=a[i],而我们输出应该从a[1]开始,所以循环的初值是i=1;} return 0;} ...

C++高手求助。利用指针编写程序实现在一个字符串的任意位置上插入一个...
答:p=p+len+1; // p指向该字符串的末尾再加一的地址 do{ p=*(--p); // 将指针p指向的前一个地址的值赋给当前地址 }while(p>s);// p一直减到字符串的首地址则退出循环 (*p)=c; // 将要插入的字符赋值给p所指向的地址,此时就是新串的首地址 }else if (n>=len){// 如果n>=len...

C语言:随机产生一组十个整数,再从键盘输入一个值,利用指针方式求...
答:include <stdio.h> include <stdlib.h> include int main(){ int i,x,n=0,a[10],*p;srand(time(0));for(i=0; i<10; i++){ a[i]=rand()%100;printf("%d ",a[i]);} printf("\n");scanf("%d",&x);for(p=a; px)n++;printf("数组中大于%d的数有%d个\n",x,n)...

C语言程序求解,题目:从键盘输入一个变量的值,用指针间接访问的方法在屏...
答:include<stdio.h>int main(){int var;int *pInt;pInt=&var; //指针指向该变量scanf("%d",&var); //从键盘输入变量var的值//scanf("%d",pInt); //这种方式也是可以的printf("var = %d\n",*pInt); //用指针间接访问的方法在屏幕上输出该变量的值return 0;}示例运行结果:2017 var ...