#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//------------------------------------------------------------------------------------------第17次作业,指针初阶
//-----------------------------------------------------------------------------------------------1.单选.结构体
//有以下代码:
struct student
{
int num;
char name[32];
float score;
}stu; // stu 是变量
则下面的叙述不正确的是:( D )
A.struct 是 结构体类型的关键字
B.struct student是用户定义的结构体类型
C.num, score都是 结构体成员名
D.stu是用户定义的结构体类型名 --------变量名
//-----------------------------------------------------------------------------------------------2.单选
结构体访间成员的操作符不包含:( D )
A. .操作符
B . - > 操作符
C. *解引用操作符
D. sizeof
//-----------------------------------------------------------------------------------------------3.单选
关于二级指针描术描述正确的是:( B )
A.二级指针也是指针,只不过比一级指针更大
B.二级指针也是指针,是用来保存一级指针的地址
C.二级指针是用来存放数组的地址
D.二级指针的大小是4个字节----- 4/8
//-----------------------------------------------------------------------------------------------4.单选
下面哪个是指针数组( A )// 指针数组,存放指针的数组
A. int* arr[10];
B. int * arr[]; ---不指定大小 ×
C. int ** arr; ---二级指针
D. int (*arr)[10]; ---arr是一个数组指针,指向数组的指针
//-----------------------------------------------------------------------------------------------5.单选
下面程序要求输出结构体中成员 a 的数据,以下不能填入横线处的内容是( B )
struct S
{
int a;
int b;
};
int main()
{
struct S a, *p = &a;
// struct S a
// struct S* p = &a;
a.a = 99;
printf("%d\n", );
return 0;
}
A. a.a
B. *p.a // . 的优先级 高于 * ,所以不行
C. p->a
D.(*p).a
//-----------------------------------------------------------------------------------------------6.单选
下列程序输出结果 wang
struct stu
{
int num;
char name[10];
int age;
};
void fun(struct stu* p)
{
printf("%s\n", (*p).name); // wang
return;
}
int main()
{
struct stu students[3] ={ {9801,"zhang",20},
{9802,"wang",19},
{9803,"zhao",18}
};
fun(students + 1); //数组名是首元素地址
return 0;
}
//-----------------------------------------------------------------------------------------------7.编程:喝汽水
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。
int main()
{
int money = 0;
scanf("%d", &money); // 多少元 20
int total = money; //花钱喝的汽水数量
int empty = money; //空瓶数
//置换
while (empty>=2)
{
total = total + empty / 2;
empty = empty / 2 + empty % 2;
}
printf("%d\n", total);
//发现规律
if (money > 0)
printf("%d\n", 2 * money - 1);
else
printf("0");
return 0;
}