有以下程序:#include<stdio.h>main(){inta[]={1,2,3,4},y,*p=&amp;a[3];--p;y=*p;printf("y=%d\n

题目
有以下程序:includemain(){inta[]={1,2,3,4},y,*p=&a[3];--p;y=*p;printf("y=%d\n

有以下程序: #include<stdio.h> main() {inta[]={1,2,3,4},y,*p=&a[3]; --p;y=*p;printf("y=%d\n",y); } 程序的运行结果是( )。

A.y=0

B.y=1

C.y=2

D.y=3

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序includemain(){inta[]={1,2,3,4},y,*p=&a[3]; --p;y=*p;printf("y=%d\n

有以下程序 #include <stdio.h> main() { int a[]={1,2,3,4},y,*p=&a[3]; --p; y=*p;printf("y=%d\n",y); } 程序的运行结果是

A.y=0

B.y=1

C.y=2

D.y=3


正确答案:D
解析:在程序中指针变量p初始指向a[3],执行p减1后,p指向a[2],语句y=*p的作用是把a[2]的值赋给变量y,所以输出为y=3。

第2题:

有以下程序:includemain(){int a[]={1,2,3,4},y,*p=&a[3];--p;y=*p;printf("y=%d\n",y

有以下程序: #include<stdio.h> main() { int a[]={1,2,3,4},y,*p=&a[3]; --p;y=*p;printf("y=%d\n",y); } 程序的运行结果是( )。

A.y=0

B.y=1

C.y=2

D.y=3


正确答案:D
解析:本题主要考查一维数组及数组元素的地址。程序中定义数组a后知,a[0]=1,a[1]=2,a[2]=3,a[3]=4;在定义指针p时给其赋值为a[3]的地址。执行--p;语句后,p指向数组元素a[2];然后执行y=*p;语句,y的值为指针p所指向的变量的值为3。

第3题:

以下程序的输出结果是include "stdio.h"int *f(int *x,int *y){ if(*x<*y) return x; else return y;}main(){ int a=7,b=8, *p,*q,*r ; p=&a; q=&b; r= f(p,q); printf("%d,%d,%d\n",*p,*q,*r);}


正确答案:7,8,7。
在本题中,程序首先定义了一个函数f,其结构是int *f(int *x,int *y),这个结构说明函数f的返回类型是指针型,函数f的两个变量分别是指针变量x和y,从程序中我们很容易看出,这个函数的作用是返回形参中值较小的指针值(即地址值),返回的是指针型的结果。
在主函数中,首先定义了两个整型变量,分别赋初值7和8,并定义了三个指针型变量,接着将指针变量p和q分别指向变量a和b,然后调用函数f,参数分别为指针变量p和q,很显然,p所指向的值小于q所指向的值,那么返回指针变量p的地址值给指针变量r,由于指针变量P的地址值是变量a存储单元的地址值,也就是说,指针变量r指向变量a,因此,最后程序的输出结果是7,8,7。

第4题:

有以下程序includestruct ord{ int x,y;} dt[2]={1,2,3,4};mare(){struct ord*p=dt; p

有以下程序 #include<stdio.h> struct ord { int x,y;} dt[2]={1,2,3,4}; mare() { struct ord*p=dt; printf("%d,",++p->x); printf("%d\n",++p->y); } 程序的运行结果是______。

A.1,2

B.2,3

C.3,4

D.4,1


正确答案:B
解析:本题主要考查了结构体变量成员的引用,有三种形式来引用结构体变量中的成员:(1)结构体变量名.成员名:(2)指针变量名->成员名;(3)(*指针变量名).成员名。其中点号“.”称为成员运算符;箭头“->”称为结构指向运算符。由于p->x指向了结构体的的成员x,而结构体中x的值为1,因此自增后变为2,p->y指向了结构体的成员y,而结构体中y的值为2,因此自增后变为3,因此,选项B是正确的。

第5题:

请将以下程序中的函数声明语补充完整。 include int【】 main(){int x,y,(*p)(); sccanf("

请将以下程序中的函数声明语补充完整。

include<stdio.h>

int【 】

main()

{ int x,y,(*p)();

sccanf("%d%d",&x,&y);

p=max;

printf(%d\n",(*p)(x,y));

}

int max(int a,int b)

{return(a>b?a:b);}


正确答案:max(int aint b)
max(int a,int b) 解析:在C语言中,除了主函数外,对于用户定义的函数都遵循“先定义,后使用”的规则,若把函数定义放在调用之后,应该在调用之前对函数进行说明(或称为函数原型说明)。
函数的说明形式为:
类型名 函数名(参数类型1,参数类型2……)
本题是通过max()函数来求出a和b中较大的数,由于max()函数的位置在main()函数之后,想要在main()函数中调用max()函数,就必须先在main()函数之前对max()函数进行说明,因为当在所有函数外部、被调用之前说明函数时,在对函数进行说明的语句后面所有位置上都可以对该函数进行调用。所以,在横线上应该填上被调函数的说明语句即 max(int a,int b) 。

第6题:

有以下程序:include main() {int a[] = {2,4,6,8,10} ,y =0,x, * p;p =&a[1];for(

有以下程序: #include <stdio.h> main() { int a[] = {2,4,6,8,10} ,y =0,x, * p; p =&a[1]; for(x=1;x<3;x++)y+ =p[x]; printf( "% d \n" , y); }程序运行后的输出结果是( )。

A.10

B.11

C.14

D.15


正确答案:C
解析:本程序通过语句p=&a[1];将指针变量p指向存储单元a[1],使得p[0]的值为4,通过for循环,使y的值丸P[1]与p[2]之和,即y=6+8,所以输出的y值为14。

第7题:

有下列程序: include main() {int a[]={1,2,3,4},y,*p=&a[3]; --

有下列程序: #include <stdio.h> main() {int a[]={1,2,3,4},y,*p=&a[3]; --p; y=*p; printf("y=%d\n",y); } 程序的运行结果是( )。

A.y=0

B.y=1

C.y=2

D.y=3


正确答案:D
解析:首先定义了一个一维数组和指针,接着将数组第四个元素的地址赋予*p,进行--p使指针p指向了数组的第三个元素,通过 y=*p:将数组第三个元素的值3赋予y,所以选项D)正确。

第8题:

有以下程序includemain(){inta[]={1,2,3,4},y,*p=&a[3];--p;y=*p;printf("y=%d\n"

有以下程序 #include <stdio.h> main() { int a[]={1,2,3,4},y,*p=&a[3]; --p; y=*p;printf("y=%d\n",y); } 程序的运行结果是

A.y=0

B.y=1

C.y=2

D.y=3


正确答案:D
解析: 在程序中指针变量P初始指向a[3],执行p减1后,P指向a[2],语句y=*p的作用是把a[2]的值赋给变量y,所以输出为y=3。

第9题:

有以下程序

#include <stdio.h>

main( )

{ int a[ ]={1,2,3,4},y,*p=&a[3];

--p; y=*p; printf("y=%d\n",y);

}

程序的运行结果是

A)y=0

B)y=1

C)y=2

D)y=3


正确答案:D