从键盘输入一个字符串和一个数字n,要求从字符串的第n个字符开始到字符串的末尾重新组成字符串输出。

高手帮忙。 分不多。

给你个C的,供参考……
#include "stdio.h"//
#include "string.h"//
#include "stdlib.h"//
void main(void){
char Str[101],n;
printf("请输入一个字符串(限长100)!\nStr=");
gets(Str);
printf("请输入截取位置数!\nn=");
scanf("%d",&n);
if(n>=(char)strlen(Str)) printf("n太大,越界!\n");
else printf("截取的字符串是:%s\n",Str+n-1);
}追问

str+n-1是什么意思啊! 这好像只是指向第n个字符吧 但是运行正确。。 还望给我解释下str+n-1

追答

C的字符串是用字符数组实现的,而数组的下标规定是从0开始的。第n个元素的下标值就是n-1了,0~n-1刚好共n个元素。Str是这个字符串数组的首地址,就是下标为0的那个元素的地址,它加上n-1刚好是第n个元素所在的位置。printf("%s\n",Str+n-1)的意思是把字符串Str从第n个元素(下标是n-1)开始的后续元素依次打印出来,直打到遇到'\0'为止而不输出'\0'。看下面的图片……

追问

谢谢!回答很详细。。printf("%s\n",Str+n-1)。我的茫然是 为什么不printf("%s\n",n-1). 这样不是第n个元素吗。。 还有为什么会打印出从n开始后面知道\0\的元素。 是不是%s的原因。如果是%c是不是就是单个n元素了。

追答

“……是不是%s的原因。如果是%c是不是就是单个n元素了”——基本正确!当输出函数printf()中的控制符为%s时,它指示printf()函数把与%s对应的变量作为首地址依次输出其后一直到'\0'前的所有字符!而%c则指示printf()函数输出与之对应的变量表示的一个字符……不过在上述中有一点要注意:Str+n-1是地址,要想用%c控制输出其中的字符,得写成*(Str+n-1)才对,*表示取地址Str+n-1中的值;说基本正确就是说有这个差别。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-14
用的c#编的
Console.WriteLine("请输入一个字符串");
string s1 = Console.ReadLine();
Console.WriteLine("请输入一个数字");
string s2 = Console.ReadLine();
int n = Convert.ToInt32(s2);//将s2转换成整型,以便substring函数调用
s1 = s1.Substring(n);//调用substring函数,从字符串的第n个字符开始到末尾结束
Console.WriteLine(s1);
Console.ReadKey();追问

你 这是 c++吧 。。 我 只是学了 c语言。。 哎!!!。。

追答

c语言我也不懂,初学者,坐等高人解答

从键盘输入一个字符串和一个数字n,要求从字符串的第n个字符开始到字符串...
#include "string.h"\/\/#include "stdlib.h"\/\/void main(void){ char Str[101],n; printf("请输入一个字符串(限长100)!\\nStr="); gets(Str); printf("请输入截取位置数!\\nn="); scanf("%d",&n); if(n>=(char)strlen(Str)) printf("n太大,越界!\\n"); else printf("截取的字符串是:%s...

从键盘输入一个字符串和一个数字n,要求从字符串的第n个字符开始到字符串...
void main(void){ char Str[101],n;printf("请输入一个字符串(限长100)!\\nStr=");gets(Str);printf("请输入截取位置数!\\nn=");scanf("%d",&n);if(n>=(char)strlen(Str)) printf("n太大,越界!\\n");else printf("截取的字符串是:%s\\n",Str+n-1);} ...

C++2.输入一个字符串以及一个整数n,将串中前n个字符删除后输出。要求用...
string str; \/\/用来存储输入的字符串 int num; \/\/用来存储输入的整数 \/\/提示用户输入 cout << "请输入一个字符串:" << endl; getline(cin, str); \/\/使用getline()函数获取一行输入 cout << "请输入一个整数:" << endl;cin >> num; \/\/使用cin获取一个整数 \/\/调用函数delete_n_cha...

从键盘上输入一个字符串,输出该字符串的n个字符后的所有字符怎么做
package baidu;import java.util.Scanner;public class Test {public static void main(String[] args) { Scanner in = new Scanner(System.in);String a = in.nextLine();\/\/键盘输入int n=5;String b = a.substring(5);\/\/字符串截取System.out.println(b);\/\/输出}}运行结果:输入字符串...

C语言:输入一个整数n和n个字符串,从n个字符串中输出最短的字符串
include "stdio.h"#include <string.h>int main(int argc,char *argv[]){char s[101],st[101];int n,ln,t;printf("Please enter n(int n>0)...\\n");if(scanf("%d",&n)!=1 || n<1){printf("Input error, exit...\\n");return 0;}ln=100;while(n--){scanf("%100s",...

编程 输入一个字符串和一个字符,如果该字符在字符串中,就从该字符首次...
使p指向后一字符 *\/ flag = 1; \/* 找到了这样的字符 *\/ puts (p-1); \/* p退回一个字符,从p-1处打印字符串 *\/ } } if (!flag) { printf ("字符串中不包含%c!\\n", c); } getch (); \/*屏幕暂留*\/return 0;} ...

c++输入一个字符串,输出这个字符串中第n个字符后的所有字符。(n<输入...
int main(){ int i,n,j;char ch[20],p[20];cout<<"输入字符串:";cin>>p;cout<<"\\n输出这个字符串中第";cin>>n;cout<<"个字符后的所有字符\\n";for(i=n-1,j=0;*(p+i)!='\\0';i++,j++)ch[j]=*(p+i);ch[j]='\\0';cout<<"输出字符串:\\n" ;cout<<ch;return 0...

从键盘循环录入一个字符串,输入"end"表示结束.将字符串中的大写字母变...
include <stdio.h> int main() { char string[80],*p; int len,count=0; p=string; gets (string); len = strlen (string); if (string[len-1]=='d'&&string[len-2]=='n'&&string[len-3]=='e') { \/*字符串末尾为连续的end*\/ string[len-3]='\\0'; ...

C语言输入一串字符串从第n个字符开始截取m个字符组成一个新的字符串输 ...
1、我们编辑如图中输入的代码。2、进入源文件的目录下,在终端输入命令gcc -o t test.cpp。3、输入.\/t命令,运行生成的可执行文件。4、运行结果为baidu。5、strncpy 的函数原型char *strncpy(char *dest,char *src,size_t n),我们在复制src的前n个字符到dst中。6、如果超过src的字符串长度,...

C语言,输入一个字符串,输出字符串中一共有多少个重复的字符?
统计字符串中的重复字符,可以通过简单哈希算法来实现。有效的字符的ascii值在0-127之间,定义一个128位的数组,初始化为0,用数组下标对应相应的字符,数组元素值表示字符出现的频率,统计相应字符的个数,个数大于1的字符就是重复的。参考代码如下:include<stdio.h>void main(){ char s[1024]; ...

相似回答