C语言习题求解答

1以下程序的输出结果( )
void fun(*intx,inty)
{prinf("%d %d" *x, *y);*x=3 ;*y=4;}
main()
{intx=1,y=2;
fun(&y,&x);
print("%d %d",x,y);
}
A1 2 3 4 B1 2 1 2 C2 1 4 3 D2 1 1 2

2已有声明语句“char ch;",与ch='C‘的值不相同的表达式是( )
Ach=0x43 Bch=0103 Cch=’\103' Dch=067

3若声明语句“intx=10,y=8,z=6,*p=&x;”则下列语句正确的是( )
A(*p)++=z ;B*(*p)++ ; Cprint(x%4==0?"%3d\n":"%3d",*p);Dx>20?return*p-20:*p-1;

4在以下程序中需要在fun函数中声明一个int型的变量则以下选项中( )不能用做该变量的名字
#include<math.h>
int y;
main( )
{inta=1;
fun(a)

int fun(intx)
{int ;/*int型变量声明语句位置*/
...../*若干执行语句*/


A x B y C fabs D fun
我要解释答案是CDCD

首先这个没什么解释的必要,非要解释的话也不过是套定义。
这种考试题本来就很无聊,直接上调试就知道了。

(1)C 这个很明显是fun传递进来的指针,通过指针直接改变了原值,注意函数调用时写的是 fun( &y1, &x1 ); 先Y后X
(2)D 这个题纯粹变态,实际根本就没必要记住ASCII码中'C'的值。'C'对应的值分别是 八进制 103 十进制 67 十六进制 43。
D的错误就在于 067表示的是八进制。
还有就是转义字符只能接2中形式,\xNN 或者 \NNN 分别是十六进制和八进制
(3)C 分别错在 类似 X++ = 5这种表达式不被允许,
P为整型指针而非二维指针却被两次用到*,
return A>0?B:C;被允许,
而 A>0?return B:return C;不被允许与三目表达式的规范有关。
(4)A 这个明显是不能用X命名,因为已有形参X,所以这样命名就是在同一作用范围内变量重定义。
而局部变量和全局变量和可以重名,并覆盖全局变量。
另外可以和函数名重名。

#include<stdio.h>
#include<stdlib.h>

void fun(int* x,int* y)
{
printf( "%d, %d\n", *x, *y );
*x = 3;
*y = 4;
}

int y2;
int fun4(int x) {
//int x; // x 重定义
int y2;
int fabs;
int fun;

return 0;
}

int main()
{
int x1=1,y1=2;
char ch = 'C';
int x = 10, y = 8, z = 6, *p = &x;

//(1)
fun( &y1, &x1 );
printf( "%d, %d\n", x1, y1 );

//(2)
if (ch!=0x43)
printf("A");
if (ch!=0103)
printf("B");
if (ch!='\103')
printf("C");
if (ch!=067)
printf("D");

//(3)
//(*p)++=z;
//*(*p)++;
printf(x%4==0?"%3d\n":"%3d",*p);
// (x>20) ? (return *p-20) : (return *p-1);

//(4)
fun4(4);

system("pause");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-07
ACDA
相似回答