C语言编程:输入一个以回车结束的字符串a(少于80个字符),再输入一个字符串b,统计并输出b在a中出现的
main()
{
int b,c;
char a[80],e[80];
printf("输入一个字符串,少于80个字符
");
scanf("%s",a);
for(b=0;a[b]!='\0';b++);
b--; /*上面这个for循环结束后,a[b] == ‘\0',即为字符串结尾符,b--,使其指向最后一个字符,另外最好对a,e初始化下,char a[80] = "", e[80] = ""*/
for(c=0;b>=0;c++,b--)
e[c]=a[b];
printf("逆序:%s
",e);
}
#includevoid main(){ char a[80],c; int b,d=0; printf("a="); gets(a); printf("请输入一个字符"); c=getchar(); for(b=0;a[b]!='\0';b++) { if(a[b]==c) d++; } printf("times: %d
",d); puts(a);}
#include"stdio.h"
int input1(char a[]) //a数组的输入,返回的是a数组的长度
{
int i;
char p='a'; //初始化p,使p能够参加下面的循环
for(i=0;p!='\n';i++) //只要不输入回车,就总是进行下面的存入字母的操作。
{
scanf("%c",&p);
if(p!='\n') //如果没有输入回车,那么就将字母存入数组。
a[i]=p;
else //如果输入了回车,就存入"\0"。
a[i]=0;
}
return i-1; //i-1即为数组长度。
}
int input2(char a[],int len) //len为a数组的长度,返回的是数组b的长度
{
int i;
char p='a';
for(i=0;p!='\n';i++)
{
scanf("%c",&p);
if(p!='\n')
a[i]=p;
else
a[i]=0;
} //以上和input1相同。
if(len<i-1) //如果数组b的长度更大的话,就不可能出现符合要求的字符串了,就返回0作为b数组的长度。
return 0;
else
return i-1; //返回i-1,因为它是b数组的长度
}
int work(char a[],char b[],int len1,int len2) //len1,len2分别为数组a,b的长度
{
int n=0,i=0,j=0,temp=0; //temp随时要和i保持一致的。
while(i+len2<=len1) //只要在a中,a[i]后面还有b数组长度那么长的字符串,就进行一以下判断。
{
if(a[i]!=b[0]) //一个一个在a中找,只要和b的第一个字符不一样,就什么什么也不执行,等待循环里的i++
;
else
while(temp<i+len2) //如果找到和b[0]相同的,就从这个元素开始,将a中len2个字符,一一和b中的比较。
{
if(a[temp]==b[j]) //如果相等,就比较下一对元素。
{
j++;
temp++;
if(temp==i+len2-1) //如果比到了最后一个,说明a中有和b中一样的字符串,那么n加1
n++;
}
else if(temp!=b[j])
break;
}
i++; //找下一个a中的元素,来等待下一个循环。
temp=i; //temp随时要和i一致的
j=0; //每换一个a中的元素的话,如果和b[0]相等的话,b中的序列要从头比起
}
return n;
}
void main()
{
int len1,len2,num; //len1为a中长度,len2为b中字符串长度,num为a中有几个b中字符串。
char a[81],b[81]; //分别存入两个字符串
len1=input1(a); //编写的一个子函数,用于输入a[81],返回的是字符串长度
len2=input2(b,len1); //编写的一个子函数,用于输入a[81]
num=work(a,b,len1,len2); //计算一下所求的个数
printf("%d\n",num);
printf("%s\n",a);
printf("%s\n",b);
}
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
int main(void){
char a[81],b[81],k,*p,lb;
printf("Please enter a string...
");
fgets(a,80,stdin);
printf("To enter a search string...
");
while(fgets(b,80,stdin))//保证b不为空,否则会引发错误
if(b[(lb=strlen(b)-1)]='\0',*b=='\0')
continue;
else break;
k=0,p=a;
while(p)
if(p=strstr(p,b))
k++,p+=lb;
printf("There is(are) %d \'%s\' in the strings
",k,b);
return 0;
}
利用库函数,strstr,或者自己实现,因为长度较短,所以普通的算法就可以。
用C语言实现 从键盘输入一个一个以回车符结束的字符串,然后将其逆序输...
temp = buf[i];buf[i] = buf[len - 1 - i];buf[len - 1 - i] = temp;} printf("%s", buf);}
C语言编程:输入一个以回车结束的字符串a(少于80个字符),再输入一个...
for(i=0;p!='\\n';i++) \/\/只要不输入回车,就总是进行下面的存入字母的操作。{ scanf("%c",&p);if(p!='\\n') \/\/如果没有输入回车,那么就将字母存入数组。a[i]=p;else \/\/如果输入了回车,就存入"\\0"。a[i]=0;} return i-1; \/\/i-1即为数组长度。} int input...
C语言题目。。输入一个以回车结束的字符串(少于80 个字符),滤去所有的...
输入存储到字符串,然后逐一判断,删除不合法的字符即可。一、算法分析:1、输入字符串。2、逐一判断是否合法,如果不合法,则删除。删除方法可以使用后续字符覆盖当前字符。3、可以从前向后遍历,每一个不合法字符都被后续合法字符覆盖,这样一次循环即可完成所有操作。二、参考代码:include <stdio.h>int ...
c语言输入一个以回车结束的字符串,将其中第一次出现的连续的数字字符转...
void convert(char str[],int *dp){ sscanf(str,"%*[^0-9]%d",dp);} int main(){ char s[100];int d;scanf("%s",s);convert(s,&d);printf("%d",d);return 0;}
输入一个以回车符结束的字符串(少于80个字符),统计其中数字字符的个数...
char str[80] = "\\0";\/\/定义一个字符串,并把这个字符串清空 scanf("%s",str);\/\/让用户输入一串字符,scanf函数会默认以回车作为结束符 for( i=0;i<80&&str[i]!='\\0';i++ )\/\/开始循环判断,循环条件是下标i在0~79的范围内,并且字符串中还有内容 { if( str[i]>='0' && str...
C语言 . 输入一行字符,以回车结束,分别统计出其中的英文字母、空格、数...
int main(){ int m1=0,m2=0,m3=0,m4=0;char c;while ((c=getchar())!='\\n'){if (c>='A'&&c<='Z'||c>='a'&&c<='z')m1++;else if(c>='0'&&c<='9')m2++;else if(c==' ')m3++;else m4++;} printf("m1=%d,m2=%d,m3=%d,m4=%d\\n",m1,m2,m3,m4);retur...
求帮忙c语音改错!输入一个以回车结束的字符串(少于80个字符),再输入一...
include<stdio.h>void main(){ char a[80],c; int b,d=0; printf("a="); gets(a); printf("请输入一个字符"); c=getchar(); for(b=0;a[b]!='\\0';b++) { if(a[b]==c) d++; } printf("times: %d\\n",d); puts(a);} ...
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语言怎样才能输入一行字符,以回车作为结束标志,分别统计出大写字母,小 ...
因为字符串中有空格所以不能使用scanf函数来接收键盘输入的字符串,因为scanf遇到空格和回车结束输入,所以需要使用gets来接收键盘输出的字符串,接着依次判断并累加,最后输出即可。参考代码:include <stdio.h>int main() {int a=0,b=0,c=0,d=0,f=0,i;char ch[100];gets(ch); for(i=0;ch...
编写程序,输入一个以回车符结束的字符串(少于 80个字符),将该字符串...
解题思路:声明一个大于或等于80长度的字符数组,例如char a[100]。使用gets()函数输入字符串,该字符串以回车符作为结束标记。获得字符串的长度,以该长度值-1作为起点,以0作为终点,循环输出字符。注意:获得字符串长度可以用<string.h>库的strlen()函数,该函数返回字符串的实际长度,其中不包含空...