#include <stdio.h>
#include <string.h>
int main() {
char str[90];
gets(str);
int len = strlen(str), r=0, h=0;//r为行,h为列
char ans[90][90];
for(int i=0; i<len; i++) {
if(str[i]!=' ') {//如果不是空格,则存放至ans[r][h],并令h++
ans[r][h++] = str[i];
} else{//如果是空格,说明一个单词结束,行r增加1,列h恢复至0
ans[r][h] = '\0';//末尾结束符
r++;
h = 0;
}
}
for(int i = r; i>=0;i--) {//倒着输出单词即可
printf("%s",ans[i]);//一行的所有单词字符,即所有列
if(i>0) printf(" ");
}
return 0;
}
逆序输出
将一个数组逆序输出
#include<stdio.h>
#define N 10
int main(){
int a[N]={0,1,2,3,4,5,6,7,8,9};
int i,t;
for(i=0;i<N/2;i++){
t=a[i];
a[i]=a[N-1-i];
a[N-1-i]=t;
}
printf("\n排序后的数组:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
return 0;
}
#include<stdio.h>
void reverse_print(int a[],int n);
int main(void){
int a[10] = {0,1,2,3,4,5,6,7,8,9};
reverse_print(a,10);
return 0;
}
void reverse_print(int a[],int n)
{
int i = 0;
int j = n - 1;
while(i < j){
if(i < j){
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
i++;
j--;
}
for(i = 0; i < n; i++)
printf("%-3d",a[i]);
}
编写函数,实现字符串的逆序,不允许申请新的数组空间
void reverse(char *str){
int i=0, j=0;
char c;
while(str[j])j++;
j--;
while(i<j)
{
c=str[i];
str[i]=str[j];
str[j]=c;
i++;j--;
}
}
字符串反转
#include <stdio.h>
void reverse(char* s)
{
int len = 0;
char* p = s;
while (*p != 0)
{
len++;
p++;
}
int i = 0;
char c;
while (i <= len / 2 - 1)
{
c = *(s + i);
*(s + i) = *(s + len - 1 - i);
*(s + len - 1 - i) = c;
i++;
}
}
int main()
{
char s[] = "www.runoob.com";
printf("'%s' =>\n", s);
reverse(s); // 反转字符串
printf("'%s'\n", s);
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char s[128] = {0}, s1[128] = {0};
int i, j = 0;
printf("请输入字符串:");
gets(s);
for (i = strlen(s) - 1; i >= 0; i--)
{
s1[j++] = s[i];
}
puts(s);
puts(s1);
return 0;
}
用递归的方式颠倒字符串
#include <stdio.h>
void Reverse();
int main()
{
printf("Enter a sentence: ");
Reverse();
return 0;
}
void Reverse()
{
char c;
scanf("%c",&c);
if( c != '\n')
{
Reverse();
printf("%c",c);
}
}
对字符串倒置
#include<stdio.h>
#include<string.h>
void trn(char str[]){
char t;int i,j;
for (i=0,j=strlen(str);i<strlen(str)/2;i++,j--){
t=str[i];str[i]=str[j-1];str[j-1]=t;
}
}
main(){
int i;
char a[100];
printf(" 请输入字符: ");
scanf("%s",a);
turn(a);
printf("%s\n",a);
/* for (i=0;i<strlen(a);i++) printf("%c",a[i]);*/
}
字符串翻转
#include <stdio.h>
void reverseSentence();
int main(){
printf("输入一个字符串: ");
reverseSentence();
return 0;
}
void reverseSentence(){
char c;
scanf("%c", &c);
if( c != '\n'){
reverseSentence();
printf("%c",c);
}
}
#include <stdio.h>
#include <string.h>
int main()
{
char c[40];
int i=1;
printf("请输入字符串:");
scanf("%s",c);
int j=strlen(c);
do{
printf("%c",c[j-i]);
++i;
} while(i<=j);
return 0;
}
[多解]
对一个整数转成字符型
#include<stdio.h>
void turn(int n){
int i;
if((i=n/10)!=0)
turn(i);
putchar(n%10+'0');
printf("\t");
}
void main(){
int num;
printf("input:");
scanf("%d",&num);
turn(num);
}
用宏定义交换数
#include<stdio.h>
#define swap(a,b) {float term=a;a=b;b=term;}
int main(){
float x,y;
printf(" 请输入您要交换的数 \n");
scanf("%f%f",&x,&y);
printf("x=%f,\ty=%f\n",x,y);
swap(x,y);
printf("x=%f,\ty=%f\n",x,y);
return 0;
}
求字符串长度
#include<stdio.h>
int length(char*p){
int n=0;;
while(*p!='\0') {
n++;
p++;
}
return n;
}
int main()
{
char str[20];
scanf("%s",str);
int len=length(str);
printf("the length of string is %d.\n",len);
retun 0;
}
解法2
#include <stdio.h>
int main(void){
char c;
int count = 0;
printf("请输入一串字符:\n");
while((c = getchar()) != '\n'){
++count;
}
printf("该字符串的长度为:%d\n",count);
return 0;
}