2015年12月21日月曜日

C言語:1次配列

このあたりの内容はQiitaではじめようかとも思ったんだけど、
まだまだ鍛錬が必要なので雑記としてメモ

C言語のプログラミング演習。

問題1.
2つの配列a,bに、キーボードから各々10文字以内の文字列を入力し、
それらをabの順の順とbaの順に連接するプログラムを作成。

問題2.
上記の1において、a、bに入力された文字列の各々の長さを比較し、
長い文字列が先頭に、短い文字列がその後に連接するように出力するプログラムを作成。
ただし、2つの文字列の長さが同じ場合には、a、bの順で連接。

問題3.
キーボードから2つの文字列(地名、氏名など)を入力し、アルファベット順に
出力するプログラムを作成してください。endが入力されたとき、
プログラムが終了すること。たとえば、TokyoとSapporoが入力されたときは、
Sapporo
Tokyo
の順で出力。

問題1のプログラム
int main(void){
  char a[10],b[10],x[10];
  printf("文字列を入力してください。\n");
  printf("a=");scanf("%s",&a);
  printf("b=");scanf("%s",&b);
  memcpy(x,a,sizeof(a));
  strcat(a,b);
  strcat(b,x);
  printf("a,bの順=%s\n",a);
  printf("a,bの順=%s\n",b);
  return 0;
}

問題2のプログラム
int main(void){
  char a[10],b[10],x[10];
  printf("文字列を入力してください。\n");
  printf("a=");scanf("%s",&a);
  printf("b=");scanf("%s",&b);
  memcpy(x,a,sizeof(a));
    if (strlen(a) < strlen(b)){
       strcat(a,b);
        printf("配列aの長さ<配列bの長さ:a,bの順=%s\n",a);
    }else if(strlen(x) > strlen(b)){
       strcat(b,x);
        printf("配列aの長さ>配列bの長さ:b,aの順=%s\n",b);
    }else{
       strcat(a,b);
        printf("配列aの長さ=配列bの長さ:a,bの順=%s\n",a);
    }
  return 0;
}
問題3のプログラム
int main(void){
  char a[20],b[20];
  int x;
while(1){
  printf("地名を2つ入力してください。\n");
  printf("endを入力すると終了します。\n");
  printf("地名1:");scanf("%s",&a);
  if(strcmp(a,"end")==0)break;
  printf("地名2:");scanf("%s",&b);
  if(strcmp(b,"end")==0)break;
  x = strcmp(a,b);
    if (x = 1){
      printf("%s\n",b);printf("%s\n",a);
    } else if(x = -1){
      printf("%s\n",a);printf("%s\n",b);
    } else {
      printf("%s\n",b);printf("%s\n",b);
    }
  }
  return 0;
}

0 件のコメント:

コメントを投稿