在传感器检查中,在故障显示中的S、I字符表示,()
第1题:
A.s表示的是第一个字符i的地址,s+1表示的是第二个字符t的地址
B.t指向另外的字符串时,字符串的长度不受限制
C.t变量中存放的地址值可以改变
D.s中只能存放16个字符
第2题:
以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。#include <stdio.h>#include <ctype.h>main(){ char s[80],d[80]; int i,j; gets(s); for(i=j=0;s[i]!=’\0’;i++) if() {d[j]=s[i];j++} d[j]=’\0’; puts(d);}
第3题:
试题四(共 15分)
阅读以下说明和C函数,将解答填入答题纸的对应栏内。
【说明】
函数del_substr(S,T)的功能是从头至尾扫描字符串 S, 删除其中与字符串T相同的所有子串,其处理过程为:首先从串 S 的第一个字符开始查找子串 T,若找到,则将后面的字符向前移动将子串T覆盖掉,然后继续查找子串T,否则从串S的第二个字符开始查找,依此类推,重复该过程,直到串S的结尾为止。该函数中字符串的存储类型 SString
定义如下:
typedef struct {
char *ch; /*串空间的首地址*/
int length; /*串长*/
}SString;
【C函数】
void del_substr(SString *S, SString T)
{
int i, j;
if ( S->length < 1 || T.length < 1 || S->length < T.length )
return;
i = 0; /* i为串S中字符的下标 */
for ( ; ; ) {
j = 0; /* j为串T中字符的下标 */
while ( i < S->length && j < T.length ) { /* 在串S中查找与T相同的子串 */
if ( S->ch[i]==T.ch[j] ) {
i++; j++;
}
else {
i = (1) ; j = 0; /* i值回退,为继续查找T做准备 */
}
}
if ( (2) ) { /* 在S中找到与T相同的子串 */
i = (3) ; /* 计算S中子串T的起始下标 */
for(k = i+T.length; k<S->length; k++) /* 通过覆盖子串T进行删除 */
S->ch[ (4) ] = S->ch[k];
S->length = (5) ; /* 更新S的长度 */
}
else break; /* 串S中不存在子串T*/
}
}
第4题:
在Java中,转义字符\n表示【 】。
第5题:
下列给定程序中,函数p roc的功能是:先将字符串s 中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: include<stdlib.h> include<conio.h> include<stdio.h> include<string.h> void proc(char*s,char*t) { int i,s1; s1=strlen(s); for(i=0;i<s1;i++) //****found**** t[i]=s[s1]; for(i=0;i<s1;i++) t[s1+i]一s[i]; t[2*s1]=\O0; } void main { char s[100],t[100]; system("CLS"); print{("\nPlease enter string s:"); scanf("%s",s); proc(s,t); printf("The result is:%s\n",t); }
错误:t[i]=s[l];
正确:t[i]=s[i];
【解析】函数proc首先要实现将数组s中的元素顺序放在数组t中,即数组t中下标为i的元素在数组S中下标也为i,因此“t[i]=s[s1];”应改为“t[i]=s[i];”。
第6题:
下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。
#include <stdio.h>
main ()
{ int i; char? s[21],*p;
for (i=0;i<20;i++)
s[i]=getchar ();
s[i]=【6】;
p =【7】
while (*p)putchar? (【8】);
}
第7题:
以下函数的功能是删除字符串s中的所有数字字符,请填空。void dele(char *s){ int n=0,i; for(i=0;s[i];i++) if() s[n++]=s[i]; s[n]=;}
第8题:
A.I+S≡G+T
B.I+G≡S+T
C.I+G+X≡S+T+M
D.I≡S
第9题:
[说明1]
函数void convelt(chal *a,int n)是用递归方法将一个正整数n按逆序存放到一个字符数组a中,例如,n=123,在a中的存放为'3'、'2'、'1'。
[C函数1]
void convert(char *a,int n)
{ int i;
if((i=n/10)!=0; convert( (1) ,i);
*a= (2) ;
}
[说明2]
函数int index(char *s,char *t)检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则返回-1。
[C函数2]
int index(char *s,char *t)
{ int i,j=0;k=0;
for(i=0;s[i]!:'\0';i++)
( for( (3) ;(t[k]!='\0')&&(s[j]!='\0')&&( (4) );j++,k++);
if( (5) ) return(i);
}
return(-1);
}
第10题:
在字符串S中查找逗号字符(ASCII码位2CH),找到显示Y,否则显示N。
参考答案:DATES SEGMENT
S DB “E,4555@!,”
CNT EQU $-S
DATES ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV BX,OFFSET S
MOV CX,CNT
L1: MOV AL,[BX]
CMP AL,2CH
JZ L2
INC BX
DEC CX
JNZ L1
MOV DL,’N’
MOV AH,02H
INT 21H
JMP L3
L2: MOV DL,’Y’
MOV AH,02H
INT 21H
L3: MOV AH,4CH
INT 21H
CODES ENDS
END START