VFP数据库

函数LEN(STR(12345678901))的返回值是();函数LEN(DTOC(DATE()))的返回值为()。

题目

函数LEN(STR(12345678901))的返回值是();函数LEN(DTOC(DATE()))的返回值为()。

参考答案和解析
正确答案:10;8
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

编写一个函数findStr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。

函数ReadWrite()实现从文件in.dat中读取两个字符串并调用函数findStr(),最后把结果输出到文件out.dat中。

注意:部分程序已经给出。

请勿改动主函数main()和其他函数中的任何内容,仅在函数findStr()的花括号中填入你编写的若干语句。

include <stdio.h>

include <string.h>

include <conio.h>

int findStr(char *str,char *substr)

{

}

main()

{

char str[81],substr[3];

int n;

clrscr();

printf("输入原字符串");

gets(str) ;

printf("输入子字符串:");

gets(substr);

puts(str);

puts(substr);

n=findStr(str, substr);

printf("n=%d\n", n);

ReadWrite();

}

ReadWrite()

{

char str[81],substr[3],ch;

int n, len,i=0;

FILE *rf, *wf;

rf=fopen("in.dat", "r");

wf=fopen("out.dat", "w");

while(i<25)

{

fgets(str, 80, rf);

fgets(substr, 10, rf);

len=strlen(substr)-1;

ch=substr[len];

if(ch=='\n' || ch==0xla)substr[len]=0;

n=findStr(str, substr);

fprintf(wf, "%dkn", n);

i++;

}

fclose(rf);

fclose(wf);

}


正确答案:int findStr(char *strchar *substr) { int n; char *p *r; n=0; while( *str ) { p=str; r=substr; while(*r) if(*r==*p) { r++; p++; } else break; if(*r=='\O') n++; str++; } return n; }
int findStr(char *str,char *substr) { int n; char *p , *r; n=0; while( *str ) { p=str; r=substr; while(*r) if(*r==*p) { r++; p++; } else break; if(*r=='\O') n++; str++; } return n; } 解析:该程序属于按条件查找类型的题目,考核的知识点为:
(1)在给定的字符串中查找指定字符;
(2)统计查找后满足条件的个数。
本题的解题思路是:对原字符串中的字符进行扫描,若原字符串中含有子字符串,即原字符串的其中一部分与子字符串完全相同时,统计出个数。判断原字符串是否含有子字符串,可以将原字符串中的元素逐个与子字符串相比较,当两字符串中各个元素都相同且子字符串结束时,则证明原字符串包含一个子字符串。在统计个数的时候需要设置一个记录变量,每当原字符串包含子字符串一次的时候,该记录变量自动加1。
程序的流程是:首先通过键盘接收两个字符串,其中一个作为原字符串,另一个作为子字符串,然后调用findStr()函数对两字符串进行比较,处理后的结果由ReadWrite()函数写回文件out.dat中。
答案解析如下:
int findStr(char *str,char *substr)
{
int n;/*定义变量,n代表子符串出现次数*/
char p,r;/*定义指针变量*/
n=0;
while(str)
/*当原字符串不为空,即*str不为空时进入到外层while,此时循环中原字符串指针str和子字符串指针substr都指向其字符串内的第一个元素*/
{
p=str;/*将字符串的指针str赋给p*/
r=substr;/*将字符串的指针substr赋给r*/
while(*r)/*当子字符串也不为空时,即*r不空时进入内嵌的while循环*/
if(*r==*p)/*将原字符串与子字符串逐个元素进行比较看是否相等*/
{
r++;
p++;
}
/*将原字符串与子字符串分别后移一个字符*/
else
break;/*否则结束循环*/
if(*r=='\0')/*结束while循环的情况有两种:(1)比较完毕,即原字符串中包含该子字符串,此时子字符串的指针指向串尾(为“\0”);(2)未比较完毕,此时子字符串的指针不指向串尾。if语句的功能是通过判断子字符串的指针是否指向串尾进而来判断内层while循环结束的原因*/
n++;/*出现的次数加1*/
str++;/*牟字符串指针也指向下一个字符*/
}
return n;/*返回出现的次数*/
}

第2题:

函数f_str(char *str,char del)的功能是;将非申字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。例如,若str的值为“66981636666257”,del的值为“6”,调用此函数后,将输出3个子字符串,分别为“981”、“3”和“257”。请将函数f_str中(6)~(8)空缺处的内容填写完整。

[函数]

void f_str(char *str,char del)

