有如下程序: struct person {  char name[10];  char sex;  float wei

题目
单选题
有如下程序: struct person {  char name[10];  char sex;  float weight; }zhangsan, *ptr; ptr=&zhangsan; 若要从键盘读入姓名给结构体变量zhangsan的name成员,输入项错误的是(  )。
A

scanf(%s,zhangsan->name);

B

scanf(%s,zhangsan.name);

C

scanf(%s,ptr->name);

D

scanf(%s,(*ptr).name);

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序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的值。

第2题:

设有如下定义 struct ss { char name[10]; int age; char sex; } std[3],* p=std; 下面各输入语句中错误的是

A.scanf("%d",&(*p).age);

B.scanf("%s",&std.name);

C.scanf("%c",&std[0].sex);

D.scanf("%c",&(p->sex));


正确答案:B
解析:程序定义中std为一数组

第3题:

有以下程序

#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",'f',95.0,92.0},d;

d=f(c); printf("%s,%c,%2.0f,%2.0f\n",d.name,d.sex,d.score[0],d.score[1]);

}

程序的运行结果是

A)Qian,f,95,92

B)Qian,m,85,90

C)Zhao,m,85,90

D)Zhao,f,95,92


正确答案:C

第4题:

有以下程序: 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的是一个值,而不是地址。

第5题:

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

第6题:

有下列程序:includeinclude "string.h"typedef struct{char name[9]; char sex;float

有下列程序: #include <stdio.h> #include "string.h" typedef struct{char name[9]; char sex;float score[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.score[i]; } main() { STU c={"Qian",'f',95.0,92.0}; f(C) ; printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]); } 程序的运行结果是( )。

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,f,95,92

D.Zhao,m, 85,90


正确答案:A
解析:本题考查在结构体中函数的实参和形参的传递,调用f(C)后,实参传向形参,进行f()函数功能的实现,但程序中没有返回语句,故形参不能将值传回实参,它们值的传递具有不可逆性,所与printf输出的还是c中实参的值,故选项A)正确。

第7题:

有以下程序:includeincludeusingnameSpacestd;classperson{ intage; Char*nam

有以下程序:

include <iostream>

include <string>

using nameSpace std;

class person

{

int age;

Char * name;

public:

person ( int i, Char * str )

{

int j;

j = strlen( str ) + 1;

name = new char[ j ];

strcpy( name, str );

age = i;

}

~person()

{

delete name;

cout<<"D";

}

void display()

{

cout<<name<<":"<<age;

}

};

int main()

{

person demo( 30,"Smith" );

demo.display();

return 0;

}

则该程序的输出结果为:【 】。


正确答案:Smith:30 D
Smith:30 D 解析:本题考核类与对象的操作。主函数中定义类person的对象 demo,并赋初值(30,"smith")。然后调用成员函数display()输出赋值结果,即Smitch:30。程序结束时demo对象的析构函数被调用,再输出“D”。

第8题:

有以下程序

#include <stdio.h>

main()

{

struct STU { char name[9]; char sex; double score[2];};

struct STU a={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0};

b=a;

printf("%s,%c,%2.0f,%2.0f\n", b.name, b.sex, b.score[0], b.score[1]);

}

程序的运行结果是

A)Qian,f,95,92

B)Qian,m,85,90

C) Zhao,f,95,92

D)Zhao,m,85,90


正确答案:D

第9题:

下面程序和运行运行结果是【 】。

typedef union student

{ char name [10];

long sno;

char sex;

float score [4];

} STU;

main ( )

{ STU a[5];

prinff( "% d\n", sizeof(a) );

}


正确答案:80
80

第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。

更多相关问题