1. 求 sizeof ( name1) ?( 晟安信息)
struct name1 {
char str;
short x;
int num;
} ;
8
2. ( 电工时代)
typedef struct _a
{
char c1;
long i;
char c2;
double f;
} a;
typedef struct _b
{
char c1;
char c2;
long i;
double f;
} b;
sizeof ( a) = ____32___;
sizeof ( b) = ___24____;
3. 给了一个结构体,求 sizeof ( struct A ) = ________。 ( 鲁科安全,软通动力)
struct A {
char a;
char b;
char c;
short d;
int e;
short f;
}
16
4. 有一个如下的结构体,请问在64 位编译器下用 sizeof ( struct A ) 计算出的大小是多少?( ) ( 鲁科安全)
struct A {
long a1;
short a2;
int a3;
int * a4;
}
A. 24 B. 28 C. 16 D. 18
A. 24
5. 有以下说明语句,则下列错误的引用 是( ) 。( 山大华天)
struct stu
{
int no;
char name[ 21 ] ;
} ;
stu w, * p = & w;
A. w. no B* p. no C. p-> no D. ( * p) . no
B* p. no
6. 写出下述程序结果: ( 中维世纪)
typedef struct test
{
char x1;
short x2;
float x3;
char x4;
} TEST_T;
printf ( "%d" , sizeof ( TEST_T) ) ;
12
7. 下面的代码输出是什么,为什么?( 64 位环境) ( 信雅达)
struct {
char * a1;
long a2;
short a3;
} A;
int main ( void )
{
printf ( "%d" , sizeof ( A) ) ;
}
24
8. 设有如下结构定义: struct student { int num; char name[ 20 ] ; char sex; int age; char addr[ 30 ] ; } stud; 若用printf ( "%s\n" , . . . . . ) 访问该结构中name值的正确方法是 ( ) ( 杭州快越科技)
A. stud -> name B. & stud. name
C. stud. & name D. stud. name
D. stud. name
9. struct
{
short a; char b; float c;
} cs;
则sizeof ( cs) 的值是( ) ( 苏州特点电子科技)
A. 4 B. 5 C. 7 D. 8
D. 8
10. 如下函数的输出结果是:【 】
struct node
{
char a; short b; char c; int d;
} ;
struct node s = { 3 , 5 , 6 , 99 } ;
struct node * pt = & s;
printf ( "%X\n" , * ( int * ) pt) ;
0x06050303
11. 编程题:定义学生结构体,存储学生的学号、姓名、分数,定义长度为5 的结构体数组,实现:
①输入学生信息
②输出学生信息
③计算学生的成绩总分、平均分
④按照学生的分数进行排序
⑤输出排序后的数组
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
struct Student {
int id;
char name[ 50 ] ;
float score;
} ;
void input ( struct Student students[ ] , int len) {
for ( int i= 0 ; i< len; i++ ) {
printf ( "请输入第%d个学生的学号、姓名和分数:\n" , i + 1 ) ;
scanf ( "%d %s %f" , & students[ i] . id, students[ i] . name, & students[ i] . score) ;
}
}
void output ( struct Student students[ ] , int len) {
for ( int i= 0 ; i< len; i++ ) {
printf ( "学号:%d, 姓名:%s, 分数:%.2f\n" , students[ i] . id, students[ i] . name, students[ i] . score) ;
}
}
void cal ( struct Student students[ ] , int len, float * total, float * average) {
* total= 0 ;
for ( int i= 0 ; i< len; i++ ) {
* total+= students[ i] . score;
}
* average= * total/ len;
}
void sort ( struct Student students[ ] , int len) {
struct Student temp;
for ( int i= 1 ; i< len; i++ ) {
for ( int j= 0 ; j< len- i; j++ ) {
if ( students[ j] . score< students[ j+ 1 ] . score) {
temp= students[ j] ;
students[ j] = students[ j+ 1 ] ;
students[ j+ 1 ] = temp;
}
}
}
}
int main ( ) {
struct Student students[ 5 ] ;
float total, average;
input ( students, 5 ) ;
output ( students, 5 ) ;
cal ( students, 5 , & total, & average) ;
printf ( "总分:%.2f, 平均分:%.2f\n" , total, average) ;
sort ( students, 5 ) ;
printf ( "排序后的学生信息如下:\n" ) ;
output ( students, 5 ) ;
return 0 ;
}