计算机二级

数组str全由大小写字母字符组成。请补充函数fun(),该函数的功能是:把str中的字母转换成紧接着的下一个字母,如果原来的字母为‘z’或‘Z’,则相应地转换成‘a’或‘A’,结果仍保存在原数组中。例如,输入“StudentZz”,则输出“TuvefouAa”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>define N 80void fun(char s[]){int i;for

题目

数组str全由大小写字母字符组成。请补充函数fun(),该函数的功能是:把str中的字母转换成紧接着的下一个字母,如果原来的字母为‘z’或‘Z’,则相应地转换成‘a’或‘A’,结果仍保存在原数组中。

例如,输入“StudentZz”,则输出“TuvefouAa”。

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

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

试题程序:

include<stdio.h>

define N 80

void fun(char s[])

{

int i;

for(i=0;【 】;i++)

{

if(s[i]=='z'||s[i]='Z')

s[i]-=【 】;

else

s[i]+=【 】;

}

}

main()

{

char str[N];

clrscr();

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

gets(str);

printf("\n*** original string***\n");

puts(str);

fun(str);

printf("\n*** new string***\n");

puts(str);

}

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

第1题:

从键盘输入一组小写字母,保存在字符数组str中。请补充函数proc(),该函数的功能是:把字符数组str中字符下标为奇数的小写字母转换成对应的大写字母,结果仍保存在原数组中。例如,输入abcdefg,输出aBcDeFg。

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

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

试题程序:


正确答案:


【解析】要将字符串中所有下标为奇数的小写字母转化为大写字母,应该检查字符串str中从第一个到最后一个字符,判断其下标是否为奇数,因此【l】填“str[i]!=ˊ\0ˊ”。每找到一个下标为奇数的小写字母。就将其转换为大写字母,大写字母的ASCⅡ码值比与其对应的小写字母小32,因此【2】填“32”。每判断完一个字符,要为检查下一个字符做准备,因此【3】填“i++”。

第2题:

下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。

请修改函数fun()中的错误,得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:


正确答案:

(1)错误:while(*str!=ˊ@ˊ)
正确:while(*str)或while(*str!=ˊ\0ˊ)或while(*str!=0)
(2)错误:(*str++);
正确:str++
【解析】首先判断字母是否为小写字母,如果是小写字母则进行转换。
第一个标识下“while(*str!=ˊ@ˊ)”语句原意是str不指向字符串尾就进入下面的循环,所以对于指针判断不为结束符的语句应该是循环为真,所以应为“while(*str)”或“while(*str!=ˊ\Oˊ)”或“while(*str!=0)”。
第二个标识下“(*str)++;”是对字符内容加1,而原题是对字符位置加1,所以将其改为“str++;”。

第3题:

数组str全由大小写字母字符组成。请补充函数proc(),该函数的功能是:把str中的字母转换成紧接着的下一个字母,如果原来的字母为&39;b&39;或&39;b&39;,则相应地转换成&39;c&39;或&39;C &39;,结果仍保存在原数组中。

例如,输入“String”,则输出“Tusjoh”。

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

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

试题程序:


正确答案:

【1】str[i]!=ˊ\0ˊ【2】25【3】1
【解析】要将字符串str中的字母转换成紧接着的下一个字母,需要转换str中从第一个到最后一个的字母,因此,【1】处填“sirei]!=ˊ\0ˊ”;每一个字母的下一个字母比上一个字母的ASCⅡ值大1,只有字母z和Z例外,因为字母z和Z的下一个字母为a和A,其ASCⅡ码值比字母z和Z小25,因此,【2】处填“25”;【3】处填“1”。

第4题:

str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充函数proc,该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

例如,str="abc3de987f9621",结果为:3987621。

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

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

试题程序:

include<stdio.h>

define M 80

int bb[M];

int proc(char str[],int bb[],int num)

