大学院生の1部の試験問題のいくつかの問題の節選
5483 ワード
まず、友达の大学院受験の成功を祈って、勇往邁進して、私は大学院を受けないので、完全に能力を高めて、使用することを主として、細部を気にしません.友达は私に答案用紙を見せてくれたので、いくつかの問題を切り取った.
c私は本当にその言叶に応えて、入门から放弃まで、文字列がなくて、APIがなくて、良いクラスライブラリがありません...
1.0次の文は、文字列の割り当てを正しく行うことができます(D)
c言語には文字列タイプがなく、配列、またはポインタでしか文字列を実現できません.配列名は文字列の先頭アドレスであり、文字列は2つの形式をコピーします.char *ch="sddf";//針.char ch[]="dfffg";//配列の初期化.
2.0次の関数の機能は()です.
コンパイラはちょっと走って、実は戻り値intによって内容を推測することができます
だからこれ、何もしてないみたい
3.0 char*aa="123456"を定義します.文printf("%c"、*aa++);その後、正しい出力は次のとおりです.
printf("%c",*aa++); *の優先度は++より高いので、配列aaのヘッダ要素です(配列名はヘッダ要素アドレスです).
コンパイラに走ってもらうと、このような問題が好きではないことがわかります.優先度を試験したり、printf関数の知識点を試験したりします.
4.0 2つのディスクファイルAとBがあり、それぞれ1行のアルファベットを格納し、c言語ツールを使用してこの2つのファイルの情報を統合(アルファベット順に並べ替え)し、新しいファイルCに出力する必要がある.
構想は2つのファイルの文字列を読み取って、それらを文字の配列の中に入れて、並べ替えて、ファイルに書きます
テーマの構想は難しくありませんが、細部が多すぎて、私はcが入門してから放棄するまで、cの中の多くの関数に対して熟知していないで、cのファイルの操作に対してもあまり熟知していないで、資料を調べながら、書きます.その中で主なFILEのポインタは、移動します.関連操作を行うときは、必ずrewind()関数を使って、ファイルの位置ポインタを先頭に戻す必要があります.私はここで多くの時間を費やしました.ステルスですが、一歩一歩テストすれば、問題がここにあることに気づきます.
結果:
c私は入門から放棄まで、結局それを使います.
関連知識点
FILEはファイル構造体であり、ファイルポインタを定義してファイルの操作を実現します.
fopen関数はファイルフォーマットfopen(ファイル名、ファイル使用方法)を開きます.エラーが発生した場合、fopen関数はNULLに戻ります.
fclose(ファイルポインタ)ファイルは閉じます.ファイルを読み書きした後、閉じなければなりません.
fputc(char ch,FILE*fp)、chは出力する文字であり、1つの文字ファイルをディスクファイルfpに出力する役割を果たし、出力に失敗した場合はファイル終了子EOF(値は-1)に戻る.
fgetc(fp);指定したファイルから文字を読み込み、ファイルの終端に遭遇した場合はEOFを返します(値は-1).
バイナリファイルを処理する場合、1バイトのバイナリデータが-1である可能性がある場合、これはEOFの値であり、このバグを解決するためにfeof(FILE*fp)で解決され、ファイルの最後のfeof(fp)値が0である場合に遭遇する.
int fseek(FILE *stream, long offset, int whence); fseekは現在の読み書きポイントをoffsetに設定し、whenceはSEEK_SET,SEEK_CUR,SEEK_ENDこれらの値は、ファイルヘッダ、現在のポイント、およびファイルの最後からオフセットoffsetを計算することを決定する.ファイルポインタFILE*fpを定義できます.ファイルを開くと、ファイルポインタが先頭を指します.オフセット量を制御すればいいです.たとえば、現在の位置に対して1バイト後ろに移動します.fseek(fp,1,SEEK_CUR);中間の値がオフセット量です.1バイト前に移動する場合は、直接負の値に変更すればいいです.fseek(fp,-1,SEEK_CUR).
喉が炎症を起こして、まだよくなくて、17年は本当に順調ではありませんて、すべてがすべてよくなることを望みます.
本文参考:C言語における文字列付与処理方式C++抽象クラスファイル操作は、2つのバイナリファイルを1つのバイナリファイルにマージする.Cファイル読み書きC言語で2つのファイルのマージを実現
c私は本当にその言叶に応えて、入门から放弃まで、文字列がなくて、APIがなくて、良いクラスライブラリがありません...
1.0次の文は、文字列の割り当てを正しく行うことができます(D)
A char *s = "good"; *s = "good"; B char s1[10]; s1 = "good";
C char s3[10]; *s3 = "good"; D char *s = "good";
c言語には文字列タイプがなく、配列、またはポインタでしか文字列を実現できません.配列名は文字列の先頭アドレスであり、文字列は2つの形式をコピーします.char *ch="sddf";//針.char ch[]="dfffg";//配列の初期化.
2.0次の関数の機能は()です.
int f(char *a, char *b)
{
while (*a++ == *b++)
{
}
return 0;
}
コンパイラはちょっと走って、実は戻り値intによって内容を推測することができます
#include
int f(char *, char *b);
int main()
{
char *p1="abc", *p2 = "def";
int num1=f(p1, p2);
int num2 = f(p2, p1);
printf("%s
", p2);
printf("num1=%d
", num1);
printf("num2=%d
", num2);
return 0;
}
int f(char *a, char *b)
{
while (*a++ == *b++)
{
}
return 0;
}
def
num1=0
num2=0
. . .
だからこれ、何もしてないみたい
3.0 char*aa="123456"を定義します.文printf("%c"、*aa++);その後、正しい出力は次のとおりです.
printf("%c",*aa++); *の優先度は++より高いので、配列aaのヘッダ要素です(配列名はヘッダ要素アドレスです).
#include
int main() {
char *aa="123456";
printf("%c
",*aa++);
return 0;
}
コンパイラに走ってもらうと、このような問題が好きではないことがわかります.優先度を試験したり、printf関数の知識点を試験したりします.
D:\untitled2\cmake-build-debug\untitled2.exe
1
Process finished with exit code 0
4.0 2つのディスクファイルAとBがあり、それぞれ1行のアルファベットを格納し、c言語ツールを使用してこの2つのファイルの情報を統合(アルファベット順に並べ替え)し、新しいファイルCに出力する必要がある.
構想は2つのファイルの文字列を読み取って、それらを文字の配列の中に入れて、並べ替えて、ファイルに書きます
テーマの構想は難しくありませんが、細部が多すぎて、私はcが入門してから放棄するまで、cの中の多くの関数に対して熟知していないで、cのファイルの操作に対してもあまり熟知していないで、資料を調べながら、書きます.その中で主なFILEのポインタは、移動します.関連操作を行うときは、必ずrewind()関数を使って、ファイルの位置ポインタを先頭に戻す必要があります.私はここで多くの時間を費やしました.ステルスですが、一歩一歩テストすれば、問題がここにあることに気づきます.
#include
#include
#include
int longFife(FILE *fp);
void sort(char ch[] ,int n);
void arry(FILE *fp1,FILE *fp2,char *ch);
void display(FILE *fp);
void pr(char *ch ,int n);
void sort(char *ch ,int n);
int main() {
FILE *fp,*fp1,*fp2;
int len;
char *p;
if((fp1=fopen("d:\\a.txt","r+"))==NULL)
{
printf("open file a error");
exit(0);
}
if((fp2=fopen("d:\\b.txt","r+"))==NULL)
{
printf("open file b error");
exit(0);
}
len=longFife(fp1)+longFife(fp2);
printf("file1:");
rewind(fp1);
display(fp1);
printf("
");
printf("file2:");
rewind(fp2);
display(fp2);
printf("
");
printf("the arry length=%d
",len);
p=(char *)malloc(sizeof(char)*(len+1));
if(p!=NULL)
printf("malloc arry is succeed
");
arry(fp1,fp2,p);
printf("
");
printf("before sort array:p=%s",p);
printf("
");
if((fp=fopen("d:\\d.txt","w+"))==NULL)
{
printf("open file c error");
exit(0);
}
sort(p,len);
printf("after sort arry:p=%s",p);
printf("
");
if(fputs(p,fp)!=EOF)
printf("write file is succeed");
printf("read this file:");
rewind(fp);
display(fp);
free(p);
fclose(fp1);
fclose(fp2);
fflush(fp);
fclose(fp);
free(p);
return 0;
}
void arry(FILE *fp1,FILE *fp2,char *ch)
{
rewind(fp1);
rewind(fp2);
int n1=longFife(fp1);
int n2=longFife(fp2)+n1;
int i,j;
rewind(fp1);
for(i=0; i
結果:
D:\Clion\cmake-build-debug\Clion.exe
file1:awouyt
file2:rrtyyopmn
the arry length=15
malloc arry is succeed
char array is succeed
before sort array:p=awouytrrtyyopmn
after sort arry:p=amnooprrttuwyyy
write file is succeedread this file:amnooprrttuwyyy
Process finished with exit code 0
c私は入門から放棄まで、結局それを使います.
関連知識点
FILEはファイル構造体であり、ファイルポインタを定義してファイルの操作を実現します.
fopen関数はファイルフォーマットfopen(ファイル名、ファイル使用方法)を開きます.エラーが発生した場合、fopen関数はNULLに戻ります.
fclose(ファイルポインタ)ファイルは閉じます.ファイルを読み書きした後、閉じなければなりません.
fputc(char ch,FILE*fp)、chは出力する文字であり、1つの文字ファイルをディスクファイルfpに出力する役割を果たし、出力に失敗した場合はファイル終了子EOF(値は-1)に戻る.
fgetc(fp);指定したファイルから文字を読み込み、ファイルの終端に遭遇した場合はEOFを返します(値は-1).
バイナリファイルを処理する場合、1バイトのバイナリデータが-1である可能性がある場合、これはEOFの値であり、このバグを解決するためにfeof(FILE*fp)で解決され、ファイルの最後のfeof(fp)値が0である場合に遭遇する.
int fseek(FILE *stream, long offset, int whence); fseekは現在の読み書きポイントをoffsetに設定し、whenceはSEEK_SET,SEEK_CUR,SEEK_ENDこれらの値は、ファイルヘッダ、現在のポイント、およびファイルの最後からオフセットoffsetを計算することを決定する.ファイルポインタFILE*fpを定義できます.ファイルを開くと、ファイルポインタが先頭を指します.オフセット量を制御すればいいです.たとえば、現在の位置に対して1バイト後ろに移動します.fseek(fp,1,SEEK_CUR);中間の値がオフセット量です.1バイト前に移動する場合は、直接負の値に変更すればいいです.fseek(fp,-1,SEEK_CUR).
喉が炎症を起こして、まだよくなくて、17年は本当に順調ではありませんて、すべてがすべてよくなることを望みます.
本文参考:C言語における文字列付与処理方式C++抽象クラスファイル操作は、2つのバイナリファイルを1つのバイナリファイルにマージする.Cファイル読み書きC言語で2つのファイルのマージを実現