练习45_赋值




练习45


考试规则:点击你认为正确的选项


1.有以下程序


#include <stdio.h>
#include <stdlib.h>
void fun(int *p1,int *p2,int *s )
{
s=( int * )malloc( sizeof(int) );
*s=*p1 + *(p2++);
}
main()
{
int a[2]={1,2 }, b[2]={10,20}, *s=a;
fun( a,b,s );
printf("%d\n", *s ); .
}

程序运行后的输出结果是( ),

A.11

回答错误 ✕

B.10

回答错误 ✕

C.1 

回答正确 √

试题解析

本题考查把数组名作为函数参数,执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1,选项C正确。



D.2

回答错误 ✕

点击答题丨点击选项查看对错丨展开动画


2.有以下程序



#include <stdio.h>
main()
{
char a[4]14]={ ‘’};
int I,j;
for(i=0;i<4; i++)
{ a[i[0]=a[][3]='#; .
for(j=1;j<3; j++)
{ a[0][j]=a[3]j]='#;
if((i!=0)&(i!=3))
a[i]i]='o';
}
}
for(i=1;i<3; i++)
{
for(j=0; j<4.j+)
print("%2c",a[i][]);
printf("\n");
}
}

程序的运行结果是( )。

A.#oo##oo#

回答正确 √


试题解析

程序的执行过程为:定义4行4列二维数组字符a并且初始化为a[0][0]=",其他元素均为0。执行for循环将数组第-列和第四列赋值为'#'。执行for循环将数组第一行和第四行的第二个到第三个元素赋值为'#',然后将剩余元素全部赋值为'o’。此时矩阵为{{#,#,#,#},{#,o,0,#},{#,o,0,#),{#,#,#,#}}。之后输出矩阵第二行与第三行元素为: #oo#<回车> #oo#, A选项正确。



B.#####oo#

回答错误 ✕

C.#oo#####

回答错误 ✕


D.########

回答错误 


点击答题丨点击选项查看对错丨展开动画



3.有以下程序



#include <stdio.h>
int new. _div(double a, double b)
{
returna/b+0.5;
} .
main( )
{
printf("%d", new. _div(7.8, 3.1));
}

程序运行后的输出结果是( )。

A.1

回答错误 ✕

B.2

回答错误 ✕

C.3

回答正确 √


试题解析

new_ div()的返回值是int类型,因此, a/b(a, b均为double类型)+0.5的小数部分被将被截断。经计算,7.8/3.1+0.5-2.516+0.5-3.01 6,故打印的结果为3。故答案为C选项




D.0

回答错误 ✕

点击答题丨点击选项查看对错丨展开动画