下面程序的功能是多次输入x与y的值,并求x与y之积,请填空完善程序。
int mul(int a,int b)
{int c
c=a+b
return (c*c-a*a-b*b)/灶轮猜2 //如果题目是求和 改为return c你 *** 错了吧
}
void main()
{ int x,y,z
scanf("%d%d",&x,&y)
while(x!=0)
{ z=mul(x,y)
printf("%d*%d=%d",x,y,z)
scanf("%d%d",&x,&y)
}
}
以下程序打印如下图案,程序运行后,桐雹输入4给变量n,请填空。
*
* * *
* * * * *
* * * * * * *
#include<stdio.h>
#define S ' '
void main()
{ int n,i,j
printf("Enter n:")scanf("%d",&n)
for(i=1i<=ni++)
{ for(j=1 j<=n j++)putchar(S)
for(j=1 j<=n*2j++)putchar('*')
putchar('\n')
}
}
以下函数返回a所指数组中最小的值所在的下标值,请把程序补充完整。
fun(inta[] , int n)
{int i,j=0,p
p=j
for(i=ji<ni++)
if(a[i]<a[p])_ _ p=i___
return(p)
}
7、以下程序段给数组所有的元素输入数据,输出所有元素之和。请将正确答案填入。
#include<stdio.h>
main()
{ int a[10],i=0,s=0
while(i<10)
{ scanf("%d", &a[i]
s=s+a[i]
i =i+1
}
printf("%d",s)
}
8、 下面程序用于计算1+(1+2)+(1+2+3)+……+(1+2+3+……+10),请填空完善函数。
#include<stdio.h>
void main()
{ int total,sum,m,n
total=0
for(m=1m<=10m++)
{ sum=0
for(n=1n<=mn++)
sum=sum+n
total= total+sum
}
printf("total=%d\n",total)
}
以下程序的功能是:键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成
绩,当输入负数时结束输入.请填空.
main()
{ float x,amax,amin
scanf("%f",&x)
amax=x
amin=x
while(x>=0 )
{ if(x>amax)amax=x
if( x<ammin ) amin=x
scanf("%f",&x)
}
printf("\namax=%f\namin=%f\n",amax,amin)
}
12、下面程序将一个已知字符串第n个字隐型符开始的剩余字符复制到另一个字符串中。请填空完善程序。
#include"string.h"
#include<stdio.h>
main()
{char a[80],b[80],*p,*q
int n,k
gets(a) scanf("%d",&n)
p=a q=b
p+=n-1
while(*p!= '\0' )
{*q=*p
q++p++
}
*q = '\0'
puts(b)
}
13、设以下程序段的输出结果为15,请将正确答案填入。
#include<stdio.h>
#define MIN(x,y) (x)<(y)? (x):(y)
main()
{ int i=15, kfloat j=1.5
k=10*(MIN( i, j))
printf("%d\n",k)}
以下程序用来统计文件中字符个数。请填空:
#include"stdio.h"
main( )
{FILE *fp; long num=0L;
if((fp=fopen("fname.dat","r")==NULL)
{printf("Open error\n"); exit(0);}
while(_______!feof(fp)_________)
{fgetc(fp); num++;}
printf("num=%ld\n",num-1);
fclose(fp);
}
16、以下程序输入一行字符,判断其是否对称,是则输出Yes,否则输出No。
#include <stdio.h>
#include <string.h>
main()
{
char a[80]int n, i
gets( a )
n = strlen(a)
for ( i = 0i <n/2i++ )
if ( a[i] != a[n-1-i] )
break
if ( i==n/2 )
printf( "No\n" )
else
printf( "Yes\n" )
}
A.信息技术的发展历史不足百年,它是随着计算机技术的发展而逐渐发展起来的
B.信息技术已经成为当今社会最有活力,最有效益的生产力之一
C.现代信息技术的主要特点之一是以电(光)信号来传输信息
D.目前常讲的新一代信息技术包括大数据、云计算、移动互联网等技术
2.下列关于目前台式PC机的叙述中如知,错误的是______
A.芯片组是PC机各组成部分相互连接和通信的枢纽,它实现了PC机总线的功能
B.大多数CPU芯片中集成有高速缓冲存储器(cache),其工作速度很快(与CPU速度相差不大)
C.目前PCI-E总线是PC机最为重要的I/O总线之一,大多数的独立显卡使用该总线接口
D.USB3.0与USB2.0的接渣中消口连接器相同,区别在于前者的数据传输速度是后者的一倍以上
3.下列关于I//O设备的叙述中,错误的是______
A.目前键盘和鼠标等设备可以通过无线方式与PC主机相连接
B.光学分辨率是扫描仪的主要性能指标之一,目前普通家用扫描仪的分辨率已达几千dpi
C.传统显示器的宽度与高度之比一般是1:1,现在主流的液晶显示器的宽高之比是4:3
D.目前用于打印数码照片的打印机主要是喷墨打印机
4.下列关于PC机外存储器,错误的是__________
A.移动硬盘通常采用USB接口或eSata接口,可随时插上或拔下(即支持"热插拔")
B.存储卡是闪存做成的一种固态存储器,所有存储卡的形状,大小,接口都是相同的
C.固态硬盘(简称SSD)是基于半导体存储器芯片的一种存储设备,其接口规范、功能及使用方法与普通硬盘几乎相同
D.DVD盘片有单面单层、单面双层、双面单层和双面双层等品种,单面单层的120mm DVD存储容器约4.7GB
5.从 *** 作系统发布的时间来看,下列四个Windows *** 作系统中最早发布的是________
A.Windows Xp
B.Windows 2000
C.Windows Vista
D.Windows 7
6.下面给出的四个语言中,不属于程序设计语言的是______
A.Lisp语言
B.Matlab语言
C.Html语言
D.Ada语言
7.下列关于数字通信技术的叙述中,错误的是________
A.光纤具有通信容量大,传输距离远,不会受高压线和雷电电磁感应影响
B.移动通信技术的发展已经历的四代,目前我国所有的智能手机均使用3G
C.我国自行研发的北斗卫星导航定位系统日趋成熟,并已逐渐投入商业运行
D.路由器的主要作用是将两个或多个计算机网络进行互连
8.Internet使用TCP/IP协议实现了全球范围的计算机网络的互连,连接在
Internet上的每一台主机都有一个IP地址,目前使用的IPv4标准,其IP地址为_____
A.32位
B.64位
C.96位
D.128位
9.在下列的汉字标准中,不属于汉字编码标准的是______
A.GB2312-80
B.GB8566-88
C.GBK
D.GB18030-2000
10.由于采用的压缩编码方式及数据组织方式的不同,声音文件形成了
多种不同的文件格式,在下列四种文件中,不属于数字声音文件的是_____
A.APE
B.WMA
C.MP3
D.TIF
C++程序设计理论部分
1.下列选项中不能作为C++自定义标识符的是______
A.scanf B.void C.Struct D._int
2.下列叙述不正确的是_______
A.纯虚函数是一种特殊的虚函数,它必须有具体的实现
B.纯虚函数是一种特殊的虚函数,它没有具体的实现
C.抽象类至少包含一个纯虚函数
D.抽象类不能用于创建对象
3.设有以下说明语句
char s1[]="hello"
char s2[]={'h','e','l','l','o'}
int b
则下列语句中正确的是_______
A. cout>>s1+s2B.b=s1==s2
C. strlen(s1)D.strcat(s1,s2)
4.在_____情况下适宜采用inline来定义函数
A.函数体含有循环语句
B.函数体含有递归培雹语句
C.加快程序的运行速度
D.函数代码多,不常被调用
5.设有双引号括起来的说明语句:
int a[6][3]={0,2,8},(*p)[3]=a
以下选项中不能表示地址的表达式是______
A. a[5] B.p[1]+0 C.p[1] D.**p+0
6.填空题
#include
class A{
int a
public:
A(int aa=0) {a=aa}
~A() {cout<<"Destructor A!"<<a<<endl} p=""></a<<endl}>
}
class B:public A {
int b
public:
B(int aa=0, int bb=0):A(aa) {b=bb}
~B() {cout<<"Destructor B!"<<b<<endl} p=""></b<<endl}>
}
void main()
{
B x(5), y(6,7)
}
程序输出的第一行是_________,第二行是____________-
7.填空题
#include
char *fun(char *s, char *p)
{
char *p1=p
for(*s ){
if(!(*s>=0 &&*s <='9'))
*p++=*s++
s++
}
*p=0
return p1
}
void main(void)
{
char str1[]="abcd123456"
char str2[50]
cout<<fun(str1,str2) <<endlp=""></endl>
cout<<str2 <<endlp=""></endl>
}
程序的输出第一行是_______,第二行是_________
8.填空题
#include
int f(int n, int x)
{
x+=1
if(n==3) return x
else return x+f(n+1,x+1)
}
void main()
{
cout<<f(3,1)<<endlp=""></f(3,1)<<endl>
cout<<f(2,1)<<endlp=""></f(2,1)<<endl>
cout<<f(1,1)<<endlp=""></f(1,1)<<endl>
}
程序的输出第一行是____,第二行是_________,第三行是_________
9.填空题
#include
class count
{
static int n
public:
count(){
n++
}
void show(){
cout<<n<<" p=""></n<<">
}
~count() {
cout<<n<<endlp=""></n<<endl>
n--
}
}
int count::n=0
void main()
{
count a
a.show()
{
count b[4]
b[3].show()
}
a.show()
}
程序共输出_____行,其中第一行输出为_____,最后一行输出为______
C++程序设计 *** 作题
1.完善程序
【题目】以下程序通过重载运算符”*”,实现求两个一维数组对应元素之积的运算。设数组a,b分别为:
int a[10]={1,2,3,4,5,6,7,8,9,10}
int b[10]={1,2,3,4,5,6,7,8,9,10}
则数组a和b对应元素相乘后所得到的运算结果为
{1,4,9,16,25,36,49,64,81,100}
提示:程序中通过重载运算符"=",实现了一维数组的赋值运算。
【程序】
#include
#include "string.h"
class Arr
{
int x[10]
public:
Arr(){
for(int i=0i<10i++)
x[i]=0
}
Arr(int *p) {
for(int i=0i<10i++)
__________
}
Arr operator *(Arr a){
Arr t
for(int i=0i<10i++)
__________
return t
}
Arr operator =(Arr a){
for(int i=0i<10i++)
__________
return *this
}
void show(){
for(int i=0i<10i++)
__________
}
}
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10}
int b[10]={1,2,3,4,5,6,7,8,9,10}
Arr arr(a),brr(b),c
c = __________
c.show()
}
2.(改错题)
【题目】下列程序的功能为:任意输入一个4位自然数,然后输出该自然数的
各位数字所能组成的最小自然数.例如:输入1593,输出1359输入3002,
输出23。注意:如果输入了非法数据,如82,则程序应提示重新输入数据,
直到输入正确数据为止
【程序】
含有错误的程序为:
#include
void input(int a) //输入数据并检查其合理性,直到输入的数据合理为止
{
int n
cout<<"Please input a 4-bits number:"
cin>>n
while(n9999) {
cout<<n<<"\nplease re-input="" a="" number :"// 请重新输入一个四位数
cin>>n</n<
}
*a=n
}
int min(int a)
{
int x[4], m
int i, j
for(i=0ai++, a/=10)
x[i]= a/10
for(i=0i<3i++)
for(j=i+1j<4j++)
if(x[i]>x[j])
{ m=x[i]x[i]=x[j]x[j]=m}
for(i=0, m=0i<4i++)
m=(m+x[i])*10
return m
}
void main(void) //注意:不允许修改主函数
{
int a
input(&a)
cout<<a<<", p="" china!"转换成"so<="" ok="" result="<<min(a)<<endl
1.打开T盘中 myfb.cpp,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。程序中的注解可以不输入。
2.改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型说明或编译预
处理命令,但不能增加其他语句,也不能删除整条语句。
3.将改正后的源程序文件myfb.cpp必须放在T盘根目录下,供阅卷用。
3. (编程题):
【题目】为使电文保密,往往按一定规律将其转换成密文,收报人再按约定的规律
将其译回原文。例如,将26个大小写字母分别看成-个圆环,可以按以以下规律将原
文转换成密文:将字母A转成E.即转换成其后的第四个字母,V转换成Z, W转换
成A,X转换成B.Y转换成C,Z转换成D.小写字母按同样的规律转换,如a转换成
e。字母按上述规律转换(加密),其它字符不变.如" margin:="" 0cm="" 0pt?=""></a<
Glmre!"。试建立一个类Encode.完成加密工作。
具体要求如下:
(1)私有数据成员
●char *str:str指向存放原文字符串的动态内存空问。
(2)公有成员函数
●Encode(char *s1) :构造函数,根据参数s1指向的字符串的大小,动态申
请内存空问,让str指向该空间.用s1所指向的字符串初始化str指向的字符
串.
●~Encode() : 析构函数,释放str所指向的动态内存空问。
●void change(char *s2) :将str所指向的原文字符串转换成密文,并将密文存
放到s2所指向的存储空间中。
●void print() : 输出原文
(3)在主函数中完成对给类的测试。定义两个字符数组text1和text2。先输入
一行字符串(原文)到text1中,用text1初始化一个Encode类的对象v,调用成员函数
输出原文,再调用成员函数change将获得的密文送到text2中,最后输出密文,当用
"OK China"作为测试用的原文时,程序输出的结果是:
OK China!
SO Glmre!
【要求】
打开T盘中myfc.cpp文件(空文件),编写后的源文件myfc.cpp必须保存在T盘的
根目录下,供阅卷用
1.完善程序答案
x[i]=*p++
t.x[i]=x[i]*a.x[i]
x[i]=a.x[i]
cout<<x[i]<<' p="" ? </x[i]<
arr*brr
2.改错题答案
1. void input(int a) 修改为 void input(int *a)
2. while(n9999) 修改为 while(n9999)
3. x[i]= a/10修改为 x[i]= a
4. m=(m+x[i])*10修改为: m=m*10+x[i]
第十七届全国青少年信息学奥林匹克联赛初赛试题参考答案与蔽扮神评分标准一、单宏亏项选择题(共10题,每题1.5分,共计15分)
1、B;2、B ;3、A ;4、D ;5、B ;
6、A ;7、C;8、D ;9、B ;10、A 。
二、不定项选择题(共10题,每题1.5分,共计15分,多选或少选均不得分)
1、CD ; 2、ABCD ; 3、AB; 4、BC; 5、BC ;
6、ABD ; 7、CD ; 8、A ; 9、BCD; 10、ABC 。
三、问题求解(共2题,每题5分,共计10分)
1、9;
2、4。
四、阅读程序写结果(共4题,每题8分,共计32分)
1、3;
2、1 2 5 13 34;
3、150;
4、57344。
五、完善程序(第1题,每空2分,第2题,每空3分,共计28分)
(说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学委员会审查)
1、① ans.num[i + j - 1];
② ans.num[i] := ans.num[i] mod 10;
③ ans.num[i] + a.num[i] + b.num[i];
④ ans.num[i] mod 2 (或 ans.num[i] and 1);
⑤ inc(ans.len) (或 ans.len := ans.len + 1);
⑥ a.len <b.len;
⑦ ord('0')(或48);
⑧ times(middle, middle), target ;
2、① inc(num) (或缺此 num := num + 1);
② j := i;
③ solve(left, j - 1, deep + 1);
④ solve(j + 1, right, deep + 1)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)