永发信息网

c语言计数器

答案:4  悬赏:0  手机版
解决时间 2021-04-05 03:01
  • 提问者网友:骨子里的高雅
  • 2021-04-04 10:45
求一个选举统计的c语言程序代码......刚开始界面是“请输入选票上的号码:”。输入号码后回车,然后不断有“请输入选票上的的号码:”。输入“0”回车后自动统计每个号码得票次数。谢谢!
最佳答案
  • 五星知识达人网友:掌灯师
  • 2021-04-04 10:54
//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

typedef struct TX{
int id;
int count;
struct TX *next;
} X;

typedef struct {
int total;
X *h;
} XH;

X *input(X *a,int id)
{
if (a==NULL) {
a=malloc(sizeof(X));
a->id=id;
a->count =1;
a->next =NULL;

}
else if (a->id!=id) {
a->next=input(a->next ,id);
}
else if (a->id==id) {
a->count++;
}
return a;
}
void Free(X *h)
{
if (h->next !=NULL) {
Free(h->next );
}
free(h);
}
int main(void)
{
int id=1,assert;
XH vote;
vote.total=0;
vote.h=NULL;
printf("请输入选票上的号码:");
scanf("%d",&id);
while (id) {
if (assert) {
vote.total ++;
vote.h=input(vote.h,id);
}

printf("请输入选票上的号码:");
fflush(stdin);
assert=scanf("%d",&id);
fflush(stdin);
}
printf("\n\nTotal:%d\n",vote.total );
while (vote.h!=NULL)
{

printf("%d:%d\n",vote.h->id,vote.h->count);
vote.h=vote.h->next ;
}
if (vote.h!=NULL) Free(vote.h);
return 0;
}
//---------------------------------------------------------------------------
全部回答
  • 1楼网友:怙棘
  • 2021-04-04 12:25
