C++竞赛

2022-07-31 03:29:46   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《C++竞赛》,欢迎阅读!
C++,竞赛
C++竞赛试题 一单项选择 1int ab,则表达式(b=2a=5b++)的值是(a A2 B5 C7 D8 2 以下叙述中错误的是(c

A对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B数组名代表的是数组所占存储区的首地址,其值不可改变

C当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出信息

D可以通过赋初值的方式确定数组元素的个数 3执行下列程序段后的输出结果是(a Int x=2;

While(x--) cout<

A -1 B 0 C 1 D 2

4若已定义的函数有返回值,则以关于该函数调用的叙述中错误的是(d A调用可以作为独立的语句存在 B调用可以作为一个函数的实参 C调用可以出现在表达式中 D 调用可以作为一个函数的形参

5 定义一个指向具有5个元素的一维整型数组的指针变量,正确定义为(c A int *p[5]; B int *p; C int (*p)[5]; D int *p[ ][5];

6 char ch[ ]={abc\0def},*p=ch;,则执行cout<<*(p+4)<语句的输出结果是(b) A 0 B d C def D 0def 7 char ch;以下正确的赋值语句是(d

A ch=123 B ch=\xff C ch=\08; D ch=\; 8 以下程序段(c Int x=-1 do

{x=x*x;}

while (!x

A 是死循环 B 循环执行两次 C循环执行一次 D 有语法错误 9 下列变量名中合法的是(a

A CHINA B byte-size; C double D A+a

10 两次运行下面的程序,如果从键盘上分别输入64,则输出结果分别是(b #incloude Void main() {

Int x cin>>x;

if (x++>5) cout< else cout < }

A 63 B 75 C 74 D 64 填空题


1、完成以下程序,要求输出如下的二维数组:

1 2 3 4 5 6 1 1 2 3 4 5 1 2 1 2 3 4 1 3 3 1 2 3 1 4 6 4 1 2 1 5 10 10 5 1 #include using namespace std; int main(){

int a[6][6],i,j; for(i=0;i<6;i++){ for(j=0;j<6;j++){

if(_____) a[i][j]=1;

else if(i else a[i][j]=______; cout< }

cout< }

return 0; }

2、计算1000以内能被3整除的自然数之和。 #include using namespace std; int main(){

int x=1,sum; _____; while(1){

if(_____) break; if(_____) sum+=x; x++; }

cout< return 0; }

3、本题中函数select实现的功能是在MN列的二维数组中,找出其中的最大值作为函数的返回值,并通过形参传回此最大值所在的行标和列标。 #include #define M 3 #define N 3

using namespace std;

int select(int iArray[M][N],int *r,int *c); int main(){


int iArray[M][N]={3,2,23,9,18,12,8,7,0}; int max,row,col; __________;

cout<<"二维数组的最大值"<在第"<行,第"<列。"< return 0; }

int select (int iArray[M][N],int *r,int *c){ int *p=&iArray[0][0]; int i,j,max; _________; *r=1; *c=1;

for(i=0;i

for(j=0;j if(_____){ max=*p; *r=i+1; *c=j+1; } p++; }

return max; }

4、以下程序的运行结果是() #include Void main()﹑﹑、 {

int a=0,b=1,c=0,d=20 if (a) d=d-10; else if (!b) if(!c) d=15; else d=25;

cout <<d=<5、以下程序的运行结果是() #include int f(int i) {

return ++i; }

int g(int &i) {

return ++i }

void main()


{

int a,b; a=b=0;

a+=f(ga) b+=f(f(b));

cout <<"a="<< a <<"b="<< endl; 二:编程题:

1、求[2,1000]范围内因子(包括1和该数本身)个数最多的数,然后输出该数和其因子个数。(要求:尽可能地减少循环次数以减少运行时间) 2、根据输入的年、月,判断该月的天数。

3、采用变化的冒泡排序法将n个数按从大到小的顺序排列:对n个数,从第一个直到第n个,逐次比较相邻的两个数,大者放前面,小者放后面,这样得到的第n个数是最小的;然后对前面的n-1个数,从第n-1个到第一个,逐次比较相邻的两个数,大者放前面,小者放后面,这样得到的第一个数是最大的。对余下的n-2个数重复上述过程,直到按从大到小的顺序排列完毕。

123n

4、给定正整数n,计算s=2!+2!+2!++2!。要求:编写两个函数分别求2的幂和阶乘。 5、编写一个程序,实现两个二十位整数相加,要求输出的结果是非常精确的值(即不能使用浮点数表示)

6、判断某年是否为闰年

7、计算正整数n以内(包括n)的奇数之和及偶数之和。

8、汉诺(Hanoi)塔问题。将A柱上的64个圆盘利用B柱全部移到C柱上。移动规则是:一次只能移动一个圆盘,被移动的圆盘必须放在其中的一根柱子上,并且任何时候都不允许较大的圆盘放在较小的圆盘上面。求移动的步骤。 9、反向输出一个链表。 答案 填充题

ACADC BBCAB

第一题:1 j==0||i==j

2 a[i][j-1]+1 (j-i+1) 3 a[i-1][j-1]+a[i-1][j] 第二题:1 sum=0

2 x>=1000 (x>1000x==1000) 3 x%3==0

第三题:1max=select(iArray,&row,&col)

2max=iArray[0][0](或数组中任意其他一个值) 3*p>max 第四题:d=20

第五题:a=3 b=2 一、编程题:

第一题:

#include #include

using namespace std; int main(){


int number=0,count=0;//number用来保存因子个数最多的数, //count用来保存该数的因子数 for(int i=501;i<=1000;i++){

//如果ab的因子,则b的因子个数一定不会小于a,对于[2,500]间的整数,他们的



//倍仍然在[2,1000]间,故不用考虑[2,500]间的数。 int n=0; //n用来保存临时数的因子个数 for(int j=1;j<=(int)sqrt(i);j++) if(i%j==0){

if(i/j==j) n++; else n+=2; }

if(n>count) { count=n;number=i;} }

cout<<"因子最多的数为:"<它的因子个数为:"< return 0; }

第二题:

#include using namespace std; int main(){

int year,month,days; cout<<"请输入年、月:"; cin>>year>>month; switch(month){ case 1: case 3: case 5: case 7: case 8: case 10:

case 12: days=31;break; case 4: case 6: case 9:

case 11: days=30;break; case 2:

if((year%400==0)||(year%4==0&&year%100!=0)) days=29;

else days=28; break;

dafault: cout<<"输入的月份有误。"; }

cout<"<月有"<天。"<


return 0; }

第三题:

#include #define N 20

using namespace std; int main(){

int a[N],low,high; for(int i=0;i

cout<<"请输入第"<个数:"; cin>>a[i]; }

low=0; high=N-1;

while(low int temp;

for(int i=low;i if(a[i] temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } high--;

for(int i=high;i>low;i--) if(a[i]>a[i-1]){ temp=a[i]; a[i]=a[i-1]; a[i-1]=temp; } low++; }

cout<<"排序后的顺序为:"; for(int i=0;i cout< return 0; }

第四题:

#include using namespace std; int JieCheng(int n); int Mi(int m); int main(){


int sum=0,n;

cout<<"please input n:"; cin>>n;

for(int i=1;i<=n;i++){ int count=Mi(i);

sum+=JieCheng(count);

}

return 0; }

int Mi(int m){

int orig=1;

for(int i=1;i<=m;i++)

orig*=2;9 return orig; }

int JieCheng(int n){

if(n==1) return 1;

else return n*JieCheng(n-1); }

第五题:

#include #include #define N 20

using namespace std;

void Temp(char a[], char b[],int n); void Add(char a[],char b[],int n); int main(){

char a[N+1],b[N+1]; string str1,str2;

cout<<"please input the two numbers:"<cin>>str1>>str2; if(str1.length()!=N)

{cout<<"the length of str1 is not 20"<if(str2.length()!=N)

{cout<<"the length of str2 is not 20"<strcpy(a,str1.c_str()); strcpy(b,str2.c_str()); Temp(a,b,N); Add(a,b,N);

if(a[N]=='1') cout<for(int i=N-1;i>=0;i--)

a[N]='\0'; b[N]='\0';


}

cout<return 0;

void Temp(char a[], char b[],int n){ }

void Add(char a[],char b[],int n){

int sum=0,extra=0; for(int i=0;i

sum=(a[i]-'0')+(b[i]-'0')+extra; if(sum<10) a[i]=sum+'0'; for(int i=0;i char C; C=a[i]; a[i]=a[19-i]; a[19-i]=C; C=b[i]; b[i]=b[19-i]; b[19-i]=C; }

else{

extra=sum/10; sum=sum%10; a[i]=sum+'0'; } }

}

a[n]=extra+'0';



第六题:

#include using namespace std; void main() {

int x; bool leap; cin>>x leap=false;

if (x%4==0 && x%100!=0 || x%400==0) leap=true; if (leap) cout<〝是闰年〞; else cout<〞不是闰年〞; cout< }

第七题:

#include


using namespace std; void main() {

int isosen

so=0; ∕∕奇数和初始化 se=0; ∕∕偶数和初始化 cout<<〝请输入一个正整数:〞; cin>>n;

if (n<1) return

fori=1i<=n;i++ if (i%2) so+=i else se+=i;

cout<<〝奇数和: < cout<<〝偶数和: <}

第八题

#include using namespace std;

void Hanoi(int n,char a,char b,char c); int main() { int n=64; hanoi(n,'A','B','C'); return 0; }

void hanoi(int n,char a,char b,char c) {

if (n = = 1) cout<->”<<c< else { hanoi(n-1,a,c,b); cout<< "Move disk "< "< hanoi(n-1,b,a,c); } }

第九题

#include "stdlib.h" #include "stdio.h" struct list { int data;

struct list *next; };

typedef struct list node; typedef node *link;


void main()

{ link ptr,head,tail; int num,i;

tail=(link)malloc(sizeof(node)); tail->next=NULL; ptr=tail;

printf("\nplease input 5 data==>\n"); for(i=0;i<=4;i++) {

scanf("%d",&num); ptr->data=num;

head=(link)malloc(sizeof(node)); head->next=ptr; ptr=head; }

ptr=ptr->next; while(ptr!=NULL)

{ printf("The value is ==>%d\n",ptr->data); ptr=ptr->next; }}


本文来源:https://www.wddqxz.cn/b6e980c6132de2bd960590c69ec3d5bbfc0ada56.html

相关推荐