10-3. String reverse order(15)
Input a string, reverse the string, and output the reversed string.
Input format:
Input gives a non-empty string of no more than 80 characters in length on one line, terminated by a carriage return.
Output format:
Output the reversed string in one line.
Input example:
#include<stdio.h>
#include<string.h>
char s[81];
int main(void)
{
gets(s);
char *p=s;
while(*(p+1)!='\0')//挪到最后一位
{
p ++;
}
//挨个打印
while(1)
{
printf("%c",*p);
p --;
if(p==s)
{
printf("%c",*p);
break;
}
}
}
10-4. String left rotation (20)
Input a string and a non-negative integer N, and it is required to circularly shift the string to the left N times.
Input format:
The input is given in line 1 as a non-empty string of no more than 100 characters in length and terminated by a carriage return; line 2 is given as a non-negative integer N.
Output format:
Output the string rotated left N times in one line.
Input example:
#include<stdio.h>
#include<string.h>
char s[101];
int main(void)
{
//控制台输入 s和 N
gets(s);
int n;
scanf("%d",&n);
int i,k;
char s1[101];
strcpy(s1,s);//s1=strcpy(s1,s) 会报错!!
//分割 前面 he
{
char *p=s1;
p[n]='\0';
printf("此时s1=%s\n",s1);
}
//分割 后半段
{
char *q=s;
k=strlen(s);
for(i=0;i<=k-n;i++)
{
q[i]=q[i+n];
}
q[i]='\0';
printf("此时s=%s\n",s);
}
//连接
strcat(s,s1);
printf("最后s=%s\n",s);
}
Shift string left
k=strlen(s);
for(i=0;i<=k-n;i++)
{
q[i]=q[i+n];
}
q[i]='\0';
another way
#include <stdio.h>
#include <string.h>
char str[103];
int main()
{
int i, k, n;
gets(str);
k = strlen(str);
scanf("%d", &n);
if ( n % k == 0 )
puts(str);
else
{
for ( i=n%k; i<k; i++ )//i=2%12 i=2 从第二位开始打印
{
printf("%c", str[i]);
}
for ( i=0; i<n%k; i++ )
{
printf("%c", str[i]);
}
printf("\n");
}
return 0;
}
#include <stdio.h>
#include <string.h>
char str[103];
int main()
{
int i, k, n;
gets(str);
k = strlen(str);
scanf("%d", &n);
if ( n % k == 0 )
puts(str);
else
{
for ( i=n; i<k; i++ )//如果等于k 打印就会一直有一个空格
//打印到k-1 就对了
{
printf("%c", str[i]);
}
for ( i=0; i<n; i++ )//如果等于n 打印会多打印一位
{
printf("%c", str[i]);
}
printf("\n");
}
return 0;
}