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();
}
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       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