百家拳C语言测试中心

相关链接

    C语言结构体测试题(2)

  1. 下面这个程序片段哪里出问题? 01 #include
    02
    03 int main()
    04 {
    05 struct student
    06 {
    07 char #name;
    08 int number;
    09 } *st;
    10
    11 st.name=”Justin”;
    12 st.number=90;
    13
    14 return 0;
    15 }

  2. 结构st被声明为指针,所以必须使用“—>”运算符来存取结构成员。
  3. 设计一个程序,可以让老师输入学生学号、姓名与电话号码,并可以根据姓名进行数据的查询,学生的数据要求使用结构来存储。

  4. #include #include
    #define NUM 50

    struct student
    {
    char name[80];
    char tel[20];
    }st[NUM] ;

    int main()
    {
    int select;
    char name[80],tel[20];
    int number;
    int i;
    do
    {
    printf(“(1) 输入 (2)搜索 (3)离开 =>”);
    scanf(“%d”,&select);
    switch (select)
    { case 1:
    print(“>”);
    scanf(“%d %s %s”,&number,name,tel);
    strcpy(st[number],name,name);
    strcpy(st[number].tel,tel);
    break;
    case 2:
    print(“>”);
    scanf(“%s”,name);
    for(i=0;i < NUM;i++)
    if(!strcmp(st[i].name, name) )
    {
    printf(“>%d %s %s\n”,i,st[i].name,st[i].tel);
    break;
    } if(i = =NUM)
    printf(“找不到符合的数据\n”);
    break;
    } }while(select !=3);

    return 0; }
  5. 汉字是由两个字节组成的,第一个汉字编码为0xA440,使用结构来存储前10个汉字,并显示出来。

  6. #include
    int main()
    {
    struct
    {
    char h;
    char l;
    }word[9];
    int i,j;

    for(i=0,j=0xA440;i<9;i++,j++)
    {
    word[i].h=j/256;
    word[i].l=j%256;
    }

    for(i=0;i<9;i++)
    printf(“%c%c”,word[i].h,word[i].l);
    putchar(‘\n’);
    return 0;
    }
  7. 一个初学结构的学生尝试同用户输入来设置结构成员的值,但是程序执行时发生了错误,请问哪里出了问题? 01 #include
    02
    03 int mai(void)
    04 {
    05 struct
    06 {
    07 int a;
    08 int b;
    09 }word;
    10
    11 printf(“输入两个整数:”);
    12 scanf(“%d %d”,word.a, word.b);
    13 printf(“%d %d”,word.a, word.b);
    14
    15 return 0;
    16 }

  8. 第12行应修改如下: scanf(“%d %d”,&word.a, &word.b);
  9. 以struct设计一个成绩管理系统,可存储学号、姓名、语文成绩、英文成绩、数学成绩,班上人数有3人,输入这些数据并打印出来,其数据成员如下:
    (1)定义Student结构。
    (2)定义成员变量存放学号id,姓名name,语文成绩chinese,英文成绩english,数学成绩math。
    (3)在main函数中声明结构变量kao_class,并由键盘输入各结构成员数据。
    (4)将输入的数据打印出来。

  10. 01 #include
    02 struct Student
    03 {
    04 int id;
    05 char name[10];
    06 int chinese;
    07 int english;
    08 int math;
    09 };
    10 int main()
    11 {
    12 struct Student kao_class[2];
    13 int i;
    14 for(i=0;i<5;i++)
    15 {
    16 printf(“请输入第%d位学生的数据...\n”,i+1);
    17 printf(“学号:”);
    18 scanf(“%d”,&kao_class[i].id);
    19 printf(“姓名:”);
    20 scanf(“%s”,kao_class[i].name);
    21 printf(“语文:”);
    22 scanf(“%d”,&kao_class[i].chinese);
    23 printf(“英文:”);
    24 scanf(“%d”,&kao_class[i].english);
    25 printf(“数学:”);
    26 scanf(“%d”,&kao_class[i].math);
    27 }
    28 printf(“------------------------------------\n”);
    29 for(i=0;i<5;i++)
    30 {
    31 printf(“第%d位 %d %s\n”,i+1,kao_class[i].id,kao_class[i].name);
    32 printf(“语文成绩:%d\n,kao_class[i].chinese”);
    33 printf(“英文成绩:%d\n,kao_class[i].english”);
    34 printf(“数学成绩:%d\n”,kao_class[i].math);
    35 }
    36 return 0;
    37 }
  11. 下面这个程序代码片段哪里出了问题? 01 #include
    02
    03 int main(void)
    04 {
    05 struct
    06 {
    07 char *name;
    08 int number;
    09 }st
    10
    11 st.name=”Justin”;
    12 st.number=90;
    13
    14 return 0;
    15 }

  12. 第09行少了分号作为结束。
  13. 以下的声明有什么错误? struct student { char name[80]; struct student next; }

  14. 结构中不能有同名结构存在,且该声明最后没有以分号作为结束。
  15. 嵌套结构的成员存取方式是什么?

  16. 存取方式由外层结构对象加上小数点“.”存取内层结构对象,再存内层结构对象的成员,一层接着一层。 struct 结构名称B 变量名称b; 变量名称b.变量名称a.项目名称a;
  17. 下面这个程序哪里有错误? 01 struct student
    02 {
    03 unsigned bit1:1;
    04 unsigned bit2:1;
    05 unsigned bit3:1;
    06 unsigned bit4:1;
    07 } a={1,0,1,1};
    08
    09 int main(void)
    10 {
    11 unsigned *ptr;
    12 ptr+&a.bit1;
    13 printf(“%u”, *ptr);
    14
    15 return 0;
    16 }

  18. 最小可寻址的内存前一段单位为字节,使用位字段时,无法取得它的内存地址。
  19. 下列为一程序代码片段,说明为什么第07行会发生编译错误?
    1 struct flower
    2 {
    3 /*花的名称*/
    4 char *name;
    5 };
    6 struct flower fruit_flower[5];
    7 fruit_rlower.name[0]= ” lotus”;

  20. 程序不知道要存取哪一个元素的结构成员,所以必须将索引值[0]放在flower后面。
  21. 输入某月份第一天的星期数,并利用枚举(enum)结构,设计可打印连续3个月的月历。

  22. 请自行练习。
  23. 结构体声明有哪两种方式?

  24. (1)结构与变量分开声明:先定义结构体,再声明结构体变量。
    (2)结构与变量结合声明:直接定义结构体,并声明结构体变量。
  25. 试以结构的方式来算出成绩等级。键盘输入语文及数学成绩,然后计算总成绩及平均成绩,并依据平均成绩求出等级,最后在屏幕上显示语文、数学、总成绩、平均成绩以及成绩等级。其中平均成绩对应等级如表9-1所示。                                    表9-1


    平均成绩                                       等级

    100分

      A

    90~99分

    B

    80~89分

    C

    70~79分

    D

    60~69分

    E

    60分以下

    F


  26. 请自行练习。

自我评价 答对0--2题 答对3--4题 答对5--6题 答对7--8题 答对9--10题

上一篇    下一篇