“液体是无回声的,固体是有回声的”,这种看法是
A.正确的B.不正确的C.固体是有回声的D.液体是有回声的E.液体是无回声的
参考答案:B
分化
阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明] 设一个环上有编号为0~n-1的n粒颜色不尽相同的珠子(每粒珠子颜色用字母表示,n粒珠子的颜色由输入的字符串表示)。从环上的某两粒珠子间剪开,则环上珠子形成一个序列然后按以下规则从序列中取走珠子:首先从序列左端取走所有连续的同色珠子;然后从序列右端在剩下的珠子中取走所有连续的同色珠子,两者之和为该剪开处可取走珠子的粒数。在不同位置剪开,能取走的珠子也不尽相同。 本程序所求的是在环上哪个位置剪开,按上述规则可取走的珠子粒数最多。程序中用数组存储字符串。例如:10粒珠子颜色对应字符串为“aaabbbadcc”,在0号珠子前剪开,序列为aaabbbadcc,从左端取走3粒a色珠子,从右端取走2粒c色珠子,共取走5粒珠子。若在3号珠子前剪开,即bbbadccaaa,共取走6粒珠子。 [C函数] int count(char*s,int start,int end) inti,c=0,color=s[start],step=(start>end)-1:1; for(i=start;s[i]==color;i+=step) if(step>0 && i>end || (1) ) break; (2) ; return c; void main() char t,s[120]; int i,j,C,len,maxc,cut=0; printf("请输入环上代表不同颜色珠子字符串:"); scanf("%s",s ); len=strlen(s); for(i=maxc=0;i<len;i++) /*尝试不同的剪开方式*/ c=count(s,0,len-1); if(c<len) C+=count( (3) ); if(c>maxc)cut=i;maxc=c; ) /*数组s的元素循环向左移动一个位置*/ t=s[0]; for(j=1;i<len;i++) (4) ; (5) ; printf("在第%d号珠子前面剪开,可以取走%d个珠子.\n",cut,maxc);