帮我看一下这个C程序哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:37:20
第一行为标准答案(编码)
第二行为学生人数
第三以下行为学生答案(编码)
编码内容:
十进制数0-9
翻译为二进制数,二进制数中,一为选的答案,0为不选的;
A-F:
表示十进制数10-15;
翻译同上;
每题5分;
共5题;
全对得5分;
有选项没选,但正确选项有一个以上得2分;
选了标准答案中没选的答案不得分;
输出所有学生的分数
#include<stdio.h>
char str1[10],str2[10];
int rs;
int mrdf(int a)
{
int i,grade,j;
for(j=1;j<=rs;j++)
{
grade=0;
for(i=0;i<=4;i++)
grade+=calc(str1[i],str2[i]);
printf("%d",grade);
}
return 0;
}
int change(char a)
{
if(a>='0'&&a<='9') return a-'0';
return a-55;
}
int calc(char a,char b)
{
int d1,d2;
if(a==b) return 5;
if(b=='0') return 0;
d1=change(a);
d2=change(b);
if(d1&d2==d2) return 2;
return 0;
}
int main()
{
freopen("多选题.in","r",stdin);
freopen("多选题.out&quo

你把函数定义顺序改一下就行了,后面的没定义呢就在前面用了。
或者在前面统一函数声明一下。
还有你的rs str1 str2都没有定义,而且输入格式错了,改正后的程序如下
#include<stdio.h>
#include<string.h>
char str1[10],str2[10];
int rs;
int change(char a)
{
if(a>='0'&&a<='9') return a-'0';
return a-55;
}
int calc(char a,char b)
{
int d1,d2;
if(a==b) return 5;
if(b=='0') return 0;
d1=change(a);
d2=change(b);
if(d1&d2==d2) return 2;
return 0;
}
int mrdf(int a)
{
int i,grade,j;
for(j=1;j<=rs;j++)
{
grade=0;
for(i=0;i<=4;i++)
grade+=calc(str1[i],str2[i]);
printf("%d",grade);
}
return 0;
}
int main()
{
int rs;
string str1,str2;
freopen("多选题.in","r",stdin);
freopen("多选题.out","w",stdout);
scanf("%d",&rs);
scanf("%