下列函数中,能把字符串中所有小写字母改为大写的函数是()。

题目
单选题
下列函数中,能把字符串中所有小写字母改为大写的函数是()。
A

Lcase(x)

B

Ucase(x)

C

Len(x)

D

Chr(x)

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

●试题四

请补充函数fun(),该函数的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入"Are you come from Sichuan?",则输入"are you come from sichuan?"。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

#include<stdio.h>

#include<string.h>

#include<conio.h>

char *fun(char tt[])

{

int i;

for(i=0;tt[i];i++)

{

if((tt[i]>=′A′)&&( (1) ))

(2) ;

}

return ( (3) ) ;

}

main()

{

char tt[81];

printf("\nPlease enter a string:");

gets(tt);

printf("\nThe result string is: \n%s",

fun(tt));

}


正确答案:

●试题四

【答案】(1p && p->data !e p && *p.data !e2p->Lchild *p.Lchild

3s->Rchild *s.Rchild4p->Lchild *p.Lchild

5p==pp->Lchild p *pp.Lchild

【解析】(1)程序的第一条语句是变量的声明及赋初值,p指向二叉查找树的根。接下来从while循环的注释部分可以看出,该循环的功能是查找键值为e的结点。当循环的判断条件e<p->data时,进入左子树查找,否则到右子树查找。程序中没有关于找到结点的处理代码,即循环内部只处理了没找到结点的情况,所以循环条件应该是当找到键值为e的结点时退出循环。另外,应注意一个隐含的限制条件"p=NULL"时,表示已经查找完毕,无需进入循环。通过分析,(1)应填p && p->data!=e。(2if程序段是处理第三种情况的,由循环中的语句"s=s->Rchild;"可看出,s用于要删结点的左子树中查找键值最大的结点,所以s的初值应是要删除结点的左子结点。可见,(2)应填写p->Lchild。(3)根据前面所述的二叉树规则可知,要找的结点s应是左子树中查找键值最大的结点,所以s的初值应是要删除结点的左子结点。可见,(3)应填p->Rchild。本题把①、②结合在一起进行处理,所以引入了一个中间变量c,用c来存储用于替换p的结点。现在的关键问题是什么条件可以使这两种情况和在一起,因为若删除的结点为叶子结点时,p->Rchildp->Lchild都为NULL;若删除的结点有一个子结点时,如果有左子结点,则p->Rchildp->Rchild;如果有右子结点,则p->LchildNULL。当p->Lchild不为NULL时,说明是第二种情况,p结点含左子结点,所以c=p->Lchild;当p->LchildNULL时,说明有两种可能:

第一:p->Rchild也为NULL,则p是叶子结点。

第二:p->Rchild不为NULL,则p是有右子结点的结点。

这两种情况都可以用c=p->Rchild,因为当p是叶子结点的时候用NULL代替p的位置即可,所以第(4)应填p->Lchild。在程序中很多地方都出现了变量pp,其实只要仔细看一下前面的程序就知道,pp一直指向的是p结点的前一个结点,即p的父结点,所以(5)的作用是判断p是其父结点的左子结点还是右子结点,(5)应填pp->Lchild=p

 

第2题:

函数ReadDat()的功能是实现从文件IN73.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数CovertCharD(),该函数的功能是:以行为单位把字符串中的所有小写字母改成该字母的上一个字母,如果是字母a,则改成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数 WriteDat()把结果xx输出到文件OUT73.DAT中。

例如:原文Adb Bcdza

abck LLhj

结果Aca Bbcyz,

zabj LLgi

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

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

请勿改动主函数main()、读函数ReadDat()和写函数Wiltedat()的内容。

试题程序:

include<stdio. h>

include<string. h>

include<conio. h>

char xx[50] [80];

int maxline=0;

int ReadDat (void);

void WriteDat (void);

void CovertCharD ( )

{

}

void main ( )

{

clrscr ( );

if (ReadDat ( ) )

{

printf ( "数据文件IN73 .DAT 不能打开\n\007");

return;

}

CovertCharD ( );

WriteDat ();

}

int ReadDat ()

{

FILE *fp;

int i=0;

char *p;

if ( ( fp= fopen ( "IN73. DAT", "r" ) ) = =NULL) return

while (fgets (xx [i], 80, fp) !=NULL)

{

p=strchr (xx [i] , '\n' );

if(p)

*p=0;

i++;

}

maxline=i;

fclose (fp);

return 0;

}

void WriteDat (void)

{

FILE *fp;

int i;

clrscr ( );

fp=fopen("OUT73 .DAT", "w");

for (i=0; i<maxline; i++)

{

printf ( "%s\n" ,xx [i] );

fprintf (fp, "%s\n" ,xx[i] );

}

fclose (fp);

}


正确答案:void CovertCharD ( ) { int i; char *pf; for ( i=0; imaxline; i++ ) { pf=xx [i]; /*指针pf指向各行的首地址*/ while (*pf) if (*pf=='a') /*如果是字母a则改成字母z*/ { *pf='z'; pf++; /*指向下一个字符*/ } else if(*pf>='b'&& *pf='z') /*小写字母'b'到'z'改成该字母的上一个字母*/ { *pf-=l; Pf++; /*指向下一个字符*/ } else pf++; /*如果不满足条件则不变字符指向下一个字符*/ } }
void CovertCharD ( ) { int i; char *pf; for ( i=0; imaxline; i++ ) { pf=xx [i]; /*指针pf指向各行的首地址*/ while (*pf) if (*pf=='a') /*如果是字母a,则改成字母z*/ { *pf='z'; pf++; /*指向下一个字符*/ } else if(*pf>='b'&& *pf='z') /*小写字母'b'到'z'改成该字母的上一个字母*/ { *pf-=l; Pf++; /*指向下一个字符*/ } else pf++; /*如果不满足条件,则不变字符,指向下一个字符*/ } } 解析:本题考查的知识点如下:
(1)字符串的计算。
(2)循环结构的使用。
(3)使用指针实现对数组的访问。
本题中,将字符存放在二维数组中,以行为字符处理的基本单位,可以定义一个指针,指向每一行字符。初始时,指针指向每一行的第一个元素,增加指针地址就可以实现对一行数据的完全访问,要将所有小写字母改成它的前一个字母,小写字母的ASCⅡ码是连续的,可直接将其ASCⅡ码减1,则得要求的字符。注意:字母a要单独处理,其他字符保持不变。

第3题:

请编写函数fun(),该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。

注意:部分源程序给出如下。

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

试题程序:

include<string. h>

include<stdio, h>

define N 80

int fun (char *s)

{

}

main ( )

{

char line [N];

int num=0;

printf ("Enter a string: \n ");

gets (line);

num=fun (line);

printf ("The number of word is: %d\n\n ",

num);

}


正确答案:int fun(char *s) { int i j=0; for (i=0;s [i]!='\0' ;i++) if(s[i] !=' '&&(s[i+l]==' '||s[i+1]=='\O')) /*如果一个字母的下一个字符为空格或者结束标记则表示一个单词结束*/ j++; return j; /*返回单词个数*/ }
int fun(char *s) { int i, j=0; for (i=0;s [i]!='\0' ;i++) if(s[i] !=' '&&(s[i+l]==' '||s[i+1]=='\O')) /*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/ j++; return j; /*返回单词个数*/ } 解析:判断单词的个数,我们首先想到的是程序怎样识别是一个单词,也即循环语句中的fir(i=0;s[i]!="\0";i++),本题重点是if句中的条件表达方式。

第4题:

函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组xx中,请编制函数ConvertCharA,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母Z,则改写成字母a,大写字母和其他字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。最后main函数调用函数WriteDat把结果xx输出到文件out.dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序存放在test.c文件中。 请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。


正确答案:
【审题关键句】以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,大小写不变,其他字符不变。
【解题思路】
①定义整型循环变量i、j。

【参考答案】

第5题:

下列程序的功能是:把s字符串中的所有字母改成该字母的下一个字母,字母z改成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT(),读取in36.dat中的字符串,并把结果输出到文件out36.dat中。

例如:s字符串中原有的内容为Mn 123Zxy,则调用该函数后,结果为No 123Ayz。

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

请勿改动主函数main()和输入输出函数readwriteDAT()的内容。

试题程序:

include<stdio. h>

include<string. h>

include<conio, h>

include<ctype, h>

define N 81

void readwriteDAT ();

void chg(char as)

{

}

main ( )

{

char a [N];

clrscr ();

printf("Enter a string:");

gets (a);

printf ("The original string is :");

puts (a);

chg (a);

printf("The string after modified :");

puts (a);

readwriteDAT ();

}

void readwriteDAT ()

{

int i;

char a [N];

FILE *rf, *wf;

r f=fopen ("in36. dat", "r" );

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

for (i=0;i<10; i++)

{

fgets (a, 81, rf);

chg (a);

fprintf (wf, "%s", a);

}

fclose (rf);

fclose (wf);

}


正确答案:void chg(char *s) { while (*s) if(*s=='z' | |*s=='z') /*字母z改成字母a字母z改成字母A*/ { *s-=25; s++; /*取下一个字母* / } else if(*s>='a'&& *s='y') /*把小写字母改成该字母的下一个字母*/ { *s+=l; s++; /*取下一个字母*/ } else if (*s>='A'&& *s='Y') /*把大写字母改成该字母的下一个字母*/ { *s+=l; s++; /*取下一个字母*/ } else s++; /*取下一个字母* / }
void chg(char *s) { while (*s) if(*s=='z' | |*s=='z') /*字母z改成字母a,字母z改成字母A*/ { *s-=25; s++; /*取下一个字母* / } else if(*s>='a'&& *s='y') /*把小写字母改成该字母的下一个字母*/ { *s+=l; s++; /*取下一个字母*/ } else if (*s>='A'&& *s='Y') /*把大写字母改成该字母的下一个字母*/ { *s+=l; s++; /*取下一个字母*/ } else s++; /*取下一个字母* / } 解析:本题考查的知识点如下:
(1)英文字母对应的ASCII码的排列规律。
(2)指针的操作。
(3)选择结构中多个条件的布尔运算。
在ASCII码中,大、小写字母的ASCII码是连贯的,a~z对应97~122,A~Z对应65~90。z的ASCII码减去25即得到a的ASCII码,对Z同样适合。所以我们要对字符串中的字符依次进行判断,若是大(小)写字母,则按照ASCII码的规律和题意要求对字符进行转换。在这里,使用指针完成对字符的依次访问,每次将指针的地址加1直至指针为空即可。在选择结构的多个条件中,若需同时满足,则用“与”运算,否则,用“或”运算。

第6题:

请编写一个函数char*change(char instr[]),将输入字符串中的所有小写字母转换为大写字母输出。要求使用for循环实现。如输入jinfeiteng,则输出结果是JINFEITENG。

注意:部分源程序已存在文件test21_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数change的花括号中填写若干语句。

文件test21_2.cpp的内容如下:

char*change(char instr[]);

include"iostream.h"

void main()

{

char instr[50];

char *outstr;

cout<<"Input a string:"<<endl;

cin>>instr;

utstr=change(instr);

cout<<"Over graded string:"<<endl;

cout<<outstr<<endl;

}

char*change(char instr[])

{

}


正确答案:char *change(char instr[]) { char *outstr=new char[50]; const char delta='A'-'a'; int i; for(i=0;instr[i]!='\0';i++) { if(instr[i] >='a' && instr[i] ='z') { outstr[i]=instr[i]+delta; } else { outstr[i]=instr[i]; } } outstr[i]='\0'; return outstr; }
char *change(char instr[]) { char *outstr=new char[50]; const char delta='A'-'a'; int i; for(i=0;instr[i]!='\0';i++) { if(instr[i] >='a' && instr[i] ='z') { outstr[i]=instr[i]+delta; } else { outstr[i]=instr[i]; } } outstr[i]='\0'; return outstr; } 解析:本题考查的是考生使用for循环和一维数组的综合水平。对于大小写的ASCII码的差值可以通过delta='A'-'a'运算得到,注意在字符串的结尾加入结束标志符'\0'。

第7题:

tolower()函数用来()。

A、小写字母转换为大写字母

B、大写字母转换为小写字母

C、小写字母转换为大写字母,同时大写字母转换为小写字母

D、判断大小写


参考答案:B

第8题:

用字符串函数编写一个程序:赋值字符串1:你的姓的拼音(首字母大写);字符串2:你的名的拼音(首字母小写)将字符串1的大写字母转换成小写字母,将字符串2的小写字母转换成大写字母,将字符串1和字符串2连接起来输出。


答案:

x = input("请输入你的姓:")
x = x.capitalize()
print(x)
y = input("请输入你的名:")
print("{}{}".format(x.lower(), y.upper()))

结果:

请输入你的姓:zhang
Zhang
请输入你的名:yu
zhangYU

解析:python运行环境

第9题:

函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组)XX中;请编制函数StrOR,其函数的功能是:以该文章中的行为单位依次扫描一行字符串中的小写字母0,每次将小写母0的左右字符串部分作交叉换位,即左边字符串移到小写字母0的右边,而原先右边的则反之,并把小写母O删除,依次直至这一行中的小写母0处理完,之后把已处理的字符串仍按行重新存入字符串数组)XX中。 最后main函数调用函数WriteDat把结果XX输出到文件out.dat中。例如原文:you have the correct record. 第1个o:U have the correct record.Y 第2个o:rrect record.yuhavethe c 第3个o:rd.yuhavethe crrect rec 提示:对于每一行字符串数组处理有如下一种递归调用算法可供参考: 查找字符串中首个小写字母'0'的位置;没有找到'0',则结束递归调用;找到'0',则按题意对字符串进行处理,形成新的字符串,然后返回,继续进行递归调用。 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在test.c文件中。 请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat的内容。


正确答案:
【审题关键句】以行为单位,依次把字符串中所有小写字母0左边的字符串内容移到该串的右边存放,然后把小写字母0删除,余下的字符串内容移到已处理字符串的左边存放。
【解题思路】
①定义循环变量i和字符数组before[80]、after[80]及字符指针变量P。
②在for循环语句中,循环变量i从0开始,依次递增直到其值等于maxline,在循环体中,利用while循环语句一直执行如下的操作,调用库函数strchr定位字母0在字符串xx[i]中第一次出现的位置P。如果P非空,说明在此字符串中找到了字母0,对于xx[i]有字母0的情况,从字符串xx[i]的第xx[i]+(p.xx[i]+1)字符开始,直到字符的结尾,调用字符串拷贝函数strcpy把字母0后面的字符串拷贝到字符数组after[80]中,然后把+p的值设置为0,删除字母0,调用字符串拷贝函数s仃cpy把字符串xx[i]拷贝到字符数组before[80]qh,调用字符串拷贝函数strcpy把字符数组after[80]中的值拷贝到xx[i],再调用字符串连接函数streat把xx[i]与before[80]相连接,实现字母0前后字符串的互换。如果P为空,说明在XX[i]中没有字母0,则退出while循环。进入下一行字符串的处理。
【参考答案】

第10题:

下列给定程序中函数fun的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。

例如,若输入“Ab,cD”,则输出“AB,CD”。

请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODIl.C中,不得增行或删行,也不得更改程序的结构!


正确答案:
(1)if((tt[i]>=’a’)&&(tt[i]<=‘z’))(2)tt[i]一=32;【考点分析】本题考查:if语句条件表达式;小写字母转大写字母的方法。【解题思路】(1)分析本题可知,要判断字符是否为小写字母,即判断其是否在a—z之间,所以这里需要进行连续的比较,用&&。(2)从ASCIl码表中可以看出,小写字母的ASCIl码值比对应大写字母的ASCIl值大32。将字符串中的小写字母改为大写字母的方法是:从字符串第一个字符开始,根据ASCIl码值判断该字母是不是小写字母,若是,则ASCIl码值减32即可。

更多相关问题