C语言程序设计

单选题有以下程序:#include #include main(){ char name[9]=c##line; char *str=name;  printf(%d,%d,%d,%d, sizeof(name), strlen(name), sizeof(str), strlen(str)); }程序运行后的输出结果是(  )。A 9,7,4,7B 8,6,9,6C 8,6,3,6D 10,8,5,8

题目
单选题
有以下程序:#include #include main(){ char name[9]=c##line; char *str=name;  printf(%d,%d,%d,%d, sizeof(name), strlen(name), sizeof(str), strlen(str)); }程序运行后的输出结果是(  )。
A

9,7,4,7

B

8,6,9,6

C

8,6,3,6

D

10,8,5,8

参考答案和解析
正确答案: D
解析:
由于name是一个长度为9的一维数组,故在内存中占用9字节长度,而其中字符串"c##line"只有7个字符,strlen函数返回的是该字符串的长度,不包含结束符,str是一个指针变量,占用4字节长度,但是由于name首地址赋给了str指针变量,在调用strlen函数时,返回的是指针对应地址单元的字符串的长度7,答案选择A选项。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序: include point ( char * p) {p + = 3; }main( ) char b[4] = {'a','b','c

有以下程序: #include <stdio.h>point ( char * p) { p + = 3; }main( ) char b[4] = {'a','b','c','d'} , *p=b; point(p); printf( "% c \n" , * p);

A.a

B.b

C.c

D.d


正确答案:A
解析:C函数的参数传递方式采用按值传递,不能通过调用函数改变形参指针本身的值,只能改变指针所指变量的值。调用point函数时,将实参指针p的值(b数组的首地址)传给了形参指针P,P+=3运算使形参指针指向字符d,但并不能改变main函数中p的值,所以本题正确答案应该是选项A)。

第2题:

有以下程序:includeincludemain(){char a[]={'a','b','c','d','e','f','g'

有以下程序: #include <stdio.h> #include <string.h> main() { char a[]={'a','b','c','d','e','f','g','h','\0'}; int i,j; i=sizeof(a); j=strlen(a); printf("%d,%d\n",i,j); } 程序运行后的输出结果是( )。

A.9,9

B.8,9

C.1,8

D.9,8


正确答案:D
解析:sizeof是求字节运算符,在字符数组a中,“\0”也作为字节保存,是a数组的一个成员,所以sizeof(a)的值应为9;strlen是测试字符串长度的函数,函数的值为字符串中的实际长度,不包括“\0”在内,所以strlen(a)的值为8。

第3题:

有以下程序includeincludetypedef strtlct{char name[9];char sex;floatsc

有以下程序 #include <stdio.h> #include <string.h> typedef strtlct{ char name[9]; char sex;floatscore[2]; }STU; void f(STU A)

{ STU b={"Zhao",'m',85.0,90.0}; int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,f,95,92

D.Zhao,m,85,90


正确答案:A
解析: 本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f的所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。

第4题:

有以下程序 include void fun(char **p) { ++p; printf("%s\n",*p);

有以下程序 #include <stdio.h> void fun(char **p) { ++p; printf("%s\n",*p); } main() { char *a[]={"Moming","Afternoon","Evening","Night"}; fun(a); } 程序的运行结果是

A.Afternoon

B.fternoon

C.Morning

D.orning


正确答案:A
解析:本题主函数中定义了一个指针数组a,可以将它看成一个以字符指针为元素的一维数组。和—般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针(即字符型二级指针),所以数组名a可以用作函数fun()的实参。

第5题:

有以下程序includeincludevoid main( ){char*p="abcde\0fghjik\0"; cou

有以下程序 #include<string.h> #include<iostream.h> void main( ) { char*p="abcde\0fghjik\0"; cout<<strlen(p);} 程序运行后的输出结果是

A.12

B.15

C.6

D.5


正确答案:D
解析:C++语言规定了一个字符串结束标志,以字符'\0'代表,在遇到'\0'时,表示字符串结束,由它前面的字符组成字符串。

第6题:

以下程序的输出结果是【】。 include include void main 0 { char s[50]; st

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

include<iostream.h>

include <string.h>

void main 0 {

char s[50];

strcpy(&s[O], "No" );

strcpy(&s[1], "123" );

strcpy (&s[2], "23456" );

cout<<s;

}


正确答案:N123456
N123456

第7题:

以下程序的输出结果是()includeincludemain(){char str[12]={'s','t','r',

以下程序的输出结果是( ) #include<stdio.h> #include<string.h> main() {char str[12]={'s','t','r','i','n','g'}; printf("%d\n",strlen(str)); }

A.6

B.7

C.11

D.12


正确答案:A

第8题:

有以下程序:includeincludeincludevoid f(char*s,char*t){char k;k=*s; *

有以下程序: #include<stdio.h> #include<string.h> #include void f(char*s,char*t) { char k; k=*s; *s=*t; *t=k; s++;t--; if(*s)f(s,t): } main() {char str[10]="abcdefg",*P; P=str+strlen(str)/2+1: f(p,p-2); printf("%s\n",str); } 程序运行后的输出结果是( )。

A.abcdefg

B.gfedcba

C.gbcdefa

D.abedcfg


正确答案:B

第9题:

下列程序的运行结果是()。 include include main() {char*s1="abDuj"; char

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

#include<stdio.h>

#include<string.h>

main()

{ char*s1="abDuj";

char*s2="ABdUG";

int t;

t=strcmp(s1,s2) ;

printf("%d",t);

}

A.正数

B.负数

C.零

D.不确定的值


正确答案:A
解析:本题考查字符串比较函数和两个字符串比较的原则两个知识点:①原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大。② strcmp(s1,s2)的返回值,当str1str2时,返回值0:当 str1=str2时,返回值为0;当str1>str2,返回值>0。

第10题:

有以下程序 include include typedef struct { cha

有以下程序 #include <stdio.h> #include <string.h> typedef struct { char name[9]; char sex; float score[2]; } STU; STU f(STU a) { STU b={"Zhao", 'm', 85.0, 90.0}; int i; strcpy(a.name, b.name); a.sex = b.sex; for (i=0; i<2; i++) a.score[i] = b.score[i]; return a; } main() { STU c={"Qian", T, 95.0, 92.0}, d; d=f(c); printf("%s,%c,%2.0f,%2.0f\n", d.name, &sex, &score[O], d.score[1]); } 程序的运行结果是

A.Qian, f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92


正确答案:C
解析:本题的f()函数中,首先定义了一个STU结构体变量b并初始化为{"Zhao",'m',85.0,90.0},然后分别通过strcpy()库函数、赋值语句和for循环,将b中所有成员分别赋给形参a的相应成员,最后返回a。所以,无论传递给函数fun()的参数是什么,结果返回的都会是函数中定义的STU结构体b的内容{"Zhao",'m',85.0,90.0}。故最终输出结果为:Zhao,m,85,90,应该选择C。

更多相关问题