内容发布更新时间 : 2024/12/23 7:45:26星期一 下面是文章的全部内容请认真阅读。
22.下列叙述中正确的是( )。
A.可以用关系运算符比较字符串的大小 B.空字符串不占用内存,其内存空间大小是0 C.两个连续的单引号是合法的字符常量 D.两个连续的双引号是合法的字符串常量
【解析】D。比较两个字符串大小用函数strcomp(s,t),不能用关系运算符比较字符串的大小;空字符串有结束符(\\0),所以也要占用1字节;两个连续的单引号是不合法,单引号中间必须有一个字符(普通字符或转义字符);两个连续的双引号表示的是空字符串。
23.有以下程序: #include main()
{ rhar a=’H’;
a=(a>=’A’&&a<=’2’)(a-’A’+’a’):a; printf(\,a); }
程序运行后的输出结果是( )。
【解析】D。多元运算符问号前面表达式为真,所以(a-’A’+’a’)赋值给a,括号里的运算是把大写字母变成小写字母,所以答案应为选项D。
24.有以下程序: #include int f(int x); main() { int a,b=0; for(a=0;a<3;a++)
{b=b+f(a);putchar(’A’+b);} }
int f(int x) { return x * xl; }
程序运行后的输出结果是( )。
【解析】B。第一次循环时,b=1,输出结果为B; 第二次循环时,b=3,输出结果为D; 第三次循环时,b=8,输出结果为I。
25.设有定义:int x[2][3];,则以下关于二维数组X的叙述错误的是( )。
[0]可看做是由3个整型元素组成的一维数组 [0]和x[l]是数组名,分别代表不同的地址常量 C.数组X包含6个元素
D.可以用语句x[0]=0;为数组所有元素赋初值0
【解析】D。对于二维数组来说,数组的名字x是一个二级指针常量;第一维表示行地址,比如:x[0]表示第一行的地址,而且是个地址(一级指针)常量,所以x[0]是不能赋值的。
26.设变量P是指针变量,语句P=NULL;是给指针变量赋NULL值,它等价于( )。
=\ =\ =0; =\
【解析】C。在C语言中NULL等价于整数0。 27.有以下程序: #include <> main()
{int a[]={10,20,30,40},*p=a,j; for(i=0;i<=3;i++){a[i]=*p;p++;} printf(\,a[2]); }
程序运行后的输出结果是( )。
【解析】A。for循环中第一次循环时,a[0]=*p,因为有p=a;故相当于a[0]=*a;根据一维数组的定式:a[i]=*(a+i),说明每次循环是将数组的当前元素赋值给自己,后面每次循环依此类推。所以,for循环结束后,数组a的值并没有变化,由于数组下标是由0开始,所以a[2]的值是30。
28.有以下程序: #include <> #define N 3
void fun(int a[][N],int b[]) { int i,j;
for(i=0;i if(a[i][j]>b[i]) b[i]=a[i][j]; } } main() {int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i; fun(x,y); for(i=0;i printf(“%d,”,y[i]); } 程序运行后的输出结果是( )。 ,4,8, ,6,9, ,5,7, ,3,5, 【解析】B。fun函数功能是把数组a的每一行的最大值赋给b,a的第一行的最大值是3,第二行的最大值是6,第三行的最大值是9,所以答案是3,6,9。 29.有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数): #include <> #include <> main() {char a[10]=\,b[10]=\,c[10]=\ strcpy(a+1,b+2); puts(strcat(a,c+1)); } 程序运行后的输出结果是( )。