fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h> //乱数の生成のため
  4.  
  5. typedef struct {
  6. char na[64];
  7. int stts[6];
  8. } Monster;
  9.  
  10. Monster creMonster(){
  11. int i,k;
  12. Monster tmp;
  13. k = rand()%8+4;
  14. for(i=0;i<k;i++) tmp.na[i] = 'a' + rand()%26;
  15. tmp.na[k] = '\0';
  16. for(i=0;i<6;i++) tmp.stts[i] = rand()%255+1;
  17. return tmp;
  18. }
  19.  
  20. void priMonster(Monster m){
  21. printf("%12s : ", m.na);
  22. for(int i = 0; i < 6; i++){
  23. printf("%3d ", m.stts[i]);
  24. }
  25. printf("\n");
  26. }
  27.  
  28. int main(){
  29. int n;
  30. scanf("%d", &n);
  31.  
  32. srand((unsigned int)time(NULL));
  33.  
  34. // ★ここが課題の本体:Monster を n 体動的確保
  35. Monster *mons = malloc(n * sizeof(Monster));
  36.  
  37. // モンスターを生成して配列に入れる
  38. for(int i = 0; i < n; i++){
  39. mons[i] = creMonster();
  40. }
  41.  
  42. // モンスターを表示
  43. for(int i = 0; i < n; i++){
  44. priMonster(mons[i]);
  45. }
  46.  
  47. // 最後に忘れずに free
  48. free(mons);
  49.  
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 5328KB
stdin
6
stdout
   ufcvkkshf  :   9 176 175 216  35 171 
      adzfdt  :  73 134 196 219 207 226 
  tfqyjokwgr  : 165  97 227 211  57 133 
     hbwgica  :  15  40 196 234 246  38 
   atqacelym  : 183  11 148 154 221  77 
      kxjhdu  :  33 136 137  72 203 242