C语言唱票函数 c语言计票程序

关于选举唱票的C语言的题

如果输入完全按照要求做的话,程序没问题啊,只不过 n 不能大于99,并且要求投票数字只能是1~9中的数字

成都创新互联是一家专业提供江干企业网站建设,专注与成都做网站、网站建设、H5高端网站建设、小程序制作等业务。10年已为江干众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

#include stdio.h

int main()

{

int A,B,C,D,E,Feipiao,i=0,n,s[100];

A=B=C=D=E=Feipiao=0;

char c;

scanf("%d",n);

if (n!=0)

{

getchar();

while ((c=getchar())!='\n') 

//没有限制用户输入数据的个数,若超出100个,会导致溢出

{

if (c='0'c='9') //无法输入10以上的数字

s[i++]=c-'0';

}

}

s[i]='\0';//使用 0 作为数组结束的标志

i=0;

while (s[i]!='\0')//如果投票数字中含有 0 的话,会导致程序结果出错

{

if(in)

switch (s[i++])

{

case 1:A++;break;

case 2:B++;break;

case 3:C++;break;

case 4:D++;break;

case 5:E++;break;

default :Feipiao++;break;

}

else i++;

}

if (in)//若第二行输入数据的个数大于 n+1 个的话,会执行这一分支(没有包含等于 n+1 这种情况)

{

Feipiao+=(i-n);// i-n 是因为输入错误导致而多出的票数

}

printf("A:%d\nB:%d\nC:%d\nD:%d\nE:%d\nFeipiao:%d\n",A,B,C,D,E,Feipiao);

return 0;

}

欢迎追问和评论

0xe无符号数数值怎么计算

unsigned char A =10;signed char B = -20;//计算的时候A = 0x0A;B = 0xEC;//转换为int计算,C语言的规定A -- 0x000000 0A;B -- 0xFFFFFF EC;A + B = 0xFFFF。

进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制---X进制,就表示每一位上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(en:radix)或底数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。

对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。

数值本身是一个数学上的抽象概念。经过长期的演化、融合、选择、淘汰,系统简便、功能全面的十进制计数法成为人类文化中主流的计数方法,经过基础教育的训练,大多数的人从小就掌握了十进制计数方法。盘中放了十个苹果,通过数苹果我们抽象出来“十”这一数值,它在我们的脑海中就以“10”这一十进制编码的形式存放和显示,而不是其它的形式。从这一角度来说,十进制编码几乎就是数值本身。

C语言问题请用devc++

#include stdio.h

#include stdlib.h

int main(int argc, char *argv[])

{

int in,temp,i,j;

int a=0,b=0,c=0,d=0,e=0,f=0,tot=0;

int r[6];//票数ARR

char ch[6]= {'A','B','C','D','E','F'}, temp1; //字母阵列

while(1)

{

printf("请输入投票代码1~6,0:over: ");

scanf("%d",in);

if(in==1)

{

a++;    //a++ a一票 TOT++ 总票数

tot++;

}

if(in==2)

{

b++;

tot++;

}

if(in==3)

{

c++;

tot++;

}

if(in==4)

{

d++;

tot++;

}

if(in==5)

{

e++;

tot++;

}

if(in==6)

{

f++;

tot++;

}

if(in==0) //跳出回圈总结

break;

}

r[0]=a;

r[1]=b;

r[2]=c;

r[3]=d;

r[4]=e;

r[5]=f;

for(i=0; i5; i++)

{

for(j=0; j5-i; j++)

{

if(r[j]r[j+1])

{

temp=r[j];//票数排序

temp1=ch[j];// 对应名称排序

r[j]=r[j+1];

ch[j]=ch[j+1];

r[j+1]=temp;

ch[j+1]=temp1;

}

}

}

printf(" 排名 姓名 票数\n");

for(i=0; i6; i++)printf("%4d %4c %4d\n",i+1,ch[i],r[i]);

printf("TOTAL: %d \n\n",tot);

system("PAUSE");

return 0;

}

这程序太复杂了。简化后:

#include stdio.h

#include stdlib.h

int main(int argc, char *argv[])

