编程 输入一个字符串和一个字符,如果该字符在字符串中,就从该字符首次出现的位置开始输出字符串中的字

供稿:hz-xin.com     日期:2025-01-13
用C++编程:输入一个字符串和字符,指出该字符串第一次出现的位置

#include
#include
using namespace std;
int main()
{
string str;
cin>>str;
char ch;
cin>>ch;
int length = str.length();
for(int i = 0; i < length; i++)
{
if(str[i] == ch)
cout<<"the position is "<<i + 1<<endl;
}
return 0;
}

其实,楼主不明白的是:
1. if()或 while()后面的表达式是什么?
答案是: 从C语法的角度,if()或 while()后面的表达式是什么都可以。运行时(应该是编译时编译成这样子),先求整个表达式的值。结果是一个数值。 C吧这个数值看成逻辑值:白话的说,就是,如果这个值是0,就认为是 假(False),除0之外,都是真(TRUE)。
如果是真,执行接下来的代码块,否则跳过。
你可以直接写 if(i),而不必写 if(i != 0 )
2. 那么再看具体代码,while(*p)和if(*p)中的*p是什么意思?:就是判读*p是不是0 呗。楼主不了解的是,*p什么时候是0??
您需要知道:C语言字符串以0结束。
也就是说,您写 *p = "input zifuchuan";时 ,实际存内存存放的是:
‘i’ ‘n’ ‘p’ ‘u’ ‘t’ ‘ ’ ‘z’ ‘i’ ‘f’ ‘u’ ‘c’ ‘h’ ‘u’ ‘a’ ‘n’ 0
while(*p)的意思,翻译过来就是:”当p指向的字符串没有到达结束的0时“
注意:循环体里。必然有p++的移动操作
‘i’ ‘n’ ‘p’ ‘u’ ‘t’ ‘ ’ ‘z’ ‘i’ ‘f’ ‘u’ ‘c’ ‘h’ ‘u’ ‘a’ ‘n’ 0
^ ^
| |
p -------------------------------------------> p

#include <stdio.h>
#include <conio.h>

#define ARR_LEN 255 /*数组长度上限*/

int main (void) {
char str[ARR_LEN], c, *p;
int flag = 0; 
    
    printf ("请输入字符串:");
    gets (str);
    printf ("请输入字符:");
    c = getchar ();
    
    p = str; /* p指向str的首字符 */
    while (*p) { /* 扫描str */
     if (*p++ == c) { /* 寻找与c相同的字符,使p指向后一字符 */
     flag = 1; /* 找到了这样的字符 */
     puts (p-1); /* p退回一个字符,从p-1处打印字符串 */
    } 
    }
    
    if (!flag) {
     printf ("字符串中不包含%c!
", c);
    }
    
getch (); /*屏幕暂留*/
return 0;
}



C语言编程问题:输入一个字符串,再输入一个字符ab,将字符串中所有的ab...
大致思考方法:定义三个字符串:str[], ab[], output[],str是输入的第一个字符串,output放的是最后的结果。设置两个下标 i,j。i指向第一个字符串,j指向第二个子符串;i每次向后移动一个位置,i往后的strlen(ab)个字符是不是和字符串ab匹配,如果不匹配就把str[i]添到字符串output中,如果...

C语言编程:输入一个字符和字符串,删除字符串中和输入字符相同的所有字符...
include<stdio.h> include<string.h> define LEN 100 void delete_same(char * str,char ch){ int i=0;for(i=0;str[i]!=0;i++){ if(str[i]==ch){ strcpy(str+i,str+i+1);\/*删除相同元素*\/ } i--;} } void main(){ char ch;char str[LEN];printf("Please input the ...

怎么写一个从键盘输入一个字符串给str和字符给c?
一、问题描述:从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。1、输入:第一行是一个字符串; 第二行是一个字符。2、输出:删除指定字符后的字符串。二、设计思路:1、 同插入问题,定义两个字符数组a,b。以及标志删除位置的int型pos。2、用gets函数...

编写程序,从键盘输入一个字符串和一个整数m,在原字符串中把字符串尾部...
include<stdio.h> include<string.h> int main(){ char a[100],b[20];int i,j,n,k;gets(a);scanf("%d",&k);n=strlen(a);for(j=0,i=n-k;i<n;i++,j++)b[j]=a[i];for(j=0;j<k;j++)printf("%c",b[j]);for(i=0;i<n-k;i++)printf("%c",a[i]);printf(...

编程实现从键盘输入一个字符ch和一个字符串str,利用字符指针实现删除字 ...
p = str+length-1;while(p >= str){ i--;if(*p == ch){ if(i == length-1)str[i] = '\\0';else for(j = i;j < length-1;j++)str[j] = str[j+1];length--;} p--;} str[length] = '\\0';}int main(){ char str[100];char ch;printf("输入字符串:\\n");sc...

从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出...
include<stdio.h> int main(){ char str1[20], str2[20], c;int i = 0, j = 0;gets(str1);scanf("%c", &c);while(str1[i] != 0) { if(str1[i] != c) { str2[j] = str1[i];j++;} i++;} str2[j] = 0;puts(str2);return 0;} 可以了。

输入一个字符串 str,再输入一个字符 c,将字符串 str 中出现的所有字符...
{ if(*p==c) \/\/如果找到特定删除的字符 { q=p; \/\/将此时的指针指向赋值给q while(*q!='\\0') \/\/循环遍历 { *q=*(q+1); q++;} \/\/将字符后移,覆盖那个那个特定字符,相当于删除该字符 q='\\0'; \/\/字符串结束 } if(*p!=c) p++; \/\/如果不是,就直...

...输入任意一串字符,再输入一个字符和一个位置,将此字符插入到此串字符...
include <stdio.h>#include <string.h>void main(){ char ch[100]; char c; int index; memset(ch,NULL,100);\/\/初始化所有元素为空 puts("请输入一串字符:\\n"); gets(ch); puts("请输入一个字符:"); scanf("%c",&c); puts("请输入要插入的位置:"...

任意输入一个字符串和字符,要求从该字符串中删除指定字符
include<iostream>#include<string>using namespace std;string s;char c;int main(){ cout<<"请输入一个字符串:"<<endl; getline(cin,s);\/\/输入字符串 cout<<"请输入要删除的字符:"<<endl; cin>>c;\/\/输入要删除的字符 for(int i=1;i<=s.size();i++){ if(s...

c语言如何输入数字和单个字符串
1 scanf("%c", &c);这种方法和输入数字是类似的,%c仅读入一个字符,并赋值给c。2 c = getchar();getchar函数的功能就是读入一个字符,并以返回值形式返回。三、输入一串字符(以空白字符分隔)。可以用scanf的%s格式。char str[100];\/\/空间要定义足够大 scanf("%s", str);\/\/将字符串读...