66.从文件中读取一行
文件 runoob.txt 内容:
$ cat runoob.txt
runoob.com
google.com
#include <stdio.h>
#include <stdlib.h> // exit() 函数
int main()
{
char c[1000];
FILE *fptr;
if ((fptr = fopen("runoob.txt", "r")) == NULL)
{
printf("Error! opening file");
// 文件指针返回 NULL 则退出
exit(1);
}
// 读取文本,直到碰到新的一行开始
fscanf(fptr,"%[^\n]", c);
printf("读取内容:\n%s", c);
fclose(fptr);
return 0;
}
67.输出当前文件执行代码
输出当前文件执行代码,__FILE__ 为当前执行的文件常量
#include <stdio.h>
int main() {
FILE *fp;
char c;
fp = fopen(__FILE__,"r");
do {
c = getc(fp);
putchar(c);
}
while(c != EOF);
fclose(fp);
return 0;
}
输出结果:
#include <stdio.h>
int main() {
FILE *fp;
char c;
fp = fopen(__FILE__,"r");
do {
c = getc(fp);
putchar(c);
}
while(c != EOF);
fclose(fp);
return 0;
}
68.约瑟夫生者死者小游戏
30 个人在一条船上,超载,需要 15 人下船。
于是人们排成一队,排队的位置即为他们的编号。
报数,从 1 开始,数到 9 的人下船。
如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?
#include<stdio.h>
int c = 0;
int i = 1;
int j = 0;
int a[30] = { 0 };
int b[30] = { 0 };
int main()
{
while (i<=31)
{
if (i == 31)
{
i = 1;
}
else if (c == 15)
{
break;
}
else
{
if (b[i] != 0)
{
i++;
continue;
}
else
{
j++;
if (j != 9)
{
i++;
continue;
}
else
{
b[i] = 1;
a[i] = j;
j = 0;
printf("第%d号下船了\n", i);
i++;
c++;
}
}
}
}
}
69. 五人分鱼
A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。
日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。
B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。
C、D、E依次醒来,也按同样的方法拿鱼。
问他们台伙至少捕了多少条鱼?以及每个人醒来时见到了多少鱼?
#include <stdio.h>
int main(){
int n,x,j,k,l,m;
for(n=5;;n++){
j=4*(n-1)/5;
k=4*(j-1)/5;
l=4*(k-1)/5;
m=4*(l-1)/5;
if(n%5==1&&j%5==1&&k%5==1&&l%5==1&&m%5==1){
printf("至少合伙捕鱼:%d条\n",n);
printf("分别见到鱼的条数:%d %d %d %d\n",j,k,l,m);
break;
}
}
return 0;
}