C++的菜鸟问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:42:39
#include <stdio.h>
char xx[100][11];
int yy[10];
int ReadDat(void);
void WriteDat(void);
void CountRs(void)
{
int i, count, j;
char *pf;
for (i=0; i<10; i++)
yy[i] = 0;
for (i=0; i<100; i++)
{
pf = xx[i];
count = 0;
while (*pf)
{
if (*pf == '1')
count++;
pf++;
}
if (count <= 5)
for (j=0; j<10; j++)
yy[j] += xx[i][j]-'0';
}
}
void main()
{
int i;
for (i=0; i<10; i++)
yy[i] = 0;
if (ReadDat())
{
printf("选票数据文件IN.DAT不能打开!\n\007");
return;
}
CountRs();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i;
if ((fp = fopen("IN.DAT", "r")) == NULL)
return 1;
for (i=0; i<100; i++)
{
if (fgets(xx[i], 12, fp) == NULL)

您好 xx[i][j]-'0' 这样是为了把字符转化成数
因为xx[i][j]中储存的是数字的ascII码减去一个‘0’(注意这里是字符) 也就是减去了‘0’的ascII 码 从而用这种简单方便的方法 把字符转换成了数字

xx[i][j]这样是为了取字符串中的单个字符

LZ,yy【i】是int类型的数组,而xx【i】【j】是char类型的数组。
yy[j] += xx[i][j]-'0' 是将char类型转为int 类型。。。

举个例子: 比如你 定义了一个char,然后转成int。

如:char a='9',int b;
b=a-'9' 就是这个道理。。。
如:你要知道字母表的大写字母是在字母表第几个,

char a;intb;
cin>>a;
b=a-‘A'+1 就ok了。。。

如1L所说,是根据ARSIC码的,

yy[j] += xx[i][j]-'0' 目的是要将char类型转为int 类型。这里如上所说,用了ASCII码,即把xx[i][j]中的int型数字的ASCII码值减去"0"的ASCII值,就达到转化的目的了