2018【比特杯】编程大赛
1. D
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
int main(){
int a=10;
int x=a++;
printf("a=%d x=%d\n",a,x);//a=11,x=10
return 0;
}
2.C
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
int main(){
char acX[]="abcdefg";
char acY[]={'a','b','c','d','e','f','g'};
int lenx=strlen(acX);
int leny=strlen(acY);
printf("lenx=%d,leny=%d\n",lenx,leny);
return 0;
}
3.指针:C
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
int main(){
unsigned long pulArray[]={6,7,8,9,10};
unsigned long *pulptr;
pulptr=pulArray;
*(pulptr+3)+=3;
printf("%d,%d\n",*pulptr,*(pulptr+3));//6,12
return 0;
}
4.联合体:A
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
int main(){
union{
short k;
char i[2];
}*s,a;
s=&a;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%x\n",a.k);//3839
return 0;
}
5.数据溢出:C
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
int main(){
unsigned char a=200;
unsigned char b=100;
unsigned char c;
c=a+b;
printf("%d %d\n",a+b,c);//300,44
//300-2^8=44
return 0;
}
6.宏定义:B
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
#define SQUARE(x) x*x
#define SQUARE2(x) (x)*(x)
int main(){
//预处理:printf("%d\n",1+2*1+2);
printf("%d\n",SQUARE(1+2));//5
//预处理:printf("%d\n",(1+2)*(1+2));
printf("%d\n",SQUARE2(1+2));//9
return 0;
}
7.结构体:D
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
struct Test{
int i;
double d;
char c;
};
int main(){
struct Test T;
printf("%d\n",sizeof(T));//24
return 0;
}
8.D
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
unsigned short *sum(unsigned char a,unsigned char b){
unsigned short s=0;
s=a+b;
return &s;
}
int main(){
unsigned short *p=NULL;
unsigned char a=1,b=2;
p=sum(a,b);
printf("%u+%u=%u\n",a,b,*p);//1+2=3
return 0;
}
填空题1
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
int main(){
char *pcColor="CSOFTX3000";
char acColor[]="CSOFTX3000";
printf("%d\n",strlen(pcColor));//10
printf("%d\n",strlen(acColor));//10
printf("%d\n",sizeof(pcColor));//4
printf("%d\n",sizeof(acColor));//11,字符串结束标志'\0'
return 0;
}
填空题2
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
unsigned short* pucCharArray[10][10];
typedef union unRec{
unsigned long ullndex;
unsigned short usLeve[7];
unsigned char ucPos;
}REC_S;
int main(){
REC_S stMax,*pstMax;
printf("%d\n",sizeof(pucCharArray));//400
printf("%d\n",sizeof(stMax));//16
printf("%d\n",sizeof(pstMax));//4
printf("%d\n",sizeof(*pstMax));//16
return 0;
}
填空题3
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
int main(){
unsigned char puc[4];
struct tagPIM{
unsigned char ucPim1;
unsigned char ucData0:1;
unsigned char ucData1:2;
unsigned char ucData2:3;
}*pstPimData;
pstPimData=(struct tagPIM*)puc;
memset(puc,0,4);
pstPimData->ucPim1=2;
pstPimData->ucData0=3;
pstPimData->ucData1=4;
pstPimData->ucData2=5;
printf("%02x %02x %02x %02x\n",puc[0],puc[1],puc[2],puc[3]);//02,29,00,00
printf("%02d %02d %02d %02d\n",puc[0],puc[1],puc[2],puc[3]);
return 0;
}
编程题1:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
int fun(int a[],int n)//0~n-1
{
int cnt=1;
for(int i=1;i<n;i++){
if(a[i]!=a[i-1]){
a[cnt++]=a[i];
}
}
for(int i=0;i<cnt;i++)
printf("%d\n",a[i]);
return cnt;
}
int main(){
int a[]={1, 1, 2, 2, 3, 4, 5, 6, 6};
printf("%d\n",fun(a,sizeof(a)/sizeof(a[0])));
return 0;
}
编程题2:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
int fun(int k,int a[],int n,int b[],int m)//0~n-1,0~m-1
{
int tot=0;
int i=0,j=0;
while(i<n&&j<m){
if(a[i]<b[j]){
tot++;
if(tot==k) return a[i];
i++;
//c[tot++]=a[i],i++;
}
else{
tot++;
if(tot==k) return b[j];
j++;
//c[tot++]=b[j],j++;
}
}
while(i<n){
//c[tot++]=a[i],i++;
tot++;
if(tot==k) return a[i];
i++;
}
while(j<m){
//c[tot++]=b[j],j++;
tot++;
if(tot==k) return b[j];
j++;
}
}
int main(){
int a[]={1, 3, 5, 7, 9, 11, 13 };
int b[]={ 2, 4, 6, 8, 10};
printf("%d\n",fun(5,a,7,b,5));
return 0;
}
编程题3
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
using namespace std;
typedef long long LL;
class Date
{
public:
Date(int year=1900,int month=1,int day=1):_year(year),_month(month),_day(day)
{
//检查如果输入参数是非法时间,初始化为1900-1-1
if(CheckIsInvaildDate())
{
year=1900;
month=1;
day=1;
}
}
Date(const Date& d):_year(d.year),_month(month),_day(day){}
Date& operator =(const Date& d)
{
if(this!=d){
this._year=d._year;
this._month=d._month;
this._day=d._day;
}
return *this;
}
//检查时间是否有效
bool CheckIsInvaildDate()
{
if(_year<1||(_month<1||_month>12)||(_day<1||_day>DateOfMonth(_year,_month)))
return true;
return false;
}
void Display()
{
cout<<_year<<"-"<<_month<<"-"<<_day<<endl<<endl;
}
};