C言語のブログのジョブ04アレイ

0は、PTAのスコアを表示します



1.この章では、研究をまとめたもの

1.1学習コンテンツの概要

1.int a[10];为定义数组,表示数组有10个数
2.数组的下标都是从0开始,到n-1结束
3.数组里元素的个数不能大于数组的长度
4.数组长度必须是常量,不能是变量。如int a[x]错误
5.静态数组使用方法,static 类型名 数组名[数组长度]
6.静态数组若没有初始化,系统会自动给数组元素赋值0
7.二维数组a[i][j],i代表行标,j代表列标,行和列都从0开始,列长度不能省略
8.字符数组的结束符为'\0',用其来控制循环
9.字符数组定义:例如char a[100]
查找数据:可用顺序查找法
           scanf输入要查找的值x
           for(从数组下标0到n-1)
           {if所要查找的值与数组中某个值相等
                输出该数的下标}
数组中插入数据
  for{找出a[i]>x;
       退出循环}
  for(循环从n开始,且循环条件为k>i)
     {另数组中的后一个数等于前一个数}
  另a[i]=x;
  for(条件为i<n+1)
   {输出数组}
数组中删除数据:
  法一:定义一个新数组
      for(遍历数组)
      {flag=0;
        for(二次遍历数组)
        {if(a[i]=a[j]说明有重复数据)
          flag=1;       }   
         if(flag==0)说明该数据不重复
            b[j]=a[i]这样便能将重复的数据都删除
              }
  法二:for(i=0;i<=k;i++;k表示要删除的次数)
           {输入x为数据的下标;
                  for(j=x;循环从x开始)    
                     a[j-1]=a[j]  另前一个数等于后一个数    }
       for循环至n-k  printf输出
排序方法
  法一:选择排序法
       再数组中再到最小数,将min与a[0]交换
       再从a[1]到a[n-1]找min,a[1]与min交换
       ....以此类推
  法二:冒泡排序法
        从头到尾比较相邻两个数
        运用两层循环,若a[j]>a[j+1],交换两个数的值

ケースのアレイの列挙方法:逐次探索法、重複データを検索した配列の要素を比較することにより、1

哈希数组案例:查找重复数据
              定义一个数组static int hash[max]该数组里的数都为0
              for循环输入数据
              if(hash[用输入的数据作下标])
              {if(hash[x]==1)说明有重复数据
                 else让hash[x]=1   }

1.2この章の学習体験

使用することがより困難あまりにも簡単混乱へのコンテンツや、より複雑なの1.配列、特に一部の文字のランダムな配列、および多くの方法、
目標を達成するために、コードの約700ラインの2量を

2.PTAラボの割り当て

2.1トピック名:バイナリ検索

2.1.1擬似コード

[10] = {1,2,3,4,5,6,7,8,9,10}はアレイ定義
下部左上配列インデックスとして定義され、右下標準トップ;
int型のBは、中間値、キーある
scanfの入力キー
のために{
B =(アッパー+トップ)/ 2代替Bが中間値である
比較[B]キーのサイズが
等しい、printfの出力bがあれば、
それを超えた場合、トップ= B-1
未満の場合、アッパー= B + 1
}

2.1.2コードのスクリーンショット

2.1.3ビルド・テスト・データ

入力データ 出力データ 説明
4 weizhi:3 トピック要件データ
1 weizhi:0 エンドポイントデータ
11 見つかりません 配列内のデータがありません

2.1.4 PTAはリストと説明を提出します

  • まず、そこには重要なので、その操作がタイムアウトはありません、とするとき、[B]>キーとするとき、[B] <キー操作エラー時、次のサイクルの終了後に休憩を= [B]を見つけることに起因するエラーを犯します
  • 修正された第2エラーブレークエラーを提出するが、とき[B]後の動作>キーと[B] <まだキーエラー
  • [B]>キー、トップ= B-1、[B] <キー、上側= B + 1を修正し、答えが正しいですか

    2.2タイトル名:10進整数に文字列

    2.2.1データ処理

    変数i、K、Jの定義は、文字が定義されている進文字は10進数変換後の数として定義される格納する入力を格納する文字配列a [100]、定義されたB [100]、出力するかどうかを制御するフラグを定義負号

    2.2.2コードのスクリーンショット


    2.2.3ビルド・テスト・データ

    入力データ 出力データ 説明
    + -P-XF4 -1 +!# -3905 トピック要件データ
    10# 16 フル・デジタルデータ
    #から 171 すべて小文字のデータ
    ABの# 171 すべて大文字データ

    2.2.4 PTAはリストと説明を提出します

  • 何らの通知がない場合は、最初のテストポイント誤差につながっ出力負符号でなければならないため
  • フラグを出力するかどうか、またはマイナスのエラーにコントロールに定義された後、エラーコードは次の通りれる
    (I> =フラグ== 0 && 1)IFを
    {
    (。; J> = 0; J、J = 1-I)用
    {
    IF(A [J ] ==「 - 」)
    {
    でフラグ= 1;
    BREAK;
    }
    }
    }
    このコードは、アカウントに最初進文字の前に負の符号を取り、最初の非文字の16進数の前にそのエラー場合だけでなく、負の符号、二進文字の前にマイナス記号、または意志出力負の数、エラーがそうしながら
  • フィルフラグの後= 2は、出力マイナスでフラグ= 1または0の出力を忘れてはいけません
  • 上記のコードを変更した後に正しいです、

    2.3トピック3名:合法性を決定するために、E-mailアドレス

    2.3.1データ処理

    文字が入力を格納する文字列strの[100]に定義されているiはループのため、定義されたように、定義フラグ「YES」または「NO」の出力が決定されます

    2.3.2コードのスクリーンショット


    2.3.3ビルド・テスト・データ

    入力データ 出力データ 説明
    [email protected] はい トピック要件データ
    #[email protected] 番号 非英数字入力、下線、および「」記号@
    102q@_12.com 番号 @データの障害が発生する前と後の文字と数字を入力します。
    [email protected] 番号 comの後に他のデータがあります。

    2.3.4 PTAはリストと説明を提出します

  • セグメントエラーがfgetsのに切り替えた後、scanf関数を使用して文字入力によるものです
  • 部分的に正しい1:条件STRので[i]は> 'A' 及びSTR [I] <zはしない等号
  • 2部分正しい:決意のCOMにデータがない、次のコードを追加:
    他IF(STR [I + 1] && 'C' && STR [I + 2] == 'O' && STR [I + 3] == 'M')
    {
    IはI + = 4;
    !IF(STRを[I] = '\ 0')
    {
    でフラグ= 0;
    BREAK;
    }
    }
  • 3部分正しい:関数fgets入力は、iがIにI + = 4とすると、エラー後もデータ文字「\ N-」が存在する前に発見「\ 0」をデバッグ、コードを変更し、自動的に追加されているiが+ 5 =
  • 最後に、正しい提出

    3.読み取ったコード


    名称出力配列Aと配列Bはデータ、コード・サイクルより少ないという利点を有していない、考え方は簡単であり、容易理解する
    データを識別し、AとB、変化及びA [i]の値を反復を有します図1に示すように、出力値の最終的な選択[i]はデータ1と等しくない場合は
    ずっと長い便利によりデータのアレイを記憶するために提供されるよりも

おすすめ

転載: www.cnblogs.com/sym2446/p/11815729.html