国家二级C++机试(操作题)模拟试卷394
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modil.cpp。本程序要求输入一字符串,然后将其中的小写字母改变成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到界面。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在
∥********error********的下面。
#include
Void main()
{
int i=0;
char Str[12 0];
cout<<“Enter a string end
with’?’.”<<end2;
∥********error********
cin.getline(str,120);
∥********error********
while(Str)
{
∥********error********
if(str[i]>=‘a’)
str[i] =str[i] 一
‘a’+‘A’;
i++;
}
cout<<str<<end1;
return;
}
(1)cin.getline(str,12 0,‘?’);
(2)while(str[i])
(3)if(str[i]>=‘a’&&str[i]<=‘Z’)
解析:同一英文字母的大写和小写形式的ASCII码值相差32,因此,要将小写字母转换为大写字母,只要将其对应的ASCⅡ码值减去32即可,程序中给出的语句中,减去字符‘a’的ASCⅡ码再加上字符‘A’的ASCⅡ码正好是减去32。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说日月和代码,完成空出部分程序。函数fun(int*arr,int n)的功能是将指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除:并返回互不相同的元素的个数。
注意:不能修改程序的其他部分,只能修改fun()函数,
#include
int fun(int*a,int n)
{
}
void msin()
{
int A[]={6,6,5,4,4,3,3,2,1};
Int j =fun(A,s i zeof(A)/
si zeof(int));
for(int i=0 ; i<j ;i++)
{
std::cout<<A[i]<<‘ ’;
}
std::cout<<s td::endl;
return;
}
Int j;
int k=0;//指向数组第一个元素
j=1; //指向数组第二个元素
while(j<n)//将本次循环k指向的元素依次与其他元素比较,如果不同,则存入数组
{
if(a[j]!=a[k])
{
a[++k]=a[j]; //k指向下一个元素
}
j++;
}
return k+1; //为新数组大小
解析:
本文档预览:3600字符,共1884字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载