{ int i,j,len;

len = strlen(str);

i = 0;

while (i<len) {

while ( (6) )

i++; /* 忽略连续的标志字符 */

/* 寻找从srt[i]开始直到标志字符出现的一个子字符串 */

j = i+1;

while (str[j] !=del && str[j] !='\0')

j++;

(7)="\0"; /* 给找到的字符序列置字符串结束标志 */

printf (" %s\t", & str [i]);

(8);

}

}


正确答案:函数f_str(char*strchar del)的功能是:将非空字符串str以分割标志字符为界线分割成若干个子字符串并输出。由函数说明和C代码可知该函数对给定的字符串进行从左至右的扫描找出不包含标志字符(变量del的值)的子字符串。在该函数C代码中变量i的初值为0len表示字符串的长度。当 ilen时进入循环体。如果当前字符(即str[i]的值)是标志字符则不做处理继续扫描以处理标志字符连成一串的情况。因此(6)空缺处所填写的内容是“str[i]==del”或其等价形式。 当退出第2个while循环时当前字符str[i]不是标志字符此时从str[i]开始继续寻找直到标志字符出现的…个子字符串(变量i保持不变用j标记寻找的过程)给找到的字符序列置字符串结束标志以便于后面语句的输出。因此(7)空缺处所填写的内容是“str[j]”。 printf输出语句结束之后就要继续寻找后面不包含标志字符的子字符串。此时需要把数组指针i移至j的后面再继续扫描。因此(8)空缺处所填写的内容是“i=j+1”。
函数f_str(char*str,char del)的功能是:将非空字符串str以分割标志字符为界线,分割成若干个子字符串并输出。由函数说明和C代码可知,该函数对给定的字符串进行从左至右的扫描,找出不包含标志字符(变量del的值)的子字符串。在该函数C代码中,变量i的初值为0,len表示字符串的长度。当 ilen时进入循环体。如果当前字符(即str[i]的值)是标志字符,则不做处理,继续扫描以处理标志字符连成一串的情况。因此(6)空缺处所填写的内容是“str[i]==del”或其等价形式。 当退出第2个while循环时,当前字符str[i]不是标志字符,此时从str[i]开始继续寻找,直到标志字符出现的…个子字符串(变量i保持不变,用j标记寻找的过程),给找到的字符序列置字符串结束标志,以便于后面语句的输出。因此(7)空缺处所填写的内容是“str[j]”。 printf输出语句结束之后,就要继续寻找后面不包含标志字符的子字符串。此时,需要把数组指针i移至j的后面,再继续扫描。因此(8)空缺处所填写的内容是“i=j+1”。

第3题:

标准函数Len的返回值为字符类型。()


正确答案:错误

第4题:

有如下程序段: Dim str As String*10 Dim i Str1="abcdefg" i=12 len1=Len(i) str2=Right(str1,4) 执行后,len1和str2的返回值分别是______。

A.12,abcd

B.10,bcde

C.2,defg

D.0,cdef


正确答案:C
解析:Len()是字符串长度检测函数,i=12,所以字符串长度为2。Right(字符串表达式 >,N1>)从字符串右起取N1个字符。

第5题:

有如下程序段: Dim str As String*10 Dim i Strl="abcdefg" i=12 lenl=Len(i) str2=Right(str1,4) 执行后,len1和str2的返回值分别是______。

A.12,abcd

B.10,bcde

C.2,defg

D.0,cdef


正确答案:C
解析: 执行后,len1和str2的返回值分别是2、defg。

第6题:

编写一个函数findStr(),该函数统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为“as”,函数返回值是6。

函数ReadWrite()的功能是实现从文件in40.dat中读取两个字符串,并调用函数findstr(),最后把结果输出到文件out40.dat中。

注意:部分源程序已给出。

请勿改动主函数main()和其他函数中的任何内容,仅在函数findStr()的花括号中填入你所编写的若干语句。

include<stdio.h>

include<string.h>

include<conio.h>

int findStr(char *str,char *substr)