{

int i,n=0;

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

{

if(【1】)

{

bb[n]=【2】:

n++:

}

}

return 【3】 ;

}

void main

{

char str[M];

int mum=0,n,i;

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

gets(str);

while(str[num])

num++:

n=proc(str,bb,num);

printf("\nbb=");

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

printf("%d",bb[i]);

}


正确答案:

【1】str[i]>='0'&&str[i]<='9 '
【2】str[i]-'0'
【3】n
【解析】题目中要求把字箱串str中的数字字符转换成数字并存放到整型数组bb中。首先应判断字符串str中每个字符是否为数字字符,因此【1】填“str[i]>=' 0 ' &&str[i]<='9'”;将每一个数字字符转化为数字放在整型数组bb中,因此【2】填“str[i]-'0'”;由函数proc可知,变量n中存放的是整型数组bb中元素的个数,最后要返回到主函数中,因此【3】填“n”。

第5题:

请补充函数fun(),该函数的功能是:把一个字符串中的字符(字母)按从小到大排序,并把这个全部由字母组成的字符串保存在原串中,函数返回这个字符串的长度。例如;输入“cixbr2.3”,如果为bcirx,字符串长度为5。

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

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

include <stdio.h>

define N 20

int fun (char *str)

{

int i=0,j=0,k=-0,m=0;

char t;

char *p=str;

while(*p)

{

if((*p>='A'&&*p<='Z')||(*p>='a'

&&*p<='z'))

【 】

p++;

}

*(str+i)='\0';

【 】;

while(*(p+j))

{

k=j;

【 】;

while (*(p+k))

{

if(*(p+k)<*(str+m)

{

t=*(str+m);

*(str+m)=*(p+k);

*(p+k)=t;

}

k++;

}

j++;

}

return i; }

main()

{

char str[81];

iht n;

clrscr();

printf("Input the original string ");

gets(str);

printf("*** The Original string ***In");

puts(str);

printf("*** The nwe string ***\n");

n=fun(str);

puts(str);

printf("***The length of new string is:

%d***\n",n);

}


正确答案:*(str+i++)=*p p=str m=j
*(str+i++)=*p p=str m=j 解析:第一空:将字符串中的字母字符存入原字符串str中,通过变量i的自加逐一向后移动字符串指针。第二空:从后面的程序中可以看出,通过指针p对字符串进行排序,所以应使指针p指向字符串str的首部,即将字符串str的首地址赋给p。第三空:本题采用选择法对字符串进行排序,选择法的思路是,假设从小到大排序,依次用当前取得的元素和它后面的所有元素进行比较,在第一个元素和它后面的元素顺次比较时,可以借助中间变量来对两数进行交换,要保证这第一个元素始终存放数组中的最小数,以后依次挑出次小数,这样最终的数组就是按从小到大的顺序排列。此处要将变量j的值赋给m。

第6题:

str是全部由小写字母字符和空格字符组成的字符串,由 num传入字符串的长度。请补充函数fun(),该函数的功能是:统计字符串str中的单词个数,结果由变量num传回。每个单词之间都由空格隔开,并且字符串str开始不存在空格。

例如:str=“how do you do”,结果为:num=4。

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

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

试题程序:

include <stdio.h>

define N 80

void fun(char *s,int *num)

{

int i,n=0;

for(i=0;【 】;i++)

{

if(s[i]>='a',&&s[i]<='z',&&(s[i+1)==’’||s[i+1]=='\0'))

【 】;

}

【 】;

}

main()

{

char str[N];

int num=0;

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

gets(str);

while(str[num])

num++;

fun(str,&num);

printf("The number of word is:

%d\n\n",num);


正确答案:i*num n++ *num=n
i*num n++ *num=n 解析:第一空:*num传入字符串的长度,所以for循环中变量i的变化范围是从0到*num-1。第二空:如果当前判断的字符是小写字母,并且它的下一个字符是空格或者是字符串结束标记符,则表示当前字符是一个单词的最后一个字母,统计单词数的变量n要加上1。第三空:题目要求结果由变量num传回,所以要将n的值赋给指针num所指的单元。

第7题:

请编写一个函数fun(),该函数的功能是:返回给定字符串中大写字母字符的个数。

如字符串"Hello World"中,大写字母的个数为2个。

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

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

文件PROC5.cpp的内容如下:

//PROC5.cpp

include<iostream>

include<string>

using namespace std;

int fun(char *str);

int main()

{

char str[ ]="Chinese Computer World";

cout<<fun(str)<<end;

return 0;

}

int fun(char *str)

{

//**********

}


正确答案:下面是函数fun()函数体的一种实现: int fun(char *str) { int num=0; //用于记录大写字母符的个数初始值为0。 while(*str!='\0') //若是大写字母则总数加1。 { if(*str>='A'&&*str='Z') num++; str++; } return num; }
下面是函数fun()函数体的一种实现: int fun(char *str) { int num=0; //用于记录大写字母符的个数,初始值为0。 while(*str!='\0') //若是大写字母,则总数加1。 { if(*str>='A'&&*str='Z') num++; str++; } return num; } 解析:本题要求编写函数fun()的函数体,完成的功能是返回给定字符串中大写字母字符的个数。从给出的函数首部可知,函数体可用字符指针和循环体的方式来实现。

第8题:

str是一个由数字和字母字符组成的字符串,由变量hum传入字符串长度。请补充函数fun( ),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

例如:str=“Bcdl23e456hui890”,结果为:123456890。

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

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

试题程序:

include<stdio.h>

define N 80

int bb[N];

int fun(char s[ ],int bb[ ],int num)

{

int i,n=0;

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

{

if(【 】)

{

bb[n]=【 】;

n++;

}

}

return【 】;

}

main()

{

char str[N];

int num=0,n,i;

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

gets(str);

while(str[num])

num++;

n=fun(str,bb,num);

printf("\nbb=");

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

printf("%d",bb[i]);

}


正确答案:s[i]>=‘0’&&s[i]=‘9’ s[i]-‘0’ n
s[i]>=‘0’&&s[i]=‘9’ s[i]-‘0’ n 解析:第一空:如果当前字符的ASCII码大于字符‘0’的ASCII码,而小于字符‘9’的ASCII码,则说明当前字符是数字字符。第二空:将数字字符转换为数字的方法是,用当前数字字符的ASCII码减去字符‘0’的ASCII码。第三空:题目要求函数返回数组bb的长度,而变量n记录了数字字符的个数,也就是数组bb的长度,所以函数应该返回n。

第9题:

请补充main函数,该函数的功能是:把一个字符串中的所有小写字母字符全部转换成大写字母字符,其他字符不变,结果保存原来的字符串中。

例如:当str[N]“123 abcdef ABCDEF!”,结果输出:

“123ABCDEFABCDEF!”。

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

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

试题程序:

include<stdio.h>

include<stdlib.h>

include<conio.h>

define N 80

void main()

{

int j;

char str[N]="123abcdef ABCDEF!";

char* pf=str;

clrscr();

printf("*** original string ***\n");

puts(str);

【 】;

while(*(pf+j)).

{

if(*(pf+j)>='a'&&* (pf+j)<='z')

{

*(pf+j)=【 】;

j++;

}

else

【 】;

}

printf("****** new string ******\n");

puts(str);

system("pause");

}


正确答案:j=0 *(pf+j)-32 j++
j=0 *(pf+j)-32 j++ 解析:第一空:变量j声明时没有初始化,而后面程序用到j,所以在这里对j初始化为0。第二空:将小写字母转换为对应的大写字母的方法是,小写字母的ASCII码减去32,得到对应的大写字母的ASCII码。第三空:如果当前字符不是小写字母,则不做任何处理,使指针指向下一个字符,准备进行判断。