Skip to content

Commit

Permalink
add answerbook to statement
Browse files Browse the repository at this point in the history
  • Loading branch information
DAyama committed May 17, 2017
1 parent c8b8920 commit 9f09a15
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 16 deletions.
6 changes: 3 additions & 3 deletions string/c-correct/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ char buf[200];

int main(int argc, char const *argv[])
{
int T;
scanf("%d", &T);
while(T--){
int t;
scanf("%d", &t);
for(int i = 0;i < t;i++){
int n, k;
scanf("%s %d", buf, &k);
n = strlen(buf);
Expand Down
78 changes: 65 additions & 13 deletions string/statement.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,23 +59,25 @@ i
## C

```
#include <stdio.h>
#include <string.h>
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
char buf[200];
int main(int argc, char const *argv[])
{
int T;
scanf("%d", &T);
while(T--){
int n, k;
scanf("%s %d", buf, &k);
n = strlen(buf);
if(k > n)printf("*\n");
else printf("%c\n", buf[k-1]);
}
return 0;
int t;
scanf("%d", &t);
for(int i = 0; i < t ; i++){
int len, k;
scanf("%s %d", buf, &k);
len = strlen(buf);
if(k<=len) printf("%c\n", buf[]); // EDIT HERE
else printf("*\n");
}
return 0;
}
```

Expand Down Expand Up @@ -138,4 +140,54 @@ int main() {

# Answer Book

そもそもの文字列の取り扱いについて簡単にここに説明を記述したい.
### 文字列の取り扱いについて
文字列は、使用する言語ごとに取り扱い方に注意する必要がある。
以下では、CとJavaにおいて特に注意すべき点を挙げておく。

#### C
* Cには"文字列"という概念を表すデータ構造はなく、"文字の配列(char[])"として取り扱わなければならない。
* 各文字を取り出すには配列と同じように記述すればよい。
* Cの文字列は、最後に"\0"という文字が入るため、配列のサイズは実際の文字数より1つ多く取らなければならない。
* Cで文字列の長さを取得するには **strlen関数** を用いる。
* Cで文字列の比較をするには **strcmp関数** を用いる。
* string.hをincludeする必要がある

```
#include &lt;string.h&gt; /* strlen関数、strcmp関数を利用するために必要なヘッダファイル */
char[] str = "str";
str = {'s', 't', 'r', '\0'};
/* 上下どちらも同じ処理 */
char c = str[1]; /* cには't'が入る */
int len = strlen(str); // 長さを取得
if (strcmp(str1, str2) == 0) {
/* str1とstr2が等しい場合の処理 */
} else {
/* str1とstr2が等しくない場合の処理 */
}
```

#### Java
* Javaでは、文字列はStringクラスのインスタンス(≒String型の変数)として表される。
* "String"のSは __大文字__ である。
* Javaの文字列から各文字を1文字だけ取り出すには **charAtメソッド** を用いる。
* Javaで文字列の長さを取得するには **lengthメソッド** を用いる。
* Javaで文字列同士が等しいかどうかを判定するには **equalsメソッド** を用いる。

```
String str = "str";
char c = str.charAt(1); // cには't'が入る
int len = str.length(); // 長さを取得
if (str1.equals(str2)) {
// str1とstr2が等しい場合の処理
} else {
// str1とstr2が等しくない場合の処理
}
```

0 comments on commit 9f09a15

Please sign in to comment.