更多“单选题有以下程序 #include main() {  inta=1,b=3,c=5;  int*p1=a,*p2=b,*p=c;  *p=*p1*(*p2);  printf(%d,c); } 执行后的输出结果是(  )。A 4B 2C 1D 3”相关问题
  • 第1题:

    下列程序的运行结果是【 】。 include include void main() {char * a[5

    下列程序的运行结果是【 】。

    include<iostream. h>

    include<string. h>

    void main()

    {

    char * a[5]={"stuent","worker","teacher","soldier"," peasant"};

    char * p1, * p2;

    p1=p2=a[0]

    for(int i=0;i<5;i++)

    {

    if(strcmp(a[i],p1)>0)

    p1=a[i];

    if(strcmp(a[i],p2)<0)

    p2=a[i];

    }

    cout<<p1<<","<<p2<<endl;

    }


    正确答案:workerpeasant
    worker,peasant 解析:分析本题的for循环体内的语句可知,p1和p2将放置最大和最小的字符串,这里的比较是以第一个字符值为基准的。

  • 第2题:

    下列程序的输出结果是______。main(){ static int num[5]=}1,3,5,7,9};int*p1,**p2;p1=num;p2=&am

    下列程序的输出结果是______。 main() { static int num[5]=}1,3,5,7,9}; int*p1,**p2; p1=num; p2=&p1; printf("%d,",*(++p1)); printf("%d\n",**p2); }

    A.3,1

    B.3,3

    C.1,1

    D.1,3


    正确答案:B
    解析:指针p1指向数组num的首地址(同第一个元素的地址),二级指针变量p2指向p1。第一个输出语句中p1先移动一个单位,指向第二个数组元素,再输出元素的值(3),p1的移动不改变p2的指向。因此,第二个输出语句输出的也是3。

  • 第3题:

    有以下程序: main { int a=1,b=3,C=5,*P; int*p1=&a,*p2=&b,*p3=&c; *p=*p1*(*p2); } 执行后的输出结果是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:C
    本题中指针p1、p2、p3指向a、b、c值所存放的地址空间,然后再将指针变量*p1、*p2中值的乘积赋给指针变量*P,即赋给变量c,输出c的值3。

  • 第4题:

    分析下列程序:includemain(){int*p1,*p2,*p;int a=6,b=9;p1=&a;p2=&b;if(a

    分析下列程序: #include<stdio.h> main() { int*p1,*p2,*p; int a=6,b=9; p1=&a;p2=&b; if(a<b){p=p1;p1=p2;p2=p;} printf("%d,%d",*p1,*p2); printf("%d,%d",a,b); } 程序的输出结果为( )。

    A.9,6 6,9

    B.6,9 9,6

    C.6,9 6,9

    D.9,6 9,6


    正确答案:A
    解析: 通过p1=&a,p2=&b分别将a、b的地址赋给指针p1、p2,接着执行if语句,发现ab成立,则通过交换p1、p2的值,即交换a、b所在存储单元的地址,但是a、b的值并没有发生变化。

  • 第5题:

    下面程序的输出结果是includeincludevoid main( ){char p1[10],p2[10]s

    下面程序的输出结果是 #include<iostream.h> #include<string.h> void main( ) { char p1[10],p2[10] strcpy(p1,"abc"); strcpy(p2,"ABC"); char str[50]="xyz"; strcpy(str+2,strcat(p1,p2));

    A.xyzabcABC

    B.zabcABC

    C.xyabcABC

    D.yzabcABC


    正确答案:C
    解析:该函数的调用方式是strcpy(字符数组,字符串)其中“字符串”可以是串常量,也可以是字符数组。函数的功能是将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志'\0'一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。strcat (字符数组,字符串)功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。②连接前两个字符串都有结束标志'\0',连接后“字符数组”中存储的字符串的结束标志'\0'被舍弃,只在目标串的最后保留一个'\0'。

  • 第6题:

    有以下程序:void fun(char* a,char* B) ;{a=b;(*A) ++;}main(){charc1='A',c2='a',*p1,*p2;p1=&a

    有以下程序: void fun(char* a,char* B) ; { a=b; (*A) ++; } main() { char c1='A',c2='a',*p1,*p2; p1=&cl; p2=&c2: fun(p1,p2); printf("%c%c\n",c1,c2); } 程序运行后的输出结果是

    A.Ab

    B.aa

    C.Aa

    D.Bb


    正确答案:A
    解析:经过分析得知fun()函数的功能:将形参9指向形参b所指的存储空间,然后使形参a指向变量的值加1。在主函数中定义了字符型指针变量p1和p2,并让它们分另别指向c1和c2.然后将p1、p2作为实参传递给形参a、b.在fun()函数中,首先让指针变量p1向p2,然后p1指向的存储空间的值加1,即让变量c2加1为“b”,而c1的值没有被改变,仍然是“A”。所以,4个选项中选项A符合题意。

  • 第7题:

    有以下程序: main() {int a=1,b=3,c=5; int*p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf("%d\n",C); } 执行后的输出结果是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:C
    解析:*p1=1,*p2=3,*p=3,指针p指向变量c,故正确选项为C。

  • 第8题:

    以下程序运行后的输出结果是______。 main() { char a[]="ABCDEFGH",b[]="abCDefGh"; char*p1,*p2;int k; p1=a;p2=b; for(k=0;k<=7;k++) if*(p1+k)==*(p2+k))printf("%c",*(p1+k)); printf("\n"); }

    A.ABCDEFG

    B.CDG

    C.abcdefgh

    D.abCDefGh


    正确答案:B

  • 第9题:

    以下程序 include include main() { char*p1="abc",*p2="ABC",str[50]="xy

    以下程序 #include<stdio.h> #include<string.h> main() { char*p1="abc",*p2="ABC",str[50]="xyz"; strcpy(ar+2,strcat(p1,p2)); printf("%s\n",str); } 的输出是______。

    A.xyzabcABC

    B.zabeABC

    C.yzabcABC

    D.xyabcABC


    正确答案:D
    解析:strcat(p1,p2)将字符串abcABC防到了*p1所指向的存储单元中:strcpy在本题将abcABC复制到str+2所指向的存储单元中,即覆盖原str数组中的字符z及其后的所有字符,故str的值为“xyabcABC”。

  • 第10题:

    试题35

    有以下程序

    #include <stdio.h>

    #include <string.h>

    void fun(char *w,int m)

    { char s, *p1, *p2;

    p1=w; p2=w+m-1;

    while(p1<p2){s=*p1; *p1=*p2; *p2=s; p1++; p2- -;}

    }

    main()

    { char a[]=”123456”;

    fun(a, strlen(a)); puts(a);

    }

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

    A.654321

    B.116611

    C.161616

    D.123456


    正确答案:A
    试题35分析
    while(p1<p2){s=*p1; *p1=*p2; *p2=s; p1++; p2- -;}的作用是将字符串中的字符进行首尾交换,即相当于将原来的字符串倒序输出。
    试题35答案
    A

  • 第11题:

    单选题
    有以下程序:#include #include #include main(){ char*p1,*p2; p1=p2=(char*)malloc(sizeof(char)*10); strcpy(p1,malloc); strcpy(p2,p1+1); printf(%c%c, p1[0], p2[0]);}程序的运行结果是(  )。
    A

    aa

    B

    ma

    C

    am

    D

    mm


    正确答案: D
    解析:
    malloc函数的原型为:malloc(size);,函数的作用是在内存的动态存储区申请分配一个长度为size的连续空间。程序执行过程为:定义两个字符类型指针p1和p2,动态开辟10个字符类型的内存单元,并且使指针p1与p2均指向这10个内存单元的第一个单元。调用strcpy函数,将字符串“malloc”赋值给这10个内存单元的前7个单元,存储情况为:malloc\0,此时p1指向10个内存单元的第一个单元。再次调用strcpy函数,这10个内存单元的第2个单元到第7个单元元素重新赋值给p2指向的内存单元以及以后的5个单元,存储情况为:alloc\0\0,此时p1和p2均指向10个内存单元的第一个单元。输出两个指针指向单元的数据值,结果为:aa,答案选择A选项。

  • 第12题:

    单选题
    有以下程序#include main(){ char *p1 = 0;  int *p2 = 0; float *p3 = 0; printf(%d,%d,%d, sizeof(p1), sizeof(p2), sizeof(p3));}程序运行后的输出结果是(  )。
    A

    4,4,4

    B

    1,4,8

    C

    0,0,0

    D

    1,2,4


    正确答案: A
    解析:
    sizeof函数用来获取类型或数据对象的长度,也即是一个这种数据类型的变量在内存中所占字节数。由于一个变量的地址也是一个值,因此就可以把这个地址值存放到另一个变量里保存。这种专门用来存放变量地址的变量,称为“指针变量”。所有类型的指针变量都是地址,所占字节数均为4,答案选择A选项。

  • 第13题:

    设有以下程序: include using namespace std; int main() {inta,b,k:4,m=6,*p1=&k

    设有以下程序:

    include<iostream>

    using namespace std;

    int main()

    {

    int a,b,k:4,m=6,*p1=&k,*p2=&m;

    a=p1==&m;

    b=(*p1)/(*p2)+7;

    cout<<a<<b<<end1;

    return 0;

    }

    执行该程序后,a的值为【 】,b的值为【 】。


    正确答案:0 7
    0 7 解析:本题考核的知识点是有关指针的运算。程序中定义了两个指针变量p1和p2,并通过赋初值让它们分别指向了变量k和m。语句“a=p1==&m;”中先执行关系运算符“p1==&m”,显然是0(假),然后把0赋值给a。接着执行语句“b=(*p1)/(*p2)+7”,此处*p1的值就是k的值4,*p2的值就是m的值6,即把“4/6+7”的结果赋给b,b的值为7。

  • 第14题:

    分析下面的程序 main() { int*p1,*p2,*p; int x=4,y=6; p1=&x;p2=&y; if(x<y) {p=p1;p1=p2;p2=p; } printf("%d,%d,",*p1,*p2); printf("%d,%d\n",x,y); } 程序的输出结果为_______。

    A.6,4,4,6

    B.4,6,6,4

    C.4,6,4,6

    D.6,4,6,4


    正确答案:A
    解析:if语句执行前,指针变量p1指向变量x,指针变量p2指向变量y。由于xy成立,p1、p2分别指向变量y和变量x,因此,程序输出结果是6,4,4,6。

  • 第15题:

    下面程序的输出结果是 include includevoid main( ) { char p1[10] ,p2

    下面程序的输出结果是

    #include<iostream.h>

    #include<string.h>

    void main( )

    {

    char p1[10] ,p2[10] ;

    strcpy(p1,"abc") ;

    strcpy(p2,"ABC") ;

    char str[50] ="xyz";

    strcpy(str+2,strcat(p1,p2) ) ;

    cout < < str;

    }

    A.xyzabcABC

    B.zabcABC

    C.xyabcABC

    D.yzabcABC


    正确答案:C
    解析:该函数的调用方式是strcpy(字符数组,字符串) ,其中“字符串”可以是串常量,也可以是字符数组。函数的功能是将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志'\0'一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy( ) 函数来处理。strcat (字符数组,字符串) 的功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。②连接前两个字符串都有结束标志'\0',连接后“字符数组”中存储的字符串的结束标志'\0'被舍弃,只在目标串的最后保留一个'\0'。

  • 第16题:

    分析下列程序: include main() {int*p1,*p2,*p; inta=6,b=9; p1=&a;p2=&b; if

    分析下列程序:

    #include<stdio.h>

    main()

    { int*p1,*p2,*p;

    inta=6,b=9;

    p1=&a;p2=&b;

    if(a<B) {p=p1;p1=p2;p2=p;}

    printf("%d,%d",*p1,*p2) ;

    printf("%d,%d",a,B) ;

    }

    程序的输出结果为( )。

    A.9,6 6,9

    B.6,9 9,6

    C.6,9 6,9

    D.9,6 9,6


    正确答案:A
    解析:通过p1=&a,p2=&b分别将a、b的地址赋给指针p1、p2,接着执行if语句,发现ab成立,则通过交换p1、p2的值,即交换a、b所在存储单元的地址,但是a、b的值并没有发生变化。

  • 第17题:

    分析下列程序:includemain(){int *p1,*p2,*p; int a=6,b=9; p1=&a;p2=&b; if(

    分析下列程序: #include<stdio.h> main() { int *p1,*p2,*p; int a=6,b=9; p1=&a;p2=&b; if(a<b){p=p1;p1=p2;p2=p;} printf("%d,%d",*p1,*p2); printf("%d,%d",a,b); } 程序的输出结果为( )。

    A.9,66,9

    B.6,9 9,6

    C.6,9 6,9

    D.9,69,6


    正确答案:A
    解析:通过p1=&a,p2=&b分别将a、b的地址赋给指针p1、p2,接着执行if语句,发现ab成立,则通过交换p1、p2的值,即交换a、b所在存储单元的地址,但是a、b的值并没有发生变化。

  • 第18题:

    有以下程序:void fun (char *a,char *b){a=b;(*a)++;}main(){char cl='A',c2='a',*p1,*p2;p1=&am

    有以下程序: void fun (char *a,char *b) { a=b;(*a)++;} main() { char cl='A',c2='a',*p1,*p2; p1=&c1;p2=&c2;fun (p1,p2); printf("%c,%c\n",c1,c2); } 程序运行后的输出结果是( )。

    A.Ab

    B.aa

    C.Aa

    D.Bb


    正确答案:A
    解析:经过分析得知fun()函数的功能:将形参a指向形参b所指的存储空间,然后使形参a指向变量的值加1。在主函数中定义了字符型指针变量p1和p2,并让它们分别指向c1和c2。将p1、p2作为实参传递给形参a、b。在fun()函数中,首先让指针变量p1指向p2,然后p1指向的存储空间的值加1,即让变量c2加1为b,而c1的值没有被改变,仍然是A。所以,4个选项中选项A符合题意。

  • 第19题:

    若有如下程序: sub(int * t,int n) {int *p1, *p2; for(p1=t,p2=t;p1-t<n;p1++) if(*p1<*p2) p2=p1; return(*p2);} main() {int a[9]={9,36,19,39,26,5,6,33,15}; printf("%d\n",sub(a,9));} 则程序运行后的输出结果是( )

    A.5

    B.9

    C.15

    D.39


    正确答案:A

  • 第20题:

    下面程序的输出结果是includeincludemain(){char *p1="abc",*p2="ABC",str

    下面程序的输出结果是 #include<stdio.h> #include<string.h> main() { char *p1="abc",*p2="ABC",str[50]="xyz"; strcpy(str+2,strcat(p1,p2)); printf("%s\n",str);}

    A.xyzabcABC

    B.zabcABC

    C.xyabcABC

    D.yzabcABC


    正确答案:C
    解析:本题考查的重点是拷贝字符串——使用strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串)其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志‘\0’一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组,字符串)功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。③连接前两个字符串都有结束标志‘\0’,连接后“字符数组”中存储的字符串的结束标志‘\0’被舍弃,只在目标串的最后保留一个‘\0’。

  • 第21题:

    有以下程序:includevoid fun(char *a, char *b){ a=b;(*a)++;}main(){char c1='A',c2=

    有以下程序: #include <stdio.h> void fun(char *a, char *b) { a=b; (*a)++;} main() { char c1='A',c2='a',*p1,*p2; p1=&c1; P2=&c2; fun(p1,p2); printf("%c%c\n",c1,c2); } 程序运行后的输出结果是( )。

    A.Ab

    B.aa

    C.Aa

    D.Bb


    正确答案:A
    解析:本题中fun函数的形参是两个指向字符型数据的指针,其功能是把b赋给a,然后将a所指存储单元里的变量值加1。在main函数中,p1里存放的是c1的地址,p2里存放的是c2的地址,经函数调用fun(p1,P2)后,p2的值赋给了p1,使p1和p2都指向了c2,而(*a)++又使'a'的值加1变成了'b',所以此时c2的值为'b',而c1的值没变,仍为'A'。程序改变的是p1的地址和c2的值。

  • 第22题:

    单选题
    有以下程序:#include #include void fun(int*p1,int*p2,int*s){ s=(int*)malloc(sizeof(int)); *s=*p1+*p2; free(s);}main(){ int a=1,b=40,*q=&a; fun(&a,&b,q); printf(%d,*q);}程序运行后的输出结果是(  )。
    A

    42

    B

    0

    C

    1

    D

    41


    正确答案: A
    解析:
    main函数中定义了3个变量,a,b和指针变量q,并且q存放的是a的地址,fun函数中s是重新分配的空间,将重分配的空间中存放*p1和*p2即为1和40,然后释放s,而q没有变化,仍然指向变量a,故*q仍然为1,答案选择C选项。

  • 第23题:

    单选题
    有以下程序 #include  main() {  int a=1,b=3,c=5;  int *p1=&a,*p2=&b,*p=&c;  *p=*p1*(*p2);  printf(%d,c); } 执行后的输出结果是(  )。
    A

    4

    B

    2

    C

    1

    D

    3


    正确答案: D
    解析:
    本题中*p=*p1*(*p2)=a*b=3,也就是将指针p所指存储空间的值改为3,即c改为3。答案选择D选项。

  • 第24题:

    单选题
    有以下程序#include #include 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,*s);}程序运行后的输出结果是(  )。
    A

    1

    B

    10

    C

    11

    D

    2


    正确答案: C
    解析:
    初始化后,s指向数组a的首地址,在调用函数fun时,形参s和实参s是两个独立的int型指针,在fun函数内部,形参s指向新的存储空间,但是不会影响实参s的指向。所以,在main函数中,s仍然指向数组a的首地址,输出结果是1。答案选择A选项。