主题:大家来看看我这个程序为什么会崩溃
输入:
输入分为两部分,第一部分建立数据库,第二部分进行询问。数据库的格式为,第一行为数据库大小N,接下来的N行为具体的数据,每行一个数据。数据库的建立由连续3个“#”标识结束。询问的格式,第一行为询问的次数K,接下来的K行为“询问的是第几个数字”。
输出:
从小到大,按值排序的第X个数字。
 测试样例:
样例输入
5
7
121
123
7
121
###
4
3
3
2
5
样例输出
121
121
7
123
程序如下
#include<stdio.h>
#include<string.h>
FILE *fp_in=NULL;
FILE *fp_out=NULL;
int init()/*分别以读、写方式打开文件bonus_in,bonus_out*/
{
fp_in=fopen("bonus_in.txt","r");
if(fp_in==NULL)
{
return -1;
}
fp_out=fopen("bonus_out.txt","w");
if(fp_out==NULL)
{
return -1;
}
}
void destroy()/*关闭输入输出文件*/
{
fclose(fp_in);
fclose(fp_out);
}
int main()
{
int i,j,k,t,M,N,a[100],b[100];//定义数据库大小N,访问次数M
char *str="###",*s;
init();
fscanf(fp_in,"%d",&N);
for(i=0;i<N;i++)
fscanf(fp_in,"%d",&a[i]);
for(j=0;j<N;j++)
for(i=0;i<N-j;i++)
if(a[i]>=a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
fscanf(fp_in,"%s",s);
if(strcmp(str,s)==0)
{
fscanf(fp_in,"%d",&M);
for(k=0;k<M;k++)
fscanf(fp_in,"%d",b[k]);
}
for(i=0;i<M;i++)
fprintf(fp_out,"%d",a[b[k]-1]);
destroy();
}
输入分为两部分,第一部分建立数据库,第二部分进行询问。数据库的格式为,第一行为数据库大小N,接下来的N行为具体的数据,每行一个数据。数据库的建立由连续3个“#”标识结束。询问的格式,第一行为询问的次数K,接下来的K行为“询问的是第几个数字”。
输出:
从小到大,按值排序的第X个数字。
 测试样例:
样例输入
5
7
121
123
7
121
###
4
3
3
2
5
样例输出
121
121
7
123
程序如下
#include<stdio.h>
#include<string.h>
FILE *fp_in=NULL;
FILE *fp_out=NULL;
int init()/*分别以读、写方式打开文件bonus_in,bonus_out*/
{
fp_in=fopen("bonus_in.txt","r");
if(fp_in==NULL)
{
return -1;
}
fp_out=fopen("bonus_out.txt","w");
if(fp_out==NULL)
{
return -1;
}
}
void destroy()/*关闭输入输出文件*/
{
fclose(fp_in);
fclose(fp_out);
}
int main()
{
int i,j,k,t,M,N,a[100],b[100];//定义数据库大小N,访问次数M
char *str="###",*s;
init();
fscanf(fp_in,"%d",&N);
for(i=0;i<N;i++)
fscanf(fp_in,"%d",&a[i]);
for(j=0;j<N;j++)
for(i=0;i<N-j;i++)
if(a[i]>=a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
fscanf(fp_in,"%s",s);
if(strcmp(str,s)==0)
{
fscanf(fp_in,"%d",&M);
for(k=0;k<M;k++)
fscanf(fp_in,"%d",b[k]);
}
for(i=0;i<M;i++)
fprintf(fp_out,"%d",a[b[k]-1]);
destroy();
}