西郵Linux興味グループ2017納新試験問題総括
21741 ワード
1.下記のプログラムの出力を分析する
2.次のコードは何を出力しますか?
3.次のコードは正しいですか?正しい場合は、コードの役割を説明してください.正しくない場合は、エラーを指摘して修正してください.
4.次のコードの出力結果を説明してください.
5.staticグローバル変数と一般的なグローバル変数の違いは何ですか?staticローカル変数と普通のローカル変数の違いは何ですか?static関数と普通の関数の違いは何ですか?
6.次のプログラムはそれぞれ配列の中の何番目の0を出力しますか?
7.constキーワードの役割は何ですか?次のいくつかの定義に違いがありますか?
8.include<>とinclude""の違いを教えてください.なぜ#includeを使用する必要があるのですか?
9.次のプログラムの実行結果を説明します.
10、次のコードは何を出力しますか?どうして?
11.次のプログラムの実行結果は何ですか.
12.次のプログラムのLinuxとWindowsでの出力結果を比較し、原因を考えます.
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