C言語基礎学習ノートday 3

62201 ワード

注:本ノートは直接アップロードで、markdownノートの文法の違いにより、表示に少し違いがあります.オリジナル版が必要な場合は、次のように連絡してください[email protected].(メールのテーマは:ノートを勉强して、本文の必要なノートの名前、直接このノートのウェブサイトをコピーすることができます).同时に皆さんと一绪に交流を学ぶことを歓迎します.
day3
@toc
一、一次元配列
1.配列の定義
#include

int main()
{
  int array[10];  //       ,    array,       , 0-9;

  array[0] = 20;
  array[9] = 100;

  printf("%d
"
,array[0]); printf("%d
"
,sizeof(array));// , 40 return 0; }

配列の本質は、メモリの中で連続的な空間であることです.各要素のタイプは同じです.
2.連続的な付与操作
int main()
{
  int i;
  for(i = 0;i < 10;i++)
  {
    array[i] = i;  
  }
  return 0;
}

3.配列の初期化
int main()
{

/*          (    ,    ,    )
  int array[10] = {1,1,3,5,5,6,9,6,8,5};//      
  
  int array[10] = {100,2,3,3,4,9};//                ,       
 
  int array[10] = {0};  //       0
  //     0    
  int i;
  for(i = 0; i < 10; i++)
 {
   array[i] = 0;
 }

*/

  int i;
  for(i = 0;i < 10;i++)
  {
  
    printf("array[%d] = %d
"
,i,array[i]); } return 0; }

4.配列内の最大要素の値を求める
配列の最初の要素をデフォルトで最大の要素に設定し、各要素を比較します.
int main()
{
  int array[5] = {2,3,5,6,7};
  int max = array[0];
  int i;
  for(i = 1;i < 5;i++) //          ,               ,        1  ;
  {
    if(max < array[i])
      max = array[i];
  }

  printf("max = %d
"
,max); return 0; }

5.配列内の最小値を求め、最小値の番号を求める
int main()
{
  int array[5] = {2,3,5,6,7};
  int min = array[0];
  int index = 0;//         ,      0          ;         0;
  int i;
  for(i = 1;i < 5;i++) //          
  {
    if(min > array[i])
      index = i;
      min = array[i];
  }

  printf("min = %d,index = %d
"
,min,index); return 0; }

6.配列要素と

int main()
{
  int array[10] = {1,2,3,4,5,6,7,8,9,0};
  int i;
  int sum = 0;
  for(i = 0; i < 10; i++)
  {
    sum += array[i];
  }

  printf("sum = %d
"
,sum); return 0; }

7.印刷配列の平均値より大きいすべての値とその下付き文字のプログラムは確定していません
#include

int  main()

{

  int  array[10]  =  {1,2,3,4,5,6,7,8,9,0};

  int  i;

  float  aver;

  int  sum  =  0;

  int  index  =  0;

  for(i  =  0;  i  <  10;i++)

  {

  sum  +=array[i];

  }

  aver  =  sum  /10.0;

  printf("The  following  elements  are  greater  than  the  average  value  of  the  array.  The  addresses  are:
"
); for(i = 0;i < 10;i++) { if(array[i] >aver) { index = i; printf("array[%d] = %d,index = %d
"
,i,array[i],index); } } }

8.配列逆置き
  • は単一要素の交換
  • を実現する.
    #include
    
    int  main()
    
    {
    
      int  array[10]  =  {1,2,3,4,5,6,7,8,9,0};
    
    //    
    
      int  i;
    
      int  tmp  =  array[0];
    
      array[0]  =  array[1];
    
      array[1]  =  tmp;
    
      for(i  =  0;i  <  10;i++)
    
      {
    
      printf("array[%d]=%d
    "
    ,i,array[i]); } return 0; }
  • 配列の前半と後半の交換を実現
  • 法一:直接元素交換
  • #include
    
    int  main()
    
    {
    
      int  array[10]  =  {1,2,3,4,5,6,7,8,9,0};
    
      int  i;
    
      for(i  =  0;  i  <=  4;  i++)
    
      {
    
      int  tmp  =  array[i];
    
      array[i]  =  array[9-i];
    
      array[9-i]  =  tmp;
    
      }
    
      for(i  =  0;i  <  10;i++)
    
      {
    
      printf("array[%d]=%d
    "
    ,i,array[i]); } return 0; }
  • 法二:下標
  • を交換することによって
     #include
    
    int  main()
    
    {
    
    int  array[10]  =  {1,2,3,4,5,6,7,8,9,0};
    
    int  i;
    
      int  min  =  0;//       
    
      int  max  =  9;//       
    
      while(min  <max)
    
      {
    
      int  tmp  =  array[min];
    
      array[min]  =  array[max];
    
      array[max]  =tmp;
    
      min++;
    
      max--;
    
      }
    
      for(i  =  0;i  <  10;i++)
    
      {
    
      printf("array[%d]=%d
    "
    ,i,array[i]); } return 0; }

    9.水仙の花の数100都1000の間の水仙の花の数を探します;
    #include
    
    int  main()
    
    {
    
      int  i;
    
      for(i  =  100;  i  <  1000;i++)
    
      {
    
      int  i1  =  i%10;
    
      int  i2  =  i/10%10;
    
      int  i3  =  i/100;
    
      if(i1*i1*i1  +  i2*i2*i2  +  i3*i3*i3  ==  i)
    
      {
    
      printf("%d
    "
    ,i); } } return 0; }

    10.1つの配列内のすべての奇数要素の和を求める
    #include
    
    int  main()
    
    {
    
      int  array[10]  =  {1,3,4,7,8,0,9};
    
      int  i;
    
      int  sum  =  0;
    
      printf("The  odd  numbers  in  the  array  are  as  follows:
    "
    ); for(i = 0; i < 10;i++) { if(array[i] % 2 != 0) //if(array[i]% 2 == 1) { sum += array[i]; printf("array[%d] = %d
    "
    ,i,array[i]); } } printf("sum = %d
    "
    ,sum); return 0; }

    11.3-100の素数を求める
    プログラムに問題があります注意:素数:1と自身を除いていかなる数にも除去されません;(すなわち、2からi-1の間の任意の数で割り切れないことに相当する)
    #include
    
    int  main()
    
    {
    
      int  i;
    
      int  j;
    
      int  status  =  0;
    
      for(i  =  3;i  <  101;i++)
    
      {
    
      for(j  =  2;j  <  i;j++)
    
      {
    
      if((i%j  )==  0)
    
      {
    
      status  =  1;
    
      break;
    
      }
    
      }
    
      if(status  ==  0)
    
      {
    
      printf("%d
    "
    ,i); } } return 0; }

    2 D配列2 Dはいれつ
    表として近似できる.
    1.2 D配列の定義
    #include
    
    int main()
    {
    
    //      
      int array[2][3];//         ,      array[3] 
      array[0][0] = 0;//  0  0   
      array[1][2] = 0;//  1  2   
    
    //         
      int a[3][4] = {{1,2,3,4,},{5,6,7,8},{9,10,11,12}};
      int a[3][4] = {0};//            0
      
      return 0;
    }
    

    2.配列サイズ
    int main()
    {
      int array[2][3] = {{1,2,3},{4,5,6}};
      printf("%d
    "
    ,sizeof(array));// 24 printf("%d
    "
    ,sizeof(array[0])); // 0 , 12 printf("%d
    "
    ,sizeof(array[0][0]));// 0 0 , 4 return 0; }

    3.配列の値出力
    注意printfの位置
    #include
    
    int  main()
    
    {
    
      int  array[2][3]  =  {{1,2,3},{4,5,6}};
    
      int  i,j;
    
      for(i  =  0;  i  <  2;i++)
    
      {
    
      for(j  =  0;  j  <  3;j++)
    
      {
    
      printf("array[%d][%d]=  %d
    "
    ,i,j,array[i][j]); } } return 0; }

    4.1つの2次元の配列の各行の各列の和を求めます
    注意printfの位置各行の和:
    int main()
    {
      int array[3][5] = {{1,3,4,5,9},{4,9,5,0,8},{9,3,4,23,4}};
      int i,j;
      for(i = 0; i <3;i++)
      {
        int sum = 0;
        for(j = 0;j < 5;j++)
        {
          sum += array[i][j];
        }
        printf("%d
    "
    ,sum); } return 0; }

    各列の合計:
    int main()
    {
       int array[3][5] = {{1,3,4,5,9},{4,9,5,0,8},{9,3,4,23,4}};
       int i,j;
       for(j = 0; j < 5; j++);
       {
         int sum = 0;
         for(i = 0; i < 3;i++)
         {
           sum +=array[i][j];
         }
       printf("%d
    "
    ,array[i][j]); } return 0; }

    5.泡立ちソート
    int main()
    {
      int array[10] = {1,4,8,0,9,34,98,100,5,3};
      int i;
      int j;
      for(i = 0;i < 10;i++)
        {
          for(j = 1; j < 10-i;j++)
          {
            if(array[j-1] >array[j])
              {
                int tmp;
                tmp = array[j];
                array[j] = array[j-1];
                array[j-1] = tmp;
              }
          }
        }
        for(i = 0;i < 10;i++)
        {
        printf("array[%d] = %d
    "
    ,i,array[i]); } return 0; }