指针数组刷题记录
文章目录
1. 如有以下代码:
struct student//用户定义的结构体类型
//struct 是结构体类型的关键字
{
int num;
char name[32];
float score;//结构体成员名
}stu;//stu:结构体变量名
2. 结构体访问成员的操作符不包含:
3. 关于VS调试快捷键说法错误的是:
4. 关于二级指针描述描述正确的是:
5. 下面哪个是指针数组:
6. 不能填入横线处的内容是:
下面程序要求输出结构体中成员a的数据
#include < stdio.h >
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", __________);
//A.a.a//ok
//B.*p.a//err->(*p).a
//C.p->a
//D.(*p).a
return 0;
}
7. 关于Debug和Release的区别说法错误的是:
8. 下面程序的输出结果是:
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);//{9802,”wang”,19},
return 0;
}
9. 喝汽水问题
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。
钱 | 汽水 | 空瓶 | 余数 |
---|---|---|---|
20(购买) | 20 | 20 | |
置换而来 | 10 | 10 | |
5 | 5 | 1 | |
2 | 3 | 1 | |
1 | 2 | ||
1 | 1 | ||
sum: | 39 |
#include<stdio.h>
int main()
{
int money = 0;
scanf("%d", &money);
int total = money;
int empty = money;
//20 39
//15 29
//10 19
while (empty>=2)
{
total+=empty / 2;
empty += empty / 2 + empty % 2;
}
printf("%d\n", total);
return 0;
}
发现规律后:
int main()
{
int money = 0;
int total = 0;
scanf("%d", &money);
if (money <= 0)
total = 0;
else
total = 2 * money - 1;
printf("%d\n", total);
return 0;
}
10. 变种水仙花数
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:
655 = 6 * 55 + 65 * 5
1461 = 1461 + 1461 + 146*1
求出 5位数中的所有 Lily Number。
int main()
{
int i = 0;
for (i = 10000; i <= 99999; i++)
{
//判断i是否为lily number
//12345
//12345%10=5 1235/10=1234
//12345%100=45 12345/100=123
//12345%1000=345 12345/1000=12
//12345%10000=2345 12345/10000=1
int sum = 0;
int j = 0;
for (j = 1; j <= 4; j++)
{
int k = (int)pow(10, j);
sum += (i % k) * (i / k);
}
if (sum == i)
printf("%d ", i);
}
return 0;
}