C言語04--1次元配列、文字列


////main.m//C 4–一次元配列//////Created by dllo on 15/7/3//Copyright(c)2015年Gaozi.All rights reserved. //
import
//最小公倍数
printf(「ご主人様、お好きな2つの数を入力してください!」);int m = 0, n = 0; scanf(“%d%d”,&m,&n); int max = m > n ? m : n; //見つかった最小公倍数int minnum=0を保存します.for (int i = max; i > 0; i++) { if (0 == i % m && 0 == i % m) { minnum = i; break; }
}

printf(「最小公倍数%d」,minnum);printf(「ご主人様、お好きな2つの数を入力してください!」);int m = 0, n = 0; scanf(“%d%d”,&m,&n); int min = m < n ? m : n; int maxnum = 0; for (int i = min; i > 0; i–) { if (m % i == 0 && n % i == 0) { maxnum = i; break; } } printf(「最大公約数%d」,maxnum);
//転々相殺
printf(「ご主人様、お好きな2つの数を入力してください!」);int m = 0, n = 0; scanf(“%d%d”,&m,&n); while(m%n!=0){int temp=m%n;//nの数をm=n;//結果をn;n=temp;}printf(「最大公約数%d」,n);
はいれつ
//同じデータ型のメンバーからなるデータのセット//配列要素アクセス:a[0];配列の下付き文字は0から始まり、配列の個数-1までです.//次の表は定数でも変数でもよい.
//最も簡単な1次元配列の定義
//int arr[5] = {1,2,3,4,5,6};//[5]              .
//           ,      .    int arr[].

//printf("%d
",arr[5]); //c , ; oc .

//配列を巡る
int arr[5] = {2, 1}; for (int i = 0; i < 5 ; i++) { printf(“%d”,arr[i]); }
//1、20個の要素を有する整数配列を定義し、各要素の値範囲は30-70の間であり、配列要素の和を求める.最大値と最小値と下付きの位置を探します.int arr[] = {}; //配列を定義するint sum=0;//配列内の最大数と最小値int max=0を定義します.int min = 70;
//配列の最大最小値位置を定義する.int maxindex = 0; int minindex = 0; for (int i = 0; i < 20; i++) { arr[i] = arc4random() % (70 - 30 + 1) + 30; printf(“%d”,arr[i]); sum = arr[i] + sum; if (max < arr[i]) { max = arr[i]; maxindex = i; } if (min > arr[i]) { min = arr[i]; minindex = i; } } printf(「彼らの和は%d」,sum);printf(「最大数%d、以下%d」、max、maxindex)printf(「最小数%d、以下%d」、min、minindex)
2、1つの配列をコピーします.つまり、2つの配列の容量と同じように、そのうちの1つの配列の要素を別の1つの配列にコピーします.
printf(「小主、奴隷に必要な配列要素の数を教えてください:」);int a = 0, b = 0; int num = 0; scanf(“%d”,&num); printf(「小主、配列数を入力する範囲を確認してください:」);scanf(“%d%d”,&a,&b); //2つの配列を定義します.長さは同じです.int arr1[num];//可変配列変数は初期値を設定できません.すなわち、後ろに={}がありません.int arr2[num]; for (int i = 0; i < num ; i++) { arr1[i]= arc4random() % (b - a + 1) + a; arr2[i] = arr1[i]; printf(“%d “,arr2[i]); } printf(“”); //配列でint arr[28]={0}を保存します.for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { for (int k = 0; k < 10; k++) { arr[i+j+k]++; } } } for (int i = 0; i < 28; i++) { printf(“%d”,arr[i]); } //
//3.2つの配列を生成し、各配列に10個の要素があり、要素の値範囲は20-40の間であり、配列は対応する要素を加算し、別の1つの配列に置く.
int arr1[10]={0}; int arr2[10]={0}; int arr3[10]={0}; printf(「arr 1の配列要素:」);for (int i = 0; i < 10; i++) { arr1[i]=arc4random() % (40 - 20 + 1)+20; printf(“%d “,arr1[i]); } printf(“”); printf(「arr 2の配列要素:」);for (int i = 0; i < 10; i++) { arr2[i]=arc4random() % (40 - 20 + 1)+20; printf(“%d “,arr2[i]); } printf(“”); printf(「arr 3の配列要素:」);for (int i = 0 ; i < 10 ; i++) { arr3[i] = arr1[i] + arr2[i]; printf(“%d “,arr3[i]); } printf(“”);
//泡立ち順
int arr[6] = {5,6,2,1,4,3};
//外部ループの-1:まだ2つの数がソートされていないまでループを実行する場合、ソートされていない2つの数を交換すればよい、実行回数は配列要素数-1である.for(int i=0;i<6-1;i++){//内部ループの-1:配列の境界を越えるのを防止するため.(後の要素と比較するため)for(int j=0;j<6-1-i;j+){//-iは不要な比較を回避する.if(arr[j]>arr[j+1]){int temp=0;temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}for (int i = 0; i < 6; i++) { printf(“%d”,arr[i]);
}

