アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のC言語の問題のサンプルプログラムを教えてもらいたいです。よろしくお願いします。

実行例のように,複数の数値を入力し,更にある乗数を入力すると, それらの数値をその乗数倍した値を表示するプログラムを作成せよ.ただし以下の条件を満たすこととする.

複数の数値は問題2と同様に,2〜10個とし,それらの数値は配列に収める. 配列に収められた値を乗数倍するには,以下のような関数 multiply を用いる.
• 関数 multiply は,数値を記録した double 型配列,その配列に 記録された数値の数を示す int 型,乗数となる double 型の値を 引数で受け取る.
• 関数の戻り値はない.
main関数では以下の処理を行う
• 数値の個数の入力
• 数値の入力
• 乗数の入力
• 関数 multiply の呼び出し • 乗数倍された数値の表示
$ ./a.out
数値の数を入力:3⏎
a[0]を入力: 1.2⏎
a[1]を入力: 3.4⏎
a[2]を入力: 5.6⏎
乗数を入力: 2.5⏎
配列aを2.500000倍すると:
a[0] = 3.000000
a[1] = 8.500000
a[2] = 14.000000

A 回答 (1件)

#include <stdio.h>


#include <stdlib.h>

void multiply(double arr[], int size, double n) {
 int i;
 for (i = 0; i < size; i++) {
  arr[i] *= n;
 }
}

int main(void) {
 char s0[3], s1[4];
 int i, size;
 double* a, n;
 while (1) {
  printf("数値の数を入力:");
  scanf("%2s%*[^\n]%*c", s0);
  size = atoi(s0);
  if (size < 2 || size > 10) {
   continue;
  } else {
   break;
  }
 }
 a = (double*)malloc(sizeof(double) * size);
 for (i = 0; i < size; i++) {
  printf("a[%d]を入力: ", 0);
  scanf("%3s%*[^\n]%*c", s1);
  a[i] = atof(s1);
 }
 printf("乗数を入力: ");
 scanf("%3s%*[^\n]%*c", s1);
 n = atof(s1);
 printf("配列aを%lf倍すると:\n", n);
 multiply(a, size, n);
 for (i = 0; i < size; i++) {
  printf("a[%d] = %lf\n", i, a[i]);
 }
 free(a);
 return 0;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!