目录
56.编写一个采用递归方式实现对输入的一个以“.”结束的字符串,进行反序输出。
56.编写一个采用递归方式实现对输入的一个以“.”结束的字符串,进行反序输出。
#include<iostream>
using namespace std;
void MyStr(){
char a;
cin>>a;
if(a != '.'){
MyStr();
}
if(a != '.'){
cout<<a;
}
}
int main(){
while(1){
MyStr();
cout<<endl;}
return 0;
}
57.n 个人的编号是 1~n,如果他们依编号按顺时针排成一个圆圈,从编号是1的人开始顺时针报数。
(报数是从1报起)当报到 k 的时候,这个人就退出游戏圈。下一个人重新从1开始报数。
求最后剩下的人的编号。这就是著名的约瑟夫环问题。本题目就是已知 n,k 的情况下,求最后剩下的人的编号。
#include <stdio.h>
int f(int n, int m)
{
if (n == 1)
return 1;
else
return (f(n - 1, m) + m-1) % n+1;
//加1是指该轮死掉猴子的下一只,即存活的那只
//()%n是指计算死掉的那只
}
int main()
{
int n, m;
scanf("%d %d",&n,&m);
printf("%d",f(n,m));
return 0;
}
58.用fgetc函数从键盘中逐个输入字符,然后用fpuyc函数写入到磁盘文件即可。
#include<bits/stdc++.h>
using namespace std;
int main(){
FILE*fp;
char ch;
char fname[20];
printf("文件名:");
cin>>fname;
if((fp=fopen(fname,"w"))==NULL){
printf("w");
exit(0);
}
ch=getchar();
printf("输入第一个存入");
ch=getchar();
while(ch!='#'){
fputc(ch,fp);
putchar(ch);
ch=getchar();
}
fclose(fp);
putchar(10);
return 0;
}
59.将磁盘中的文件中的信息复制到另一个磁盘文件中去。
#include<bits/stdc++.h>
using namespace std;
int main(){
FILE*in,*out;
char ch,infile[10],outfile[10];
cin>>infile;
cin>>outfile;
if((in=fopen(infile,"r"))==NULL){
cout<<"无法打开";
exit(0);
}
if((out=fopen(outfile,"w"))==NULL){
cout<<"无法打开";
exit(0);
}
while(!feof(in)){
ch=fgetc(in);
fputc(ch,out);
putchar(ch);
}
fclose(out);
fclose(in);
return 0;
}
60.从键盘中读入若干字符串,对他们按字母大小的顺序排序,然后把排列好的字符串送到磁盘文件中保存。
61.从文件中读入一个字符串。
#include<bits/stdc++.h>
using namespace std;
int main(){
FILE *fp;
char str[3][10];
char a[5];
int i=0;
if((fp=fopen("file1.dat","r"))==NULL)
{
cout<<"error";
}
while(fgets(str[i],10,fp)!=NULL){
cout<<str[i];
i++;
}
fclose(fp);
return 0;
}