C语言程序设计

单选题有以下程序段:char name[20];int num;scanf(name=%s num=%d,name,&num);当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为(  )。A LiliB name=LiliC Lili num=D name=Lili num=1001

题目
单选题
有以下程序段:char name[20];int num;scanf(name=%s num=%d,name,&num);当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为(  )。
A

Lili

B

name=Lili

C

Lili num=

D

name=Lili num=1001

参考答案和解析
正确答案: A
解析:
在C语言中输入多个字符串时,系统会把空格字符作为输入的字符串之间的分隔符。本题中,当从键盘输入name=Lili num=1001时,Lili赋值给name,1001赋值给num。答案选择A选项。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

定义结构体数组:

struct stu

{ int num;

char name[20];

}x[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU"};

for(i=1;i<5;i++)

printf("%d%c",x[i].num,x[i].name[2];

以上程序段的输出结果为( )。

A.2A3N4A5U

B.112A3H41

C.1A2N3A4U

D.2H3A4H51


正确答案:A
解析:本题主要考查结构体数组的使用。x[i].num为结构体x[i]中的num成员,x[i].name[2]是结构体x[i]中name成员的第3个元素。程序执行循环过程时:第1次循环,i=1,输出x[1].num,x[1].name[2]的值,即2A;第2次循环,i=2,输出x[2].num,x[2].name[2]的值,即 3N;第3次循环,i=3,输出x[3].num,x[3].name[2]的值,即4A;第4次循环,i=4,输出x[4].num,x[4].name[2]的值,即5U。

第2题:

有以下程序includestruct STU{char name[10];int num;};void f(char*name, intnum){s

有以下程序 #include <string.h> struct STU { char name[10]; int num; }; void f(char *name, int num) { struct STU s[2]={{"SunDan",20044},{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() { struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p; p=&s[1]; f(p->name,p->num); printf("%s %d\n",p->name,p->num); } 程序运行后的输出结果是

A.SunDan 20042

B.SunDan 20044

C.LiSiGuo 20042

D.YangSan 20041


正确答案:A
解析:题目中定义的函数f()包含两个参数,一个字符指针,—个整型变量。当修改参数指针所指向的内容的时候,实参所指的内容也被修改,即传址调用;但只是修改参数变量的内容,则实奉不受影响,即传值调用。因此,主函数调用f()函数后,第1个参数被修改成函数中s[0]的name成员,第2个参数不受影响,还是主函数中s[1]的num成员。故最终输出SunDan20042。应该选择A。

第3题:

( 38 )有以下定义和语句

struct workers

{ int num;char name[20];char c;

struct

{ int day; int month; int year; } s;

} ;

struct workers w,*pw;

pw = &w;

能给 w 中 year 成员赋 1980 的语句是

A ) *pw.year = 198O;

B ) w.year=1980;

C ) pw->year=1980;

D ) w.s.year=1980;


正确答案:D

第4题:

有以下定义和语句: struct students {int num;char name[20];char c; struct {int grade1;int grade2;}s; }; struct students w,*pw; *pw=w; 下列赋值语句不正确的是( )。

A.w.num=1002;

B.w.grade1=85;

C.pw->num=1002;

D.w.s.grade2=85;


正确答案:B

第5题:

定义结构体数组: struct stu { int num; char name[20]; }x[5];{1,"L1",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU"}; for(i=1;i<5;i++) printf("%d%c",x[i].num,x[i].name[2]); 以上程序段的输出结果为( )。

A.2A3N4A5U

B.1I2A3H4I

C.1A2N3A4U

D.2H3A4H5I


正确答案:A
解析:本题主要考查结构体数组的使用。x[i].num为结构体x[i]中的num成员,x[i].name[2]是结构体x[i]中name成员的第3个元素。程序执行循环过程时:第1次循环,i=1,输出x[1].num,x[1].name[2]的值,即2A;第2次循环,i=2,输出x[2].num,x[2].name[2]的值,即3N:第3次循环,i=3,输出x[3].num,x[3].name[2]的值,即4A;第4次循环,i=4,输出x[4].num,x[4].name[2]的值,即5U。

第6题:

有以下程序:

#include<

struct stu { int num;char name[10];int age;}

void fun(struct stu*p)

{ printf("%s\n",(*p).name);}

main

{ struct stu students[3]={{9801,"Zhang".20}, {9802,"Wang",19},{9803,"Zhao",1 8}}

fun(students+2); }

输出的结果是( )。

A.Zhang

B.Zhao

C.Wang

D.18


正确答案:B
从实参传递过去的是结构体系数组的第3个元素,所以输出的name为Zhao。

第7题:

有以下程序 struct STU { char name[10]; int num; float TotalScore; }; vold f(struct STU *p) { struct STU s[2]={{"SunDan",20044,550),{"Penghua".20045,537}},*q=s ++p; ++q; *p=*q; } main() { struct SrU s[3]={{"YangSan",20041,703),{"LiSiGuo",20042,580}}; f(s); printf("%s %d %3.of\n",S[1].name,s[1].num,s[1].Totalscore); } 程序运行后的输出结果是

A.SunDan 20044 550

B.Penghua 20045 537

C.USiGuo 20042 580

D.SunDan 20041 703


正确答案:B
解析:在主函数中,首先声明了一个结构体数组s[3],然后用数组名调用函数f,而数组名是数组首地址的指针,因此,传递给函数的是指向上函数中s[0]的指针。在函数中,将参数指针往后移动了一位++p;,所以该指针现在指向主函数中的s[1],函数中也声明?一个结构体数组s[2]和一个结构体指针q,q虽然初始化指向函数中的结构数组s[2]的首地址,但也被往后移动了一位,所以函数调用的结果是将函数中的s[1]赋给了主函数中的s[1],故最终输出为:Penghua20045537,应该选择B。

第8题:

有以下程序段:

char name[20】;int num;

scanf("name=%S num=%d",name,&num);

当执行上述程序段,并从键盘输入:name=Lili mum=1001<回车>后,name的值为( )。

A.Lili

B.name=Lili

C.Lili num=

D.name=Lili num=1001


正确答案:A

考查简单的C程序。由题可知,程序中输入name的值为Lili,所以输出的必定是Lili,答案选择A。

第9题:

有以下程序: include struct STU (char name[10]; int num; };

有以下程序: #include <string.h> struct STU (char name[10]; int num; }; void f(char *name, int num) {struct STU s[2]={{"SunDan",20044}.{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() {struct STU s[2]={{"YangSall",20041},{"LiSiGao",20042}},*p;p=&s[1]; f(p->name,p->num); printf("%s%d\n",p->name,p->num); } 程序运行后的输出结果是 ______。

A.SunDan 20042

B.SunDan 20044

C.LiSiGuo 20042

D.YangSan 20041


正确答案:A
解析:本题主函数中定义了结构体类型的指针变量p,并使其指向了结构体类型的数组s[1],并通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了主函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就是刘主函数中p->name的改变,而函数f中对形参num的改变并不会影响主函数中p->num的值,因为此时传递给num的是一个值,而不是地址。

第10题:

有以下程序段

char.name[20];int num;

scanf(“name=%s num=%d”,name,&num);

当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为

A.Lill

B.name=Lili

C.Lili.num=

D.name=Lili num—1001


正确答案:A
解析:scanf函数巾的格式控制字符串是为了输入数据用的.尤论其中有什么字符.也不会输出到屏幕上。输入数据时要按照一一对应的位置原样输入这些字符,包括字符的大小写、字符间的间隔等必须与scanf巾的完全一致。故执行程序后name的值为Lli。

更多相关问题