目录
二、喝汽水问题,1元1瓶汽水,2个空瓶换一瓶汽水。写程序表示可以喝多少汽水
一、结构体部分题
struct S
{
int a;
int b;
};
int main()
{
struct S a, * p = &a;
a.a = 99;
printf("%d\n", (*p).a);
return 0;
}
结构体变量名为a,类型为struct S。p是指针变量名,但是它的类型是struct S*。用点能够输出结构体中的内容,但是以指针来输出时,需要打上括号,因为跟点号结合的优先性大于*。
二、喝汽水问题,1元1瓶汽水,2个空瓶换一瓶汽水。写程序表示可以喝多少汽水
int main()
{
int money = 0;
int total = 0;
int empty = 0;
scanf("%d", &money);
total = money;
empty = money;
while (empty >= 2)
{
total += empty / 2;
empty = empty / 2 + empty % 2;
}
printf("total = %d\n", total);
return 0;
}
或者找寻一下规律,20元能喝39个,10元能喝19个,7元能喝13个。所以
int main()
{
int money = 0;
int total = 0;
int empty = 0;
scanf("%d", &money);
if (money == 0)
total = 0;
else
total = 2 * money - 1;
return 0;
}
三、调试部分题
C语言常见的错误包括编译错误,链接错误,运行时错误。
F5是开始调试,F10是逐过程调试,遇到函数不进入函数
F11是逐语句调试,可以观察调试的每个细节
F9是设置断点和取消断点
四、调整奇数偶数顺序
void print(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
void move(int arr[], int sz)
{
int left = 0;
int right = sz - 1;
while (left < right)
{
while ((left < right) && (arr[left] % 2 == 1))
{
left++;
}
while ((left < right) && (arr[right] % 2 == 0))
{
right--;
}
if (left < right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
}
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int sz = sizeof(arr) / sizeof(arr[0]);
move(arr, sz);
print(arr, sz);
return 0;
}
五、数据存储部分题
大小端字节序指的是数据在电脑上存储的字节顺序。
大端字节序是高字节内容(高位)放到低地址,低字节内容(低位)存放在高地址。
小端字节序是高字节内容放到高地址,低字节内容存放在低地址。
六、字符指针部分题
32位系统下任何类型指针的长度都是4个字节。
当释放掉一个指针内容后,指针变量所指向的值不会变,但此时这个内容所占的空间已经还给电脑,所以应该当设为NULL。
结束。