帮忙纠错一个c语言代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮忙纠错一个c语言代码相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NUM 3
#define num 5
struct person
char name[20];
man[NUM];
void main()
struct person man[NUM];
int i,a,b,c,d,j;
printf("候选人有:");
for(i=0;i<NUM;i++)
gets_s(man[i].name,20);
printf("%s,",man[i].name);
struct candidate
char name1[20];
man1[num];
struct candidate m[num];
//错误 2 error C2148: 数组的总大小不得超过 0x7fffffff 字节//
for(j=0;j<num;j++)
//错误 4 error C2143: 语法错误 : 缺少“”(在“<”的前面)//
//错误 7 error C2059: 语法错误:“++”//
a=j+1;
printf("第%d位投票,请写下支持的候选人名字:",a);
gets_s((m[j].name1),20);
printf("%s\n",(m[j]).name1);
if(m[j].name1==man[0].name)
b++;
else if(m[j].name1==man[1].name)
c++;
else if(m[j].name1==man[2].name)
d++;
else
getchar();
printf("\t%s\t同学得票数为:%d\n",man[0].name,b);
//错误 10 error C2143: 语法错误 : 缺少“”(在“字符串”的前面) //
printf("\t%s\t同学得票数为:%d\n",man[1].name,c);
printf("\t%s\t同学得票数为:%d\n",man[2].name,d);
如果把gets_s这个msvc特定的换成gets,用gcc编译完全没问题。
如果想在msvc下编译,把文件后缀改成cpp或者使用/TP选项
另外,你的编程风格太差了。追问
我用的是vs2012,改用gets会提示风险。我是初学者,能否说细致点?
参考技术A #include<stdio.h>#include<stdlib.h>
#include<string.h>
#define NUM 3
#define num 5
struct person
char name[20];
man[NUM];
struct candidate
char name1[20];
man1[num];
void main()
struct person man[NUM];
struct candidate m[num];
int i,a,j;
int b = 0;
int c = 0;
int d = 0;
printf("候选人有:");
for(i=0;i<NUM;i++)
gets_s(man[i].name,20);
printf("%s,",man[i].name);
//错误 2 error C2148: 数组的总大小不得超过 0x7fffffff 字节//
for(j=0;j<num;j++)
//错误 4 error C2143: 语法错误 : 缺少“”(在“<”的前面)//
//错误 7 error C2059: 语法错误:“++”//
a=j+1;
printf("第%d位投票,请写下支持的候选人名字:",a);
gets_s((m[j].name1),20);
printf("%s\n",(m[j]).name1);
if(m[j].name1==man[0].name)
b++;
else if(m[j].name1==man[1].name)
c++;
else if(m[j].name1==man[2].name)
d++;
else
getchar();
printf("\t%s\t同学得票数为:%d\n",man[0].name,b);
//错误 10 error C2143: 语法错误 : 缺少“”(在“字符串”的前面) //
printf("\t%s\t同学得票数为:%d\n",man[1].name,c);
printf("\t%s\t同学得票数为:%d\n",man[2].name,d);
将C语言代码转换成汇编语言,求帮忙,建议用反汇编软件的就不要来了,我试过,那个代码太多,不实用
c语言代码如下,尽可能转换成简短些的。要求就是随机出四位不同的数字,在屏幕上输入四位数,没全对就输出nAmB A代表数字对,B代表数字和位置都对。最多可以试10次,超过10次就失败了。尽可能与下面的C语言代码所能实现的功能保持一样。用32位的汇编语言。谢谢了。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
void elapsed_time()
double shijian;
shijian=(double)clock()/CLOCKS_PER_SEC;
printf("你所使用的时间为:%f 秒",shijian);
int Check(int *size)
int i=0,j=0;
for(i=0;i<4;i++)
for(j=0;j<i;j++)
if(size[i]==size[j]||size[i]==0)
return 1;
return 0;
int Compare_record(int *size)
int player,times=1,k=0,total=0;
int p_count[4],i=0,j=0;
while(times!=11)
int position=0,count=0;
printf("请输入数据.当前第%d次\n",times);
scanf("%d",&player);
while(player>9999||player<1000)
printf("输入错误!请输入一个四位数!\n");
continue;
for(i=0;i<4;i++)
k=player%10;
player=player/10;
p_count[3-i]=k;
for(i=0;i<4;i++)
if(p_count[i]==size[i])
position++;
count++;
for(j=0;j<4;j++)
if(p_count[j]==size[i]&&(i!=j))
count++;
if(position==4)
total=10000/(times+clock()/CLOCKS_PER_SEC);
printf("恭喜你猜对了\n");
printf("累计尝试次数为:%d\n",times);
elapsed_time();
printf("总分:%d\n",total);
return 1;
printf("你目前成绩为:%dA%dB\n",count,position);
times++;
printf("很遗憾,你失败了,请再接再厉吧!\n");
return 0;
int main()
int i=0,j=0,k=0,w=0;
int comp,size[4];
srand((unsigned int)time(NULL));
while(i!=4)
A:comp=rand()%(9-1+1)+1;
*(size+i)=comp;
for(k=0;k<i;k++)
if(*(size+i)==*(size+k)||*(size+i)==0)
goto A;
w=w*10+comp;
i++;
Compare_record(size);
(1)编译的过程和反编译的过程是相反的。
编译的过程一般是高级语言(如C语言)——》中间语言(只出现在编译过程中)——》汇编语言——》可执行的二进制代码
反编译就是从可执行的二进制代码开始,反着来。二进制代码反编译后一般也就是到汇编而已,通常情况下很难进一步往回反。
(2)分析一下几种语言的情况
①VC的程序
VC的程序反编译到汇编代码没有问题
②Java的程序
对于.class文件可以反编译到.java,也没有问题
③.net的程序
.net中的dll文件可以反编译到VB.net或者C#,也没有问题
反编译中用到的具体软件没有给出,可以比较容易地从网上搜索到。 参考技术B 邮箱、、、、、、 贴出来麻烦 直接给文本你、、、、、追问
tuzixihuandeluobo@163.com
本回答被提问者采纳以上是关于帮忙纠错一个c语言代码的主要内容,如果未能解决你的问题,请参考以下文章
C语言打印图中两点之间的所有路径,不是最短路径!!!谢谢高手麻烦帮忙 代码要实现哈!