苦C一周した。まだまだだ。
一周しましたがコレ、復習しないとだめだな。最初の方のこと忘却の彼方に置き忘れておる。
練習問題が解答できるようにならないとですね。
2日勉強したソースコードの断片が以下。汚い。
#include <stdio.h> #include <memory.h> #include <ctype.h> #include <stdlib.h> #include <string.h> #include "sum.h" #include "variouscaluculation.h" /* 定数 */ #define TAX 0.03 /* マクロ */ #define PRINT_TEMP printf("temp = %d\n",temp); // 引数があるパターン #define PRINTM(X) printf("%d\n",X); // 決まりきった数式などに使われる #define GET_TAPEXOID_AREA(A,B,H) (((A) + (B)) * (H) / 2); /* prototype */ //int sum(void); int sum_max(int); int fact(int); void func(int *pvalue); int getaverage(int data[]); /* struct */ struct student { int year; /* 学年 */ int clas; /* クラス */ int number; /* 出席番号 */ char name[64]; /* 名前 */ double stature; /* 身長 */ double weight; /* 体重 */ }; void print_student(struct student *s); typedef struct{ int year; int clas; } student_struct; /* enum */ enum STATUS { NORMAL, POISON, SPARK, }; /* main */ int main(void){ /* printf("日本語表示\tできるのか?\n"); printf("日本語\tできるのか?\n"); int syo = 40 / 13; int msyo= 40 % 13; printf("40/13=%d 余り %d\n",syo,msyo); printf("%5d\n",100); printf("%05d\n",100); double pi = 3.14159; printf("%6.2f\n",pi); printf("123456\n"); int price_juice = 198; int price_milk = 138; int oazukari = 1000; int daikin = (int)((price_juice * 1 + price_milk * 2) * 1.05); int oturi = oazukari - daikin; printf("%d\n",oturi); // section 6 // accept user input int data; double data_double; printf("input number...>"); scanf("%d",&data); printf("input double number...>"); scanf("%lf",&data_double); printf("%d\n",data); printf("%f\n",data_double); printf("end of program."); */ /* int point; printf("点数は?>"); scanf("%d",&point); if(point >= 60){ printf("おめでとうござます。合格です。\n点数補正を行います。\n"); point += 20; if(point > 100){ point = 100; } } printf("補正後の点数は%3dです\n",point); */ /* // switch int no; scanf("%d",&no); switch (no) { case 0: printf("aaaaa\n"); break; case 1: printf("BBBBBB\n"); break; default: printf("no code here..."); break; } */ /* for(int i=0,len=100;i<len;i++){ printf("count%2d\n",i); } for(int i=0;;){ printf("counti=>%3d\n",i); i++; if (i>100) { break; } } sum(); sum_max(304); printf("%d\n",fact(10)); int ar[100]; ar[10] = 100; printf("%d\n",ar[10]); int ar2[10] = {10,20,30}; printf("%d\n",ar2[2]); //for文を使わない配列のコピー // #include <memory.h> int ar3[10]; for(int i=0,len=sizeof(ar3)/sizeof(ar3[0]);i<len;i++){ ar3[i] = i*10; } for(int i=0,len=sizeof(ar3)/sizeof(ar3[0]);i<len;i++){ printf("%d\n",ar3[i]); } int ar4[10]; memcpy(ar4, ar3, sizeof(ar3)); for(int i=0,len=sizeof(ar4)/sizeof(ar4[0]);i<len;i++){ printf("%d\n",ar4[i]); } // 文字列 char c = 'A'; printf("%c\n",c); int suuti; if(isdigit(c)){ suuti = c - '0'; }else{ suuti = 0; } printf("%d\n",suuti); // 文字「列」 char retu[] = {'h','g','\0'}; printf("%s\n",retu); //文字列リテラル char str[] = "mario"; printf("%s\n",str); char str2[] = "145"; int suuti2 = atoi(str2); printf("%d\n",suuti2); char str3[10]; strcpy(str3 , "marioo"); printf("%s\n",str3); */ /* stdlib.h atoi string.h strcpy strncpy strcat strlen stdio.h sprintf 数値と同様、文字列を入力する場合にもscanf関数を使うことが出来ます。文字列を入力する場合、scanf関数で%s指定子を指定します。ただし、配列名の前に&を付けません "%32s" int i; for (i = 0;str[i] != '\0';i++); */ /* int i1,i2,i3; printf("i1(%p)\n",&i1); printf("i2(%p)\n",&i2); printf("i3(%p)\n",&i3); */ /* int *p_ = NULL; int *p,i; p = &i; i = 30; *p = 10; printf("%d\n",i); int hoge = 10; func(&hoge); printf("%d\n",hoge); int ar[] = {0,1,2,3,4,5,6,7,8,9}; int average = getaverage(ar); printf("%d\n",average); struct student s1; s1.clas = 1; strcpy(s1.name, "aaaaa"); student_struct s2; s2.clas = 3; student_struct *ps2; ps2 = &s2; printf("%d\n",ps2->clas); FILE *file; file = fopen("/Users/seijiro/tmp/test.txt","a+"); fprintf(file,"Hello,WOrld\n"); fclose(file); const double EXCISETAX = 0.05; printf("%f\n",10 * EXCISETAX); enum STATUS stat; stat = POISON; printf("%d\n",stat); */ /* // malloc / realloc int *heap; int size = 100; heap = (int *)malloc(sizeof(int) * size); for(int i =0;i< size ; i++){ heap[i] = i; } PRINTM(heap[5]); heap = realloc(heap,sizeof(int) * 1000); struct student *student_heap; student_heap = (struct student *)malloc(sizeof(struct student)*10); if(student_heap == NULL){ printf("NULLだよ\n"); } struct student *s; for(int i =0;i<10;i++){ s = &student_heap[i]; (*s).clas = i+1; //print_student(s); } for(int i =0;i<10;i++){ s = &student_heap[i]; print_student(s); } print_student(&student_heap[5]); free(student_heap); free(heap); */ int value; value = sum(50,100); printf("%d\n",value); int ar[] = { 3,4,43,5,6,6,43,5,4,4,5,6,6,4,4,5}; SortBubble(ar, sizeof(ar) / sizeof(int)); for (int i=0,len=sizeof(ar) / sizeof(int); i<len; i++) { printf("%d\t",ar[i]); } printf("\n"); return 0; } void print_student(struct student *s){ printf("クラスは:"); printf("%d\n",(*s).clas); } /* int sum(void){ printf("%d\n",(1+100) * 100 / 2); return 0; } */ int sum_max(int max){ printf("%d\n",(1+max) * max / 2); return 0; } int fact(int value){ if(value <= 1){ return 1; }else{ return value * fact(--value); } } void func(int *pvalue){ (*pvalue)++; } int getaverage(int data[10]){ int i,average = 0; for(i=0;i<10;i++){ average += data[i]; } return average/10; }