寒假作业Day 07
一、选择题
函数rewind的作用是使文件位置指针重新返回文件的开始位置。这是C语言程序中的库函数,它针对的是文件内部的位置指针,而不是文件指针。文件内部的位置指针会随着对文件的读写操作而向后移动,而文件指针则是指向整个文件,如果不重新赋值,文件指针不会改变。通过调用rewind函数,可以方便地将文件位置指针重置为文件的开头,从而可以重新读取文件的内容。
所以正确选项为A
对于Windows系统,文件路径使用反斜杠()作为分隔符。然而,在C语言字符串中,反斜杠是一个转义字符,因此如果你想在字符串中表示一个反斜杠,你需要使用两个反斜杠(\)。
因此,正确的文件路径格式应该是:
“c:\user\text.txt”
或者,你可以使用双引号来包围路径,这也是一种常见的做法,尤其是在路径中包含空格或其他特殊字符时:
C: “c:\user\text.txt”
所以,选项B和C都是正确的,但C中的路径使用了双引号,这在某些情况下可能更有帮助。然而,如果路径是硬编码在程序中的,并且不包含空格或特殊字符,那么是否使用双引号通常是可选的。选项A是错误的,因为它使用了错误的路径分隔符(正斜杠/而不是反斜杠\),而选项D虽然正确地使用了两个反斜杠来表示一个反斜杠,但它使用了不必要的双引号。
3、下面的程序执行后,文件 test.txt 中的内容是( )
#include<stdio.h>
void fun (char *fname,char *st)
{FILE *myf;int i;myf = fopen(fname,"w");for (i = 0; i < strlen(st); i++) fputc(st[i], myf);fclose(myf);
}
int main()
{fun("test.txt","new world");fun("test.txt","hello,");return 0;
}
*这题的运用对于文件指针需要较为熟练的掌握
函数 fun
fun 函数接受两个字符指针参数:fname 和 st。
fname:是一个字符串,表示要写入的文件名。
st:是另一个字符串,表示要写入文件的内容。
函数的功能如下:
声明一个 FILE 指针 myf,用于操作文件。
使用 fopen 函数以写入模式(“w”)打开名为 fname 的文件,并将返回的文件指针赋给 myf。
使用 for 循环和 fputc 函数将 st 中的每个字符写入文件。这里使用了 strlen(st) 来获取 st 的长度,从而确定循环的次数。
使用 fclose 函数关闭文件。
调用 fun 函数两次:
第一次调用将字符串 “new world” 写入文件 “test.txt”。
第二次调用将字符串 “hello,” 写入文件 “test.txt”。
由于 fun 函数使用写入模式(“w”)打开文件,第二次调用会覆盖第一次写入的内容。因此,最终 “test.txt” 文件的内容将是 “hello,”。
4、函数( )把文件位置重定位到文件中的指定位置
A: fseek B: fread C: fopen D: fgets
函数 fseek 用于把文件位置重定位到文件中的指定位置。它允许你根据文件的起始位置、当前位置或文件的末尾来移动文件的位置指针。
fread 用于从文件中读取数据,fopen 用于打开文件,而 fgets 用于从文件中读取一行文本。这些函数并不直接用于重定位文件位置指针。
5、若调用 fputc 函数输出字符成功,则其返回值是( )
A: EOF B: 1 C: 0 D: 输出的字符
fputc 函数用于将一个字符写入文件。如果写入操作成功,fputc 的返回值是写入的字符。如果发生错误,它会返回 EOF(End Of File),这是一个特殊的值,通常在大多数系统中被定义为 -1。
二、编程题
int trailingZeroes(int n) { int count = 0; while (n) { n /= 5; count += n; } return count;
}
为了准确地计算 n 阶乘的尾随零的数量,你可以使用以下的方法:
尾随零的数量是由阶乘中因子 10 的数量决定的。
因子 10 是由 2 和 5 相乘得到的。
在 n 阶乘中,因子 2 的数量总是比因子 5 的数量多,因此尾随零的数量由因子 5 的数量决定。
因子 5 可以直接来自数字 5,或者来自 25(有两个 5),或者来自 125(有三个 5),以此类推。
这个函数的工作原理是:每次将 n 除以 5,这样我们就可以计算出 n 中包含多少个 5 的因子(包括那些隐藏在像 25、125 这样的数字中的 5)。然后我们将得到的商加到计数中,因为每个这样的商都会再贡献一个 5 的因子。
#include <stdio.h>int main() {float n;float ret;scanf("%f",&n);int num=(int)n;ret=n-num;if(ret>=0.5){printf("%d",num+1);}else{printf("%d",num);}
}
这里我们的准则是四舍五入,所以我们用num来记录n的整数部分,而用ret记录n的小数部分,并利用四舍五入这个规则进行判断