解题思路:
1:输入一个整数n,开辟两次n个字符空间;
2:输入n个字符;(这里默认没有空格等字符)
3:输入一个整数m;
4:求复制的字符个数;
5:把从m开始的字符复制到另一字符串;
6:输出;
代码一(字符没有空格,正确)
#include <stdio.h> #include <string.h> #include <malloc.h> int main() { int n, m, t; scanf( "%d", &n ); char *a, *b; a = (char *) malloc( n * sizeof(char) ); b = (char *) malloc( n * sizeof(char) ); scanf( "%s", a ); scanf( "%d", &m ); t = n - m + 1; for ( int i = 0; i < t; i++ ) { b[i] = a[m - 1]; m++; } printf( "%s", b ); return(0); }
代码二:(字符有空格)
#include <stdio.h> #include <string.h> #include <malloc.h> int main() { int n, m, t; scanf( "%d", &n ); getchar(); char *a, *b; a = (char *) malloc( n * sizeof(char) ); b = (char *) malloc( n * sizeof(char) ); gets( a ); scanf( "%d", &m ); t = n - m + 1; for ( int i = 0; i < t; i++ ) { b[i] = a[m - 1]; m++; } puts( b ); return(0); }
别忘点赞哦-.-
0.0分
58 人评分
#include<stdio.h> #include<stdlib.h> int main(){ int n,m,t; scanf("%d",&n); char *a,*b; a=(char *)malloc(n*sizeof(char)); b=(char *)malloc(n*sizeof(char)); gets(a); // scanf("%s",a); scanf("%d",&m); t=n-m+1; for(int i=0;i<t;i++) { b[i]=a[m-1]; m++; } puts(b); }
#include<stdio.h> #include<string.h> #define N 100 int main() { char a[N],b[N]; int i,n,m,j=0; scanf("%d",&n); for(i=0;i<n;i++) scanf("%c",a+i); scanf("%d",&m); for(i=m;i<n;i++) b[j++]=a[i]; b[j]='\0'; puts(b); return 0; } 不知道哪里错了,求解??
yezi 2023-02-05 17:19:03 |
#include<stdio.h> #include<string.h> #define N 100 int main() { char a[N],b[N]; int i,n,m,j=0; scanf("%d",&n); getchar(); for(i=0;i<n;i++) { scanf("%c",a+i); } scanf("%d",&m); for(i=m-1;i<n;i++) { b[j++]=a[i]; } b[j]=' '; puts(b); return 0; }
yezi 2023-02-05 17:21:03 |
在输入字符串前添加getchar()吸收回车键,因为scanf 对末尾回车符的处理:把回车符保留在缓存中。gets对末尾回车符的处理:接收回车,但把回车替换为 .*
yezi 2023-02-05 17:24:17 |
星号是‘