以下の問に答えよ。
[1] 次のC言語プログラムの標準出力への表示結果を示せ。
#include <stdio.h>
int main(void)
{
int x1 = 4321, x2 = 0xf0f0;
printf(" %x %d %d %x \n", x1, x1+x2, x1&x2, x1>>4);
return 0;
}[2] 整数値を要素とする配列変数の要素を逆順に並べるプログラムをC言語で作成した。関数fには整数型配列変数aと整数型変数nを引数として与える。下線部を適切に埋めよ。
#include <stdio.h>
int f(int a[], int n)
{
int (1) ;
while( i < n/2 ){
b = a[i];
a[i] = (2) ;
(2) = b;
(3) ;
}
return 0;
}
int main(void)
{
int n = 5,i;
int a[] = {1,2,3,4,5};
f(a,n);
for( i=0; i<n; i++ ) printf("%d",a[i]);
return 0;
}標準出力結果例:
54321[3] 文字列変数の長さを計算するプログラムを、再帰的プログラミングを用いてC言語で作成した。関数fには文字型配列変数aと整数型変数nを引数として与える。下線部を適切に埋めよ。
#include <stdio.h>
int f(char *a, int n)
{
if( *a == (1) ){
return (2) ;
}else{
return f( (3) ) ;
}
}
int main(void)
{
int n = 0;
char a[] = "This is a pen.";
printf("%d", f(a,n));
return 0;
}標準出力結果例:
14解答:
[1]
出力文字列の先頭には空白が含まれる。
[2]
[3]
题目1考察了C语言中不同格式控制符的输出以及位运算机制,将十进制转换为十六进制、进行按位与运算以及右移运算是得出对应输出结果的关键,同时要注意输出字符串中预留的空格。题目2考察了数组元素的遍历以及首尾对称位置元素的交换,必须在循环前定义好循环控制变量与交换所需的中间暂存变量。题目3利用递归计算字符串长度,基准条件是遇到字符串结束的空字符时直接返回当前的长度计数,否则将字符指针向后移动一位并使长度计数器自增,将更新后的参数传入下一次递归调用中。