{

int in,temp,i,j,tot=0;

int r[6]={0};//票数ARR

char ch[6]= {'A','B','C','D','E','F'}, temp1; //字母阵列

while(1)

{

printf("请输入投票代码1~6,0:over: ");

scanf("%d",in);

if(in==0) //跳出回圈总结

break;

tot++;

r[in-1]++;

}

for(i=0; i5; i++)

{

for(j=0; j5-i; j++)

{

if(r[j]r[j+1])

{

temp=r[j];//票数排序

temp1=ch[j];// 对应名称排序

r[j]=r[j+1];

ch[j]=ch[j+1];

r[j+1]=temp;

ch[j+1]=temp1;

}

}

}

printf(" 排名 姓名 票数\n");

for(i=0; i6; i++)printf("%4d %4c %4d\n",i+1,ch[i],r[i]);

printf("TOTAL: %d \n\n",tot);

system("PAUSE");

return 0;

}

谁能帮我用C语言设计一个有奖评选程序?题目是:十佳运动员评选活动(一、功能要求

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#define N 50

#define M 500

struct sporter

{

int num;

char name[20];

int vote_num;

}spt[N]; /* spt[N]中每个数组元素对应一个运动员信息,vote_num记录得票数目.*/

struct vote

{

char id[10];

char name[20];

char address[20];

int a[10];

int score_order;/*次序分 */

int score_hit;/*命中分*/

int score_sum;

}vot[M]; /* vot[M]中每个数组元素对应一张选票信息,score_sum记录该票命中率*/

void printf_back();

void menu();

void menu_vote();

int save_spt();

void printf_onevote(int j);

int load_vote();

void search_vote();

void search_vote()

{

int m,i,flag=0;

char vs[20];

printf("Please input vote_id:\n");

scanf("%s",vs);

m=load_vote();

for(i=0;im;i++)

{

if(strcmp(vs,vot[i].id)==0)

{

flag=1;

printf_onevote(i);

}

}

if(flag==1)

printf("Found!");

else

printf("Not found!");

printf_back();

}

/*1_1. 加载候选运动员记录并可以计算记录个数的函数*/

int load_sporter() /*加载记录并可以计算记录个数的函数*/

{FILE *fp;

int i;

if((fp=fopen("sporter.txt","r"))==NULL) /*以输出打开方式,在此前的记录被覆盖*/

{printf("\nCannot open file\n");

return 0;

}

for(i=0;!feof(fp);i++)

fscanf(fp,"%d%s",spt[i].num,spt[i].name);

fclose(fp);

return(i); /*返回记录个数*/

}

/*1_2. 显示一个运动员记录的函数*/

void printf_one(int i)

{

printf("%2d %-17s %d \n",spt[i].num,spt[i].name,spt[i].vote_num);

}

/*1_3. 显示n个运动员记录的函数*/

void printf_n(int n)

{int j;

for(j=0;jn;j++)

{

if(j%10==0)

{ printf("\n\nPass any key to contiune . . .");

getchar();

puts("\n\n");

}

printf_one(j);

}

getchar();

}

/*1_4. 加载候选选票记录并可以计算记录个数的函数*/

int load_vote()

{FILE *fp;

int i,j;

if((fp=fopen("vote.txt","r"))==NULL)

{printf("\nCannot open file\n");

return 0;

}

for(i=0;!feof(fp);i++)

{ fscanf(fp,"%s%s%s%",vot[i].id,vot[i].name,vot[i].address);

for(j=0;j10;j++)

fscanf(fp,"%d",vot[i].a[j]);

}

fclose(fp);

return(i); /*返回记录个数*/

}

/*1_5. 显示一张彩票记录的函数*/

void printf_onevote(int j)

{

int i;

printf("vote_id:%s\n",vot[j].id);

printf("vote_name:%s vote_address:%s\n",vot[j].name,vot[j].address);

printf("vote_sporter:");

for(i=0;i10;i++)

printf("%d, ",vot[j].a[i]);

printf("\n\n");

}

/*1_6. 显示n张彩票记录的函数*/

void printf_n_vote(int m)

{int j;

for(j=0;jm;j++)

{

if(j%10==0)

{ printf("\nPass any key to contiune . . .");

getchar();

puts("\n\n");

}

printf_onevote(j);

}

getchar();

}

/*1_7. 唱票函数*/

void stat_vote(int m)

{

int i,j,k;

for(i=0;i=m;i++)

{

for(j=0;j10;j++)

for(k=0;k20;k++)

if(vot[i].a[j]==spt[k].num)spt[k].vote_num++;

}

}

/*1_8. 依据得票数排序函数,使用选择排序法*/

void order_by_vote(int m)

{

int i,j,k;

struct sporter s;

for(i=0;im-1;i++)

{ k=i;

for(j=i+1;jm;j++) if(spt[j].vote_numspt[k].vote_num)k=j;

s=spt[i]; spt[i]=spt[k]; spt[k]=s;

}

}

/*1_9. 显示10佳信息及输出到文件函数*/

void print_spt10()

{

int i;

printf("\n\nThe 10 best sporter is:\n");

printf("order, num, name, vote_num\n");

for(i=0;i10;i++)

{

printf("%5d: %3d, %10s, %d \n",i+1,spt[i].num,spt[i].name,spt[i].vote_num);

}

getchar();

save_spt();

}

/*1_10. 保存函数*/

int save_spt() /*保存函数,保存10佳运动员记录*/

{FILE *fp1;

int i;

if((fp1=fopen("spt10.txt","w"))==NULL) /*以输出打开方式,在此前的记录被覆盖*/

{printf("\nCannot open file\n");

return 0;

}

for(i=0;i10;i++)

fprintf(fp1,"%d %s %d\n",spt[i].num,spt[i].name,spt[i].vote_num);

fclose(fp1);

return 1;

}

/*1_11. 计算命中率函数*/

int calc_hit(int m)

{FILE *fp;

int i,j,k;

struct sporter s[10];

for(i=0;i10;i++)

{

s[i]=spt[i];

}

for(i=0;im;i++)

for(j=0;j10;j++)

for(k=0;k10;k++)

{

if(vot[i].a[j]==s[j].num) vot[i].score_order+=9-j; /*次序分*/

if(vot[i].a[j]==s[k].num) vot[i].score_hit+=10; /*命中分*/

vot[i].score_sum=vot[i].score_hit+vot[i].score_order;

}

if((fp=fopen("hit.txt","w"))==NULL)

{printf("\nCannot open file\n");

return 0;

}

for(i=0;im;i++)

fprintf(fp,"%s %d %d %d\n",vot[i].id,vot[i].score_order,vot[i].score_hit,vot[i].score_sum);

fclose(fp);

return 1;

}

/*1_12. 依据命中率对选票排序函数,使用选择排序法*/

void sort_vote(int m)

{

int i,j,k;

struct vote v;

for(i=0;im-1;i++)

{ k=i;

for(j=i+1;jm;j++) if(vot[j].score_sumvot[k].score_sum)k=j;

v=vot[i]; vot[i]=vot[k]; vot[k]=v;

}

}

/*1_13. 显示前10名获奖参选者信息函数*/

void print_vot10()

{

int i;

printf("\n\nThe 10 best voter is:\n");

printf("order, id, name, vote_sum\n");/*名次 选票号 姓名 命中率*/

for(i=0;i10;i++)

{

printf("%5d: %s, %10s, %d \n",i+1,vot[i].id,vot[i].name,vot[i].score_sum);

}

getchar();

}

/*1_14. 保存前10名获奖参选者信息到文件的函数*/

int save_vot10()

{FILE *fp1;

int i;

if((fp1=fopen("vot10.txt","w"))==NULL) /*以输出打开方式,在此前的记录被覆盖*/

{printf("\nCannot open file\n");

return 0;

}

for(i=0;i10;i++)

fprintf(fp1,"%5d: %s, %10s, %d \n",i+1,vot[i].id,vot[i].name,vot[i].score_sum);

fclose(fp1);

return 1;

}

int n,m;

/*1_15. 从文件读入运动员及选票记录*/

void readfiles()

{

n=load_sporter();/*从文件读入候选运动员记录*/

printf_n(n);/* 显示候选运动员记录*/

m=load_vote();/*从文件读入选票记录*/

}

/*1_16. 计算10佳运动员*/

void calctensp()

{

stat_vote(m); /*唱票*/

order_by_vote(n); /*依据得票数对运动员记录排序*/

print_spt10();/*输出10佳运动员信息*/

}

/*1_17. 计算10个获奖参选者*/

void stattenvoter()

{

calc_hit(m); /*计算选票的命中率*/

sort_vote(m); /*依据命中率对选票记录排序*/

print_vot10();/*显示10个获奖参选者信息*/

save_vot10();/*输出10个获奖参选者信息到文件*/

}

/*1_18. 统计函数*/

void stat()

{

readfiles();

calctensp();

stattenvoter();

}

/*2_1. 浏览选票函数*/

void browse_vote()

{

int k;

k=load_vote();

printf_n_vote(k);

printf_back();

}

/*2_2. /*查找选票函数*/

////////////////////////////////////

/////////////////////////////////

/*2_3. 核对选票函数*/

void check()

{

int n,w;

/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/

do

{

puts("\t\t*********************MENU*********************\n\n");

puts("\t\t\t\t 1.browse_vote"); /*浏览所有彩票*/

puts("\t\t\t\t 2.search_vote");/*输入彩票号码查找该彩票信息*/

puts("\t\t\t\t 3.back");/*返回*/

puts("\n\n\t\t **********************************************\n");

printf("Choice your number(1-3): [ ]\b\b");

scanf("%d",n);

if(n1||n3) /*对选择的数字作判断*/

{

w=1;

getchar();

}

else {w=0;}

}while(w==1);

/*选择功能*/

switch(n)

{case 1:browse_vote();break; /*统计模块*/

case 2:search_vote();break; /*查找选票模块*/

case 3:menu(); /*退出*/

}

}

/*公共函数*/

/*(1)任务结束时的选择退出还是返回*/

void printf_back()

{int w;

printf("\n\n\tSuccessful. ^_^\n\n");

printf("What do you want to do? \n\n\t1).Exit\t2).Back: [ ]\b\b");

scanf("%d",w);

if(w==1) exit(0);

else menu_vote();

}

/*(2)任务结束时的选择退出还是返回主菜单*/

void menu()

{

int n,w;

/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/

do

{

puts("\t\t*********************MENU*********************\n\n");

puts("\t\t\t\t 1.statistic"); /*统计*/

puts("\t\t\t\t 2.check_vote");/*核对选票*/

puts("\t\t\t\t 3.exit");/*退出*/

puts("\n\n\t\t **********************************************\n");

printf("Choice your number(1-3): [ ]\b\b");

scanf("%d",n);

if(n1||n3) /*对选择的数字作判断*/

{

w=1;

getchar();

}

else w=0;

}

while(w==1);

/*选择功能*/

switch(n)

{case 1:stat();break; /*统计模块*/

case 2:check();break; /*核对选票模块*/

case 3:exit(0); /*退出*/

}

}

/*(3)任务结束时的选择退出还是返回核对彩票菜单*/

void menu_vote()

{

int n,w;

/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/

do

{

puts("\t\t*********************MENU*********************\n\n");

puts("\t\t\t\t 1.browse_vote"); /*浏览所有彩票*/

puts("\t\t\t\t 2.search_vote");/*输入彩票号码查找该彩票信息*/

puts("\t\t\t\t 3.esc");/*返回*/

puts("\n\n\t\t **********************************************\n");

printf("Choice your number(1-3): [ ]\b\b");

scanf("%d",n);

if(n1||n3) /*对选择的数字作判断*/

{

w=1;

getchar();

}

else {w=0;}

}while(w==1);

/*选择功能*/

switch(n)

{case 1:browse_vote();break; /*统计模块*/

case 2:search_vote();break; /*查找选票模块*/

case 3:exit(0); /*退出*/

}

}

main() /*****************主函数****************/

{

menu();

}


网站题目:C语言唱票函数 c语言计票程序
文章路径:http://ybzwz.com/article/hhsjdh.html