西郵Linux興味グループ2017納新試験問題総括

21741 ワード

1.下記のプログラムの出力を分析する
int main(int argc, char *argv[])
{
    int t = 4;
    printf("%lu
"
, sizeof(t--)); printf("%lu
"
, sizeof("ab c
t\012\xa1*2"
)); return 0; }
 sizeof(t--)  int    ,   4;
 ab c 4   ,
,\012,*,2, 1 ,\xal 2 ;

2.次のコードは何を出力しますか?
int main(int argc, char *argv[])
{
    int a = 10, b = 20, c = 30;
    printf("%d %d
"
, b = b*c, c = c*2) ; printf("%d
"
, printf("%d ", a+b+c)); return 0; }
 printf                 ,        ,   printf()           ,   c=60,b=1200;
    a+b+c  1270,       4;

3.次のコードは正しいですか?正しい場合は、コードの役割を説明してください.正しくない場合は、エラーを指摘して修正してください.
void get_str(char *ptr)
{
    ptr = (char*)malloc(17);
    strcpy(ptr, "Xiyou Linux Group");
}
int main(int argc, char *argv[])
{
    char *str = NULL;
    get_str(str);
    printf("%s
"
, str); }
    str    ,           ;         return  ptr;

4.次のコードの出力結果を説明してください.
size_t q(size_t b)
{
        return b;
}
size_t (*p(char *str))(size_t a)
{
        printf("%s
"
, str); return q; } int main(int argc, char *argv[]) { char str[] = "XiyouLinuxGroup"; printf("%lu
"
, p(str)(strlen(str))); return 0; }
 size_t (*p(char *str))(size_t a)              ,()     * ,  p  ()  ,p(char *str)             ,    size_t (*)(size_t a),            

5.staticグローバル変数と一般的なグローバル変数の違いは何ですか?staticローカル変数と普通のローカル変数の違いは何ですか?static関数と普通の関数の違いは何ですか?
        1.static          ,              ,                
        2.static            ,           
        3.static            

6.次のプログラムはそれぞれ配列の中の何番目の0を出力しますか?
int main()
{
	int a[][2]={0,0,0,0,0,0,0,0};
	for(int i=0;i<=2;i++)
	{
		printf("%d
"
,a[i][i]); } return 0; }
     1 , 4 , 7 ;

7.constキーワードの役割は何ですか?次のいくつかの定義に違いがありますか?
const char *p;
char const *p;
char *const p;
const char *const p;
 const char *p;               ,                 
 char const *p;          ,              ,             ,
 char *const p;             ,                ,                 
 const char *const p;        :                           

8.include<>とinclude""の違いを教えてください.なぜ#includeを使用する必要があるのですか?
 #include< >                               
 #include" "                                 

9.次のプログラムの実行結果を説明します.
int main()
{
	int a,b=2,c=5;
	for(a=1;a<4;a++)
	{
		switch(a)
		{
			b=99;
			case 2:
				printf("c is %d
"
,c); break; default: printf("a is %d
"
,a); case 1: printf("b is %d
"
,b); break; } } return 0; }
   switch case        ,  b=2;

10、次のコードは何を出力しますか?どうして?
int main()
{
	unsigned int a=10;
	int b=-20;
	if(a+b>0)
	{
		printf("a+b=%d
"
,a+b); } else { printf("a=%d b=%d
"
,a,b); } return 0; }
   a+b=-10;        ,        ,       ;

11.次のプログラムの実行結果は何ですか.
int main()
{
	int nums[5]={2,4,6,8,10};
	int *ptr=(int*)(&nums+1);
	printf("%d %d
"
,*(nums+1),*(ptr-1)); return 0; }
    4 10;*(nums+1) nums   2   ,(&nums+1)           ;

12.次のプログラムのLinuxとWindowsでの出力結果を比較し、原因を考えます.
int main()
{       
        while(1)
        {
                fprintf(stdout, "Group ");
                fprintf(stderr, "XiyouLinux");
                getchar();
        }
        return 0;
}    
 Linux:XiyouLinuxGroup ---stderr    ,stdout    --          ,       
 Windows:Group XiyouLinux---window stdout stderr