解题思路:
有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。首先定义一个n表示字符串包含的字符个数,然后定义一个字符数组str保存字符串(在C语言中,没有字符串数据类型,所以字符串需要保存在字符数组中),然后定义一个m表示从字符的第m个字符开始往后生成一个新的字符串。在代码中用循环输出新产生的字符串,从m-1开始循环是因为在数组中,下标是从0开始计的,所以我们平时说的第m个数在数组中也就是第m-1个数。
注意事项:
在本道题中,输入字符串的时候我没有使用gets直接接受是因为gets和scanf连用时会出现错误,为什么会出现问题呢?我们以本道题为例来解释这一问题:
在代码中,首先我们用scanf接受一个数字6作为n的值,但是我们并不是只输入了一个数字6,还有一个回车。回车是scanf结束的标志,但是却不被scanf接受,那么多出来的回车去哪了呢,如果用gets来输入字符串,那么第一个scanf结束时输入的回车就回被get接受,但是回车也是gets结束的标志,然后第二步输入的字符串就回被下一行的scanf接受,但是这一行的scanf接受的应该是一个整数,但是我们却传入了一个字符串,所以就会出错。因此这里最好不要使用gets。可以直接使用scanf("%s",&str);来接受一个字符串。
参考代码:
#include<stdio.h>
int main()
{
int n;
char str[100];
int m;
scanf("%d",&n);
scanf("%s",&str);
scanf("%d",&m);
for(int i=m-1;i<n;i++)
{
printf("%c",str[i]);
}
return 0;
}0.0分
26 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
不太懂题目中需要输入字符串长度n干嘛。。。 #include<stdio.h> #include<string.h> void COPY(char a[],int n) { int len=strlen(a); char b[200]; int tag=0; for(int i=n-1;i<len;i++) { b[tag]=a[i]; tag++; } for(int j=0;j<tag;j++) printf("%c",b[j]); } int main() { int n; scanf("%d",&n); getchar(); char a[200]; gets(a); int x; scanf("%d",&x); COPY(a,x); return 0; }@H2230819052 #include<stdio.h> int main() { int i,n,m; char a[100]; scanf("%d",&n); for(i=0;i<n+2;i++) { scanf("%c",&a[i]); } scanf("%d",&m); for(i=m;i<n+1;i++) printf("%c",a[i]); return 0; }这是改了以后的好兄弟,我在做的时候就很纳闷这个事情,想不出原因在哪里 #include<stdio.h> int main() { int i,n,m; char a[100]; scanf("%d",&n); for(i=0;i<n+1;i++) { scanf("%c",&a[i]); } scanf("%d",&m); for(i=m-1;;i++) if(a[i]=='\0') break; else printf("%c",a[i]); } 我改成这样就对了,但是不知道原因,没想到进来找一下,居然找到原因,爱炸你了