考研2023年暨南大学( )

对于整型数组a[8]和b[8],下列说法正确的是【 】

A、a=b是合法的

B、表达式a+1和a+2不能比较大小

C、赋值表达式*(a+1)=*(b+2)是合法的

D、a和&(*(a))的值不同

赋值表达式*(a+1)=*(b+2)是合法的

考试2016年秋程序员软考( )

设数组 a[0..n-1,0..m-1](n>1,m>1)中的元素以行为主序存放,每个元素占用4个存储单元,则数组元素 a[i,j](0≤i<n,0≤j<m)的存储位置相对于数组空间首地址的偏移量为【 】。

A、(j*m+i)*4

B、(i*m+j)*4

C、(j*n+i)*4

D、(i*n+j)*4

(i*m+j)*4

等级考试2014年秋程序员软考( )

阅读以下说明和C函数,填补代码中的空缺(1)~(5)。

函数 removeDuplicates(char*st)的功能是移除给定字符串中的重复字符,使每种字符仅保留一个,其方法是:对原字符串逐个字符进行扫描,遇到重复出现的字符时,设置标志,并将其后的非重复字符前移。例如,若st指向的字符串为“ aaabbbbscbsss,则函数运行后该字符串为“absc”。

【C代码】

void remove Duplicates(char *str){

int i,len=strlen(str);/*求字符串长度*/

if(__(1)__) return;/*空串或长度为1的字符串无需处理*/

for( i=0;i<len; i++){

int flag =0;/*字符是否重复标志*/

int m:

for(m=__(2)__;m<1en;m++){

if( str[i]== str[m]){

__(3)__;break;

}

}

if (flag ){

int n, idx= m;

/*将字符串第idx字符之后、与str[i]不同的字符向前移*/

for( n=idx+1; n<len; n++)

if( str[n]!= str[i]){

str[idx]= str[n];

__(4)__;

}

str[__(5)__]='\0';/*设置字符串结束标志*/

}

}

}

(1)len<2或len<=1或其等价形式

(2)i+1或其等价形式

(3)fag=1或给fag赋值为任何一个不是0的值

(4)idx++或idx=idx+1或其等价形式

(5)idx或其等价形式

根据注释,空(1)处应填入的内容很明确,为“len<=1”或其等价表示。

要消除字符串中的重复字符,需要扫描字符串,这通过下面的代码来实现

for( i=0;i<len; i++)[

int flag=0;/*字符是否重复标志

int m;

for(m=__(2)__;m<1en;m+)

if( str[i]== str[m]){

__(3)__;break;

}

}

}

上面代码中,循环变量i用于顺序地记下字符串中每个不同字符首次出现的位置,那么后面的处理就是从i的下一个位置开始,考查后面的字符中有没有与它相同的(srt[i]==strm]),因此空(2)应填入“i+1”或其等价表示。显然,当发现了重复字符时,应设置标志,空(3)处应填入“fag=1”或者给fag赋值为任何一个不是0的值。

根据说明,发现与str[i]相同的第一个字符str[m]后,需要将其后所有与sti不同的字符前移,以覆盖重复字符str[m],对应的代码如下

f(flag){

int n, idx=m;/*将字符串第idx字符之后、与stri不同的字符向前移*/

for( n =idx+1; n<len; n++)

if(str[n]!= str[i])){

str[idx]= str[n];

__(5)__;

str[__(5)__]='';/*设置字符串结束标志*/

}

初始时,ix等于m,使str[n]覆盖 str[idx]后,需要将idx自增,以便将后面与str[i]不同的字符继续前移,因此空(4)处应填入“idx++”或等价形式。由于后面字符前移了,所以字符串结束标志也需重新设置,空(5)处应填入“idx”。

等级考试2014年秋程序员软考( )

设数组a[0..n-1,0..m-1](n>1,m>1)中的元素以行为主序存放,每个元素占用1个存储单元,则数组元素a[i,j](0<i<n,0<j<m)的存储位置相对于数组空间首地址的偏移量为【 】。

A、j*m+i

B、i*m+j

C、j*n+i

D、i*n+j

i*m+j

对于元素a[i,j],按行存储方式下,其前面共有i行(行下标为0至行下标为i-1)、每行m个元素,合计i*m个元素。数组a中行下标为i的元素有a[i,0]、a[i,1]、…、a[i,j-1]、a[i,j]、…、a[i,m-1],显然在该序列中,a[i,j]之前有j个元素,因此,数组元素a[i,j](0<i<n,0<j<m)之前共有i*m+j个元素,由于每个占用1个存储单元,故该元素的存储位置相对于数组空间首地址的偏移量为i*m+j。

考博2004年●秋上海工理大学( )

请编写程序将一个二维数组行和列元素互换,存到另一个二维数组中,例如:

A= ⟹ B=