fork download
  1. //https://i...content-available-to-author-only...e.com/WtevWP
  2. #include <stdio.h>
  3. void cat_data(int*, const int*, int);
  4. int len1;
  5.  
  6. int main(void) {
  7. int i,input, data1[7], data2[5], len2;
  8. input = 0;
  9.  
  10. printf("整数を入力してください(0で終了します)\n");
  11. for (i = 0; i < 7; i++) {
  12. printf("data1[%d] = ", i);
  13. scanf("%d", &input);
  14. if (input == 0)break;
  15. data1[i] = input;
  16. }
  17. len1 = i;
  18.  
  19. printf("整数を入力してください(0で終了します)\n");
  20. for (i = 0; i < 5; i++) {
  21. printf("data2[%d] = ", i);
  22. scanf("%d", &input);
  23. if (input == 0)break;
  24. data2[i] = input;
  25. }
  26. len2 = i;
  27.  
  28. cat_data(data1, data2, len2);
  29.  
  30. printf("data1に連結します(要素数は7まで)\n");
  31. printf("結果:");
  32. for (int i = 0; i < len1 + len2 && i < 7; i++) printf("%d,", data1[i]);
  33.  
  34. return 0;
  35. }
  36.  
  37. void cat_data(int* data1, const int* data2, int len2) {
  38. for (int i = 0, j = 0; i < 7; i++) {
  39. if (i >= len1 && j < len2) {
  40. data1[i] = data2[j];
  41. j++;
  42. }
  43. }
  44. }
  45.  
  46.  
  47. //以下はプロトタイプのプログラムです.SAに質問し,上記に改善されました.
  48. /*#include <stdio.h>
  49. #define DEF -1
  50. int digit(int);
  51. void cat_data(int*, const int*, int);
  52. int len1;
  53.  
  54. int main(void) {
  55. int input, data1[7], data2[5], len2;
  56. input = len2 = 0;
  57.  
  58. for (int i = 0; i < 7; i++) data1[i] = DEF;
  59. //データの初期化
  60.  
  61. printf("2つの数列を連結します(合計7ケタまで)\n");
  62. do {
  63. printf("data1 0~9999999(7ケタ)までの数字を入力してください:");
  64. if(scanf("%d", &input)!=1) input=-1;
  65. scanf("%*[^\n]%*c");
  66. } while (!(input >= 0 && input <= 9999999));
  67.  
  68. for (int i = digit(input) - 1; i >= 0; i--) {
  69. data1[i] = input % 10;
  70. input = (input - input % 10) / 10;
  71. }
  72.  
  73. input = 0;
  74.  
  75. do {
  76. printf("data2 0~99999(5ケタ)までの数字を入力してください:");
  77. if (scanf("%d", &input) != 1) input = -1;
  78. scanf("%*[^\n]%*c");
  79. } while (!(input >= 0 && input <= 99999));
  80. len2 = digit(input);
  81. for (int i = len2 - 1; i >= 0; i--) {
  82. data2[i] = input % 10;
  83. input = (input - input % 10) / 10;
  84. }
  85.  
  86. cat_data(data1, data2, len2);
  87.  
  88. printf("結果:");
  89. for (int i = 0; i < 7; i++) {
  90. if(data1[i]!=DEF) printf("%d", data1[i]);
  91. }
  92.  
  93. return 0;
  94. }
  95.  
  96. int digit(int n) {
  97. int x = 1;
  98. while ((n /= 10) > 0) ++x;
  99. return x;
  100. }
  101.  
  102. void cat_data(int* data1, const int* data2, int len2) {
  103. for (int i = 0, j = 0; i < 7; i++) {
  104. if (data1[i]== DEF && j < len2) {
  105. data1[i] = data2[j];
  106. j++;
  107. }
  108. }
  109. }
  110. */
Success #stdin #stdout 0s 5476KB
stdin
13453
1245
42
0
2435
2112
34
2
-25
stdout
整数を入力してください(0で終了します)
data1[0] = data1[1] = data1[2] = data1[3] = 整数を入力してください(0で終了します)
data2[0] = data2[1] = data2[2] = data2[3] = data2[4] = data1に連結します(要素数は7まで)
結果:13453,1245,42,2435,2112,34,2,