{

main ( )

{

char str[81],substr[3];

int n;

clrscr();

printf("输入原字符串: ");

gets(str);

printf ("输入子字符串: ");

gets(substr);

puts(str);

puts(substr);

n=findStr(str,substr);

printf("n=%dkn",n);

ReadWrite();

}

ReadWrite()

{

char ch, str[81],substr[3];

int n,len, i=0;

FILE *rf,*wf;

rf=fopen("in40.dat","r");

wf=fopen("out40.dat","w");

while(i<5)

{

fgets(str,80,rf);

fgets(substr,10,rf);

len=strlen(substr)-1;

ch=substr[len];

if(ch=='\n'||ch==Oxla)

substr[len]=0;

n=findStr(str,substr);

fprintf(wf,"%dln",n);

i++;

}

fclose(rf);

fclose(wf);

}


正确答案:int findStr(char *strchar*substr) {int n; char *p*r; n=0; while(*str) { p=str; /*指针p指向字符串首地址*/ r=substr; /*指针r指向子字符串首地址*/ while(*r) if(*r==*p) /*如果子字符串的第一个字符等于字符串中的该字符则继续比较下一个字符*/ { r++; p++; } else break; /*否则退出循环*/ if(*r=='\0') /*如果子字符串在字符串中出现了一次*/ n++; /*则n加1进行统计*/ str++; /*指向字符串中的下一个字符*/ } return n; /*返回n*/ }
int findStr(char *str,char*substr) {int n; char *p,*r; n=0; while(*str) { p=str; /*指针p指向字符串首地址*/ r=substr; /*指针r指向子字符串首地址*/ while(*r) if(*r==*p) /*如果子字符串的第一个字符等于字符串中的该字符,则继续比较下一个字符*/ { r++; p++; } else break; /*否则退出循环*/ if(*r=='\0') /*如果子字符串在字符串中出现了一次*/ n++; /*则n加1,进行统计*/ str++; /*指向字符串中的下一个字符*/ } return n; /*返回n*/ } 解析:本题考查的知识点如下:
(1)指针的相关操作。
(2)强行退出———break的使用。
指针是C语言中的一个难点。在这里,我们要使用指针实现对数组的访问继而进行字符韵比较。使用数组存放字符串时,存放的字符个数要比数组的容量小1,因为数组最后一个位置存放的是空格或者结束标志位。我们可利用这一点来判断一个字符串是否已经结束。在循环结构中常常要出现强行退出的情况,这里要使用到bleak语句强行退出一层循环。当字符串中的某个字符与子字符串的第一个字符不同时,则将字符串中的下一个字符与子字符串中的第一个字符比较,而不是与子字符串中的第二个字符比较。

第7题:

下列函数中,其返回值为字符型数据的函数是______。

A.LEN()

B.VAL()

C.STR()

D.DATE()


正确答案:C

第8题:

下面函数的功能应该是:删除字符串str中所有与变量ch相同的字符,并返回删除后的结果,例如:若str=”ABCDABCD”,ch=”B”,则函数的返回值为:”ACDACD”

Function delchar(str As String,ch As String)As String

Dim kAs Integer,temp As String,ret As String

ret=””

For k=1 To Len(str)

temp=Mid(str,k,1)

If temp=ch Then

ret=ret&temp

End If

Next k

delchar=ret

End Function

但实际上函数有错误,需要修改,下面的修改方案中正确的是( )。

A.把ret=ret&temp改为ret=temp

B.把If temp=ch Then改为Iftemp<>ch Then

C.把delchar=ret改为delchar=temp

D.把ret=””改为temp=””


正确答案:B
解析:Mid函数用于提取字符串中的指定位数。Len函数的作用是返回串的长度。本题中,Fork=1 To Len(str),语句的作用是每次循环提取str串中的一个字符,语句temp=Mid(str,k,1)的作用是将提取的字符存入字符变量temp中,然后将temp和用户欲删除的字符做比对,若不同,则将此字符插入的字符串ret的末尾。循环结束ret中保存的就是不包含用户欲删除字符的字符串,也就是题目要求的字符串了。所以选B。

第9题:

有如下程序段: Dim str As String * 10 Dim i str1 = "abcdefg" i = 12 len1 = Len(i) sir2 = Right(str1, 4)执行后,len1和str2的返回值分别是( )。

A.12,abcd

B.10,bcde

C.2,defg

D.0,cdef


正确答案:C
解析:i的值为12,长度为2。Right()函数的功能是从字符串的右边截取n个字符,所以str2的值为"defg"。

第10题:

阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。
[说明]
函数removeDuplicates(chai *str)的功能是移除给定字符串中的重复字符,使每种字符仅保留一个,其方法是:对原字符串逐个字符进行扫描,遇到重复出现的字符时,设置标志,并将其后的非重复字符前移。例如,若str指向的字符串为"aaabbbbscbsss",则函数运行后该字符串为"absc"。

[C代码] voidremoveDuplicates(char *str) { inti,len=strlen(str); /*求字符串长度*/ if(______)return; /*空串或长度为1的字符串无需处理*/ for(i=0;i<len;i++){ int flag=0; /*字符是否重复标志*/ int m; for(m=______; m<len;m++){ if(Str[i]==str[m]){ ______; 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];______; } str[______]='\0'; /*设置字符串结束标志*/ } } }


答案:
解析:
len<2 或len<=1 或等价表示
i+1 或等价表示
flag=1 或给flag赋值为任何一个不是0的值
idx++ 或idx=idx+1 或等价表示
idx 或等价表示