若有以下说明和语句: char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; char**q;q=language+2; 则语句printf("%o\n",*q);( )。A.输出的是language[2]元素的地址B.输出的是字符串PASCALC.输出的是language[2]元素的值,它是字符串PASCAL的首地址D.格式说明不正确,无法得到确定的输出

题目

若有以下说明和语句: char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; char**q;q=language+2; 则语句printf("%o\n",*q);( )。

A.输出的是language[2]元素的地址

B.输出的是字符串PASCAL

C.输出的是language[2]元素的值,它是字符串PASCAL的首地址

D.格式说明不正确,无法得到确定的输出


相似考题
参考答案和解析
正确答案:C
解析:题中指针数组language中的每个元素都是一个指向一个字符串的字符指针。通过这个指针可以引用到字符串中的每一个字符。题中的q是双重字符指针,q=language+2则使指针q指向了数组language的第三个元素,是字符串“PASCAL”的首地址。
更多“若有以下说明和语句: char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; char**q;q=language+2; 则语句printf("%o\n",*q);( )。A.输出的是language[2]元素的地址B.输出的是字符串PASCALC.输出的是language[2]元素的值,它是字符串PASCAL的首地址D.格式说明不正确,无法得到确定的输出”相关问题
  • 第1题:

    有以下程序: includemain(){char*p,*q; p=(char *)malloc(sizeof(char)* 20);q=p; sca

    有以下程序: # include<stdio.h> main() { char*p,*q; p=(char *)malloc(sizeof(char)* 20);q=p; scanf("%s %s",p,q);printf("%s %s\n",p,q); } 若从键盘输入;abc def<回车>,则输出结果是 ______。

    A.def def

    B.abc def

    C.abe d

    D.d d


    正确答案:A
    解析:本题考查%s控制符在scanf函数中的应用。scanf函数中%s控制符的作用是将键盘输入的字符串送到内存,输入的字符串从第一个非空格字符算起,遇到空格或回车就认为是输入结束。本题中执行语句scanf("%s%s",p,q)时,从键盘输入abc def回车>后,指针变量p指向字符串"abc\0",q指向字符串"def\0",但是由于p和q指向同一个存储单元,所以存储单元中存放的是"def\0",printf函数的输出结果为def def。

  • 第2题:

    若有下列说明和语句,已知int型数据占2个字节,则下列语句的输出结果是( )。

    stmct st

    { char a[15];

    int b;

    double c;

    };

    printf("%d",sizeof(struct st));

    A.15

    B.8

    C.25

    D.2


    正确答案:C
    解析:本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。题中int b占2个字节,char a[15]占15个字节,double c占8个字节,所以共25个字节。

  • 第3题:

    若有说明:char*language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"};则表达式*language[1]*language[3]比较的是()。

    A.字符F和字符P

    B.字符串BAS1C和字符串JAVA

    C.字符B和字符J

    D.字符串FORTRAN和字符串PASCAL


    正确答案:C

  • 第4题:

    以下程序的输出结果是【】。 includevoid main() {char *p= "12345678" , *r;long *q;

    以下程序的输出结果是【 】。

    include<iostream. h>

    void main() {

    char *p= "12345678" , *r;

    long *q;

    q=(long *)p;

    q++;

    r= (char *) q:

    cout<<r;

    }


    正确答案:5678
    5678

  • 第5题:

    下列程序段的输出结果为()。includemain(){static char a[]="language"; char*p; p=a;

    下列程序段的输出结果为( )。 #include<stdio.h> main() { static char a[]="language"; char*p; p=a; for(p=a;p<a+8;p+=2) putchar(*p); }

    A.language

    B.lnug

    C.有语法错误

    D.lang


    正确答案:B
    解析: 本程序首先定义了静态字符数组a,然后将指针p指向数组a的首地址。
    第1次for循环,p=a,p指向数组的第1个元素,*p是取指针p所指地址的内容,输出1;第2次for循环,p=p+2,则p指向数组的第3个元素,*p是取指针p所指地址的内容,输出n;第3次for循环,p= p+2,则p指向数组的第5个元素,*p是取指针p所指地址的内容,输出u;第4次for循环,p=p+2,则p指向数组的第7个元素,*p是取指针p所指地址的内容,输出g,结束循环。

  • 第6题:

    有以下程序includemain(){char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%

    有以下程序 #include<string.h> main() { char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q));} 以下叙述中正确的是

    A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

    C.由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

    D.由于p和q数组中都没有字符串结束符,故长度都不能确定


    正确答案:A
    解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

  • 第7题:

    若有以下定义和语句char c1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A); 则输出结果 ( )

    A.2,M

    B.3,E

    C.2,E

    D.输出项与对应的格式控制不一致,输出结果不确定


    正确答案:B

  • 第8题:

    设有说明语句如下: static char str[]="Beijing"; 若执行下列输出语句: printf("%d\n",strlen(strcpy(str,"China")));则输出结果为( )。

    A.5

    B.7

    C.12

    D.14


    正确答案:A
    解析:本题考查求字符串的长度。数组str初始化的长度是7,使用strcpy函数将新字符串赋给str后,strlen函数返回的是新字符串的字符个数5。

  • 第9题:

    设有如下程序: char sub(char * q) {while(* q,='\0') {if(*q>='A'&&*q<='Z')*q=* q+32; else if(*q>='a' &&*q<='z')*q=*q-32; printf("%c",*q); q++;} } main() {char *s="abcABC"; sub(s); } 则程序运行后的输出结果是( )

    A.ABCabc

    B.abcABC

    C.abcabc

    D.ABCABC


    正确答案:A

  • 第10题:

    已知char *a[]={"fortran"," basic","pascal","java","c++"};,则cout<< a[3];的显示结果是()

    • A、t
    • B、一个地址值
    • C、java
    • D、javac++

    正确答案:C

  • 第11题:

    若有定义和语句: char s[10]:s=""abcd"";printf(""%s/n"",s); 则结果是(以下u代表空格)()

    • A、输出abcd
    • B、输出a
    • C、输出abcduuuuu
    • D、编译不通过

    正确答案:D

  • 第12题:

    单选题
    已知char *a[]={"fortran"," basic","pascal","java","c++"};,则cout<< a[3];的显示结果是()
    A

    t

    B

    一个地址值

    C

    java

    D

    javac++


    正确答案: A
    解析: 暂无解析

  • 第13题:

    下列程序段的输出结果为()。includemain(){static char a[]="language";char*p;p=a;for

    下列程序段的输出结果为( )。 #include<stdio.h> main() { static char a[]="language"; char*p; p=a; for(p=a;p<a+8;p+=2) putchar(*p); }

    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。

  • 第14题:

    下面关于C++流的叙述中,正确的是( )。

    A.cin是一个输入流对象

    B.可以用if stream定义一个输出流对象

    C.执行语句序列char*y=“PQMN”;cout<<y;将输出字符串”PQMN”的地址

    D.执行语句序列char x[80];cin.getline(x,80);时。若键入“Happy new year”,则,中的字符串是“Happy”


    正确答案:A
    解析: 本题考查C++洗的概念和I/()的格式化。cln是lstream类的对象,即输入流对象。ifstream是输入文件流类不能定义个输出流对象。getline函数功能是允许从输入流中读取多个字符,并且允许指定输入终止,在读取完成后,从读取的内容中删除读终止字符,所以D选项中的语句序列后x中字符串应该是”Happy new year”。

  • 第15题:

    有以下程序:

    void funl(char*p)

    { char*q;

    q=P;

    while(*q!='\O')

    {(*q)++;q++;}

    }

    main

    { char a[]={"Program"),*P;

    p=&a[3];funl(p);

    printf("%s\n",a);

    }

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

    A.Prohsbn

    B.Prphsbn

    C.Progsbn

    D.Program


    正确答案:A
    本题中使用了函数的调用,由{unl函数中的while循环可知,循环的作用是为了把q所指向的内容增加l,而从主函数传到函数时是从下标为3开始传,因此当调用函数执行完后,传过去的字符串为'hsbn',前面不变。

  • 第16题:

    有以下程序: include void funl (char * p){char * q; q=p; while( *q! ='\0') } (*q)

    有以下程序: #include <stdio.h>void funl (char * p){ char * q; q=p; while( *q! ='\0') } (*q) ++;q++;}mains( ){ char a[ ] = { "Program" } , * p; p = &a[3]; fun1 (p); printf("% s \n" ,a);}程序执行后的输出结果是( )。

    A.Prohsbn

    B.Prphsbn

    C.Progsbn

    D.Program


    正确答案:A
    解析:在main函数中,p=&a[3]说明指针p指向a数组的第4个字符(即字符'g');fun1中的q=p意味着指针q也指向了a数组的第4个字符。执行while语句,表达式(*q)++使'g'+1,使'g'变成了'h';表达式q++使q指向a[4]的起始地址。继续执行while语句,直到遇到'\0'结束循环,返回形参。最终得到的结果是从字符串"Program'的第4个字符开始,每个字符加1。

  • 第17题:

    若有如下程序: void s(char *m, int n) {*m=*m+3; n=n+3; printf("%c,%c,",*m,n); } main() {char p='b',q='B'; s(&q,p); printf("%c,%c\n",p,q); } 则程序运行后的输出结果是( )

    A.E,e,b,E

    B.e,E,b,F

    C.E,e,e,E

    D.e,E,b,E


    正确答案:A

  • 第18题:

    若有定义和语句 ( ) char s[10];s="abcd";printf("%s\n",s); 则结果是(以下μ代表空格)

    A.输出abcd

    B.输出a

    C.abcdμμμμμ

    D.编译不通过


    正确答案:D

  • 第19题:

    关于C++ 输出函数cout 与 printf 的区别

    我知道在C++中cout  和printf  都能用于输出,但是他俩肯定在输出的方式、细节上有差别的。

    我想问 指针,char* p=“abcd”   按我的理解p就是存储地址的变量,输出p就应该是输出存储“abcd”的空间首地址。

    用printf则输出的是存储“abcd”的空间首地址(这和我预想的一样),用cout输出p则整个字符数组都输出了,这是为什么?他们两个的输出方式到底有什么差别。以至于输出同一个变量会得到不同的结果?

    比如:

       #include<iostream>

    #include<stdio.h>

    using namespace std;

    int main () {

    char* p="abcd";

    cout<<p<<"                "<<*p;//这里p输出的是abcd完整的字符串,而*p则输出的是第一个字符a。

    printf("%x                    %c",p,*p);//这里p则输出的是存储“abcd”的空间首地址,*p则输出第一个字符a。

    return 0;

    }


     

     

    您说的这个跟cout,printf没关系

     

    输出不同是因你printf的格式不对

    应该为printf("%s                   %c",p,*p)

    cout<<p默认帮你进行了格式化,即是%s“”

     

     

  • 第20题:

    若有以下定义和语句,则输出结果是(口代表空格)______。char s[10]; s="abcd"; printf("%s\n",s);

    A.输出abcd

    B.输出a

    C.输出abcd口口口口口

    D.编译不通过


    正确答案:D

  • 第21题:

    若有以下定义和语句,则输出的结果是______。 char c1='b',c2='e'; printf("%d,%c\n",c2-c1,c2-'a'+"A");

    A.2,M

    B.3,E

    C.2,E

    D.输出结果不确定


    正确答案:B

  • 第22题:

    若有说明:char*lang[]={"F0RTRAN","BASIC","PASCAL","JAVA","C"};则lang[3]的值是()

    • A、一个地址
    • B、一个字符
    • C、一个字符串
    • D、一个不定值

    正确答案:A

  • 第23题:

    单选题
    若有定义和语句: char s[10]:s=""abcd"";printf(""%s/n"",s); 则结果是(以下u代表空格)()
    A

    输出abcd

    B

    输出a

    C

    输出abcduuuuu

    D

    编译不通过


    正确答案: D
    解析: 暂无解析