#include <stdlib.h> #include <math.h> #include <graphics.h> #include <stdio.h> #include <process.h> #define EXCAPE 27 #define ENTER 13 main(){ int press,i,x,y,x1,y1,ch_z=0; int dian=0; char ch='0'; char emp[80],sum[80],*e,*s; double yuan=0.000000000000; void init(void); void clear_z(char *u); double strtoflt(char *p); int getkey(); int gd=DETECT, gm; initgraph(&gd, &gm, ""); e=emp; s=sum; init(); x = (getmaxx() / 2) - 120; y = (getmaxy() / 2) - 150; x1 = (getmaxx() / 2) + 120; y1 = (getmaxy() / 2) + 150; while(1){ press = getkey(); switch(press){ case EXCAPE: exit(0); case 47: bar (x + 10, y + 80 + 10, x + 60 - 10, y + 80 + 60 - 10); delay(8000); init(); if (ch!='0'){ switch(ch){ case '/': if (strtoflt(emp)==0.0){ ch='0'; ch_z=0; dian=0; emp[0]='\0'; sum[0]='\0'; e=emp; s=sum; outtextxy(x+30,y+40,"error!!!!!"); break; } yuan = strtoflt(sum) / strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); break; case '*': yuan = strtoflt(sum) * strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); break; case '+': yuan = strtoflt(sum) + strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); break; case '-': if (strtoflt(sum)>=strtoflt(emp)){ yuan = strtoflt(sum) - strtoflt(emp); sprintf(sum,"%0.10f",yuan); } else{ yuan=strtoflt(emp)-strtoflt(sum); sprintf(sum,"-%0.10f",yuan); } clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; } } else{ if (ch_z==0){ outtextxy(x+30,y+40,emp); stpcpy(sum,emp); } else{ outtextxy(x+30,y+40,sum); } } ch='/'; ch_z=0; emp[0]='\0'; e=emp; dian=0; break; case 42: bar (x + 60 + 10, y + 80 + 10, x + 60 * 2 - 10, y + 80 + 60 - 10); delay(8000); init(); if (ch!='0'){ switch(ch){ case '/': yuan = strtoflt(sum) / strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '*': yuan = strtoflt(sum) * strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '+': yuan = strtoflt(sum) + strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '-': if (strtoflt(sum)>=strtoflt(emp)){ yuan = strtoflt(sum) - strtoflt(emp); sprintf(sum,"%0.10f",yuan); } else{ yuan=strtoflt(emp)-strtoflt(sum); sprintf(sum,"-%0.10f",yuan); } clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; } } else{ if (ch_z==0){ outtextxy(x+30,y+40,emp); stpcpy(sum,emp); e=emp; } else outtextxy(x+30,y+40,sum); } ch='*'; ch_z=0; dian=0; break; case 45: bar (x + 60 * 2 + 10, y + 80 + 10, x + 60 * 3 - 10, y + 80 + 60 - 10); delay(8000); init(); if (ch!='0'){ switch(ch){ case '/': yuan = strtoflt(sum) / strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '*': yuan = strtoflt(sum) * strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '+': yuan = strtoflt(sum) + strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '-': if (strtoflt(sum)>=strtoflt(emp)){ yuan = strtoflt(sum) - strtoflt(emp); sprintf(sum,"%0.10f",yuan); } else{ yuan=strtoflt(emp)-strtoflt(sum); sprintf(sum,"-%0.10f",yuan); } clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; } } else{ if (ch_z==0){ outtextxy(x+30,y+40,emp); stpcpy(sum,emp); e=emp; } else outtextxy(x+30,y+40,sum); } ch='-'; ch_z=0; dian=0; break; case 43: bar (x + 60 * 3 + 10, y + 80 + 10, x + 60 * 4 - 10, y + 80 + 60 - 10); delay(8000); init(); if (ch!='0'){ switch(ch){ case '/': yuan = strtoflt(sum) / strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '*': yuan = strtoflt(sum) * strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '+': yuan = strtoflt(sum) + strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '-': if (strtoflt(sum)>=strtoflt(emp)){ yuan = strtoflt(sum) - strtoflt(emp); sprintf(sum,"%0.10f",yuan); } else{ yuan=strtoflt(emp)-strtoflt(sum); sprintf(sum,"-%0.10f",yuan); } clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; } } else{ if (ch_z==0){ outtextxy(x+30,y+40,emp); stpcpy(sum,emp); e=emp; } else outtextxy(x+30,y+40,sum); } ch='+'; ch_z=0; dian=0; break; case 49: bar (x + 10, y + 80 + 53 + 10, x + 60 - 10, y + 80 + 53 * 2 - 4); delay(8000); init(); for (i=0;i<=79;i++){ if (emp[i]=='\0') break; } if (ch_z==0){ *e='1';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case 50: bar (x + 60 + 10, y + 80 + 53 + 10, x + 60 * 2 - 10, y + 80 + 53 * 2 - 4); delay(8000); init(); for (i=0;i<=79;i++){ if (emp[i]=='\0') break; } if (ch_z==0){ *e='2';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case 51: bar (x + 60 * 2 + 10, y + 80 + 53 + 10, x + 60 * 3 - 10, y + 80 + 53 * 2 - 4); delay(8000); init(); for (i=0;i<=79;i++){ if (emp[i]=='\0') break; } if (ch_z==0){ *e='3';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case ENTER: bar (x + 60 * 3 + 10, y + 80 + 53 + 10, x + 60 * 4 - 10, y + 80 + 53 * 2 - 4); delay(8000); init(); if (ch!='0'){ switch(ch){ case '/': yuan = strtoflt(sum) / strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '*': yuan = strtoflt(sum) * strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '+': yuan = strtoflt(sum) + strtoflt(emp); sprintf(sum,"%0.10f",yuan); clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case '-': if (strtoflt(sum)>=strtoflt(emp)){ yuan = strtoflt(sum) - strtoflt(emp); sprintf(sum,"%0.10f",yuan); } else{ yuan=strtoflt(emp)-strtoflt(sum); sprintf(sum,"-%0.10f",yuan); } clear_z(sum); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; } } else{ if (ch_z==0){ outtextxy(x+30,y+40,emp); stpcpy(sum,emp); e=emp; } else{ outtextxy(x+30,y+40,sum); } } ch='0'; ch_z=1; dian=0; break; case 52: bar (x + 10, y + 80 + 53 * 2 + 10, x + 60 - 10, y + 80 + 53 * 3 - 4); delay(8000); init(); if (ch_z==0){ *e='4';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case 53: bar (x + 60 + 10, y + 80 + 53 * 2 + 10, x + 60 * 2 - 10, y + 80 + 53 * 3 - 4); delay(8000); init(); if (ch_z==0){ *e='5';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case 54: bar (x + 60 * 2 +10, y + 80 + 53 * 2 + 10, x + 60 * 3 - 10, y + 80 + 53 * 3 - 4); delay(8000); init(); if (ch_z==0){ *e='6';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case 46: bar (x + 60 * 3 + 10, y + 80 + 53 * 2 + 10, x + 60 * 4 - 10, y + 80 + 53 * 3 - 4); delay(8000); init(); if (dian==0){ if (ch_z==0){ *e='.';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } } else{ if (ch_z==0) outtextxy(x+30,y+40,emp); else outtextxy(x+30,y+40,sum); } dian=1; break; case 55: bar (x + 10, y + 80 + 53 * 3 + 10, x + 60 - 10, y + 80 + 53 * 4 - 4); delay(8000); init(); if (ch_z==0){ *e='7';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case 56: bar (x + 60 + 10, y + 80 + 53 * 3 + 10, x + 60 * 2 -10, y + 80 + 53 * 4 - 4); delay(8000); init(); if (ch_z==0){ *e='8';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case 57: bar (x + 60 * 2 + 10, y + 80 + 53 * 3 + 10, x + 60 * 3 - 10, y + 80 + 53 * 4 - 4); delay(8000); init(); if (ch_z==0){ *e='9';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case 48: bar (x + 60 * 3 + 10, y + 80 + 53 * 3 + 10, x + 60 * 4 - 10, y + 80 + 53 * 4 - 4); delay(8000); init(); if (ch_z==0){ *e='0';e++;*e='\0'; outtextxy(x+30,y+40,emp); } else{ outtextxy(x+30,y+40,sum); } break; case 32: emp[0]='\0'; sum[0]='\0'; e=emp; s=sum; ch='0'; ch_z=0; dian=0; init(); break; case 8: delay(8000); for(i=0;i<=79;i++){ if (emp[i]=='\0') break; } if (i==0) break; if (i!=79&&i!=0){ i--; emp[i]='\0'; e=&emp[i]; } init(); outtextxy(x+30,y+40,emp); break; } } } void init(void){ int x, y, x1, y1, i, j; char emp; x = (getmaxx() / 2) - 120; y = (getmaxy() / 2) - 150; x1 = (getmaxx() / 2) + 120; y1 = (getmaxy() / 2) + 150; cleardevice(); setbkcolor(3); setfillstyle(1, 15); setcolor(15); settextstyle(1,0,1); rectangle (x, y, x1, y1); rectangle (x - 7, y - 7, x1 + 7, y1 + 7); rectangle (x + 10, y + 10, x1 - 10, y + 80 - 10); line (x, y + 80, x1, y + 80); y = y + 80; for (j = 1; j <= 4; j++){ x = (getmaxx() / 2) - 120; for (i = 1; i <= 4; i++){ rectangle(x + 10, y + 10, x + 60 - 10, y + 60 - 10); if (j == 1){ if (i == 1) outtextxy(x + 20, y + 20, "/"); if (i == 2) outtextxy(x + 25, y + 20, "*"); if (i == 3) outtextxy(x + 27, y + 20, "-"); if (i == 4) outtextxy(x + 25, y + 20, "+"); } if (j == 2){ if (i == 1) outtextxy(x + 25, y + 20, "1"); if (i == 2) outtextxy(x + 25, y + 20, "2"); if (i == 3) outtextxy(x + 25, y + 20, "3"); if (i == 4) outtextxy(x + 25, y + 20, "="); } if (j == 3){ if (i == 1) outtextxy(x + 25, y + 20, "4"); if (i == 2) outtextxy(x + 25, y + 20, "5"); if (i == 3) outtextxy(x + 25, y + 20, "6"); if (i == 4) outtextxy(x + 25, y + 20, "."); } if (j == 4){ if (i == 1) outtextxy(x + 25, y + 20, "7"); if (i == 2) outtextxy(x + 25, y + 20, "8"); if (i == 3) outtextxy(x + 25, y + 20, "9"); if (i == 4) outtextxy(x + 25, y + 20, "0"); } x = x + 60; } y = y + 53; } } int getkey(){ char lowbyte; int press; while(bioskey(1)==0); press = bioskey(0); press = press&0xff? press&0xff: press>>8; return(press); } double strtoflt(char *p) { double rtl=0.000000000000; double pnt=0.000000000000; double t = 10; int ispoint = 0; while (*p!='\0'||*p!='.'){ if(*p<'0'||*p>'9') break; rtl*=10; rtl+=*p-'0'; p++; } if (*p=='.'){ ispoint=1; p++; } while(ispoint&&*p!='\0'){ pnt+=(double)(*p-'0')/t; t*=10; p++; } rtl+=pnt; return (rtl); } void clear_z(char u[]){ int i; for(i=strlen(u)-1;i>=0;i--){ if (u[i]!='0') break; } if (u[i]=='.'){ u[i]='\0'; } else{ i++; u[i]='\0'; } }
  • 2楼网友:舍身薄凉客
  • 2021-04-04 12:08
先不说计数器 if(4*x+3*y+z/2==36&&x+y+z==100) x+y+z不会超过9+12+36那么x+y+z==100不会成立,所以正确答案是0个,不用计数器了 改了下条件+了个计数器 #include int main() { int x,y,z; int cnt=0; printf("***work***\n"); for(x=1;x<9;x++) for(y=1;y<12;y++) for(z=2;z<36;z+=2) if(4*x+3*y+z/2==36&&x+y+z<100) { cnt++; printf("%2d: men:%d,women:%d,children:%d\n",cnt,x,y,z); } }
  • 3楼网友:动情书生
  • 2021-04-04 11:44
C语言书上有这个例子。 就是谭浩强老先生那本,第二版。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