C语言编程:处理偶数位数字并读写文件

需积分: 1 0 下载量 134 浏览量 更新于2024-07-26 收藏 1.49MB DOC 举报
"C语言编程题目解析" 在C语言编程中,常常会遇到处理数值和字符串的题目,这两道题目正是这种类型的典型示例。 第一道题目涉及到处理整数的每一位,特别是检查它们是否为偶数。函数`fun`的目标是构建一个新的数,其中只包含原数中奇数位的数字。在分析程序时,我们可以看到: 1. `t=*n%__1__;` 这一行是计算当前数(`*n`)除以10的余数,以获取个位数。因此,此处应填写10,因为 `%` 是求余运算符,用于找出一个数除以另一个数后的余数。 2. `if(t%2!=__2__)` 这是一个条件语句,用来判断取出的个位数是否为奇数。如果`t`对2求余不等于0,则`t`是个奇数。因此,这里应填写0,使得条件为 `if(t%2!=0)`。 3. `*n=__3__;` 这一行是更新原始变量`n`的值,使其成为新构建的数。由于我们已经构建了新的数`x`,此处应将`*n`设置为`x`,以便通过指针返回新数。 完整的`fun`函数应该是这样的: ```c void fun(unsigned long *n) { unsigned long x = 0, i; int t; i = 1; while (*n) { t = *n % 10; if (t % 2 != 0) { x = x + t * i; i = i * 10; } *n = *n / 10; } *n = x; } ``` 第二道题目涉及文件操作,包括写入数据到文件和从文件读取数据。函数`fun`负责执行这个任务,具体步骤如下: 1. `__1__ fp; FILE *` 这一行是用来声明一个文件指针`fp`,它将用于打开和关闭文件。因此,这里应该填写`FILE *`,即`FILE *fp;`。 2. `fp=fopen("file1.txt","w");` 这行代码是打开名为`file1.txt`的文件,`"w"`表示写入模式。文件指针`fp`被赋值为打开的文件句柄。 3. `fprintf(fp,"%s%d%f\n",s,a,f);` 使用`fprintf`函数将字符串`s`、整数`a`和浮点数`f`写入文件。 4. `fp=fopen("file1.txt","r");` 这行代码再次打开`file1.txt`,但这次是以`"r"`模式,即读取模式。 5. `while((ch=getc(fp))!=EOF)` 循环读取文件中的每个字符,直到遇到文件结束符`EOF`。 6. `putchar(ch);` 将读取到的字符输出到屏幕。 7. `fclose(fp);` 最后,关闭文件。 完成的`fun`函数应当如下所示: ```c void fun(char *s, int a, double f) { FILE *fp; char ch; fp = fopen("file1.txt", "w"); fprintf(fp, "%s%d%f\n", s, a, f); fclose(fp); fp = fopen("file1.txt", "r"); while ((ch = getc(fp)) != EOF) { putchar(ch); } fclose(fp); } ``` 这两道题目分别展示了C语言中处理数值位的逻辑和文件操作的基本技巧,是学习C语言时经常会遇到的练习类型。通过解决这些问题,可以提升对C语言基本概念的理解和实践能力。