c++/c筆記試験のいくつかの小さい問題《1》
7163 ワード
1.解析出力結果
#include
using namespace std;
struct base{
public:
virtual void print(){cout<<"base fun/n";}
private:
string basename;
};
struct derived:base{
public :
void print(){cout<<"derived fun/n";}
};
int main(){
base bobj;
//b.print();
base *bp1=&bobj;
//bp1->print();
base& br1=bobj;
//1.print();
derived dobj;
base *bp2=&dobj;
bp2->print();
base& br2=dobj;
br2.print();
cin.get();
}
#include
#include
struct Lnode
{int data;
struct Lnode *next;
};
typedef struct Lnode *LinkedList;
int n;
LinkedList p;
LinkedList InitLinkedList(){
LinkedList temp;
static LinkedList head;
int i;
p=head=(LinkedList)malloc(sizeof(LinkedList));//ヘッドマーク
head->data=1;
//head->next=NULL;
//list=head;
for(i=2;i<=n;i++){
temp=(LinkedList)malloc(sizeof(LinkedList));
temp->data=i;//temp->next=NULL;
p->next=temp;
p=temp;
}
p->next=head;
return head;
}
LinkedList ListFind(int location,LinkedList list){
int i;
LinkedList temp;
for(i=1;i temp=list;//リストはヘッダノードを表します
list=temp->next;
}
return list;
}
void DeList(LinkedList list,int number){
int i;
LinkedList temp;
while(n!=0){
for(i=1;i temp=list;
list=list->next;
}
printf("%d ",list->data);
temp->next=list->next;
temp=list;
list=list->next;
free(temp);
n--;
/*p1->next=p2->next;
p=p2;
p2=p2->next;
free(p);
n--;*/
}
}
int main(void)
{
LinkedList ResultList,list;
//struct josephu *head,*p0;
int local,num;
printf("/n総人数n、位置i、m(スペースで区切られた):")を入力してください.
scanf("%d%d%d",&n,&local,&num);
//InitLinkedList(q);
//ListFind(local,q)
//del(q,num);
ResultList=InitLinkedList();
list=ListFind(local,ResultList);
DeList(list,num);
getch();
return 0;
}
3下記が正しいか判断する
(1).char *dst="hello";
char *str;
strcpy(str,dst);//エラー、「hello」が定数領域にあるためstrcpy関数実装エラー
(2)char *str=NULL
char dest[]="hello";
strcpy(dest,str);//空のポインタのためエラー..
4、(1)char a[]="20a/012" ;sizeof(a)の答えを求めて5で、/0は空の文字(NULL)を代表しました;/dddに解析されていないモード、すなわちバイトコード
(2)short int a=65539; printf(a);答えは3
#include
using namespace std;
struct base{
public:
virtual void print(){cout<<"base fun/n";}
private:
string basename;
};
struct derived:base{
public :
void print(){cout<<"derived fun/n";}
};
int main(){
base bobj;
//b.print();
base *bp1=&bobj;
//bp1->print();
base& br1=bobj;
//1.print();
derived dobj;
base *bp2=&dobj;
bp2->print();
base& br2=dobj;
br2.print();
cin.get();
}
2. Josephu
: 1
,2
,… n
n
, k
(1<=k<=n
) 1
, m
, 1
, m
, , , 。
: Josephu
, n
, k
1
, m
, , 1
, , 。
#include
#include
struct Lnode
{int data;
struct Lnode *next;
};
typedef struct Lnode *LinkedList;
int n;
LinkedList p;
LinkedList InitLinkedList(){
LinkedList temp;
static LinkedList head;
int i;
p=head=(LinkedList)malloc(sizeof(LinkedList));//ヘッドマーク
head->data=1;
//head->next=NULL;
//list=head;
for(i=2;i<=n;i++){
temp=(LinkedList)malloc(sizeof(LinkedList));
temp->data=i;//temp->next=NULL;
p->next=temp;
p=temp;
}
p->next=head;
return head;
}
LinkedList ListFind(int location,LinkedList list){
int i;
LinkedList temp;
for(i=1;i
list=temp->next;
}
return list;
}
void DeList(LinkedList list,int number){
int i;
LinkedList temp;
while(n!=0){
for(i=1;i
list=list->next;
}
printf("%d ",list->data);
temp->next=list->next;
temp=list;
list=list->next;
free(temp);
n--;
/*p1->next=p2->next;
p=p2;
p2=p2->next;
free(p);
n--;*/
}
}
int main(void)
{
LinkedList ResultList,list;
//struct josephu *head,*p0;
int local,num;
printf("/n総人数n、位置i、m(スペースで区切られた):")を入力してください.
scanf("%d%d%d",&n,&local,&num);
//InitLinkedList(q);
//ListFind(local,q)
//del(q,num);
ResultList=InitLinkedList();
list=ListFind(local,ResultList);
DeList(list,num);
getch();
return 0;
}
3下記が正しいか判断する
(1).char *dst="hello";
char *str;
strcpy(str,dst);//エラー、「hello」が定数領域にあるためstrcpy関数実装エラー
(2)char *str=NULL
char dest[]="hello";
strcpy(dest,str);//空のポインタのためエラー..
4、(1)char a[]="20a/012" ;sizeof(a)の答えを求めて5で、/0は空の文字(NULL)を代表しました;/dddに解析されていないモード、すなわちバイトコード
(2)short int a=65539; printf(a);答えは3