1. 用结构体数组编写候选人得票统计程序。设有3个候选人,有6个选民,每个选民只能选一个候选人,不考虑弃权情况,要求最后输出每个候选人得票结果,输出结果参考下图。
#include<stdio.h>
#include<string.h>
struct person
{
char name[20];
int count;
};
int main()
{
int k, t;
char l_name[20];
struct person leader[3] = { "A",0,"B",0,"C",0 };
printf("请给A、B和C三个人投票:\n");
for (k = 1; k <= 6; k++)
{
scanf("%s", l_name);
for (t = 0; t < 3; t++)
{
if (strcmp(l_name, leader[t].name) == 0)
leader[t].count++;
}
}
printf("\n投票结果是:\n");
for (t = 0; t < 3; t++)
printf("%10s:%5d票", leader[t].name, leader[t].count);
printf("\n");
return 0;
}
运行结果:
2. 不使用累计乘法的基础上,通过移位运算( << )实现2的n次方的计算。
一行输入整数n(0 <= n < 31)。 输出对应的2的n次方的结果。
在2进制中,2的表示为00000010
我们只使用移位符来完成2的n次方,仅需使这个1往左移动。
如4:00000100;8:00001000
要注意为什么这里是(n-1)
因为2本身已经在第二位了,是2的1次方。
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
printf("%d", 2 << (n - 1));
return 0;
}
运行结果: