设有如下定义 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));

题目

设有如下定义 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为一数组
更多“设有如下定义 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));”相关问题
  • 第1题:

    若有结构体定义:

    struct stu {int num;

    char sex;

    int age;

    }a1,a2;

    则下列语句中错误的是( )。

    A.printf("%d%c,%d",a1);

    B.a2.age=a1.age;

    C.a1.age++;

    D.a1.num=5;


    正确答案:A
    解析:题中a1和a2两个结构体变量名所对应的成员相同,可以与运算“++”相结合。结构体变量的输出格式为:printf("要输出变量名:%d\t",结构变量名.要输出的成员变量名)。

  • 第2题:

    C数组名称是指针变量吗?

    看这段程序,可是执行。#include <stdio.h>int main(int argc, char *argv[]){ struct info { char name[33]; int age; }; struct info aa[3]={"meng",20,"juan",29,"an",59}; struct info *p=aa; for(int i=0;i<3;i++,p++) printf("%-6s %d\n",p->name,p->age);}将其改成这样:#include <stdio.h>int main(int argc, char *argv[]){ struct info { char name[33]; int age; }; struct info aa[3]={"meng",20,"juan",29,"an",59}; //struct info *p=aa; for(int i=0;i<3;i++,aa++) printf("%-6s %d\n",aa->name,aa->age);}为什么就执行不了呢


    C数组名称是指针变量吗 C数组名是个指针常量指向数组首元素的地址,常量是 不能自加或者自减的,所以 不能 aa++

  • 第3题:

    若有结构体定义:

    struct stu{int num;

    char sex;

    int age;

    }al,a2;

    则下列语句中错误的是( )。

    A.printf("%d,%C,%d",a1);

    B.a2.age=a1.age;

    C.a1.age++;

    D.a1.num=5;


    正确答案:A
    解析:题中a1和a2两个结构体变量名所对应的成员相同,可以与运算"++"相结合。结构体变量的输出格式:prinf("要输出变量名:%d\t",结构变量名.要输出的成员变量名)。

  • 第4题:

    若定义下列结构体,结构体变量p的出生年份赋值正确的语句是( )。 struct st { int x; int y; int z; } struct worker { char name[20]; char sex; struct st birth; }p;

    A.x=1987

    B.birth.x=1987;

    C.p.birth.x=1987;

    D.p.x=1987;


    正确答案:C
    解析: 本题主要考查怎样为嵌套定义的结构中的成员赋值:由于worker中的birth是一个st型的结构,在给birth赋值时,不能将birth作为一个整体,要用“.”运算再深入一层访问到最基本的成员x、y、z。

  • 第5题:

    设有如下定义 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
    解析:在C语言中,结构体变量的引用有三种等价方式:
      1、结构体变量成员名;2、(*p).成员名;3、p->成员名。
      因为std.name是字符数组名,本身代表地址,其前面不应该使用“&”符号,所以选项B错误。

  • 第6题:

    设有以下程序段: struct MP3 { char name[20]; char color; float price; }std,*ptr; ptr=&std: 若要引用结构体变量std中的color成员,写法错误的是( )。

    A.std.color

    B.ptr->color

    C.std->color

    D.(*ptr)color


    正确答案:A
    本题中要引用结构体变量std中的color,要使用指针,而std.color不是一个指针类型,所以答案选择A。

  • 第7题:

    若有以下定义: struct tt{char name[10];char sex;}aa={"aaaa",′F′},*p=&aa; 则错误的语句是( )。

    选项格式:A.scanf("%c",a选项格式:A.sex);

    B.a选项格式:A.sex=getchar( );

    C.printf("%c\n",(*p).sex);

    D.printf("%c\n",p->sex);

    答案:A

    解析:sex是一个char类型变量,不是地址,A项应为scanf("%c",&aA.scanf("%c",a选项格式:A.sex);

    B.a选项格式:A.sex=getchar( );

    C.printf("%c\n",(*p).sex);

    D.printf("%c\n",p->sex);


    答案:A
    解析:sex是一个char类型变量,不是地址,A项应为scanf("%c",&a选项格式:A.sex);。

  • 第8题:

    下列关于结构型变量的定义语句中,错误的是( )

    A.typedef struct CCC

    B.define GGG struct { char name[20];GGG CCC { char name[20]; int age; int age; }GGG; }; GGG abc ; GGG CCC abc;

    C.struct

    D.struct { char name[20]; { char name[20]; int age; int age; }ccc; }abc; CCC abc;


    正确答案:C
    分析备选答案A:利用“typedef”定义了用户自定义的数据类型符“GGG”,这个用户自定义的数据类型符是含有两个成员的结构型CCC,所以语句“GGGabc”是定义结构型CCC的变量abc,语法没有错误。分析备选答案B:利用“#define”定义了宏名“GGG”,这个宏名第一次出现是定义结构型CCC,第二次是定义了结构型CCC的变量allc,所以语法上没有错误。分析备选答案C:这是定义一个没有名称的结构型,同时定义了这种结构型的变量CCC,接着的语句“CCCabc;”显然是错误的,因为CCC是变量名,不是数据类型符,该答案符合题意。至于备选答案D:这是标准的通过定义没有名称的结构型来定义该结构型的变量abc,语法上没有错误。

  • 第9题:

    以下scanf函数调用语句中对结构体变量成员的不正确引用的是()。  struct node{      char name[20];      int age;      int sex; }student[5],*p;  p=student; 

    • A、scanf(“%s”,student[0].name);
    • B、scanf(“%d”,&student[0].age);
    • C、scanf(“%d”,&(p->sex));
    • D、scanf(“%d”,p->age);

    正确答案:D

  • 第10题:

    单选题
    有以下程序:#include #include typedef struct{ char name[10]; char sex; int age;}STU;void fun(STU t){ strcpy(t.name,Tong); t.age++;}main(){ STU s[2] = {Hua, 'm', 18, Qin, 'f', 19}; fun(s[1]); printf(%s,%d,%s,%d, s[0].name, s[0].age, s[1].name, s[1].age);}程序运行后的输出结果是(  )。
    A

    Hua,19,Tong,19

    B

    Hua,18,Tong,20

    C

    Tong,19,Qin,19

    D

    Hua,19,Tong,19


    正确答案: A
    解析:
    程序执行过程为:定义STU类型数组,长度为2,并为其初始化。调用函数fun(s[1])将变量s[1]值传入函数,则t.name= "Qin",t.sex= 'f',t.age = 19。调用函数strcpy使t.name = "Tong",t.age = 20,函数调用结束。注意值传递时对形参的操作不会改变实参的值,结构体数组中元素并没有发生改变,答案选择D选项。

  • 第11题:

    单选题
    以下scanf函数调用语句中对结构体变量成员的不正确引用的是()。  struct node{      char name[20];      int age;      int sex; }student[5],*p;  p=student;
    A

    scanf(“%s”,student[0].name);

    B

    scanf(“%d”,&student[0].age);

    C

    scanf(“%d”,&(p->sex));

    D

    scanf(“%d”,p->age);


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

  • 第12题:

    单选题
    若有以下说明和语句: struct student{          int age;          int num;  }std, *p;  p=&std;  则下面对该结构体变量std中成员age的引用方式错误的是()。
    A

    std.age

    B

    *p.age

    C

    (*p).age

    D

    p->age


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

  • 第13题:

    有以下结构体说明,变量定义和赋值语句: struct STD {char name[10]; int age; char ***; }s[5],*ps; ps=&s[0]; 则以下scanf函数调用语句中错误的结构体变量成员是( )。

    A.scanf("%s",s[0].name);

    B.scanf("%d",&s[0].age);

    C.scanf("%c",&(ps->***));

    D.scanf("%d",ps->age);


    正确答案:D

  • 第14题:

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

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

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

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

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


    正确答案:B
    解析:选项A中“&(*p).age”代表的是std[0].age的地址,是正确的,选项C也是正确的,选项D先用指针变量引用结构型的成员sex,然后取它的地址,也是正确的,选项B中的“std.name”是错误的引用,因为std是数组名,代表的是数组的首地址,地址没有成员“name”。所以B选项为所选。

  • 第15题:

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

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

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

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

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


    正确答案:B
    解析:选项A中“&(*p).age”代表的是etd[0].age的地址,是正确的,选项C也是正确的,选项D先用指针变量引用结构型的成员sex,然后取它的地址,也是正确的,选项B中的“std.name”是错误的引用,因为std是数组名,代表的是数组的首地址,地址没有成员“name”。

  • 第16题:

    若有如下程序: main() { char a[3][5] = {"name","age","sex"},n; for(n=0;n<3;n++) printf("%s\n",a[n]);} 则程序执行后的输出结果是( )。

    A.nameagesex

    B.name

    C.name

    D.name agexex ge age sex x sex


    正确答案:C
    解析:a[3][5]是一个二维数组,它也可以看成是一个有3个元素的一维数组a[0]、a[1]、a[2],同时这3个元素也是一维数组,分别保存字符串“name”、“age”、“sex”。for循环循环3次,输出3个字筘串“name”、“age”、“sex”。所以,C选项为所选。

  • 第17题:

    建立一个学生信息表student,要求它由学号sno、姓名sname、性别sex、年龄age4个属性组成,其学号属性唯一,学号、姓名字段不能为空。下列语句正确的是

    A.CREATE TABLE student(sno char(5) NOT NULL sname char(8) NOT NULL sex char(1) age int);

    B.CREATE TABLE student (sno char(5) NOT NULL UNIQUE sname char(8) sex char(1) age int);

    C.CREATE TABLE (sno char(5) NOT NULL UNIQUE sname char(8) NOT NULL sex char(1) age int);

    D.CREATE TABLE student (sno char(5) NOT NULL UNIQUE sname char(8) NOT NULL sex char(1) age int);


    正确答案:D
    解析:A) 选项中,创建sno字段没有唯一性限制;B) 选项中,创建sname字段没有不为空的限制; C) 选项中,创建表没有表明。

  • 第18题:

    以下scanf函数调用语句中对结构体变量成员的不正确引用是 struct pupil { char name[20]; int age int sex; } pup[5],*p; p=pup;

    A.scanf("%s",pup[0].name);

    B.scanf("%d",&pup[0].age);

    C.scanf("%dT",&(p->sex));

    D.scanf("%d",p->age);


    正确答案:D
    解析:可用结构体变量名.数据成员名或者结构体指针->数据成员名两种方法来引用。注意:结构体类型的变量、数组和指针变量的定义。

  • 第19题:

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

    A.cin>>(* p).age);

    B.cin>>std.name);

    C.cin>>std[0].sex);

    D.cin>>(p->.sex));


    正确答案:B
    解析:std是一个数组,其内可以存放三个结构体类型的数据。当std单独使用的时候表示一个指针,指向该数组首地址。因此不能直接用std和点操作符进行配对使用。指针操作符->只能和指针配对使用,点操作符只能和有名对象或变量配对使用。

  • 第20题:

    建立一个学生信息表student,要求它由学号sno,姓名sname,性别sex,年龄age,4个属性组成,其学号属性惟一,学号、姓名字段不能为空。下列语句正确的是

    A.CREATE TABLE student (sno char(5)NOT NULL sname char(8)NOT NULL sex char age int);

    B.CREATE TABLE student (sno char(5)NOT NULL UNIQUE sname char(8) sex char age int);

    C.CREATE TABLE (sno char(5)NOT NULL UNIQUE sname char(8)NOT NULL sex char age int);

    D.CREATE TABLE student (sno char(5)NOT NULL UNIQUE sname char(8)NOT NULL sex char age int);


    正确答案:D
    解析:本题主要考查了SQL语言中,创建基本表的方法。 A)选项中,创建sno字段没有惟一性限制;B)选项中,创建sname字段没有不为空的限制;C)选项中,创建表没有表明。

  • 第21题:

    若有以下说明和语句: struct student{          int age;          int num;  }std, *p;  p=&std;  则下面对该结构体变量std中成员age的引用方式错误的是()。 

    • A、std.age
    • B、*p.age
    • C、(*p).age
    • D、p->age

    正确答案:B

  • 第22题:

    单选题
    若有以下定义:struct tt{char name[10];char sex;} aa={aaaa,'F'},*p=&aa;则错误的语句是(  )。
    A

    scanf(%c,aa.sex);

    B

    aa.sex=getchar();

    C

    printf(%c,(*p).sex);

    D

    printf(%c,p->sex);


    正确答案: A
    解析:
    sex是一个char类型变量,不是地址,A项应为scanf("%c",&aa.sex);。答案选择A选项。

  • 第23题:

    单选题
    有如下定义: struct st {  char name[12];  int age;  char sex; }std[10], *p=std; 以下语句错误的是(  )。
    A

    scanf(%d, p->age);

    B

    scanf(%s, std[0].name);

    C

    scanf(%d, &std[1].age);

    D

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


    正确答案: D
    解析:
    A项中,p->age是结构指针访问结构成员的方式,p->age为整型,使用scanf输入时,在p->age前面应该加入取地址符&。答案选择A选项。