填空題
給定程序中,函數(shù)fun的功能是:將自然數(shù)1~10以及它們的平方根寫到名為myfile3.txt的文本文件中,然后再順序讀出顯示在屏幕上。
請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#include
int fun(char *fname )
{ FILE *fp; int i,n; float x;
if((fp=fopen(fname, "w"))==NULL) return 0;
for(i=1;i<=10;i++)
fprintf(___1___,"%d %f\n",i,sqrt((double)i));
printf("\nSucceed!!\n");
___2___;
printf("\nThe data in file :\n");
if((fp=fopen(___3___,"r"))==NULL)
return 0;
fscanf(fp,"%d%f",&n,&x);
while(!feof(fp))
{ printf("%d %f\n",n,x); fscanf(fp,"%d%f",&n,&x); }
fclose(fp);
return 1;
}
main()
{ char fname[]="myfile3.txt";
fun(fname);
}
解題思路:
本題要求所求出的數(shù)寫入到指定的文件中保存。程序中共有三處要填上適當?shù)膬?nèi)容,使程序能運行出正確的結(jié)果。
第一處:int fprintf(FILE *stream, const char *format [,argument, …]); 因此本處只能填寫文件流的變量fp。
第二處:由于文件打開寫操作,所以必須要關(guān)閉,因此,只能填寫關(guān)閉文件的函數(shù)fclose(fp)。
第三處:由于本題要把剛寫入文件中的數(shù)據(jù)重新顯示出來,讀方式已經(jīng)給出,但沒有給出
文件名,所以本處只能寫文件名變量fname或者直接給出文件名"myfile3.dat"。
改錯題
給定程序MODI1.C中fun函數(shù)的功能是:將n個無序整數(shù)從小到大排序。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#include
fun ( int n, int *a )
{ int i, j, p, t;
for ( j = 0; j
{ p = j;
for ( i=j+1; i
if ( a[p]>a[i] )
t=i;
if ( p!=j )
{ t = a[j]; a[j] = a[p]; a[p] = t; }
}
}
putarr( int n, int *z )
{ int i;
for ( i = 1; i <= n; i++, z++ )
{ printf( "%4d", *z );
if ( !( i%10 ) ) printf( "\n" );
} printf("\n");
}
main()
{ int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;
printf( "\n\nBefore sorting %d numbers:\n", n ); putarr( n, aa );
fun( n, aa );
printf( "\nAfter sorting %d numbers:\n", n ); putarr( n, aa );
}
解題思路:
第一處:for循環(huán)的終止值應(yīng)該
第二處:使用臨時變量p來保存最小值位置i,所以應(yīng)改為:p=i;。
編程題
函數(shù)fun的功能是: 將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。 合并的方式是: 將a數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位上, b數(shù)的十位 和個位數(shù)依次放在c數(shù)的十位和千位上。
例如, 當a=45, b=12時, 調(diào)用該函數(shù)后, c=2514。
注意: 部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。
請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
給定源程序:
#include
void fun(int a, int b, long *c)
{
}
main()
{ int a,b; long c;
printf("Input a, b:");
scanf("%d,%d", &a, &b);
fun(a, b, &c);
printf("The result is: %ld\n", c);
NONO();
}
解題思路:
本題是給出兩個兩位數(shù)的正整數(shù)分別取出各位上的數(shù)字,再按條件組成一個新數(shù)。
取a十位數(shù)字的方法:a/10
取a個位數(shù)字的方法:a%10
參考答案:
void fun(int a, int b, long *c)
{
*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);
}
給定程序中,函數(shù)fun的功能是:將自然數(shù)1~10以及它們的平方根寫到名為myfile3.txt的文本文件中,然后再順序讀出顯示在屏幕上。
請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#include
int fun(char *fname )
{ FILE *fp; int i,n; float x;
if((fp=fopen(fname, "w"))==NULL) return 0;
for(i=1;i<=10;i++)
fprintf(___1___,"%d %f\n",i,sqrt((double)i));
printf("\nSucceed!!\n");
___2___;
printf("\nThe data in file :\n");
if((fp=fopen(___3___,"r"))==NULL)
return 0;
fscanf(fp,"%d%f",&n,&x);
while(!feof(fp))
{ printf("%d %f\n",n,x); fscanf(fp,"%d%f",&n,&x); }
fclose(fp);
return 1;
}
main()
{ char fname[]="myfile3.txt";
fun(fname);
}
解題思路:
本題要求所求出的數(shù)寫入到指定的文件中保存。程序中共有三處要填上適當?shù)膬?nèi)容,使程序能運行出正確的結(jié)果。
第一處:int fprintf(FILE *stream, const char *format [,argument, …]); 因此本處只能填寫文件流的變量fp。
第二處:由于文件打開寫操作,所以必須要關(guān)閉,因此,只能填寫關(guān)閉文件的函數(shù)fclose(fp)。
第三處:由于本題要把剛寫入文件中的數(shù)據(jù)重新顯示出來,讀方式已經(jīng)給出,但沒有給出
文件名,所以本處只能寫文件名變量fname或者直接給出文件名"myfile3.dat"。
改錯題
給定程序MODI1.C中fun函數(shù)的功能是:將n個無序整數(shù)從小到大排序。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#include
fun ( int n, int *a )
{ int i, j, p, t;
for ( j = 0; j
{ p = j;
for ( i=j+1; i
if ( a[p]>a[i] )
t=i;
if ( p!=j )
{ t = a[j]; a[j] = a[p]; a[p] = t; }
}
}
putarr( int n, int *z )
{ int i;
for ( i = 1; i <= n; i++, z++ )
{ printf( "%4d", *z );
if ( !( i%10 ) ) printf( "\n" );
} printf("\n");
}
main()
{ int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;
printf( "\n\nBefore sorting %d numbers:\n", n ); putarr( n, aa );
fun( n, aa );
printf( "\nAfter sorting %d numbers:\n", n ); putarr( n, aa );
}
解題思路:
第一處:for循環(huán)的終止值應(yīng)該
第二處:使用臨時變量p來保存最小值位置i,所以應(yīng)改為:p=i;。
編程題
函數(shù)fun的功能是: 將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。 合并的方式是: 將a數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位上, b數(shù)的十位 和個位數(shù)依次放在c數(shù)的十位和千位上。
例如, 當a=45, b=12時, 調(diào)用該函數(shù)后, c=2514。
注意: 部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。
請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
給定源程序:
#include
void fun(int a, int b, long *c)
{
}
main()
{ int a,b; long c;
printf("Input a, b:");
scanf("%d,%d", &a, &b);
fun(a, b, &c);
printf("The result is: %ld\n", c);
NONO();
}
解題思路:
本題是給出兩個兩位數(shù)的正整數(shù)分別取出各位上的數(shù)字,再按條件組成一個新數(shù)。
取a十位數(shù)字的方法:a/10
取a個位數(shù)字的方法:a%10
參考答案:
void fun(int a, int b, long *c)
{
*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);
}