例1:
例一我的解法:
一、信息
3个候选人
每个选民只能投一票
编一个统计投票的程序
先输入被选人名字
最后输出个人得票结果
二、分析
很简单定义三个变量(问题是什么类型的变量)
选民人数未知不重要因为看你输入几次才退出,你就要多少选民,我刚开始还以为选民数量是固定的
统计用++a这类最好
先输入被选入名字然后++num(存储票数的变量)
这个简单直接printf函数即可
三、疑惑解答
类型可以是结构体变量一个char元素存储名字,一个int元素存储票数,这样名字和票数的关联就建立。
怎么决定你什么时候退出呢?很简单while用标志变量来退出
四、代码实现
#include<stdio.h>
int main()
{
char Person[20];
struct Candidate
{
char name[20];//参选人名字
int num;//票数
}Candidate[3]={"Zhao Yun",0,"Lv BU",0,"Dian Wei",0};
while(sign)
{
printf("Please enter the Candidate's name:'");
scanf("%s",&Person[20]);
}
return 0;
}
五、正确解法
解题思路:
源代码:
#include<stdio.h>
#include<string.h>
struct Person
{
char name[20];
int count;
}Candicate[3]={"Li",0,"Zhang",0,"Sun",0};//对结构体赋值一无所知
int main()
{
int i,j;
char Candicate_name[20];//
for(i=1;i<=10;i++)
{
scanf("%s",Candicate_name);
for(j=0;j<3;j++)
{
if(strcmp(Candicate_name,Candicate[j].name)==0)//用字符串比较函数可以比较两个字符串是否相等
{
Candicate[j].count++;
}
}
printf("\nResykt:\n");//这里的处理没看懂
for(i=0;i<3;i++)
{
printf("%5s:%d\n",Candicate[i].name,Candicate[i].count);
}
}
return 0;
}
运行结果:
程序分析:
几点说明:
反思:
学到了什么?
输入名字如何找到他并统计数量
方法:
思维:
思想:
知识:
哪里不会:
对结构体数组赋值一无所知
不知道如何引用结构体元素中的值
用字符串比较函数可以比较两个字符串是否相等
printf("\nResykt:\n");//这里的处理没看懂
犯了什么错?
1.没有任何思路。
2.主要问题是对判断语句放在函数内还是函数外的问题,还有怎么判断的问题。
3.推广?
4.疑问?
结构体写在主函数内好还是外好?
解答:可以在main 函数里面定义,也可以在main函数之外定义。在main函数外定义属于全局变量,在main函数里面定义属于局部变量,只能在main函数中使用。
这道题目的答案只是对10个人进行统计当人数不确定时又该怎么办呢?