解题思路:
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);
}

别忘点赞哦-.-

点赞(35)
 

0.0分

43 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 41 条评论

crj 8月前 回复TA
#include<stdio.h>
#include<string.h>
int main()
{
    int n, m; char arr[100] = { 0 };
    scanf("%d", &n);
    scanf("%s", arr);
    scanf("%d", &m);
    strcpy(arr, arr + m - 1);
    puts(arr);
    return 0;
}
黄TAO 1年前 回复TA
@uq_15550108756 @uq_13587233613 6
leon233 1年前 回复TA
#include <stdio.h>
#include <string.h>
int main()
{
    void copy(char STR[99], int M,int N);
    int i,n, m;
    char str[99];
    scanf("%d", &n);
    getchar();
    for (i = 0; i < n; i++)
    {
        scanf("%c", &str[i]);
    }
    str[i] = '\0';
    scanf("%d", &m);
    copy(str, m,n);
    return 0;
}


void copy(char STR[99], int M,int N)
{
    int i,j=0;
    char brr[99];
    for (i = M - 1; i < N; i++)
    {
        brr[j] = STR[i];
        j++;
    }
    brr[j] = '\0';
    for (i = 0; i < strlen(brr); i++)
    {
        printf("%c", brr[i]);
    }
}
yezi 1年前 回复TA
@tiger 星号是‘’
yezi 1年前 回复TA
#include<stdio.h>
#include<malloc.h>
int main(){
	int n;
	scanf("%d",&n);
	getchar();
	char *p=(char*)malloc(n*sizeof(char));
	gets(p);
	int m;
	scanf("%d",&m);
	for(int i=m-1;i<n;i++)
	{
		printf("%c",p[i]);
	}
	free(p);
	return 0;
}
yezi 1年前 回复TA
@tiger 在输入字符串前添加getchar()吸收回车键,因为scanf 对末尾回车符的处理:把回车符保留在缓存中。gets对末尾回车符的处理:接收回车,但把回车替换为.*
yezi 1年前 回复TA
@tiger #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]=&#039;&#039;; 	puts(b); 	return 0; }
AuBZr 2年前 回复TA
@uq_15550108756 用来读回车,不加的话‘
’会成为a的第一个元素
不会三威胁 2年前 回复TA
@uq_15550108756 重开吧
Isceam 2年前 回复TA
这里一定要申请动态储存嘛?