Manchester


私信TA

用户名:wenyajie

访问量:333909

签 名:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

等  级
排  名 1
经  验 65860
参赛次数 1
文章发表 188
年  龄 0
在职情况 学生
学  校 Xiamen University
专  业 计算机科学

  自我简介:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

解题思路:
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 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

第二个解答 中的getchar()起啥作用呢
2019-08-17 10:43:04
第一个为啥有空格就不对呢
2019-08-17 10:28:25
题目不是让自己定义一个函数吗
2019-05-07 19:36:34
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{
	char *a,*b,k=0,i;
	int m,n;
	scanf("%d",&n);
	a    = (char *) malloc( n * sizeof(char) );
    b    = (char *) malloc( n * sizeof(char) );
	scanf("%s",a);
	scanf("%d",&m);
	for(i=m-1;i<n;i++)
	{
		b[k++]=a[i];
	}
	printf("%s\n",b);
	return 0;
}话说这个程序哪里有问题鸭
输出总会多一个屯
2019-01-18 12:48:53
#include<stdio.h>
#include<string.h>
int main()
{
	int n,m;
	char str[100];
	char ste[100];
	scanf("%d",&n);
	scanf("%s",ste);
	scanf("%d",&m);
	int j=0;
	for(int i=m-1;ste[i]!=0;i++,j++)
	{
		str[j]=ste[i];
	}
	//str[j]='\0';
	puts(str);
}
2019-01-04 09:51:25
这样可否?大佬们有什么改进意见没?
#include <stdio.h>
#include <stdlib.h>
void ace(char *p,char *q)
{
	int i;
	for(i=0;q[i]!='\0';i++)
	{
		p[i]=q[i];
	}
	p[i]='\0';
	puts(p);
}
int main()
{
	int n,m;
	char *p=NULL;
	char *q=NULL;
	int i;
	scanf("%d",&n);
	getchar();//吸收换行符 
	p=(char*)malloc((n+1)*sizeof(char));
	gets(p);
	scanf("%d",&m);
	q=(char*)malloc((n-m+2)*sizeof(char));
	for(i=0;i<n-m+1;i++)
	{
		q[i]=p[i+m-1];
	}
	ace(p,q); 
	free(p);
	free(q);
	return 0;
}
2018-12-26 21:40:28
题目要求是用函数写哦,而且getchar()和scanf()一起用我这边vs6.0会出现缓冲区问题
2018-12-06 18:39:22
getchar()用得好!点赞了。但是有些问题:
1. #include <malloc.h>?不太熟悉这个头文件,是否应该#include <stdlib.h>?
2. b = (char *)malloc( (n-m+2) * sizeof(char) );就足够了?
3. 虽然是算法代码,也不能忘记free?
2018-06-23 15:05:01