字符串左移一位并输出结果到OUT.dat文件【数据库上机100题.doc】

5星 · 超过95%的资源 需积分: 9 33 下载量 93 浏览量 更新于2024-04-09 2 收藏 856KB DOC 举报
解题思路: 首先在主函数main()中调用rwdata()函数,从IN.dat文件中读取10组数据(m和k值),然后嵌套调用primenum函数,分别得出array[]数组中紧靠m的k个素数。然后将结果输出到OUT.dat文件中。 在primenum函数中,首先需要判断素数的条件是除了1和它本身之外没有其他因子。因此需要编写一个判断素数的函数is_prime()来判断一个数字是否为素数。然后在primenum函数中,根据输入的m和k值,依次判断每一个数字是不是素数,如果是素数则将其存入array[]数组中,并在屏幕上显示。最后将结果输出到OUT.dat文件中。 答案: ```c #include <stdio.h> void change(char*s) { int strl = strlen(s); char ch = s[0]; for (int i = 0; i < strl-1; i++) { s[i] = s[i+1]; } s[strl-1] = ch; } void readwriteDAT() { FILE *in, *out; in = fopen("IN.dat", "r"); out = fopen("OUT.dat", "w"); if (in == NULL || out == NULL) { printf("File not found."); return; } char s[100]; for (int i = 0; i < 50; i++) { fscanf(in, "%s", s); change(s); fprintf(out, "%s\n", s); } fclose(in); fclose(out); } int is_prime(int num) { if (num <= 1) { return 0; } for (int i = 2; i <= num/2; i++) { if (num % i == 0) { return 0; } } return 1; } void primenum(int m, int k, int array[]) { int count = 0; int num = 2; while (count < k) { if (is_prime(num)) { if (num > m) { array[count] = num; count++; } } num++; } for (int i = 0; i < k; i++) { printf("%d ", array[i]); } } void rwdata() { FILE *in; in = fopen("IN.dat", "r"); if (in == NULL) { printf("File not found."); return; } int m, k; int array[100]; for (int i = 0; i < 10; i++) { fscanf(in, "%d %d", &m, &k); primenum(m, k, array); } fclose(in); } int main() { rwdata(); readwriteDAT(); return 0; } ``` 以上是完整的解题思路和答案。在主函数main()中先调用rwdata()函数读取IN.dat文件中的数据,并调用primenum函数分别得出array[]数组中紧靠m的k个素数。然后调用readwriteDAT()函数输出结果到OUT.dat文件中。在primenum函数中使用is_prime()函数判断素数,然后存入数组并显示。最终实现了题目要求的功能。