#include <stdio.h>
#include <string.h>
struct Person
{
char name[30];
int count;
}leader[3] = { "li",0,"zhang",0,"ran",0 };
int main()
{
int i, j;
for (i = 0; i < 10; i++)
{
char leader_name[30];
printf_s("please enter the name of the elector:\n");
scanf_s("%s", leader_name,30);
for (j = 0; j < 3; j++)
{
if (strcmp(leader_name, leader[j].name) == 0) leader[j].count++;
}
printf_s("\nResult:\n");
for (i = 0; i < 3; i++)
{
printf_s("%s,%d", leader[i].name, leader[i].count);
}
}
for (i = 0; i < 3; i++)
{
printf_s("%s,%d", leader[i].name, leader[i].count);
}
这里改变了i的值,导致外循环成为死循环,改成
for (j= 0;j < 3; j++)
{
printf_s("%s,%d", leader[j].name, leader[j].count);
}
你两个for循环里面都用i,第二个会把i改了。所以外层循环永远达到退出条i>=10
这样的问题跟踪一下不就看出来了吗,根本用不着问!