若有如下程序: struct student {char name[10]; float score[3];}stu[3]={{"lili",75,90,90}, {"liudan",90,85,75}; {"guoli",85,85,70}}; main() {int i;float sum=0,aver; for(i=0;i<3;i++) sum=sum+stu[i].score[1]; aver=sum/i; printf("%6.2f\n",aver); } 则程序运行后的输出结果是( )A.83

题目

若有如下程序: struct student {char name[10]; float score[3];}stu[3]={{"lili",75,90,90}, {"liudan",90,85,75}; {"guoli",85,85,70}}; main() {int i;float sum=0,aver; for(i=0;i<3;i++) sum=sum+stu[i].score[1]; aver=sum/i; printf("%6.2f\n",aver); } 则程序运行后的输出结果是( )

A.83.33

B.85

C.86

D.86.67


相似考题
更多“若有如下程序:struct student{char name[10];float score[3];}stu[3]={{"lili",75,90,90}, {"liu ”相关问题
  • 第1题:

    有以下程序:street STU{ char num[10]; float score[3]; };main(){ struct STU s[3]={ {"20021",90,95,85}, { "20022",95,80,75 }, {"20023",100, 95, 90} },*p=s, int i; float sum=0; for(i=0;i<3 ,i++) sum=sum+ p->score[i]; printf("%6.2f\n",sum);}程序运行后的输出结果是( )。

    A.260

    B.270

    C.280

    D.285


    正确答案:B
    解析:程序中首先定义了一个结构体,其成员为一字符数组和一浮点型数组。在main()首先定义了一个结构体数组并初始化。接下来在for循环中遍历了结构体数组中的第一个元素中数组成员即{“20021”,90,95,85”}循环结果为90+95+85=270最后sum为270,又输出格式为“%6.2f\n”要求保留两位小数故最后输出为270.00。所以4个选项中B正确。

  • 第2题:

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

  • 第3题:

    有以下程序#include "stdio.h"main(){ struct date { int number; float fenzhi; char name; }stu; printf("%d\n",sizeof(stu));} 程序的运行结果是A.3 B.5C.7 D.8


    正确答案:C
    本题主要考查结构体所占存储单元的计算。在C语言中,函数sizeof的作用是用以计算变量所处存储单元的大小,即占的字节数。
    在本题中,程序首先定义了一个结构体,该结构体包含三个成员变量,分别为整型、浮点型和字符型。在C语言中,这三种类型的变量所占的字节数分别为2、4、1,然后定义一个该结构体的结构体变量,并输出该结构体变量所占的字节数。那么结果应为2+4+1=7,因此本题正确的答案为C。

  • 第4题:

    有如下说明和定义语句: struct student { int age; char num{8};}; struct student stu[3]={{20,"200401"},{21,"200402"),{19,"200403"}}; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是( )。

    A.(p++)->num

    B.p->num

    C.(*p).num

    D.stu[3].age


    正确答案:D
    解析:结构体变量也有地址,因此可以把它的地址赋值给一个指针变量,然后通过该指针变量来引用结构体的成员,选项A和选项B就是通过指针变量来引用结构体的成员,故选项A和选项B都正确,也可以通过结构体数组元素的成员引用,选项C和选项D属于这种情况,而在选项D中stu[3].age不正确,因为结构体数组stu共有3个元素,其下标应该为0,1,2。所以,4个选项中选项D符合题意。

  • 第5题:

    有以下程序段struct STU{ char num[10];float score[3];};main(){ struct STU s[3]={ {"20021",90,95,85}, {"20022",95,80,75}, {"20023",100,95,90}, },*p=s; int i;float sum=0; for(i=0;i<3;i++) sum=sum+p->score[i]; printf("%6.2f\n",sum); }程序运行后的输出结果是A.260.00 B.270.00 C.280.00 D.285.00


    正确答案:B
    在本题中,程序首先定义一个结构体,结构体中含有两个结构体成员,两个结构体成员都是数组。
    在主函数中,首先定义了一个大小为3的该结构体数组s,并对其进行初始化操作,然后定义了一个该结构体类型的指针变量p,使其指向结构体数组s,接着定义两个变量,整型变量i作为循环变量,浮点型变量sum用来保存和计算结果。然后执行for循环。
    当循环变量i=0时,执行sum=sum+p->score[i];语句,p->score[0]表示结构体数组中第一个结构体变量的score[0]值,即90,本次循环结束后,sum的值为90。
    当循环变量i=1时,同理,求得sum=90+95=185。
    当循环变量i=2时,求得sum=185+85=270。
    然后循环结束,用格式%6.2f对sum进行输出操作,这个输出格式的意思是输出数据的宽带为6且要输出两位小数位,那么输出的结果为270.00。因此,本题的正确答案是B。

  • 第6题:

    以下程序的输出结果是______。includestruct stu{int num; char name[10]; int age;};v

    以下程序的输出结果是______。#include<stdio.h>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",18} }; fun(students+2);}

    A.Zhang

    B.Zhao

    C.Wang

    D.18


    正确答案:B

  • 第7题:

    下列语句段中,正确的是( )。

    A.struct { int x; float y; int a[2]; unsigned b[3]; char name[ 10]; };

    B.struct stu { unsigned a[3]; unsigned b[4]; }x; int *p=& x.a;

    C.street stu { int a; float x[4]; }y={1,1.0}; float data=y.x;

    D.struct nd {int a,b; unsigned c[2]=5; };


    正确答案:A
    解析:本题主要考查的知识点是结构类型的概念和定义,结构定义的一般形式是:struct结构类型名称{数据类型成员名1;数据类型成员名2;…数据类型成员名n;};struct为关键字,是结构的标识符:{}中包围的是组成该结构的成员项;每个成员的数据类型既可以是简单的数据类型,也可以是复杂的数据类型。整个定义作为一个完整的语句,用分号结束。结构类型名称是可以省略的,此时定义的结构称为无名结构。

  • 第8题:

    若有定义和语句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);输出结果是1。( )

    此题为判断题(对,错)。


    正确答案:×

  • 第9题:

    单选题
    有以下程序#include #include 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, d.name, d.sex, d.score[0], d.score[1]);}程序的运行结果是(  )。
    A

    Qian,m,85,90

    B

    Zhao,m,85,90

    C

    Qian,f,95,92

    D

    Zhao,f,95,92


    正确答案: B
    解析:
    struct变量作为形参和返回值时,传递的是结构体类型的值。f函数中,把b变量赋值给a,然后将a返回并赋值给d,所以,d中的数据与b的数据相同。答案选择B选项。

  • 第10题:

    单选题
    有以下程序:#include #include typedef struct{ char name[9]; char sex; float score[2];} STU;void f(STU *A){ strcpy(a->name,Zhao); a->sex='m'; a->score[1]=90.0;}main(){ STU c = {Qian,'f',95.0,92.0},*d=&c; f(d); printf(%s,%c,%2.0f,%2.0f, d->name, c.sex, c.score[0], c.score[1]);}程序的运行结果是(  )。
    A

    Qian,f,95,92

    B

    Zhao,f,95,90

    C

    Zhao,m,95,90

    D

    Zhao,f,95,92


    正确答案: A
    解析:
    f函数调用时,结构体数组名作为实参传给形参指针,结构体指针a指向数组c的首地址。因此,f可以对数组c中的元素赋值,故返回主函数之后,数组c中的成员值已被更新。main函数中有赋值语句“*d=&c;”,指针d指向结构体数组c的首地址,故d->name=c.name,输出结果为Zhao,m,95,90。答案选择C选项。

  • 第11题:

    单选题
    若有以下程序#include #include #include typedef struct stu{ char *name,gender; int score;}STU;void f(char *p){ p=(char *)malloc(10); strcpy(p,Qian);}main(){ STU a={NULL,'m',290},b; a.name=(char *)malloc(10); strcpy(a.name,Zhao); b=a; f(b.name); b.gender='f'; b.score=350; printf(%s,%c,%d,, a.name, a.gender, a.score); printf(%s,%c,%d, b.name, b.gender, b.score);}则程序的输出结果是(  )。
    A

    Qian,m,290,Qian,f,350

    B

    Zhao,m,290,Qian,f,350

    C

    Qian,f,350,Qian,t,350

    D

    Zhao,m,290,Zhao,f,350


    正确答案: D
    解析:
    初始化时,struct a中的数据:a.name:Zhao,a.gender:m,a.score:290。执行b=a,则b中的数据:b.name:Zhao,b.gender:m,b.score:290,struct在赋值过程中实现的是浅拷贝,a.name和b.name指向同一块内存空间。执行f(b.name),函数f中形参p和b.name指向同一块内存空间,在f函数内部,p又重新指向另外一块分配的内存空间,而b.name的指向没有变化,指向的内存空间的值也没有发生变化,函数f返回后,b.name中的值依然是Zhao。答案选择D选项。

  • 第12题:

    单选题
    有以下程序:#include typedef struct stu{ char name[10]; char gender; int score; } STU;void f(STU *a, STU *b){ *b = *a; printf(%s,%c,%d,, b->name, b->gender, b->score);}main(){ STU a={Zhao, 'm', 290}, b={Qian, 'f', 350}; f(&a,&b); printf(%s,%c,%d, b.name, b.gender, b.score);}程序的运行结果是(  )。
    A

    Zhao,m,290,Zhao,m,290

    B

    Zhao,in,290,Qian,f,350

    C

    Qian,f,350,Qian,f,350

    D

    Qian,f,350,Zhao,m,290


    正确答案: A
    解析:
    调用函数时,若采用传引用的方式,那么对形参进行操作,实参也会产生相应的变化。程序执行过程为:调用f函数,将结构体a与b的地址作为参数传入函数,函数中指针a指向结构体a,指针b指向结构体b,将指针a指向的结构体a赋给指针b指向的结构体b,结构体b内容被修改。输出b指向的结构体b的元素Zhao,m,290。调用函数结束实参b的成员值也发生改变,输出结构体b的元素Zhao,m,290。答案选择A选项。

  • 第13题:

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

    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

  • 第14题:

    若有如下程序段: struct student { int num;float score; } stu[3]={{10,85},{60,58},{32,23}}; main() { struct student*t; t=stu; } 则下面表达式中值为58的是( )。

    A.(*t).num

    B.*(t++)->num

    C.(*++t)score

    D.(++t)->score


    正确答案:D
    解析:本题是以结构体指针的方式防问结构体数组中的元素。main()函数之前声明了一个结构体,并在声明同时定义了一个全局结构体数组stu[3]。主函数中,第一行定义了一个该结构体的指针t,然后让t指向stu,即t指向的是数组stu的第一个元素。选项A提取的是数组第一个元素的num成员,值为10,不符合题意。选项B使用了一个后缀自增运算符,使t指向第二个元素,但t++表达式返回的还是第一个元素的指针,故结果与选项A相同,不符合题意,选项C语法错误编译不会通过。故应该选择D。

  • 第15题:

    有以下程序 include main() { struct STU{char name[9];char sex;double

    有以下程序 #include <stdio.h> main() { struct STU{char name[9];char sex;double score[2];}; sturt 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,85,90

    C.Zhao,f,95,92

    D.Zhao,m,85,90


    正确答案:D
    解析:本题定义了两个结构体变量a和b,并将结构体变量a的内容赋给了结构体变量b。对于结构体的赋值,意味这将其中的每一个元素都进行赋值,所以输出的结构体变量b中的内容即为结构体变量a中的各项内容。另外本题需要注意的是输出格式的控制,其中“%2.0f”指的是输出的数据共占2列,其中有0位小数。

  • 第16题:

    下面程序的运行结果是typedef union student{ char name[10]; long sno; char sex; float score[4];}STU;main(){ STU a[5]; printf("%d\n",sizeof(a));}


    正确答案:80
    根据共用体变量的特点可知,共用体变量所占的内存长度等于最长的成员的长度,所以变量STU所占的字节数等于其成员score[4]所占的字节数,即为16个字节,最终打印出共用体数组a[5]的长度为16´5=80。

  • 第17题:

    若有如下定义: struct stu{char name[9];int age;float score;); struct stu class[10]={{"Li",17,67},{"Song",19,80}, {"guo",18,79},{"Zhao",16,69}}; 根据上面的定义,若执行“printf("%s:%d%f",class[3].name,class[3].age,class[3].score);"则输出的正确结果是( )。

    A.Song:19,80.000000

    B.Zhao:16,69.000000

    C.Li:17,67Song;19,80

    D.guo:18,79Zhao;16,69


    正确答案:B
    解析:class[10]是结构体型的数组,class[3]为{"Zhao",16,69}。

  • 第18题:

    有以下程序 include struct STU { char num[10]; float score[3];}; void ma

    有以下程序 #include<iostream.h> struct STU { char num[10]; float score[3];}; void main( ) { struct STU s[3]={ { "20021",90,95,85 }, {"20022",95,80,75 }, {"20023",100,95,90 } },* p=s; int i; float sum=0; for(i=0;i<

    A.260

    B.270

    C.280

    D.285


    正确答案:B
    解析::C++语言规定数组名代表数组的首地址,也就是第0号元素的地址,在本题中s就是s[0]的地址,指针变量P指向s,也就是指向s[0],所以在for循环累加的是s[0]的score成员值。注意:注意结构体与类的区别。

  • 第19题:

    有以下程序:includeincludetypedef struct{char name[9];char sex;float s

    有以下程序: #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.namC) ; 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) ; pintf("%s,%c,%2.of.%2.of\n",d.name,d.sex,d.score[0],&score[1]); } 程序的运行结果是( )。

    A.Qian,f,95,92

    B.Qian,m,85,90

    C.Zhao,m,85,90

    D.Zhao,C95,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。

  • 第20题:

    数据结构里,struct student { char name[20]; char sex[10]; int age; int score; }; 定义结构体后,定义变量、数组赋值正确的是()。

    • A、struct student s={"张三","男",18,100};
    • B、struct student stu[3]={{"张三","男",18,100},{"李四","男",19,90},{"王五","男",23,97}};
    • C、struct student s={"李四";"女";18;100};
    • D、struct student stu[3]={{"张三",18,"男",100},{"李四",19,"男",90},{"王五",23,"男",97}};

    正确答案:A,B

  • 第21题:

    单选题
    若有以下程序#include typedef struct stu{ char name[10],gender; int score; } STU;void f(STU a, STU b){ b = a; printf(%s,%c,%d,, b.name, b.gender, b.score);}main(){ STU a={Zhao, 'm', 290}, b={Qian, 'f', 350}; f(a,b); printf(%s,%c,%d, b.name, b.gender, b.score);}则程序的输出结果是(  )。
    A

    Zhao,m,290,Qian,f,350

    B

    Zhao,m,290,Zhao,m,290

    C

    Qian,f,350,Qian,f,350

    D

    Zhao,m,290,Zhao,f,350


    正确答案: A
    解析:
    当把结构体变量中的数据作为一个整体传送给相应的形参时,传递的是实参结构体变量中的值,系统将为结构体类型形参开辟相应的存储单元,并将实参中各成员的值一一对应赋给形参中的成员,函数中形参结构体变量的改变不会影响到实参结构体变量。所以,在函数f中对a,b的操作不会影响main函数中a,b的值。答案选择A选项。

  • 第22题:

    单选题
    有以下程序:#include #include 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, 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


    正确答案: B
    解析:
    结构体作为函数参数时是传值调用。本题中,函数传递的是实参结构体变量中的值。函数体内对形参结构体变量中任何成员的操作都不会影响对应实参中成员的值。因此,f函数没有任何实际作用。答案选择A选项。

  • 第23题:

    单选题
    有以下程序:#include #include typedef struct stu{ char name[10]; char gender; int score;}STU;void f(char *name,char gender,int score){ strcpy(name,Qian); gender='f'; score=350;}main(){ STU a={Zhao,'m',290},b; b=a; f(b.name,b.gender,b.score); printf(%s,%c,%d,, a.name, a.gender, a.score); printf(%s,%c,%d, b.name, b.gender, b.score);}程序的运行结果是(  )。
    A

    Zhao,m,290,Qian,m,290

    B

    Zhao,m,290,Zhao,m,290

    C

    Zhao,m,290,Qian,m,350

    D

    Zhao,m,290,Qian,f,350


    正确答案: B
    解析:
    程序执行过程为:将a赋给b,调用f函数,将b中name地址与gender和score的值传进函数,执行函数体,strcpy函数改变b中name值,但由于后两个成员gender和score为值传递,不能改变b中gender和score值。调用函数结束后,结构体a= {"Zhao", 'm', 290},b= {"Qian', 'm', 290}。答案选择A选项。