关于c语言:输入一个字母,再输入一个字符串,在这个字符串中查找该字母的下表并输出,如果找不到,则输出

作者&投稿:豆阅 (若有异议请与网页底部的电邮联系)
关于c语言:输入一个字母,再输入一个字符串,在这个字符串中查找该字母的下表并输出,如果找不到,则输出~

改成gets(str)还是会出错,问题不在这里。
原因在于,你在
printf("input a char:");
ch=getchar();这里输入一个字符以后会按下回车键,这个回车依然是被当成一个字符处理的,它会留存在键盘缓冲区内,当程序执行到 while((str[i]=getchar())!='
')
这里时,留存在键盘缓冲区的那个回车会进入内存,由getchar()函数得到,所以,这里一开始
str[i]就等于'
',不满足循环条件,故不执行循环。
要解决这个问题其实很简单,你可以在printf("input a char:");
ch=getchar();之后再添加一句getchar(); 这样一来,那个回车就被“吃掉”了。

如果你是真的搞编程的
建议你以后对这种锻炼思路的题目不要轻易问别人
你以后工作还会遇到好多这样的问题
这次有人告诉你以后不一定会还有

答案在下边
#include "stdio.h"
void main()
{
char c;
int i=0,j=0,k=0,m=0,da=0,xiao=0;
printf("please input the string
");
while((c=getchar())!='
') /*循环从键盘读入字符直到一行结束(输入回车)*/
{

if((c='a')||(c'A'))
{
if(c='A')da++;
if(c='a')xiao++;
i++; /*i存入字母数*/
}
else if(c==' ') j++; /*j存入空格数,注意s==' '里面是有一个空格的*/
else if(c47)k++; /*k存入数字数*/
else m++; /*m存入其它符号数*/
}
printf("char:%d Capital letters:%d Lowercase%d
spec:%d
number:%d
Other:%d
",i,da,xiao,j,k,m); /*打印行中的字母,空格,数字,其它字符数*/
}

#include<stdio.h>
#include<string.h>
int main()
{
int i,d,s=0;
char character,st[80];

printf("Input a character : ");
scanf("%c",&character);

printf("Input a string : ");
scanf("%s",st);

for(i=0;st[i]!='\0';i++)
{

if(character==st[i])
{
d=i;
s=1;
break;
}

}

if(1==s)
printf("%d \n",d);
if(s != 1)
puts("NOT FOUND\n");

return 0;
}

在判断是否有的时候要像我语句里面那样好些吧

需要把if下面的两条语句括起来,不然s永远等于1
if(character==st[i])
{
d=i;
s=1;
}


用c语言编程!要求输入1,输出A.输入26,输出Z。输入27输出AA.输入28输出...
此题可以做,代码如下:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this line.#include "stdio.h"int main(void){ char R[27]="ZABCDEFGHIJKLMNOPQRSTUVWXY",tmp[10]; int n,i,j; while(1){ printf("Input n(int n>0)...\\nn="); if(scanf("%d",&n) &&...

C语言编程题在屏幕上输入一个字符串和一个要插入的字符
直接看代码:include<stdio.h>#include<string.h>void main(){char str[100],str_new[100],t;char *p=str;int at=0;puts("输入字符串:");gets(str);puts("要插入的字符:");t=getchar();\/*.输入的字符被存放在键盘缓冲区中.直到按回车为止(回车字符也放在缓冲区中);其他字符会保留在...

C语言编程 输入一个以回车键结束的字符串(少于80个字符)。输出其中所...
include<stdio.h>int main(void){char str[80], y[26];int i, j, ny = 0;printf("Enter a string:");i = 0;while ((str[i] = getchar()) != '\\n')i++;str[i] = '\\0';for (i = 0; str[i] != '\\0'; i++) {if (str[i] >= 'A'&&str[i] <= 'Z'){...

C语言 输入一个实数x,计算多项式x+(x^2)\/2!+(x^3)\/3!+...的和,直到末...
x^2-(m+2)x+(2m-1)=0 △=(m+2)2-4(2m-1) =m2+4m+4-8m+4 =m2-4m+4+4 =(m-2)2+4>0 所以,方程恒有两个不相等的实数根若此方程的一个根是1 x=1代入方程得: 1-(m+2)+(2m-1)=0 1-m-2+2m-1=0 m=2 则:方程变为: x2-4x+3=0 (x-3)(x-1)=0 x=1...

请用C语言写一个代码,输入一个整数n,输出小于根号n的最大的整数。_百度...
先来分析一下:1:可以开出来是整数的,(例如9,开出来是3,那么就要 -1)2:开出来不是整数,(例如8,开出来只要截取就可以了,所以可以直接强制转换)(以上是纯原创的思路)include<stdio.h> include<math.h> \/\/因为用到sqrt()函数,所以要这个数学库函数。void main(){ int n, m...

C语言:从键盘输入一个字符,可以是数字、字母或标点符号,对输入的字符...
include "stdio.h"void main(){ char ch;scanf("%c",&ch);if(ch>='0'&&ch<='9')printf("this is a number\\n");else if((ch>='a' && ch<='z')&&(ch>='A' && ch<='Z'))printf("this is a letter\\n");else printf("this is the other\\n");} 修改完毕 ...

怎么用C语言输入一个大于10小于100的数?
以下是一个简单的C语言程序,用于输入N个整数并求和:在这个程序中,我们首先定义了两个整型变量num和N,用于存储用户输入的数和数的个数。然后,我们使用printf函数输出提示信息,使用scanf函数从用户处读取数的个数N。然后,我们使用if语句检查N是否在有效范围内(大于0且小于或等于100)。如果N不在...

c语言程序编写:要求从键盘上输入一个不多于5位数的正整数,依次输出每一...
include <stdio.h> void main(){ int n;scanf("%d",&n);if(n\/100000)printf("应输入一个不多于5位数的正整数!\\n");else { printf("%d",n%10);n\/=10;while(n){ printf(",%d",n%10);n\/=10;} } }

急求:C语言编程 输入一个实数x,计算并输出下式的值,知道最后一项的绝对...
include<stdio.h> include<math.h> double ab(double n){ int i;double s=1;for(i=1;i<=n;i++)s=s*i;return s;} void main(){ double c,d=0,x,j=1;scanf("%lf",&x);while(fabs(pow(-1,j-1)*pow(x,j)\/ab(j))>pow(10,-5)){ c=pow(-1,j-1)*pow(x,j)\/ab...

输入一个数再输入一个运算符,然后进行相应的运算,c语言
include<stdio.h> void main(){ int a,b;char c;printf("请输入两个数,以逗号间隔\\n");scanf("%d,%d",&a,&b);printf("请输入运算符\\n");scanf("%c",&c);switch(c){ case '+' :printf("%d+%d=%d",a,b,a+b);break;case '-' :printf("%d-%d=%d",a,b,a-b);break;...

西林县17367169202: 关于c语言:输入一个字母,再输入一个字符串,在这个字符串中查找该字母的下表并输出,如果找不到,则输出 -
窄彼洁维: 需要把if下面的两条语句括起来,不然s永远等于1 if(character==st[i]) { d=i; s=1; }

西林县17367169202: C语言,从键盘输入一个字母字符串str,再输入一个字母,如果输入的字母与字符串中某一个字母相同,则将该字 -
窄彼洁维: #include<stdio.h>#include<string.h> { char str[100],ch; int i,n, isInStr = 0; gets(str); scanf("%c",&ch); n=strlen(str); for(i=0;i<n;i++) { if(str[i]==ch) { isInStr = 1; break; } } if(isInStr) { str[n]=ch; for(i=0;i<=n;i++) printf("%c",str[i]); } else { for(i=0;i<n;i++) printf("%c",str[i]); } printf("\n"); return 0; }

西林县17367169202: c语言作业,键盘输入1个大写字母,将其转化为小写字母后换行输出;键盘再输入1个小写字母,将其转化为 -
窄彼洁维: #include "stdio.h"void main(){ char c; c=getchar(); if(c>='A' && c<='Z'){ c+=32; printf("大写字母为%c,小写字母为%c,ASCII码为%d\n",c-32,c,c); } }

西林县17367169202: 一个c程序语言 如果输入的是一个字母则输出1,输入其他则输出0 急求 -
窄彼洁维: 假如用来接收输入的变量为a,那么可以这么写 if((a>='a'&&a<='z') || (a>='A'&&a<='Z')) printf("1"); else printf("0");

西林县17367169202: c语言编程题先输入一个字符c1,再输入一个包含c1的字符串,显示该字符c1在字符 -
窄彼洁维: #include int main(){ char temp; char data[100] = {'\0'}; printf("please input a char:\n"); scanf("%c", &temp); getchar(); printf("please input a string which may contains %c\n", temp); gets(data); int flag = 0; for (int i = 0; iif ('\0' == data[i] && !flag)...

西林县17367169202: C语言;输入一个字母输入它的前一位字母和后一位字母. -
窄彼洁维: #include<stdio.h> int main() {char c;scanf("%c",&c);if(c>='A'&&c<='Z'){if(c>'A')printf("%c",c-1);if(c<'Z')printf("%c",c+1);}if(c>='a'&&c<='z'){if(c>'a')printf("%c",c-1);if(c<'z')printf("%c",c+1);}return 0; }

西林县17367169202: C语言编程问题:输入一个字符串,再输入一个字符ab,将字符串中所有的ab字符删除后输出该字符串. -
窄彼洁维: 大致思考方法:定义三个字符串:str[], ab[], output[],str是输入的第一个字符串,output放的是最后的结果.设置两个下标 i,j.i指向第一个字符串,j指向第二个子符串;i每次向后移动一个位置,i往后的strlen(ab)个字符是不是和字符串ab匹配,如...

西林县17367169202: C语言编程:输入一个字母,若不是所要的字母,重新输入,若是所要的字母,接着输入之后的字母,用do -
窄彼洁维: printf("请回答是否,使用字符Y和N:"); while(1) { c=getchar(); if (c=='Y' || c=='N' || c=='y' || c=='n') break; }

西林县17367169202: C语言输入一个小写字母 输出该字母的前一个字母和后一个字母 -
窄彼洁维: #includeint main(){int a; char b; char zimu[50]={a,b,c,d,.......(26个字母自己打)};//构建数组包含所有字母 scanf(“%c”,&b);输入字母 for(a=0;a<26;a++)//查询输入的字母是数组中的第几个 if(zimu[a]==b) printf("%c %c",zimu[a-1],zimu[a+1]);//输出前后两个 };思路给你 我代码格式有错 你自己调试下很好改

西林县17367169202: c语言程序 运行是空白 随便按一个字母 再加一个回车 才会输出结果.. -
窄彼洁维: 亲爱的,你看你的语句 scanf("10,20",&a,&b);错误,并没有实现对a,b的赋值,这里就要求必须有输入数据 printf("10,20,30\n",a,b,a+b);//这里你的意思应该是希望输出a,b,a+b的值的吧,也是错了,你这里已经强制输出为10,20,30,与a,b无关#include main() {int a,b; scanf("%d %d",&a,&b);//输入两个数,赋值给a,b,中间用空格分开,再回车 printf("%d %d %d\n",a,b,a+b); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网