以前も同じことを質問したのですが、分からなかったので、また質問します。本を読んでも分かりませんのでプログラム全てを教えて下さい。2日も考えています。他人からすれば何で説明を読んでも分からないのか?と思われると思いますが、本当に全く分からないし見当もつきません。よろしくお願いします。
1.キーボードから整数nを入力して、1+2+…+nを求めるプログラムを作れ。
2.キーボードから整数nを入力して、1*2*…*nを求めるプログラムを作れ。
3.キーボードから10個の実数を入力し、それらの平均を求めるプログラムを作れ。
4.円錐の体積を求めるプログラムを作れ。 注:円錐体積V=π*r*r*h/3
5.キーボードから文字列を入力し、それを逆さまにするプログラムを作れ。例えば、"dog"を逆さまにすると"god"になる。
以上の5問です。できるだけ簡単で理解しやすいものでお願いします。
No.5ベストアンサー
- 回答日時:
printf関数とscanf関数の使い方、forループの使い方と基本的な動作、配列についての基礎知識はあるものとして回答します。
■1 sum.c
#include <stdio.h>
void main(void)
{
int n;
int sum = 0; /* 計算用。最終的に答えが入る */
int i;
printf("n=");
scanf("%d", &n); /* scanfでは&を忘れずに! */
for (i = 1; i <= n; i++)
sum = sum + i; /* sumとiの和を、sumの新しい値とする */
/* このためsumの初期値は0にしておいた */
printf("%d\n", sum);
}
■2 fac.c
#include <stdio.h>
void main(void)
{
int n;
int fac = 1; /* 計算用。最終的に答えが入る */
int i;
printf("n=");
scanf("%d", &n);
for (i = 1; i <= n; i++)
fac = fac + i; /* facとiの積を、facの新しい値とする */
/* このためfacの初期値は1にしておいた */
printf("%d\n", fac);
}
■3 ave.c
#include <stdio.h>
void main(void)
{
double n; /* 実数を扱う場合、double型とする */
double sum = 0.0; /* 合計計算用 */
double ave; /* 平均用 */
int i;
for (i = 1; i <= 10; i++) {
printf("%d番目=", i);
scanf("%lf", &n); /* double型は、%lfで入力する */
sum += n; /* sum = sum + n; の省略形 */
}
ave = sum / 10;
printf("%f\n", ave); /* double型は、%fで表示する */
}
■4 cone.c
#include <stdio.h>
void main(void)
{
double r, h; /* 半径、高さ */
double v; /* 体積 */
double pi = 3.141592; /* π */
/* 時には1行に複数の文を並べた方が、(ソースが)見やすくなることもある */
printf("底面(円)の半径="); scanf("%lf", &r);
printf("円錐の高さ="); scanf("%lf", &h);
v = pi * r * r * h / 3;
printf("円錐の体積は%fです\n", v);
}
■5 strrev.c
#include <stdio.h>
#include <string.h>
void main(void)
{
char str[256]; /* 文字列保存用 */
char ch; /* 文字列反転用 */
int n1, n2; /* 文字列反転用 */
puts("文字列を入力してください"); /* putsだと、\nなしでも改行される */
gets(str); /* scanfではスペースが入力できないので、getsを使う */
/* <基本アルゴリズム> */
/* 配列strの中を、先頭から後ろへ、終端から前へ、同時に1文字ずつ見て交換していく。 */
/* どこを見ているのかを覚えておくために、先頭から用にn1、終端から用にn2を用意する。 */
/* 先頭は常に0番だが終端は入力内容により変わるため、strlen関数(文字列の文字数を返す)で求める。 */
/* ただし文字数は 1,2,3 … と数えるのに対し、配列アクセスは 0,1,2 … であるため、1を引いて調整する。 */
n1 = 0;
n2 = strlen(str) - 1;
/* 見ていくポイントがすれ違って行き過ぎないように、whileの条件を作る */
while (n1 < n2) {
/* n1番目の値と、n2番目の値を、chを経由して交換する */
ch=str[n1]; str[n1]=str[n2]; str[n2]=ch;
/* 後ろにずらす時は++、前にずらす時は--する */
n1++; n2--;
}
puts(str);
}
No.4
- 回答日時:
こんにちは、honiyonです。
1.
:void main(){
: int i;
: int key;
: int ans = 0;
: scanf("%d", &key);
: for(i=0;i<key;i++){
: ans += (i+1);
: }
: printf("Ans.%d", ans);
:}
2.
:void main(){
: int i;
: int key;
: int ans = 1;
: scanf("%d", &key);
: for(i=0;i<key;i++){
: ans *= (i+1);
: }
: printf("Ans.%d", ans);
:}
3.
:void main(){
: int total = 0;
: int key;
: int i;
: for (i=0;i<10;i++){
: scanf("%d", &key);
: total += key;
: }
: printf("Ans.%f3.2", key/10);
:}
4.
:void main(){
: int r;
: int h;
: scanf("%d", &r);
: scanf("%d", &h);
: printf("Ans.%f3.2", 3*r*r*h/3);
:}
5.
:void main(){
: char str[255]; //254文字まで対応
: char ans[255]; //同上
: char *p;
: int i;
: memset(&str[0], 0, 255);
: memset(&str[0], 0, 255);
: scanf("%s", &str);
: p = &ans[0];
: for (i=strlen(str);i=0;i--){
: &p = str[i];
: }
: printf("Ans.%s", ans);
:}
暫く Cは使っていなかったので間違いだらけかもしれません(^^;
参考程度にお願いします(..
No.3
- 回答日時:
プログラムを作ってあげるのは簡単ですが、ちょっと意地悪したくなります。
この時期、学生さんから課題を解いてくれという質問が多いのですが、ただひたすら「分かりません」「全てを教えてください」「できるだけ簡単で理解しやすく」という言い方をする人が多いですね。たとえば英文和訳の問題で、出典も前後の文脈も示さずただ「訳してください」とか。
答える人だって生身の人間ですから、少しでも良い印象を持たれる質問方法を心がけたほうが得ですよ。
具体的には「どんな箇所が分からないのか」「自分はどこまで理解しているのか」「これまでに何を試したのか、どんな努力をしたのか」を書けば、皆さん答えやすいでしょう。
本を読んでも分からないそうですが、最初の1文字から分からないわけではないですよね。では、がんばってください。
……だけではあんまりなので、今回のポイントを挙げましょう。C言語の入門書には載っているはずです。
(1) キーボードから値を入力する方法(ヒント:scanf)
(2) 処理の繰り返し(ヒント:for, while)
(3) 文字列の長さを知る方法、文字列の中から1文字づつ取り出す方法(ヒント:配列, strlen)
#include <stdio.h> void main(void) { で始めるということしか…。scanf for while は見たことはありますが使い方は分かりません。アドバイスありがとうございました。
No.2
- 回答日時:
直答えは何なんでヒントとなるものを。
ちなみにこれは(UNIX/C)で実行したときです。
多分WINのC++でも同じ結果は得られると思いま
すが未確認で。
・コマンドラインから因数を求めるのにargvというのが
あります。これを利用して、WINから、値を入力します。
・後キーボードから値を得るための関数にscanfがあります。あんまり推奨じゃないんですがね。
(ex.2つの値をキーボードから入力して足し算を求める)
main()
{
int a,b;
scanf ("%d %d" a,b);
printf("%d + %d = %d", a, b, a+b);
return 0;
}
まあ、使い方はPRINTFとさほど変わりません。
文字とかはポインタを使ってfgetsつかってやるの
が早いかと.
(構文)
fgets(char *s, int n, FILE *stream);
最初の引数は文字を入れる入れ物で、charのポインタ型、
2番目は入れる文字数、3番目はキーボードがらならSTDIN
になります。
多分これだけわかれば簡単にできるんでがんばってくだ
さい.
後詳しい情報はしたのURLがわかりやすいですよ.
参考URL:http://users-web1.iac.ne.jp/~yasutaka/c_lang/ind …
No.1
- 回答日時:
==== 1 =====================
#include <stdio.h>
void main(void)
{
int n; /* 入力値 */
int cnt; /* カウンタ */
int gokei = 0; /* 加算合計 */
printf("n=");
scanf("%d",&n); /* 整数値nの入力 */
for( cnt = 1; cnt <= n; cnt++ ){ /* 1~nまで繰り返す */
gokei = gokei + cnt; /* cntをたす */
}
printf("1,nの合計%d\n",gokei); /* 結果出力 */
}
==== 2 =====================
#include <stdio.h>
void main(void)
{
int n; /* 入力値 */
int cnt; /* カウンタ */
int gokei = 0; /* 加算合計 */
printf("n=");
scanf("%d",&n); /* 整数値nの入力 */
for( cnt = 1; cnt <= n; cnt++ ){ /* 1~nまで繰り返す */
gokei = gokei * cnt; /* cntをかけていく */
}
printf("1,nの合計%d\n",gokei); /* 結果出力 */
}
==== 3 =====================
#include <stdio.h>
void main(void)
{
int n; /* 入力値 */
int cnt; /* カウンタ */
int gokei = 0; /* 加算合計 */
for( cnt = 1; cnt <= 10; cnt++ ){ /* 1~10まで繰り返す */
printf("n=");
scanf("%d",&n); /* 整数値nの入力 */
gokei = gokei + n; /* nをたす */
}
int kekka = goukei/10;
printf("1,nの合計%d\n",kekka); /* 結果出力 */
}
==== 4 =====================
#include <stdio.h>
void main(void)
{
int r,h = 0; /* 入力値 */
int V = 0; /* 結果 */
printf("r=");
scanf("%d",&r); /* 整数値nの入力 */
printf("h=");
scanf("%d",&h); /* 整数値nの入力 */
V = 3.14*r*r*h/3
printf("1,円錐体積 %d\n",V); /* 結果出力 */
}
============================================================
1~4の答えです。たぶんあってると思います。
わかりにくかったらごめんなさい。
最初は難しいかもしれないけど、慣れだと思います。
頑張ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 3つの倍精度浮動小数点値の平均を求めて、3つの引数全てを平均値に変更するメソッドを作成し、キーボード 1 2022/07/13 16:04
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- C言語・C++・C# c言語で自然数nを入力、2以上n以下の偶数の累積sumを求めるプログラムをfor文を使って作りたいで 4 2022/11/09 14:10
- その他(プログラミング・Web制作) パイソンのプログラミングについての質問です 2 2023/05/22 12:39
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既約分数の表示プログラム
-
10個出力で改行したいのですが...
-
printf で二進表示を行いたい。
-
Cのdoubleの浮動小数点表示につ...
-
万年カレンダーのC言語プログラ...
-
ホームページをC言語で作りたい...
-
(C言語)西暦年月日を入力して...
-
コマンドラインに出力した文字...
-
質問ですが
-
4の倍数を論理演算で表す。。
-
printfの出力内の文字をdefine...
-
C言語 プログラミング
-
strcmp
-
C言語での、年複利の計算方法...
-
コンパイルエラーについて
-
アドレスの比較について
-
入力したお金の金額からお札の...
-
3つの整数を画面から入力して...
-
C言語について
-
プログラミング言語C
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について
-
printf で二進表示を行いたい。
-
cshの文字列操作(0埋め)
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
テキストカーソル位置の取得
-
strcmp
-
unsigned int型について
-
c言語でAからZまでを表示する...
-
printf( " %2d", p * q );
-
コマンドラインに出力した文字...
-
printfの出力内の文字をdefine...
-
ホームページをC言語で作りたい...
-
コマンドプロンプトがすぐ消える
-
小数点切捨て表示
-
【C言語教えてください】sin波...
-
switch分のケースを範囲数?に...
-
二つの整数値の大小比較
-
4の倍数を論理演算で表す。。
-
defineで定数が置き換えられな...
おすすめ情報