25.已知a1 <= a2、a2 <= a3、a3 <= a4、a[i]%2 == 0这4个条件同时成立,则a[i]就是要求下列程序的功能是:在三位整数(100~999)中寻找符合条件的整数并依次从小到大存入数组中;该整数既是完全平方数,又有两个数字相同,例如144、676等。请编写函数SearchVal()实现此功能,满足该条件的整数的个数通过所编写的函数返回。最后调用函数WData(),把结果输出到文件OUT.dat中。
注意:部分源程序已给出。请勿改动主函数main()和写函数WData()的内容。
【答案】
searchVal(int bb[])
{ int i, a, b, c, cnt = 0;
for (i=10; i*i<1000; i++)
{ a = i*i/100;
b = i*i/10%10;
c = i*i%10;
if (a==b || b==c || c==a)
bb[cnt++] = i*i;
}
return cnt;
}
26.已知数据文件IN.dat中存有300个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于0的数的个数count,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。最后调用写函数WData(),把结果输出到OUT.dat文件中。
例如,9123,9-1-2-3>0,则该数满足条件存入数组b中,且个数count=count+1。9812,9-8-1-2<0,则该数不满足条件,忽略。
程序中已定义数组a[300],b[300];已定义变量count。
【答案】
void jsValue()
{ int i, thou, hun, ten, data, j;
for (i=0; i<300; i++)
{ thou = a[i]/1000;
hun = a[i]%1000/100;
ten = a[i]%100/10;
data = a[i]%10;
if (thou-hun-ten-data > 0)
{ b[count] = a[i];
count++;
}
}
for (i=0; i for (j=i+1; j if (b[i] > b[j]) { data = b[i]; b[i] = b[j]; b[j] = data; } } 27函数Rdata()实现从文件IN.dat中读取一篇英文文章存入到字符串数组string中,请编写函数CharLeft(),其功能是:以行为单位把字符串中所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组string中,最后调用函数Wdata(),把结果string输出到文件OUT.dat中。 原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。 【答案】 void CharLeft(void) { int i, j, str; char ch; for (i=0; i { str = strlen(string[i]); for (j=0; j { ch = string[i][j]<<4; if (ch>32 && ch<=100) string[i][j] += ch; } } }