1.设 x 和 y 均为逻辑值,则 x && y 为真的条件是
解析:
它们均为真
&& 短路与 要两个都为真
|| 短路或 一个为真就可以
2.下列字符串为合法标识符的是
解析:
_1_A
标识符是由 数字 字母 下划线组成
区别大小写
不能使用关键字
不能数字开头
3.有以下C语言程序
#include <stdio.h>
int fun(int x[], int k)
{
if(k==0)
return (x[0]);
return x[0]+fun(x+1, k-1);
}
int main()
{ int x[ ]={1,2,3,4,5};
printf("%d\n", fun(x,3));
}
程序运行后的输出结果是
解析:
10
函数递归调用
数组作为参数传递的是数组首元素的第一个地址
4.字符初始化.char ch[7]={'s ’ , 't ’ , 'u ', 'd ', 'e ', 'n ‘, ’ t’ } ; 能得到"student"的输出(不包含其他字符),说法是否正确?
解析:错误
字符串就是以字符形式存储
但为了确定实际的字符串长度系统会默认在字符串末尾加‘\0’作为结束标志
题中的做法其实也是正确的
不过习惯在后面加‘\0’
5.以下代码
int x (int n) {
if (n <= 3)
return 1;
else
return x (n - 2) + x (n - 4) + 1;
}
int main (void) {
printf ("%d\n", x (x (8)));
return 0;
}
的输出和x函数被调用的次数分别是?
解析:9和18
函数的递归调用
算就完了
6.在C语言中,若有定义:int a [4] [10] (其中0<=i<4,0<=j<10); 则下列选项中对数组元素a [i] [j] 引用错误的是
解析:*** (a+i)+j**
这种方式得到的是地址而不是值
*(a+i)= a[i]
a[i]+j = a[i] [j]
7.以下程序的输出结果是
#include
main()
{ int
i=0,a=0;
while(i<20)
{ for(;;)
{
if((i%10)==0)
break;
else i--;
}
i+=11; a+=i;
}
printf("%d\n",a);
}
解析:32
8.阅读程序,请选择输出结果
#include <iostream>
using namespace std;
int main() {
int i, u[4], v[4], x, y = 10;
for (i = 0; i <= 3; i++) {
cin >> u[i];
}
v[0] = (u[0] + u[1] + u[2] + u[3]) / 7;
v[1] = u[0] / ((u[1] - u[2]) / u[3]);
v[2] = u[0] * u[1] / u[2] * u[3];
v[3] = v[0] * v[1];
x = (v[0] + v[1] + 2) - u[(v[3] + 3) % 4];
if (x > 10)
y += (v[2] * 100 - v[3]) / (u[u[0] % 3] * 5);
else
y += 20 + (v[2] * 100 - v[3]) / (u[v[0] % 3] * 5);
cout << x << "," << y << endl;
return 0;
}
<iostream.h>
//本例中,给定的输入数据可以避免字母为0或下标越界。输入:9 3 9 4 输出:()
</iostream.h>
解析:-13,57
9.下面程序的输出结果是
#include <iostream>
using namespace std;
int i = 0;
int fun( int n )
{
static int a = 2;
a++;
return(a * n);
}
int main()
{
int k = 5;
{
int i = 2;
k += fun( i );
}
k += fun( i );
cout << k;
return(0);
}
解析:11
10.()和()指令是#if defined() 和#if !defined()的方便写法
解析:
- #ifdef
- #ifndef