解题思路:
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 条评论

uq_15550108756 2年前 回复TA
这里getchar的作用是什么
朱派金 2年前 回复TA
@虹山上峰 加一行这个代码就可以了b[j]=&#039;&#039;;  把i,j改成全局变量
勇敢牛牛 3年前 回复TA
@虹山上峰 输出的是n-m+1个字符,没包含字符串的结束符‘’,你应该在你的输出字符数组再加一个结束符‘’
一只小菜鸡 3年前 回复TA
#include<iostream>
#include<string>
using namespace std;
int main()
{
    int a,b;
    string str;
    cin >> a;
    fflush(stdin);//清空缓冲区
    for(int i=0;i<a;i++)
    {
    	char c;
    	c=getchar();
		str.append(1,c);
	}
	cin>>b;
    str=str.substr(b-1);
	cout<<str;
    return 0;
}
可以帮忙看一下哪有问题吗
虹山上峰 3年前 回复TA
#include<stdio.h>
int main()
{
	int n,m;
	scanf("%d",&n);
	getchar();
	char a[n];
	gets(a);
	scanf("%d",&m);
	char b[n+1-m];
	for(int i=m-1,j=0;i<n;i++,j++)
	{
	    b[j]=a[i];
	}
	printf("%s",b);
	return 0;
}
百思不得其解,为什么例题给的输出多个问号?
hero 3年前 回复TA
#include<stdio.h>
#include<string.h>
#include<malloc.h>
void fun(char a[]);
int n,m;
int main(){
scanf("%d",&n);
char *a=(char*)malloc(n*sizeof(char)); 
scanf("%s",a);
scanf("%d",&m);
fun(a);
return 0;
}

void fun(char a[]){int c=n-m+1;int i=0;
char *b=(char*)malloc(c*sizeof(char)); 
for(m;m<=n;m++){
b[i]=a[m];i++;
} for(i=0;i<m;i++){printf("%c",b[i]);
}
}
霸气江江 3年前 回复TA
#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);
	
}
tiger 3年前 回复TA
#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;
}
不知道哪里错了,求解??
4年前 回复TA
@风 j没有初始化都对了
4年前 回复TA
#include<stdio.h>
#include<string.h>

void fun(char a[],int n,int m)
{
	int i,j;
	
	for(i=0;a[i]!='\0';i++)
	{
		if(i>=m-1)
		{
			a[j++]=a[i];
		}
	}
	a[j]='\0';
}

int main(void)
{
	char a[100];
	int m,n;
	
	scanf("%d",&n);
	
	getchar();
	
	gets(a);
	
	scanf("%d",&m);
		
	fun(a,n,m);
	
	puts(a);
	
	return 0;
}