有网友碰到这样的问题“C语言中怎么一次性的输入多行(不确定是多少行的)字符串,然后把它们全反过来输出,比如输入 wo s”。小编为您整理了以下解决方案,希望对您有帮助:
解决方案1:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* buf = NULL; //动态分配 //char buf[1024]; //指定长度
char ch;
int len = 0,i;
printf("Please input some line:\n");
while(scanf("%c",&ch)==1 && ch!=EOF && ch!='#'){ //定义一个结束符或者ctrl+z/d
//动态的实现
buf = (char*)realloc(buf,sizeof(char)*(len+1));
buf[len++] = ch;
//buf[len++] = ch; //指定长度
}
printf("reverse your input to print:\n");
for(i=len-1;i>=0;i--){
printf("%c",buf[i]);
}
free(buf); //动态清除
return 0;
}
解决方案2:
#include<stdio.h>
#include<string.h>
void main()
{
char str[100];
int length,i;
printf("输入字符:");
gets(str);
length = strlen(str);
for(i=length-1;i>=0;i--)
printf("%c",str[i]);
printf("\n");
}
解决方案3:
【首先】是多行字符串的输入和保存。可以:
开设一个字符串数组如下,其中N定义最多可记录多少行,M定义每行可保存多少个字符,改变#define定义可以调整这两个数据
#define N 1024 //最多1024行
#define M 256 //每行最多存储255个字符
char input[N][M];
实际输入一行可以用gets函数实现,判断gets函数的返回值可知道是否结束输入(比如输入Ctrl+Z的组合键结束),每输入一行,记录的行数加1,最后可得到实际输入的行数和按行号顺序保存在input数组中的所有字符串。
【然后】是倒序输出字符串,每个字符串倒序输出。可以:
按照倒序给出input的第1维下标,每行输出一个字符串,在输出每个字符串时,找到字符串末尾(都是以字符'\'结束的),然后输出一个字符再往回倒退一个字符,直至输出完整个字符串。如:
for ( i=n-1;i>=0;i-- )
{ nn=0; while ( input[i][nn] ) nn++;
for ( j=nn-1;j>=0;j-- ) printf("%c",input[i][j]);
printf("\n");
}
解决方案4:
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<19;i++) //冒泡排序排列20个整数
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<20;i++) //输出排序后的20个整数
printf("%d ",a[i]);