• 締切済み

プログラミング

値 n を入力させ、1 から n までの総和を計算して、結果を表示させるプログラムを作成するのですが。入力としては、1~1000000までの数のみを受け付けるものなのですが。 実行例 ./a.out 1 からいくつまでの足し算をしますか? [1-1000000] 1 から 10 まで足した結果は 55 です。 #include<stdio.h> int main(void);

みんなの回答

noname#96023
noname#96023
回答No.4

計算を整理するとこうなるかな。日本語表記は面倒だったので書いていませんが。。。 #include<stdio.h> int main(void){ long n; scanf("%ld", %n); printf("sum = %ld", (n+1)*n/2); return 0; }

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.3

どんな環境を使うのか知りませんが WindowsやLinuxの32bitOSの場合、通常int型で表現できるのは +2147483647~-2147483648までです。 >1 からいくつまでの足し算をしますか? [1-1000000] で1000000を選ぶと軽く桁あふれします。※39bit必要です。 64bit整数が使えない環境であれば39bit表現の方法を考える所までが問題なのか、単なる出題ミスなのかの確認が必要と思います。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

Googleに計算してもらおうかと思ったけど、ソケットでごにょごにょするの面倒だった。 #include <stdio.h> #include <stdlib.h> #define INPUT_MAX 1000000 int main(int argc, char *argv[]) { char inputbuffer[16]; char cmdline[64]; char readbuffer[32]; int from = 1; int to; int answer; FILE *fp; fprintf(stderr, "%dからいくつまでの足し算をしますか? [%d-%d]\n", from, from, INPUT_MAX); fgets(inputbuffer, sizeof inputbuffer, stdin); to = strtol(inputbuffer, NULL, 10); if (to < from || to > INPUT_MAX) exit(1); snprintf(cmdline, sizeof cmdline, "/bin/echo '(%d+%d)*%d/2'|/bin/bc", from, to, to); fp = popen(cmdline, "r"); fgets(readbuffer, sizeof readbuffer, fp); pclose(fp); answer = strtol(readbuffer, NULL, 10); fprintf(stderr, "%dから%dまで足した結果は %dです。\n", from, to, answer); return 0; } 当然のオヤクソクとしてエラー処理はしてません。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

「自分でどこまで書けるのか」を補足として書いてください。

htkkyt
質問者

補足

#include <stdio.h> int main(void); int main(void) int n; printf("1からいくつまでの足し算をしますか?[1-100000]"); scanf("%d",$n); printf("1から %d まで足した結果は %d です。\n",); return(0); }

