( 2 ) http://ist.ksc.kwansei.ac.jp/ tutimura/ 2012 7 7 ( 2 ) 1 / 54
(1) (2) (?) (1) (2) 2 ( 2 ) 2 / 54
1. 30 2. 2012 6 30 25 OS ( 2 ) 3 / 54
10 20 1993 1996 2000 2003 = 30 ( 2 ) 4 / 54
1 2 2 ( 2 ) 5 / 54
( 2 ) 6 / 54
(1) for () #include "A" "B" "AB" main() main() main() ( 2 ) 7 / 54
(2) int hoge(); int hoge(void); {} if (is_hoge) { if (is_hoge) printf("a"); { } printf("a"); } if if (is_hoge) { if (is_hoge) printf("a"); printf("a"); } ( 2 ) 8 / 54
(?) long int a; long a; int main(void) {...} main() {...} if (a % 2!= 0)... if (a % 2)... i=10; while (--i>=0) puts("10 \n"); Java int a=10; if (a % 2) {... } ( 2 ) 9 / 54
(C ) (_) ( )is_leap_year,day_of_week,snake_case (C++/Java) ( )isleapyear,dayofweek,camelcase (C/C++/Java) (_) ( )TRUE,MAX_VALUE ( 2 ) 10 / 54
(1) ( )add_item(),get_size() ( )num (number),len (length),str (string), diff (difference), buff (buffer) :flg (flag),tbl (table) flag ( 2 ) 11 / 54
(2) ( )hex2str (hex to string),num2date (number to date) set get, next last (previous), pre post ( 2 ) 12 / 54
(20) (21), (22) (23) (24), (24 ) (25),(25 ), 2 ( 2 ) 13 / 54
(call by value) (call by reference) ( 2 ) 14 / 54
y m d 2012 6 23 6 22 2012 5 1 4 30 2012 4 1 3 31 2012 3 1 2 29 2011 3 1 2 28 ( 2 ) 15 / 54
2 29 4 100 400 400 97 2000 1872 5 ( 2 ) 16 / 54
(20) int is_leap_year(int year) 2001, 2002, 2003, 2005, 2100, 2200,... 2000, 2004, 2008,... ( 2 ) 17 / 54
1 void let_five(int *a) { /* a int */ *a = 5; /* *a int */ } void foo(void) { int i = 1; /* 1 */ let_five(&i); /* */ printf("%d\n",i); /* 5 */ } 1 ( 2 ) 18 / 54
(21), (22) (21) int is_valid_date(int year, int month, int day) (22) 1900 1 1 int date_to_number(int year, int month, int day) date_to_number(1900,1,1) 1 ( 2 ) 19 / 54
(23) (23) (22) void number_to_date(int number, int *year, int *month, int *day) int main(void) { int year, month, day; } number_to_date(12345,&year, &month, &day); printf("%d %d %d \n", year, month, day); return 0; ( 2 ) 20 / 54
(24), (24 ) (24) date_to_number() number_to_date() yesterday() tomorrow() (24 ) 2 int diff_date(int y1, int m1, int d1, int y2, int m2, int d2) ( 2 ) 21 / 54
(25),(25 ), (25) 1900 1 1 int day_of_week(int year, int month, int day) 0=, 1=,..., 6= (25 ) $ cal 6 2012 June 2012 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ( 2 ) 22 / 54
( 2 ) 23 / 54
int day_of_week(int year, int month, int day) { if (month < 3) { year--; month += 12; } return (year + year / 4 - year / 100 + year / 400 + (13 * month + 8) / 5 + day) % 7; } mktime(),localtime() ( 2 ) 24 / 54
2 ( 2 ) 25 / 54
gcc -Wall hoge.c gcc -Wall -O2 hoge.c cl.exe /Wall hoge.c int a; int b=a; if (a=b)...; printf printf("%d",5.5); ( 2 ) 26 / 54
C gdb UNIX, valgrind UNIX, Electric Fence UNIX, VisualStudio Windows Purify Windows/UNIX ( 2 ) 27 / 54
CPU gprof UNIX, Cygwin gcc -pg -g -Wall hoge.c./a.exe gprof a.exe Visual Studio Windows VTune Windows ( 2 ) 28 / 54
(30) scanf(),gets() 2 ( 2 ) 29 / 54
3 C C++ Java stdin cin System.in stdout cout System.out stderr cerr/clog System.err (!) printf(...) fprintf(stdout,...) stdin stdout printf() getchar() gets() scanf() putchar() puts() ( 2 ) 30 / 54
command < file command > file command >> file (sh/bash) command 2> file (csh/tcsh) command >& file ( 2 ) 31 / 54
fopen() stderr fflush() command sort command gzip > output.gz command wc command tee output ( 2 ) 32 / 54
(30) dir > >> ( 2 ) 33 / 54
2 ( 2 ) 34 / 54
scanf(),gets() scanf("%d", &i)??? scanf("%s", buff),gets(buff) int i; char buff[1024]; fgets(buff, sizeof(buff), stdin); sscanf(buff, "%d", &i); ( 2 ) 35 / 54
C99 (5 ) (6) (31), (31 ) (32) 2 ( 2 ) 36 / 54
int hoge1[100]; static int hoge2[100000]; /* */ int *hoge3 = malloc( 100 * sizeof(int) ); int *hoge4 = malloc( 100 * sizeof(hoge4[0])); int *hoge5 = malloc( 100 * sizeof(*hoge5)); int *hoge6 = calloc( 100, sizeof(int) ); if (hoge3 == NULL) { printf("can t allocate memory.\n"); exit(1); } hoge3[12] = 4; free(hoge3); ( 2 ) 37 / 54
int *hoge7 = xmalloc( 100 * sizeof(hoge[0])); free(hoge7); hoge7 = NULL; /* */ void *xmalloc(size_t size) { void *p; } if ( size == 0 ) size++; if ( (p=malloc(size))== NULL ) { fprintf( stderr, "Not enough memory.\n" ); exit( EXIT_FAILURE ); } return p; ( 2 ) 38 / 54
(int *)malloc(size) C ANSI C89, C99, C11 C++ C K&R malloc() C++ ( 2 ) 39 / 54
int c[10], d[10]; int main(void) { int i, a[10], b[10]; } for (i=0; i<1000; i++) { printf("i = %d\n", i); a[i] = -1; /* b[i] c[i]? */ } return 0; ( 2 ) 40 / 54
int hoge_num = 0; /* */ int hoge_max = 10; /* */ int *hoge = xmalloc( sizeof(hoge[0])* hoge_max );... if (hoge_num == hoge_max) { /* */ hoge_max *= 2; */ hoge = xrealloc(hoge, sizeof(hoge[0])*hoge_max); } hoge[hoge_num++] = 123; /* ( 2 ) 41 / 54
C99 C99 void foo(int size) { int a[size]; }... ( 2 ) 42 / 54
(5 ) (6) (5 ) 5 2 (6) 2 1, 10, 100, 1000??? scanf() ( 2 ) 43 / 54
(31), (31 ) 100 40 (31) 40 1 40? 100? (31 ) 10 100 ** 99 * 98 97 ******... 10 * 9 *** 8 * ( 2 ) 44 / 54
(32) (32) 100 25 10 1 ( 2 ) 45 / 54
2 2 2 2 2 2 ( 2 ) 46 / 54
2 int hoge1[10][20]; /* */ int **hoge2 = xmalloc(sizeof(hoge2[0])* 10); for (i=0; i<10; i++) { hoge2[i] = xmalloc(sizeof(hoge2[0][0])* 20); } hoge1[5][17] = 123; hoge2[5][17] = 123; malloc() free() ( 2 ) 47 / 54
2 /* */ void func1a(int a[10][20]) {...} void func1b(int a[][20]) {...} int hoge1[10][20]; func1a(hoge1); func1b(hoge1); /* */ void func2(int **a) {...} int **hoge2; func2(hoge2); ( 2 ) 48 / 54
2 int *hoge3 = xmalloc( sizeof(hoge3[0])*10 * 20 ); (1) hoge3[i][j] hoge3[i*20 + j] (2) #define HOGE3(i,j) hoge3[(i) * 20 + (j)] HOGE3(i,j) ( 2 ) 49 / 54
2 int **hoge4; int i, size1, size2; char *p; size1 = sizeof(hoge4[0]) * 10; size2 = sizeof(hoge4[0][0])*20; p = xmalloc(size1+size2 * 10); hoge4 = (int**)p; p += size1; for (i=0; i<10; i++) { hoge4[i] = (int*)p; p += size2; } ( 2 ) 50 / 54
5 5 1 72 1 http://ist.ksc.kwansei.ac.jp/ tutimura/tuat/ 1 1 ( 2 ) 51 / 54
? 2 1 ( 2 ) 52 / 54
5 5 7/17( ) ( 2 ) 53 / 54
5 ( ) 1,3,5,7,9 1 1,1,3,5,7 2 1,1,2,2,5 3 1,1,1,5,7 5 1,2,3,4,5 1,1,1,2,2 4 1,1,1,1,7 ( 2 ) 54 / 54