元本を改める

38342 ワード

はいれつ
1.int array[10];文は配列arrayを定義します.ここでarrayのタイプは整数ポインタ(int*).F arrayはint array[0]のアドレスを指すポインタである
2.scanf文の実行時にABCDEを入力し、puts(s)文がABCDE文字列を正しく出力できるようにするプログラムセグメントが_であるとする.
A,char s[5]={“ABCDE”}; puts(s); B,char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’}; puts(s); C,char *s; scanf("%s", s); puts(s); D,char *s; s=“ABCDE”; puts(s); D誤選c,char*sは文字列ではなく%sは使用できません
3、変数の定義が以下の場合、正しい文は()である.int i,j,tab[3][4];A,tab[0]=0;B,tab[][3]=3;C,tab=100;D,for(i=1;i<=3;i+){for(j=1;i<=4;j+){scanf("%d",&a[i][j];}
E,for(i = 0; i < 3; i++){ for(j = 0; j < 4; j++){ printf("%4d", tab[i][j]); } printf(""); } E誤選D,2次元配列行列はいずれも0から始まる
4、以下の説明では、()が正しい.A,int a[5]={1,2,3,4,5};配列aを定義し、配列要素に初期値を付与する.このとき、a[0]は1、a[1]は2、a[2]は3、a[3]は4、a[4]は5である.
B,static int b[10]; 静的配列bが定義され、10個の配列要素の初期値はいずれも0である.
C,int fib[45] = {1, 1}; 配列fibを定義し、配列fibの最初の2つの要素に初期値を割り当て、残りの要素の値は0です.
D,static int week[7] = {1, 2, 3}; 静的配列weekを定義し,配列weekの最初の3要素week[0]〜week[2]に初期値を付与し,week[3]〜week[6]の値はいずれも不確定である.AB c,staticなし,fib後のいくつかの要素の値は不確定である
5、以下の説明では、()が正しい.A,int a[3][3]={1};配列aを定義し、配列aに初期値を付与する.このとき、a[0][0]の値は1であり、残りの要素の値は不確定である.
B,static int b[4][3] = {{ }, { }, { },{9}}; 静的配列bを定義し、配列に初期値を付与する.このとき、b[3][0]の値は9であり、残りの要素の値は0である.
C,int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; とint a[3][3]={{1,2,3},{4,5,6},{7,8,9}}};等価.
D,static int b[4][3] = {{1, 2, 3}, { }, {4, 5}}; とstatic int b[4][3]={1,2,3,0,0,0,4,5};等価.
E,int a[3][3] = {{},{4},{}}; 配列aを定義し、配列aに初期値を付与する.このとき、a[1][1]の値は4であり、残りの要素の値は不確定である.ABCD E,a[1][0]とa[1][2]はともに0
6,選択法ソート:本題では,与えられたn個の整数を小さいものから大きいものにソートして出力することを要求する.出力時に隣接する数字の間を1つのスペースで区切って、行末に余分なスペースがあってはいけません.
#include 
# define MAXN 10

int main()
{
    int i, index, k, n, temp;
    int a[MAXN];

    scanf("%d", &n);
    for(i = 0; i < n; i++){
        scanf("%d", &a[i]);
    }

    for(k = 0; k < n-1; k++){
        index =   ;  
        for
{
            if
{
                index = i;  
            }    
        }  
        

    }

   for(i = 0; i < n; i++) {
        if
{
            printf("%d", a[i]);
        }else{
            printf(" %d", a[i]);
        }
    }
    printf("
"
); return 0; }

答え
#include 
# define MAXN 10
int main()
{
    int i, index, k, n, temp;
    int a[MAXN];
    scanf("%d", &n);
    for(i = 0; i < n; i++){
        scanf("%d", &a[i]);
    }

    for(k = 0; k < n-1; k++){
        index = k;  //index     
        for(i = k + 1; i < n; i++)// k+1       
{
            if( a[index]>a[i] )//           
{
                index = i;  //     ,index   
            }    
        }  
        
	if(index != k){temp=a[k];a[k]=a[index];a[index]=temp;}//          

    }

   for(i = 0; i < n; i++) 
   {
        if(i == 0)
{
            printf("%d", a[i]);
        }
        else{
            printf(" %d", a[i]);
        }
    }
    printf("
"
); return 0; }

7.大文字と小文字の変換.以下のプログラムセグメントAとBの機能は、文字列の小文字をすべて大文字に変換し、大文字をすべて小文字に変換し、他の文字は変わらない.
/*    A */
int k;
char str1[81];

k = 0;
while (str1[k] != '\0') {
    if (str1[k] >= 'a' && str1[k] <= 'z'){
        

    }
    else if (str1[k] >= 'A' && str1[k] <= 'Z'){
        

    }
    k++;
}
/*    B */
   int k;
   char str1[81], str2[81];

    k = 0;
    while (str1[k]!='\0') {
        if (str1[k]>='a' && str1[k]<='z'){
            

        }
        else if (str1[k]>='A' && str1[k]<='Z'){
            

        }
        else{
            

        }
        k++;
    }

答え
/*    A */
int k;
char str1[81];

k = 0;
while (str1[k] != '\0') {
    if (str1[k] >= 'a' && str1[k] <= 'z'){
        
str1[k]=str1[k]-32;

    }
    else if (str1[k] >= 'A' && str1[k] <= 'Z'){
        
str1[k]=str1[k]+32;

    }
    k++;
}
/*    B */
   int k;
   char str1[81], str2[81];

    k = 0;
    while (str1[k]!='\0') {
        if (str1[k]>='a' && str1[k]<='z'){
            
str2[k]=str1[k]-32;

        }
        else if (str1[k]>='A' && str1[k]<='Z'){
            
str2[k]=str1[k]+32;

        }
        else{
            
str2[k]=str1[k];

        }
        k++;
    }
str2[k] = '\0';

ファイルフロー
8.ランダム操作はバイナリファイルにのみ適用されます.F
9.バイナリファイルa.datがすでに存在する場合、新しいデータを書き込む必要がある場合は、()で開く.A,w,B,wb,C,w+,D,wb+,Bバイナリファイルを書き換えるには、bを加えてAを間違える
10.FILE*fpを定義する.ファイルポインタfpは()を指す.A、ファイルのディスク上の読み書き位置B、ファイルのバッファ上の読み書き位置C、ディスクファイルD全体、ファイルタイプ構造体BがAを誤って選択する
11.バッファシステムのファイルバッファは()にあります.A、ディスクバッファのB、ディスクファイルのC、メモリデータ領域のD、プログラムファイルのCはAを誤って選択します
12.記憶媒体によって区分され、ファイルはA、記録ファイルとフローファイルB、普通ファイルと設備ファイルC、テキストファイルとバイナリファイルD、プログラムファイルとデータファイルBの誤選択Dに分けられる.
13.関数fgetcの役割は、指定されたファイルから1文字を読み込むことであり、そのファイルの開き方は()でなければならない.A、Bのみを書くこと、Cを追加すること、Dを読むか読み書きすること、答えBとCが正しいD fgetc関数とは、指定されたファイルから1文字を読み込むことであり、このファイルは読み書きで開く必要がある.fgetcの呼び出し形式はch=fgetc(fp)である.ミスマッチC
14.C言語の関数について、以下の言い方が正しいのは
A,関数はそれらが呼び出す順序で定義されるべきである.B,return文は関数のどこにでも現れる.C,関数定義は,主関数の前でも主関数の後でもよい.D,関数は常に整数データを返す.BC誤選AC、関数定義順随意
15.変数が正しく定義されているとし、以下()は合法的なC文である.A,if(n<=10);B,switch ( k ) { case 1: printf(“one”); break; case 2: printf(“two”); break; case 1: printf(“one”); break; default: printf(“zero”); break; } C,switch ( k%2 ) { default: printf(“zero”); break; case 1: printf(“one”); case 1+1: printf(“two”); } D,n = 10; switch ( k ) { case n%3: printf(“one”); case n%4: printf(“two”); default: printf(“zero”); } AC誤選CD、D中case後は定数でなければなりません
16.指定したファイルに1文字しか書き込めない関数は__です.fputc
17.ファイルポインタがファイルの末尾に到達したか否かを判断する関数は、__である.feof
18.有窮状態自動機は携帯電話番号を識別する本題は1つの携帯電話番号を読み込んで、それから携帯電話番号が合法かどうかを判断することを要求する.合法的な携帯電話番号の判断には、要求1:携帯電話番号は11位でなければならない.要求2:携帯電話番号の先頭3文字は151|153|180|173|198でなければならず、その他の先頭判断は要求に合致しない.(注:C言語を習得したばかりの大学1年生に対してはこの要求を無視することができる)要求3:【この要求を満たさないことを0点と見なす】携帯電話番号を読み込む場合、一度に1桁の数字しか読み込めず、1桁1桁しか判断できず、携帯電話番号の複数の数字を同時に使用して連合論理演算を行うことは許されない(すなわち、「a[0]『1』&&a[1]『5』またはa=「1」&&b=「5」の式).(注:C言語を勉強したばかりの大学1年生はこの要求を無視することができる)要求4:【この要件を満たしていない場合は0点とみなす】携帯電話番号の状態を判断する場合、携帯電話番号を1回だけ巡回させることで4種類の状態値を取得することができ、遡及は許されない.入力形式:11桁の10進数を直接入力する.出力形式:入力された文字列is ok/short/long/illegal ok状態をテストする:携帯電話番号に完全に合致していることを示し、ok short状態を出力する:入力文字がシリアルビット数が1、ビット数が2、およびビット数が3の場合、【要求2】に規定された上位3文字の要求を満たしかつ0~9文字列で構成されているが、ビット数が11ビット未満であり、short long状態を出力する:上位3文字が【要求2】に規定された上位3文字の要求を満たし、かつすべてのビットの文字が0~9文字列で構成されているが、ビット数が11ビットを超え、long illegal状態を出力する:【要件2】に規定された上位3文字の要件、または文字列に0~9以外の文字構成が含まれている場合、出力illegal入力サンプル:19843229891984322998922 198432398922出力サンプル:1984329892 is ok 1984322989 is short 1984239892 is long 198 a 32398922 is illegal
#include 
#include
int main()
{
	char a[20];
	int count=0,i;
	while(~scanf("%s",&a))
	{
		if(a[0]=='1'&&a[1]=='5'&&a[2]=='1'||
			a[0]=='1'&&a[1]=='5'&&a[2]=='3'||
			a[0]=='1'&&a[1]=='8'&&a[2]=='0'||
			a[0]=='1'&&a[1]=='7'&&a[2]=='3'||
			a[0]=='1'&&a[1]=='9'&&a[2]=='8')
		{
			for( i = 0 ; i < strlen(a) ; i++)
			{
				if(a[i]<'0'||a[i]>'9')
				{
					count=1;
				}
			}
			if(count==1)
			{
				printf("%s is illegal
"
,a); } else { if(strlen(a)==11) { printf("%s is ok
"
,a); } if(strlen(a)<11) { printf("%s is short
"
,a); } if(strlen(a)>11) { printf("%s is long
"
,a); } } } else { printf("%s is illegal
"
,a); } } return 0; }

ししん
19.int(*p)[4]pは、4つのポインタ変数要素を含むポインタ配列であることを示す.(1点)F
20.pは4つの要素を含む1次元配列を指すポインタ変数であり、以下の構造タイプがチェーンテーブルを構築するために使用できるのは()である.A,struct aa{int a;int*b;}B, struct bb { int a;bb * b;}; C,struct cc{ int * a;cc b;}; D, struct dd{ int * a;aa b;}; B誤選A
21.プログラムにstruct abc{int x;char y;struct abc s1,s2; A,コンパイルエラー,構造体定義が終わったらセミコロンを付ける.B、プログラムは順調に接続をコンパイルしてCを実行して、順調に接続をコンパイルすることができますがDを実行することができなくて、順調にコンパイルを通過することができますが、接続エラーAはBを誤って選択します
22.変数が正しく定義されているとし、以下の()は合法的なC文である.A,if(n<=10);B,switch ( k ) { case 1: printf(“one”); break; case 2: printf(“two”); break; case 1: printf(“one”); break; default: printf(“zero”); break; } C,switch ( k%2 ) { default: printf(“zero”); break; case 1: printf(“one”); case 1+1: printf(“two”); } D,n = 10; switch ( k ) { case n%3: printf(“one”); case n%4: printf(“two”); default: printf(“zero”); } AC誤選AD、case後は定数であること
23.変数が次のように定義されている場合、正しい文は()です.
int k, a[10]; A,a[-1] = -1; B,a[0] = 23; C,k = 3; a[k - 2] = a[9] + 1; D,for(k = 1; k <= 10; k++){ printf(“%d ”, a[k]); } E,for(k = 0; k < 10; k++){ scanf(“%d ”, &a[k]); } BCE誤選BDE
24.次の関数は、2つの整数の和を求め、2つの整数の加算値をパラメータによって返すために使用される.空欄を埋めてください.void add(int x, int y, __ z ) { __= x + y; } int * * z
25.次のプログラムは、language配列要素が指す5つの文字列を行ごとに出力することができる.プログラム内の対応する文を入力してください.#include int main(void) { char *language[] = {“BASIC”, “FORTRAN”, “PROLOG”, “JAVA”, “C++” } ; char __ ; int k ; for(k = 0 ; k < 5 ; k++) { q= __ ; printf("%s", *q); } return 0; } **q language+k
以下のプログラムの出力結果は__です.void swap(int *a, int *b) { int *t; t=a; a=b; b=t; } Int main() { int i=2,j=5,*p=&i,*q=&j; swap(p,q); printf("%d %d",*p,*q) } 2 5