当前位置:首页 > 芯闻号 > 充电吧
[导读]字符串方面的只是,用C语言自己已经处理了很多了,有点经验了,但是还是有一些新的内容,值得关注,比如这里学习发现的qsort,和bsearch函数,以前不曾用过。常用的输入输出控制方式 1、数据量不定w

字符串方面的只是,用C语言自己已经处理了很多了,有点经验了,但是还是有一些新的内容,值得关注,比如这里学习发现的qsort,和bsearch函数,以前不曾用过。

常用的输入输出控制方式 

1、数据量不定while(scanf(“%d”,&n) != EOF)
2、先给数据量scanf(“%d”,&n); while (n--){}
3、以某数值或符号结束
      while(scanf(“%d”,&n),n)
1、直接输出数据然后换行
2、每组数据后follow一个空行
3、每两组数据之间between一个空行

对于字符串输入的处理: C语法:
char buf[20]; 
gets(buf); 
C++语法:
如果用string buf;来保存:
getline( cin , buf ); 
如果用char buf[ 255 ]; 来保存:
        cin.getline( buf, 255 );


scanf(“ %s%s”,str1,str2),在多个字符串之间用一个或多个空格分隔;
若使用gets函数,应为gets(str1); gets(str2); 字符串之间用回车符作分隔。
通常情况下,接受短字符用scanf函数,接受长字符用gets函数。
而getchar函数每次只接受一个字符,经常c=getchar()这样来使用。


getchar():读入一个字符
  whlie((ch=getchar())!=EOF)   {
     
  }
  gets():读入一行
  while(gets(buf)!=NULL) {
 
  }
案例分析

int MyStrchr(char * s,  char c)   //看s中是否包含 c
{
	for( int i = 0; i < strlen(s) -1 ; i ++ )
		if( s[i] ==  c)
			return 1;
	return 0;
}  哪里不好?这个函数执行时间和 s 的长度是什么关系?


 strlen 是一个o(N)的函数,每次判断 i < strlen(s) – 1 都要执行,太浪费时间了



字符串内元素查找

#include#include/**
char *strstr(char *s1, char *s2);

Scans a string for the occurrence of a given substring.
查找给定字符串在字符串中第一次出现的位置,返回位置指针
strstr scans s1 for the first occurrence of the substring s2.

Return Value

strstr returns a pointer to the element in s1, where s2 begins (points to s2 in s1). If s2 does not occur in s1, strstr returns null.

如果找到,返回指针,指向s1中第一次出现s2的位置
如果找不到,返回 NULL

类似的还有查找一个字符出现的位置strchr

*/
char str[] =    "lazy";
char string[] = "The quick brown dog jumps over the lazy fox";
int main( void )
{
   char *pdest;
   int  result;
   pdest = strstr( string, str );
   result = pdest - string + 1;
   if( pdest != NULL )
      printf( "%s found at position %dnn", str, result );
   else
      printf( "%s not foundn", str );
}

单词排序 输入若干行单词(不含空格),请按字典序排序输出。大小写有区别。单词一共不超过100行,每个单词不超过20字符,并查找输入字符串的位置

#include#include#includechar Word[5][30];

/**
函数原型:void qsort(void *base, int nelem, int width, int(*fcmp)(const void *, const *))
头文件:#include是否是标准函数:是
函数功能:对记录进行从小到大的快速排序。参数base指向存放待排序列的数组的首地址,nelem为数组中元素的个数,width为每个元素的字节数,int(*fcmp)(const void *, const *)为由用户提供的比较函数。
返回值:无
*/

/**
函数原型:void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *))
头文件:#include是否是标准函数:是
函数功能:二分法查找。参数key指向要查找的关键字的指针,base指向从小到大的次序存放元素的查找表,nelem指定查找表元素的个数,width指定查找表中每个元素的字节数,int(*fcmp)(const void *, const *)为由用户提供的比较函数。
返回值:如果没有找到匹配的值返回0,否则返回匹配项的指针。
*/
int MyCompare( const void * e1, const void * e2 )
{
	return strcmp( (char * ) e1, (char * ) e2 );
}
int main()
{
	int n = 0; //单词个数
	char obj[20];
	char *search;
	while(scanf("%s",Word[n]) != EOF && Word[n][0])
		n ++;
	qsort(Word, n,sizeof(Word[0]),MyCompare);
	int i;
	for(i = 0; i < n; i ++ )
		printf("%sn",Word[i]); // ‘n’表示换行
    printf("排序完成,输入要查找的单词n");
    gets(obj);
    search=(char*)bsearch(obj,Word,5,sizeof(Word[0]),MyCompare);
    if(search)
    {
        printf("所查找的位置为:%d",(search-Word[0])/30+1);
    }
	return 0;
}

字串判断 判断s里面的元素是不是都能在t里面找到

#includechar s[100010];
char t[100010];
int main(){
	int i,j;
	while (scanf( "%s%s",s,t) > 0 ) {
 		i = 0;
		for(j = 0 ; s[i] && t[j]; j ++ )        {
			if( t[j] == s[i] )  i ++;
		}
		if ( s[i] == 0)  // ‘’ 的Ascii 码就是 0
			printf("Yesn");
		else
			printf("Non");
	}
	return 0;
}

判断第一个字符串是不是第二个的字串
#include#includechar s[100];
char t[100];
int main()
{
	int len_s,len_t,i,flag=0;
	char *p;
	while (scanf( "%s%s",s,t) > 0 )
	{
        len_t=strlen(t);
        len_s=strlen(s);
 		for(p=s,i=0;i<=len_t-len_s;i++)
 		{
             if(strncmp(p,t,len_s)==0)
 		     {
 		         flag=1;
 		         printf("yes!n");
 		         break;
 		     }
 		     p++;//每次指针向后移动
 		}
 		if(flag==0)
 		{
 		    printf("no!n");
 		}

	}
	return 0;
}









本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