该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
难的话可以学。
但是如何着手?
先把符号意思弄懂?那么多符号很容易混淆?
但有的符号不能用数学解释.
例如:
a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的
他想表达的是什么意思,c 当然可以等于a,为什么c=a 后 a=b 了呢?当然a=b 成立之后 那么后面的 b=c 自然就成立了,3怎么可能等于5?费解,上段到底想表达什么意思?
还有道例题:
已知在文件IN.dat中存有若干个(少于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组number中。请编写函数CalValue(),其功能要求是:①求出文件中共有的正整数个数totNum;②求这些数右移1位后,产生的新数是奇数的数的个数totCnt以及满足此条件的这些数(右移前的值)的算术平均值totAve。最后调用函数writeDat()把所求的结果输出到OUT.dat文件中。
注意:部分源程序已经给出。请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include
#include
#define MAXNUM 200
int number[MAXNUM];
int totNum = 0;/* 文件IN.dat中共有的正整数个数 */
int totCnt = 0;/* 符合条件的正整数的个数 */
double totAve = 0.0;/* 平均值 */
int ReadDat(void);
void writeDat(void);
void CalValue(void)
{
}
void main()
{int i;
for (i=0; i
number[i] = 0;
if (ReadDat())
{printf("数据文件IN.dat不能打开!\007\n");
return;
}
CalValue();
printf("文件IN.dat中共有的正整数个数=%d个\n", totNum);
printf("符合条件的正整数的个数=%d个\n", totCnt);
printf("平均值=%.2f\n", totAve);
writeDat();
}
int ReadDat(void)
{FILE *fp;
int i = 0;
if ((fp = fopen("IN.dat", "r")) == NULL)
return 1;
while (!feof(fp))
fscanf(fp, "%d,", &number[i++]);
fclose(fp);
return 0;
}
void writeDat(void)
{FILE *fp;
fp = fopen("OUT.dat", "w");
fprintf(fp, "%d\n%d\n%6.2f\n", totNum, totCnt, totAve);
fclose(fp);
}
哪个高人请赐解,不胜感激。