当前位置: 代码迷 >> C语言 >> 练习作业题挺难的,大家一起来看看
  详细解决方案

练习作业题挺难的,大家一起来看看

热度:344   发布时间:2006-10-02 09:13:21.0
练习作业题挺难的,大家一起来看看

1,编写一个程序,用于接收一个字符串,并统计某字符在改字符串中出现的次数。

提示:
(1),使用gets函数接收字符串.
(2),从头开始一个字符一个字符地检索字符串,判断是否等于某字符,如果等于,则计数器加1,并输出某字符每次出现的位置(下标加1),直到遇到字符结束符'\0'.

2,编写一个程序,用于接收两个字符串,然后比较这两个字符串,输出比较结束.



3,编写一个程序,用语接收两个字符串,判断第一个字符串是否包含第二个字符串,如果包含说明第二个字符串在第一个字符串中的位置,第二个字符串第一个字符串在第一个字符串中出现的位置。(草,这个题听书上写的我都不懂,作毛!晕死)



以上3题 还请大家给点提示,刚学到C语言 字符串,会做的话加我QQ49271743,还忘请教!

搜索更多相关的解决方案: 作业  练习  

----------------解决方案--------------------------------------------------------

以前有人问过,搜一搜


----------------解决方案--------------------------------------------------------
我想找个人讨论讨论
不知道 2楼的是否愿意和交流呢
----------------解决方案--------------------------------------------------------
我想找个人讨论讨论
不知道 2楼的是否愿意和交流呢

----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 1000
void Sort(char *);
void Swap (char *,char *);
void Statistics(char *ptr);
int main (void){
char arr[SIZE];
printf ("输入字符串:\n\n");
fgets(arr,SIZE,stdin);
fflush(stdin);
Sort(arr);
printf ("\n从小到大排序字符窜:\n");
printf ("\n%s\n",arr);
Statistics(arr);
exit(0);
}
/*统计函数*/
void Statistics(char *ptr){
int i,j,t=1;
char ch;
i=0;
j=i+1;
while (ptr[i]!='\0'){
ch=ptr[i];
t=1;
for (;ptr[i]==ptr[j];t++)
j++;
printf ("\n字符\'%c\'共有%d个.\n",ch,t); //输出遇到换行,表示回车('\n')或换行('\r')符
i=j;
j=i+1;
}
return ;
}
/*排序函数(从小到大)*/
void Sort (char *pt){
unsigned int i,j;
for (i=0,j=i+1;pt[j]!='\0';){
if (pt[i]<=pt[j])
j++ ;
else
Swap(pt+i,pt+j);
if (pt[j]=='\0'){
i++;
j=i+1;
}
}
return ;
}
/*交换值函数*/
void Swap(char *ptr,char *poi){
char temp;
temp=*ptr;
*ptr=*poi;
*poi=temp;
return ;
}

这个是我以前帮一个MM写的作业,和第一题差不多,你自己参考一下。其他也差都很简单,自己好好练练,你的书还没读透。
----------------解决方案--------------------------------------------------------
以下是引用yansongyang在2006-10-2 9:13:21的发言:

1,编写一个程序,用于接收一个字符串,并统计某字符在改字符串中出现的次数。

提示:
(1),使用gets函数接收字符串.
(2),从头开始一个字符一个字符地检索字符串,判断是否等于某字符,如果等于,则计数器加1,并输出某字符每次出现的位置(下标加1),直到遇到字符结束符'\0'.
提示都写的很清楚了. while(str[i]!='\0'){ if(str[i]==x) count++; i++;}
2,编写一个程序,用于接收两个字符串,然后比较这两个字符串,输出比较结束.

模拟strcmp函数,就是两个字符串对应位置上的字符比较,返回第一次出现的前者与后者的差值(非0).若有一者不够长,则当作0(这里就是0,而非'0')相减.若两者是一样的,则返回0了.
len=strlen(str1)<strlen(str2)?strlen(str1):strlen(str2);
while(i<len)
{
if(str1[i]!=str2[i])
{
return(str1[i]-str2[i]);
}
i++;
}
if(strlen(str1)!=strlen(str2))
{
if(strlen(str1)>len)
{
return(str1[len]);
}
else
{
return(-1*str2[len]);
}
}
else
{
return(0);
}


3,编写一个程序,用语接收两个字符串,判断第一个字符串是否包含第二个字符串,如果包含说明第二个字符串在第一个字符串中的位置,第二个字符串第一个字符串在第一个字符串中出现的位置。(草,这个题听书上写的我都不懂,作毛!晕死)
这个是模式匹配问题.
朴素模式匹配:将子串对应与主串比较,若此次匹配不成功,则i主串移动一位,重复比较,直到i>=strlen(主)-strlen(子);结束.其中有一次匹配成功则返回匹配成功的位置(i);
for(i=0;i<=strlen(s)-strlen(t);i++)
{
for(j=0;j<strlen(t);j++)
{
if(str[i+j]!=str[j])
{
break;
}
}
if(j>=strlen(t))
{
return(i);
}
}

还有一个是快速模式匹配,这个算法挺难懂的,一时也说不清,楼主查一下相关资料,自己看看吧.



以上3题 还请大家给点提示,刚学到C语言 字符串,会做的话加我QQ49271743,还忘请教!


----------------解决方案--------------------------------------------------------

哎发晚了不过还是要先帖出来
#include<stdio.h>
main()
{char str[50],ch;
int i,j=0;
gets(str);
printf("inputer a character:");
ch=getchar();
for(i=0;i<50;i++)
{if(str[i]==ch)
{j++;printf("character number is:%d\n",i+1);}
if(str[i]=='\0') break;
}
printf("this %c have %d times in sentence",ch,j);
getch();
}



----------------解决方案--------------------------------------------------------
讨论不分先后.多个人的程序就有不同的思路.
集思广益嘛.
----------------解决方案--------------------------------------------------------

谢谢以上 的提示了!! 还忘大家以后多多教教我了!
呵呵 !


----------------解决方案--------------------------------------------------------

2,编写一个程序,用于接收两个字符串,然后比较这两个字符串,输出比较结束.

3,编写一个程序,用语接收两个字符串,判断第一个字符串是否包含第二个字符串,如果包含说明第二个字符串在第一个字符串中的位置,第二个字符串第一个字符串在第一个字符串中出现的位置。(草,这个题听书上写的我都不懂,作毛!晕死)

这2道题能不能用最简单的 因为我现在就学到字符串了
6楼和7楼写的我都看不懂


----------------解决方案--------------------------------------------------------
  相关解决方案