奇偶校验码程序代码

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:04:02
为什么TC和VC运行结果不一样啊
原题:
奇偶校验的实现方法是:由若干有效信息位,再加上一个校验位组成校验码。校验位的取值( 0 或 1 )将使整个校验码中 1 的个数为奇数或偶数,所以有两种可供选择的校验规律:
奇校验——整个校验码(有效信息位一和个校验位)中 1 的个数为奇数
偶校验——整个校验码(有效信息位一和个校验位)中 1 的个数为偶数
交叉校验可以纠正一位错误,发现两位同时错误的情况,假设第二字节的a6,a4两位均出错,第二字节的横向校验位无法检查出错误,但第a6,a4位所在位第纵向校验位均会显示出错。
你的任务是,对于输入的交叉奇偶校验码,计算至少有几位出错。
输入
第一行为两个数字 m n ( 2 <= m , n <=100 ),分别是校验码的行数和列数
之后是 m 行,每行由 n 个 0 1 组成
横纵均为偶校验
输出
最少出错的位数
测试用例:
7 13
1 1 1 1 0 0 1 0 1 0 1 0 1
1 0 1 0 1 1 0 0 1 1 1 0 1
0 0 1 1 1 0 0 1 1 1 0 1 1
1 1 1 0 0 0 0 1 1 0 0 0 1
1 0 1 0 0 1 1 0 0 0 1 0 1
0 0 0 0 1 1 1 1 0 1 1 0 0
0 0 1 0 1 1 1 1 0 1 0 1 1
结果是0
但VC过不了啊 高手这题该怎么写啊
我们学校的编译系统就上面的那个测试用例我的程序结果是6但TC下是0啊

运行结果一样阿
你是输入的数是什么,让我试一下的看是不一样
不过我觉得这不像是奇偶校验
你这里是输入的都是0,1是吧
之后再分别算行中有奇数个1的行数e
有奇数个1的列的总数f
再输出两个数中较大的一个数作为结果
这叫奇偶校验吗?

程序好像没有问题,我想问一下VC是怎么过不了
我没VC,解决不了

where is the code?

#include<stdio.h>
main()
{
int i,j,count=0,e=0,f=0,g,m,n;
char a[100][100];
scanf("%d %d",&n,&m);
getchar();//用来消除回车
for(i=0;i<n;i++){
scanf("%s",a[i]);
a[i][m]='\0';
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(a[i][j]=='1')count++;
}
if(count%2==1)e++;
count=0;
}
for(j=0;j<m;j++){
for(i=0;i<n;i++){
if(a[i][j]=='1')count++;
}
if(count%2==1)f++;
count=0;
}
g=e>f?e:f;
printf("e=%d f=%d g=%d",e,f,g); //不知你的程序是要判断什么奇偶
//如果行有奇数个'1',则e++;
//如果列有奇数个'1',则f++;