单选题有以下程序:#include main(){ int a,b,k,m,*p1,*p2; k=1,m=8; p1=&k,p2=&m; a=/*p1-m; b=*p1+*p2+6; printf(%d,a); printf(%d,b);}编译时编译器提示错误信息,你认为出错的语句是(  )。A a=/*p1-m;B b=*p1+*p2+6;C k=1,m=8;D p1=&k,p2=&m;

题目
单选题
有以下程序:#include main(){ int a,b,k,m,*p1,*p2; k=1,m=8; p1=&k,p2=&m; a=/*p1-m; b=*p1+*p2+6; printf(%d,a); printf(%d,b);}编译时编译器提示错误信息,你认为出错的语句是(  )。
A

a=/*p1-m;

B

b=*p1+*p2+6;

C

k=1,m=8;

D

p1=&k,p2=&m;


相似考题
更多“有以下程序:#include <stdio.h>main(){ int a,b,k,m,*p1,*p2; k=1,m=8”相关问题
  • 第1题:

    有以下程序:include<stdio.h>main( ) { int a,b,k,m,*pl,*p2; k=1,m=8; p1=&k,p2=&a

    有以下程序:

    include<stdio.h>

    main( )

    { int a,b,k,m,*pl,*p2;

    k=1,m=8;

    p1=&k,p2=&m;

    a=/*pl-m;b=*p1+*p2+6;

    printf("%d",a);printf("%d\n",b);

    }

    编译时编译器提示错误信息,你认为出错的语句是( )。

    A.a=/*pl-m;

    B.b=*p1+*p2+6;

    C.k=1,m=8;

    D.pl=&k,p2-&m;


    正确答案:A

    本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

  • 第2题:

    现有如下程序段,则程序段的输出结果为 【16】 。

    #include "stdio.h"

    int fun()

    {static int k;

    return k;}

    main()

    {int m;

    m=fun();

    printf("%d\n",m);}


    正确答案:
    0

  • 第3题:

    现有如下程序段

    #include "stdio.h"

    int fun(int k,int *m)

    {if(k%3)*m=k*k;

    else *m=k/3;}

    main()

    { int (*p)(int,int *),m;

    p=fun;

    (*p)(78, &m);

    printf( "%d\n",m);}

    则程序段的输出结果为

    A.24

    B.25

    C.26

    D.27


    正确答案:C

  • 第4题:

    设有以下程序: 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。

  • 第5题:

    下面程序的输出结果是( )。 #include"stdio.h" int sub(int m) { static a=4; a+=m; return a; } void main() { int i=2,j=1,k; k=sub(i); k=sub(j); printf("%d",k); }

    A.6

    B.7

    C.8

    D.9


    正确答案:B
    解析:在函数sub()的函数体中定义了一个静态存储变量a,a的值在函数调用完毕返回主函数后仍存在。第一次调用sub(i),a=a+m=4+2=6,返回值为6。第二次调用sub(j),a=a+m=6+1=7,返回值为7,最后输出k的值为7。

  • 第6题:

    有以下程序 include int fun(int (*s)[4],int n,int k) {int m,i;

    有以下程序 #include <stdio.h> int fun(int (*s)[4],int n,int k) {int m,i; m=s[0][kl; for(i=1;i<n;i++) if(s[i][k]>m) m=s[i][k]; return m; } main() { int a[4][4]={{1,2,3,4},{11,12,13,14}, {21,22,23,24}, {31,32,33,34}}; printf("%d\n",fun(a,4,0)); } 程序的运行结果是______。

    A.4

    B.34

    C.31

    D.32


    正确答案:C
    解析:在主函数中,定义并初始化了4行4列的二维数组a,并通过调用fun函数,将fun函数中指向一维数组的指针变量s指向了二维数组a的首地址,使得指针变量s与数组a共用同一存储单元。在fun函数中,通过for循环,求得了数组a第0列中最大的值,并赋给m返回主函数。由于数组a第0列的值分别为1、11、21、31,故其最大值是31。

  • 第7题:

    以下程序的输出结果是______。includemain(){int k=4,m=1,p; p=func(k,m); printf("%d,

    以下程序的输出结果是______。 #include<stdio.h> main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p); } func(a,b) int a,b; { static int m=0,i=2; i+=m+1;m=i+a+b;return(m); }

    A.8,17

    B.8,16

    C.8,20

    D.8,8


    正确答案:A

  • 第8题:

    下列程序的运行结果是()。 include main() {static char a[]="Languagef",b[]="program

    下列程序的运行结果是( )。

    #include<stdio.h>

    main()

    { static char a[]="Languagef",b[]="programe";

    Char*p1,*p2;int k;

    p1=a;p2=b;

    for(k=0;k<=8;k++)

    if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));

    }

    A.gae

    B.ang

    C.program

    D.有语法错


    正确答案:A
    解析:本题考查指针的用法,if(*(p1+k)==*(p2+k))语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

  • 第9题:

    有以下程序: include using namespace std; int main() {intm[5],n[5],*px,*py,k;px=m

    有以下程序:

    include <iostream>

    using namespace std;

    int main()

    {

    int m[5],n[5],*px,*py,k;

    px=m;

    py=n;

    for(k=1;k<4;k++)

    {

    *px=k;

    *py=2*k;

    cout<<m[k-1]<<n[k-1];

    px++;py++;

    }

    cout<<end1;

    return 0;

    }

    运行后的输出结果为【 】。


    正确答案:122436
    122436 解析:本题考核数组与指针之间的相互关系。题中定义了两个指针 px.py并分别指向数组m和n,然后通过指针px.和py分别给数组m和n赋值,并输出其赋值结果。

  • 第10题:

    有以下程序#include "stdio.h"#define M(x,y) (x)*(y) #define N(x,y) (x)/(y) main(){ int a=5,b=6,c=8,k; k=N(M(a,b),c); printf("%d\n",k);} 程序的运行结果是A.3 B.5C.6 D.8


    正确答案:A
    带参数的宏定义的一般形式为#define 宏名(参数表)字符串。题目中定义了两个宏“#define M(x,y) (x)*(y)”、“#define N(x,y) (x)/(y)”,即可以用M(x,y) 表示(x)*(y)运算,N(x,y)表示(x)/(y)运算。主函数main中关键是计算k=N(M(a,b),c),根据前述的宏,有k=a*b/c,计算后有k=30/8,取整后得到3。

  • 第11题:

    有以下程序: include<stdio.h> main( ) { int a,b,k,m,*pl,*p2; k=1,m=8; p1=&

    有以下程序: #include<stdio.h> main( ) { int a,b,k,m,*pl,*p2; k=1,m=8; p1=&k,p2=&m; a=/*pl-m;b=*p1+*p2+6; printf("%d",a);printf("%d\n",b); } 编译时编译器提示错误信息,你认为出错的语句是( )。

    A.a=/*pl-m;

    B.b=*p1+*p2+6;

    C.k=1,m=8;

    D.pl=&k,p2-&m;


    正确答案:A
    本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

  • 第12题:

    单选题
    有以下程序:#include main(){ char s1[]=programe,s2[]=Language; char *p1=s1,*p2=s2; int k; for(k=0;k<8;k++)  if(*(p1+k)==*(p2+k))   printf(%s ,(p1+k));}程序的运行结果是(  )。
    A

    grame ame e

    B

    g a e

    C

    programe

    D

    无输出字符


    正确答案: B
    解析:
    定义两个指针变量p1、p2,分别指向数组s1、s2首地址,在for循环中,比较两个指针对应地址的元素是否相等,如果相等,则输出当前指针指向地址的字符串,当k=3时,*(p1+k)和*(p2+k)相等都为'g',输出p1+k对应的字符串,即"grame";当k=5时,输出"ame";当k=7时,输出"e"。答案选择A选项。

  • 第13题:

    执行以下程序后,a,b的值分别为

    main()

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

    a=p1==&m;

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

    printf("a=%d\n",A.;

    printf("b=%d\n",B.;

    }

    A.-1,5

    B.1,6

    C.0,7

    D.4,10


    正确答案:C

  • 第14题:

    以下程序的运行结果是______。 include fun(int a,int b) { int m=0,i=2; i+=m+1; m

    以下程序的运行结果是______。

    include<iostrearn.b>

    fun(int a,int b)

    {

    int m=0,i=2;

    i+=m+1;

    m=i+a+b;

    return m;

    }

    void main()

    {int k=4,m=1,p;

    p=fun(k,m);cout<<p<<end1;

    }


    正确答案:8
    8

  • 第15题:

    执行以下程序的输出结果是( )。 includedefine M 5define N M+M main(){int k; k=N*N*5;

    执行以下程序的输出结果是( )。

    include<stdio.h>

    define M 5

    define N M+M

    main()

    { int k;

    k=N*N*5;printf(”%d\n" ,k);

    }


    正确答案:55
    55 解析:本题考查的重点是对宏定义的理解。#define指令定义一个标识符和一个串,编译程序在对C源程序处理时.发现该标识符都用该串替换,因此,在语句k=N*N*5将替换成k=M+M*M+M*5后,M被替换成5,从而k=5+5*5+5*5=55。

  • 第16题:

    执行下列程序后,输出的结果是()。 includedefine S(X) X*Xvoid main(){int a=9,k=3,m=

    执行下列程序后,输出的结果是( )。 #include<stdio.h> #define S(X) X*X void main() { int a=9,k=3,m=2; a/=S(k+m)/S(k+m); printf("%d",a); }

    A.1

    B.4

    C.9

    D.0


    正确答案:D
    解析:本题主要是考查带参数的宏定义及其相关运算。本题中宏运算过程如下:a=a/S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m=9/(3+2*3+2/3+2*3+2)=0。

  • 第17题:

    有以下程序 include int a=1; int f(int c) { stati

    有以下程序 #include <stdio.h> int a=1; int f(int c) { static int a=2; c=c+1; return (a++) + c; } main() { int i, k=0; for(i=0;i<2;i++) { int a=3; k += f(a); k +=a; printf("%d\n",k); }

    A.14

    B.15

    C.16

    D.17


    正确答案:A
    解析:静态局部变量的作用域跟一般局部变量相同,都是从声明处开始到声明所在函数或语句块结束为止。但静态局部变量的生存周期却是从第1次执行到该静态局部变量的声明语句时起,直到程序结束。而—般局部变量的生存周期到离开它的作用域时就结束了。本题的f()函数中static int a=2;语句就声明了一个静态局部变量a,并初始化为2。主函数中,通过一个for循环连着调用了2次f()函数。两次调用形参c都为3,f()函数中让c增1变为4,然后输出(a++) +c,第1次调用a为2,所以输出结果为3+4=6,而第2次调用a被上次调用时的++运算符增1,所以为3,输出结果为3+4=7。所以主函数for循环结束后,k的值是13,下面一条k+=a;语句中的a是全局变量a,值为1。故最终输出结果是14,应该选择 A。

  • 第18题:

    有以下程序include <stcli0.h>main( ){ int a,b,k,m,*p1,*p2; k=1,m=8; p1=&k,p2=&am

    有以下程序

    #include <stcli0.h>

    main( )

    { int a,b,k,m,*p1,*p2;

    k=1,m=8;

    p1=&k,p2=&m;

    a=/*p1 -m; b=*p1+*p2+6;

    printf(”%d ”,a); printf(”%d\n”b);

    }

    编译时编译器提示错误信息,你认为出错的语句是

    A) a=/*p1- m;

    B)b=*p1+*p2+6;

    C)k=1,m=8;

    D)p1=&k, p2=&m;


    正确答案:D
    【答案】D
    【知识点】C语言书写规范
    【解析】D中语句应为p1=&k,p2=&m;中间的逗号应变成分号。

  • 第19题:

    下列程序的运行结果是()。inCludemain(){static char a[]="Languagef",b[]="programe";

    下列程序的运行结果是( )。 #inClude<stdio.h> main() { static char a[]="Languagef",b[]="programe"; Char*p1,*p2;int k; p1=a;p2=b; for(0;k<=8;k++) if(*p1+k)==*(p2+k))printf("%c",*(p1+k)); }

    A.gae

    B.ang

    C.program

    D.有语法错


    正确答案:A
    解析: 本题考查指针的用法,if(*(p1+k)==*(p2+k))语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

  • 第20题:

    有以下程序:includemain(){int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a

    有以下程序: #include <stdio.h> main() { int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a<b); printf("%d,%d\n",k,m); } 程序运行后的输出结果是( )。

    A.0,0

    B.0,1

    C.1,0

    D.1,1


    正确答案:C
    解析:本题考查逻辑或运算。因为b>a为真,即n=1,则m不需再计算,保持原值,因此k值为1,m值仍为0。

  • 第21题:

    下列程序的运行结果是()。includemain(){static chara[]="Languagef",b[]="programe";

    下列程序的运行结果是( )。 #include<stdio.h> main() { static chara[]="Languagef",b[]="programe"; char *p1,*p2;int k; p1=a;p2=b; for(k=0;k<=8;k++) if(*(p1+k)==*(p2+k))printf("%c",*(p1+k)); }

    A.gae

    B.ang

    C.program

    D.有语法错


    正确答案:A
    解析:本题考查指针的用法,if(*(p1+k)=*(p2+k))语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

  • 第22题:

    以下程序的输出结果是#include "stdio.h"int *fun(int *a,int *b){ int m; m=*a; m+=*b-3; return(&m);}main(){ int x=21,y=35,*a=&x,*b=&y; int *k; k=fun(a,b); printf("%d\n",*k);}


    正确答案:53
    本题考查指针函数的使用。题目给出的程序包括两个部分,一个为指针函数fun,一个为主函数main。主函数main部分给出两个整型变量x和y,并给出相应的赋值。main函数的执行结果为输出*k的值,而*k的值即*fun的值。fun函数包括两个整型指针形参*a和*b。通过对*a、*b进行操作,得到结果m,并将m值返回,整个程序的实际输出即为m的值。初始时,m=*a=21。随后令m=m+*b-3,得m=53。整个程序的输出结果即为53。

  • 第23题:

    阅读下列程序段,则程序的输出结果为 #include"stdio.h" #define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main() { int a=5,b=6,c=8,k; k=N(M(a,b),c); printf("%d\n",k);}

    A.3

    B.5

    C.6

    D.8


    正确答案:A
    解析:带参数的宏定义命令行形式如下:#define宏名(形参表)替换文本。首先进行M的宏替换,之后再进行N的宏替换,替换后的表达式为(a)*(b)/(c)。