関連するQ&A

  • C言語のプログラミングです

    #include<stdio.h> main() { int ip,amt; ip=1; amt=0; while(ip!=0){ if(0 == ip % 2){ printf("値を入力してください>"); } else{ amt += ip; printf("%d" , amt); } } printf("偶数の総和は%dです",amt); return 0; } を作成したのですが、上手く実行されませんでした。 「入力された値が偶数の時のみ総和に加えるプログラム」になるように、初心者にもわかるように解説していただけませんか?

  • C言語プログラミングについて

    #include <stdio.h> int main(void) { printf("hello,world\n"); } □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ #include <stdio.h> int main(void) { printf("hello"); printf(",world"); printf("\n"); } 上の2つのプログラムをコンパイルするとどのような違いが生じるんですか??printfってどんな働きをするんですか?

  • 大至急 プログラミングについてです。

    キーボードから整数を入力し、入力された整数が100以上10以上100未満、10未満のいずれかを判定してその結果を出力するプログラムを作りなさい。 なのですが、自分が考えたのは#include <stdio.h> int main(void) { char *str[] = {"10未満", "10以上100未満", "100以上"}; int n; scanf("%d", &n); puts(str[(n >= 10) + (n >= 100)]); return 0; } ですが、友達の教科書と例回答を見ていると写真のようにしないといけないみたいなのですが、どなたかご教授お願い致します

  • プログラミングに関する質問

    つい最近、Cの勉強を始めたばかりの初心者です。本を見ながら、自分で簡単なプログラムを作成、実行させている段階ですが、以下のプログラムを実行すると、出力される値が n2 = 0 となります。 自分の解釈が未熟でお恥ずかしいのですが、私の理解では、while (i++ < n2) の部分が、iが0から+1づつ足されていって、9 < n2(10) までなり、n2 -= i; が n2 = n2 - i で n2 = 10 - 9 で1となり、n2 = 1 となると思っていました。 お手数お掛けしますが、どなたか、素人の私にもわかるように専門用語も少なめでご説明頂けないでしょうか。   #include <stdio.h> int main(void) { int i, n2; i = 0; n2 = 10; while (i++ < n2) n2 -= i; printf("n2 = %d\n", n2); return 0; }

  • プログラミングについて

    以下のプログラムをコンパイル、実行しようとするとコアダンプと表示されてしまいます。 おそらく配列がうまくいっていないというのは察したのですが、どううまくいっていないのかがわかりません。 原因を教えていただきたいです。 このプログラムは、Nを入力し、0~100までの乱数をN個表示させるものです。 配列を使っているのは、このプログラムが完成したのち、改良してその乱数同士を計算するプログラムにしたいためで、その途中段階でした。 環境は、Cygwinです。 ―――以下ソースコード――― #include <stdio.h> #include <math.h> #include <stdlib.h> int main(void){ int i,N; double u[N]; int ransu; printf("Define N : \n"); //得たい乱数の数を設定 scanf("%d",&N); for(i = 0; i < N; i++) { ransu = rand() % 101 ; //0~100までの乱数を得る u[i] = (double) ransu; printf("%.0f ", u[i]); } printf(" \n"); return 0; } 教えていただける方、いらっしゃいましたら教えていただきたいです。よろしくお願いします。

  • Javaプログラミング

    Javaプログラミングで分からない課題が出たので、教えてもらえませんか? 実行結果 1つ目の整数を入力してください。 23 2つ目の整数を入力してください。 12 足し算の結果:35 引き算の結果:11 プログラムの大枠はこのようになるのですが public class 〇〇 { public static void main(String[] args) { System.out.println("1つ目の整数を入力してください。"); } public static int add(int a,int b) { return (a + b); public static int sub(int a,int b) { } }

    • ベストアンサー
    • Java
  • プログラミングがわかりません

    1.多倍長数で表現した整数aとint型で表現した整数xを乗算し、その結果をaに格納するプログラムを作れ。 #include<stdio.h> #define KETA 12 int main(void){ int a[KETA] = { 0, 0, 0, 1, 0, 2, 4, 6, 5, 5, 3, 6}; int x = 512; /*必要な変数があれば適宣宣言しなさい*/ /*多倍長数(c) <-- 多倍長数(a) * int型(x)*/ (ア) 出力省略 return 0; } 実行結果 a = 52462354432 2.多倍長数を用いて1から80までの各整数の階乗を計算し、正しい値を表示するプログラムを作れ。 注意 80の階乗を表現するためには、少なくとも119桁の整数を格納できる多倍長数を用いなければならない。 実行結果 1! = 1 2! = 2 3! = 6 ・・・ 3.多倍長数で表現した整数aとint型で表現した整数xで除算し、その結果をaに格納するプログラムを作れ。 aがxで割り切れない場合に生じるあまりは使用せずに捨ててもよい。 除算の途中で現れる整数はint型で表現できる範囲であることを仮定してもよい。 ソースコード #include<stdio.h> #define KETA 12 int main(void){ int a[KETA] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1}; int x = 365; /*必要な変数があれば適宣宣言しなさい*/ /*多倍長数(a) <-- 多倍長数(a) ÷ int型(x)*/ (ア) return 0; } 実行結果 a = 33823777 2はまったくわかりません 1,3の出力はわかるのですが、計算過程がわかりません 教えてくださいよろしくお願いします。

  • C言語のポインタについての質問です。

    C言語のポインタについての質問です。 2つのプログラムを作り、片方で数値を入力し、 もう片方でその数値を読み取りたいと思っています。 数値入力のプログラムは次のようになっています。 #include<stdio.h> void main(void){ int A=1; int *p; p=&A; printf("%p\n",p); } この実行結果は「0012FF88」となりました。 次にこの「0012FF88」というアドレスを使って「1」を読み取る 別のプログラムを作りたいと思っています。 #include<stdio.h> void main(void) { int add; int a; printf("アドレスは?\n"); scanf("%x",&add);    //「0012FF88」と入力 a=*(int*)add; printf("%x---->%d",&add,a); } このようなプログラムを作ってコンパイルできたのですが、 実行してアドレスを打ち込むと「Win32の例外が発生しました」 となって実行できません。 何かよい方法やプログラムの問題などありましたら 教えて頂けませんか?

  • scanf文がうまくいかないのですが・・・

    下のようなプログラムを実行するとうまくいかないのですが、何故なのでしょう。 どうかお教えください。 #include<stdio.h> int main(void) { int i; char n; for(i = 0; i < 10; i++) { printf("nを入力してください>>>"); scanf("%c",&n); printf("%c\n",n); } return 0; }

  • Cのプログラミングを勉強中です。

    Cのプログラミングを勉強中です。 Aの値のBに対する割合を表示すしたいのですが、以下のように記述してもうまくいきません。 どこを直したらよいか教えていただけますか。 #include <stdio.h> int main(void) { int n1 , n2 ; printf("二つの整数を入力してください。\n"); printf("整数A:"); scanf("%d", &n1); printf("整数B:"); scanf("%d", &n2); printf("Aの値はBの%d%%です。\n" , n1 / n2 * 100 ); return(0); }

専門家に質問してみよう