int arr[6] = {5,6,2,1,4,3}; for (int i = 0; i < 6 - 1; i++) { for (int j = 0; j < 6 - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = 0; temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for (int i = 0; i < 6; i++) { printf(“%d”,arr[i]); }
int arr[6] = {5,6,2,1,4,3}; for (int i = 0; i < 6 -1; i++) { for (int j = 0; j < 6 - i -1; j++) { if (arr[j] > arr[j + 1]) { int temp = 0; temp = arr[j]; arr[j] = arr [j + 1]; } } } for (int i = 0; i < 6; i++) { printf(“%d”,arr[i]); }
//1、ランダム生産10個[20,40]の数を生産し、10個の数を⼩から大へ並べ替える.
//1–長さ10の配列int arr[10]={0}を定義します.
//2–乱数を生成し、配列に値を付けてprintfを操作します(「小主、あなたのコマンドがなければ、私はこれらの乱数を得ました-|-:」).
for (int i = 0; i < 10; i++) { arr[i] = arc4random() % (40 - 20 +1)+20; printf(“%d “,arr[i]); } printf(“”);
//3–割り当てられた要素をソート操作printf(「小主が私を主としてくれてありがとう~@.@~:」);for (int i = 0; i < 10 - 1; i++) { for (int j = 0; j < 10 - 1- i; j++) { if (arr[j] > arr[j + 1] ) { int temp = 0; temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1]= temp; } } }
//4–ソート結果for(int i=0;i<10;i+){printf("%d",arr[i]);printf(“”);
//文字配列と文字列
char str[6] = {‘i’,’p’,’h’,’o’,’h’,’e’}; //下のラベルは5の要素をコピーしてstr[5]=‘r’;for (int i =0; i < 6; i++) { printf(“%c “,str[i]); } printf(“”);
//以下、文字列といい、7バイト印刷する.char str[7] = “iphone”;//最後は'0'.//以下、これを文字配列と呼ぶ、6バイトとして印刷する.char str1[6]={‘i’,’p’,’h’,’o’,’h’,’e’}; //この両者の区別int arr[5]={0,7,2,1,3}出力は20で、int型は1つ4バイトを占める.printf(“%ld”,sizeof(str)); //違いは、文字列が文字配列よりも末尾に1つの'0'、0は文字列の終わりのフラグであり、'0'の文字配列がある文字列と呼ぶことができることである.
//印刷文字列.%sプリントは、文字列の終了フラグ'0'を探すことで、'0'に触れるとプリントが終了する.printf(“%s”,str);
//文字列の機能関数について
char str[10]=”iphone”;
//文字列の長さstrlen&sizeof
printf("%ld
",strlen(str)); printf("%ld
",sizeof(str)); // sizeof : , '\0'. ,sizeof '\0' , 7; 10, 10. // strlen : , '\0' , '0'.

//文字列のコピーstrcpy
char newStr[10] = "";
// const       .
strcpy(newStr, str);

printf(“%s”,newStr);
//文字列のつづりstrcat
char str1[20] = "I have";

char str2[20] = “iPhone”; //後ろでつなぎ合わせて、変わらないのはstr 2です.注意:つなぎ合わせる文字列は十分長いです.strcat(str1, str2); printf(“%s”,str1);
//文字列の比較strcmp compare.
char str1[]="abcd";
char str2[]="acc";
printf("%d
",strcmp(str1, str2)); // ASC 0 . char str[]="lala so fus id fgd sf"; char str1[]=""; // . int a = 0; for (int i = 0 ; i < strlen(str); i++) { printf("%c",str[i]); if (str[i] == ' ' ){ a++; } } printf("
"); printf("%d ",a); // : :“afjnpue” “eupnjfa”( : , ) char str[] = "afjnupue"; // // for (int i = (int)strlen(str); i >= 0 ; i--) { printf("%c ",str[i]); } printf("
");

//逆転
int len = strlen(str);
for (int i = 0; i < len/2; i++) {\ char str2 = str[i]; str[i] = str [len - 1 -i]; str [len - 1 - i] = str2; } printf(“%s”,str); //任意の文字列を入力..
char b[] = {};
scanf("%s",&b);
printf("%s
",b); printf("%c
",b[5]); return 0;

}