灼发の夏娜
灼发の夏娜
绯红色的头发……
关注数: 63
粉丝数: 99
发帖数: 4,320
关注贴吧数: 14
Rumia 原图
#我的贴吧10年足迹,共同成长,深藏功与名 贴吧十年,时光匆匆,再回首,白驹过隙一分钟。 那些褪色的青春梦,普通得不能再普通,玩贴吧的都懂。 贾君鹏,追贴,抢楼,往事如风,足迹不留空。 http://tieba.baidu.com/home/zuji
幽幽子大人元气十足的热舞千本樱
忘却の雨 原曲:亡き王女の为のセプテット 视频来自:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fv.youku.com%2Fv_show%2Fid_XNDk4MDY1NzY4.html&urlrefer=e9f077a68ab43422a3052e8181fe0eff
忘れえぬ物语 视频来自:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.tudou.com%2Fprograms%2Fview%2FkTwBMihbRdc%2F&urlrefer=e4e5817df589654630b3f673502b3361 忘れえぬ物语 Original:阿礼の子供/テーマ•オブ•イースタンストーリー Vocal:めらみぽっぷ Album:谣 Produce:凋叶棕 あなたには闻こえていますか この音を、覚えていますか ふるい幻想蓄音円盘の音の向こう侧から 巡るいくつもの物语たちを あなたたちひとりひとりに 秘められた物语たちは そのどれもがとても素晴らしくて、素敌でだか 忘れてしまいはしないでしょう ねぇ、绝対、あなたたちを忘れないから。だから 私のことも忘れないでいてくれませんか・・・ 夜光蝶の光静かに瞬いてまるで 谁かのようにはかない梦を纺ぐ ぜんぶ持っていきます。どれ一つ无下にせず 私がここにいた证として 忘れないで、失くさないで いつづけていたいから 続く限り忘れえぬこの物语を読み続けましょう・・・ 人鱼姫になれたのですか もう一人の贵女はいましたか いつか神秘の向こう侧を覗き见ること こんな私だけど出来るでしょうか 梦を见る远く远く・・・ 梦の先はどこなのでしょう ああ、爱おしきひとと添い遂げられたならば 思いを驰せる日々はこんなにも 主役になることはできない私でも どうか、伝え続けていくことに意味をもっていたい・・・ 月见草の影にたゆたう幻想 はいつ绝えうるとも知れない淡い梦を纺ぐ 限りある时间の刹那辉く梦その 何もかもが素晴らしいから 夜光蝶の光静かに瞬いてまるで 谁かのようにはかない梦を纺ぐ ぜんぶ持っていきます、どれ一つ无下にせず 私がここにいた证として 忘れないで、失くさないで いつづけていたいから・・・ 夜が终わり新しい日がまためぐり来るようにきっとどこかで巡 合う 新たな物语を梦见て・・・ 梦の终わり/梦已到达终点
Reflection, Flower View 视频来自:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.tudou.com%2Fprograms%2Fview%2FiMq7Ja5T0kE%2F&urlrefer=51044ab2280a10cf34a6f6452594eace
Shanghai Alice in 1884 视频来自:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.tudou.com%2Fprograms%2Fview%2F2iKQGeGqknM%2F&urlrefer=4223d26b4030b2b159989a51759aad12虹色に乱れ舞う风に揺れる 风铃よ遥かに 红の美しき铃の音よ それこそ雏菊 夕颜の花闭じる音も耳も 澄ませば静かに 薄暗に指止める髪の先の 露さえ草剃 极彩に染まりゆく 雨の色よ五月雨(さみだれ)ひそかに 灯火で辿り着く 夜の道の先には我が守护 真夜中の上弦の 月の淡い光とかすかに 揺らめく柳一叶 招かざれる到来 无花果 Shanhai Alice in 1884 Vocal: nomico Album: Alstroemeria Records - BLUE NOTE / Exserens - A selection of Alstroemeria Records 原曲: 东方红魔郷 明治十七年の上海アリス 风よ 蝶々よ 梦よ 会式桜よ 春の 巫女さえ 気付く儚い思い どうか私に其れを护らせて 虹色に乱れ舞う风に揺れる 风铃よ遥かに 红の美しき铃の音よ それこそ雏菊 夕颜の花闭じる音も耳も 澄ませば静かに 薄暗に指止める髪の先の 露さえ草剃 极彩に染まりゆく 雨の色よ五月雨(さみだれ)ひそかに 灯火で辿り着く 夜の道の先には我が守护 真夜中の上弦の 月の淡い光とかすかに 揺らめく柳一叶 招かざれる到来 无花果 永远に护り抜く 瞳闭じる时まで优雅に 完全な丽しき光る刃 贵女を唯一
小小的手心 视频来自:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fv.youku.com%2Fv_show%2Fid_XMjI0OTg5MTQ0.html&urlrefer=aff205a60358622cdd5d0e33b33f8dcf
伪物语OP4
虚子
悠久之翼OP
ボクと魔女の时间
Project Genesis 假如电脑是人类而人类是电脑
沙耶之歌
滑头鬼之孙ED
眠れる星の苍い砂
北欧ゆう
测试
。。。。 突然发现发的主题在页面上消失了两个,不过仍然能根据帖子链接进入。
百鬼夜行抄 平安时代里,在京都,到了夜晚来临,整条路空无一人,这时候会出现许多奇形怪状的妖怪,像是庙会的行列一般,带著狰狞的面孔,走在大路上,人称“百鬼夜行”,有的像是破掉的茶壶、锅碗瓢盆成群结队地在夜晚的街道,据说亲眼目睹的人会遭受诅咒无缘无故地丧命。
狐の嫁入り 所谓“狐狸出嫁”,在日语中引申为“太阳雨”,也就是晴天下雨,因为传说是狐狸出嫁时为了不让人看见,所以施法术在太阳照着的时候下起雨,遮人耳目。同时,晚上出现的磷火,日语叫做狐火,磷火排列在一起看起来有点像出嫁的队列,因此被俗称为“狐狸出嫁”。
今昔物语 (《今昔物语》是日本平安朝末期的民间传说故事集,内容涵盖人鬼神佛) 神々から与えられた四季折々の岛忘れないで 壊さないで语り続ける心おぼろ月に涙よせ十五夜に梦を见る忘れないで 忘れないで感じ伝える心黒髪につげの栉爱しい人に文瞳だけで 交わしあえる心のある岛よ春は桜 秋にもみじ色とりどりに饰るは 木々の祈り草に隠れ 响くは秋の访れ呗瞳闭じて 浮かぶは懐かし 子守呗神々から与えられた四季折々の岛忘れないで 壊さないで语り続ける心异国の地に憧れて変わり行くこの岛忘れないで 忘れないで愿い込めながら……
牡丹の契り
初音ミク - 梦と叶桜 下は歌词です。 「梦と叶桜」 この川の流れるが如く 穏やかに音色が闻こえる 吹く风が頬を抚でていく 懐かしい思い出が渗む 遥かなる空は 胸を裂くように 忘れかけた记忆を醒ます 溢れるは涙 白い桜の花の季节は 远く梦の中にだけ 舞い散る花びらの嗫いた 忘れられない言叶 眠れない夜を一人きり 歩き出す ぬるい风の中 いたずらにはしゃいでいたまま 気がつけば思い出に変わる 月も云隠れ 蒸し暑い日々の 消したい记忆も儚くは 止まらない涙 刻まれる时间は残酷に ヒトを缚りつけ游ぶ 青々と茂る桜の叶は 何も语りはしない 白い桜の花の季节は 远く梦の中にだけ 舞い散る花びらの嗫いた 忘れられない言叶
鬼歌OP
预祝各位中秋快乐
Win! 终于成功拿下此吧! 圣战の吻你在哪里?
疑念 なぜ、多くの人がC言语を学习するのでしょうか?
13.基本アルゴリズム ============================================================== 13-1. 文字列の検索 ◇文字列検索(テキスト検索) まず、テキストファイルと検索文字列を指定し、标准出力に マッチした行を抽出して表示するプログラムを作成します。 前回のテストプログラムにファイル入出力机能を付け加えた ぐらいの単纯なのものです。 さらに、コマンド引数で指定する様に変更すれば、UNIXとかの grepコマンドと同じようなものができあがります。 ◇サンプルプログラム #include<stdio.h> #include<string.h> int match_str(const char *a, const char *b); void main() { FILE *fp; int chk; char a[100],fname[256],sstr[100]; printf("検索されるファイル名 : "); scanf("%s",fname); printf("検索文字列 : "); scanf("%s",sstr); if( (fp=fopen(fname,"r"))==NULL){ printf("ファイル %s が见つかりません\n",fname);return; } while(fgets(a,100,fp)!=NULL){ chk = match_str(a, sstr); if (chk==1){ printf("%s",a); } } } int match_str(const char *a, const char *b) { int i=0, j=0, max_a, max_b; while(1){ if(a[i]=='\0'){max_a = i; break;} i++; } i=0; while(1){ if(b[i]=='\0'){max_b = i; break;} i++; } for(i=0;i<max_a;i++){ if(0==strncmp(&a[i],&b[j],1)){ if(j==max_b-1){return 1;} else{j++;} } } return 0; } 尚、このプログラムは汉字等の検索もできましたが、2バイト文字に関する 特殊な処理等は一切しておりませんので2バイト文字を使用したテキストファ イルに検索をかけた场合、违うものまで検出される场合があります。 ==============================================================
12.基本ライブラリ =================================================================== 12-1. 标准入出力関数 ◇标准入出力関数 标准入出力関数の定番といえばprintfとscanfではないでしょうか。 printfについては1年ほど前、特集で详细に说明しましたが、今回は scanfも含めて関数としての振る舞いを中心に解说します。 1.书式付き出力 printf 必要なヘッダ:stdio.h 関数のタイプ:int printf(const char *format, ...); 引数 :printf("书式",obj1,obj2, ...); 戻り値 :成功(出力した文字数)・失败(负の値) 说明: const char *format の部分は "书式" の部分でここに出力させたい文字列と 変数などの书式を书きこみます。次に続くobj1等が文字列中に出力する変数の 并びになります。 2.书式付き入力 scanf 必要なヘッダ:stdio.h 関数のタイプ:int scanf(const char *format, ...); 引数 :scanf("书式",obj1,obj2, ...); 戻り値 :成功(読みこんだデータの个数)・失败(EOF) 说明: 今度はprintfとは対照的でscanf入力関数になります。 戻り値の読みこんだデータの个数というのはobj1,obj2, ...のうち、入力され た変数の个数のことです。 ===================================================================
11.构造体 ========================================================================== 11-1. 构造体について ◇构造体とは プログラムの规模が増大していくにつれ変数や配列の管理が大変になります。 これが一人で毎日プログラミングしていてるうちはまだマシなのですが、 复数人で开発したり、过去に组んだプログラムを再利用するとなると この変数は一体何に使われていたの? という混乱と时间の无駄が発生します。 そこで构造体の登场になります。 简単に说明すると构造体は复数の変数を一まとめにして扱うものです。 例えば名簿の管理など一人に対して复数の入力项目がある场合、 それぞれ変数として定义するより构造体でまとめた方がわかりやすくなります。 文字列や数値など型の违うもの同士ならなおさらです。 name[4] phone[4] email[4] age[4] ┌———┬——————┬————————┬———┐ │铃木 │090xxxxyyyy │szk@domain.com │ 25 │ ├———┼―—————┼————————┼———┤ │佐藤 │090abcdefgh │sto@domain.com │ 32 │ ├———┼——————┼————————┼———┤ │田中 │090ijklmnop │tnk@domain.com │ 34 │ ├———┼——————┼————————┼———┤ │山本 │090qrstuvwx │ymt@domain.com │ 27 │ └———┴——————┴————————┴———┘ このような管理方法だと电话番号・电子メール别に管理しなくてはならない。 .name .phone .email .age ┌———┬——————┬————————┬———┐ member[0]│铃木 │090xxxxyyyy │szk@domain.com │ 25 │ ├———┼―—————┼————————┼———┤ member[1]│佐藤 │090abcdefgh │sto@domain.com │ 32 │ ├———┼——————┼————————┼———┤ member[2]│田中 │090ijklmnop │tnk@domain.com │ 34 │ ├———┼——————┼————————┼———┤ member[3]│山本 │090qrstuvwx │ymt@domain.com │ 27 │ └———┴——————┴————————┴———┘ 构造体を使えば个人単位で情报をまとめることができます。 ◇构造体の宣言 struct 构造体名{ 型 メンバ名; : :
10.ポインタ ============================================================================= 10-1. ポインタについて いよいよC言语の难関の一つといわれるポインタに来てしまいました。 このポインタがあるために志半ばにして息绝えたプログラマーは数知れません。 ・・・ちょっといいすぎたかな? ポインタ地狱から濒死の状态でなんとか生还した私がポインタの回避について 手助けを致します。←话がちがうって(^^;; 基本的にポインタを使うとプログラムの解析が大変になるので必要最低限に 留めておくべきだと考えています。これで人に见せる时分かりやすいプログラム であれば事はスムーズに进むでしょう。 しかし、他人の书いたプログラム、しかもポインタを駆使した素晴らしい プログラムだった场合・・・地狱です。 これからポインタについて说明するわけですが、ポインタをおぼえる 过程で重要な事を述べておきます。 ・ポインタは何のためにある? ・ポインタは何を格纳する? ・ポインタを使うとどんな利点がある? の3つです。初めて习うのに上の3つを肝に命じるのも酷ですが、 それを忘れた时ポインタでつまづくのでは?っと私の経験谈です(爆)。 因みに构造体の时も、 「そんなの使わなくたって立派なプログラムできるよ~だ」と言ってたら、 やはりつまづいてしまいました(爆)。 ◇ポインタって何? それでは早速ポインタとはC言语ではどんな働きをするものか简単に 说明します。 一般的にポインターと呼ばれるものの共通点は、目的地を指し示すものになり ます。 ポインター犬は获物を発见すると立ち止まってその方向を指し示すため、それが 名前の由来になったそうです。(参考:広辞苑) 勿论レーザーポインタも目的とするものをレーザーで指し示すためにあります。 ・・・そういえばマウスの矢印もポインターっていいますね(笑)。 おまけにショートカットやリンクもそうです。 そしてC言语のポインタもある场所を指し示すものなのです。 -そのある场所とは? プログラムの场合、场所として扱えるのはメモリになります。 今まで、メモリーに関しての说明もしていないので従来のメモリの番地が・・・ という说明からは入らないつもりです。 それよりもグラフィカルで直感的に理解できるような方法を考えています。 例としてデスクトップとアイコンとマウスポインタで说明します。 デスクトップはメモリー全体を示します。 そしてアイコンが所々に散乱しています(笑)。 そこでマウスポインタに指示を与えるとします。 まず左上のマイコンピュータのアイコンをクリックしてください。 ・・・と指示します。 そのためには目でマウスポインタを追いながら目的のアイコンまで移动します。 そしてクリックします。これで目的のアイコンが选択されました。 ・C言语ではポインタが目的の変数の场所を示した状态になります。 それからダブルクリックするなり操作します。 ・C言语のポインタでも目的の変数を操作することが可能になります。 最初の「ポインタは何を格纳する?」は変数の场所でした。 マウスポインタの例ではあまりに抽象的だったので実际のプログラミ ングに置きかえるのは难しかったのではと后で読み返すとそんな感じでした。 それではもっと本质的な部分をショートカットの例を用いて说明します。 ◇ショートカットの例 まず、デスクトップ上で右クリックし新规作成でショーカットを选びます。 これで一応ショーカットは作られますがこれだけではどこにもリンクしていない ためまったく机能しません。 ・C言语ではポインタの宣言にあたります。 次に、リンクする场所を决めます。URLでもプログラムの场所でもかまいま せん。これでやっとショートカットとして机能します。 ・ポインタに変数のアドレスを设定するのと同等です。 そしてそのショートカットをダブルクリックすることにより远隔操作を可能に します。 ・ポインタを使って本来操作できない领域にある変数を使うことができます。 注意! ショーカットで気をつけないといけないのはリンク切れです。 ポインタにおいても同じ事で设定したアドレスに目的の変数が存在しなくなった 场合プログラムが暴走する可能性があります。 =============================================================================
9.プリプロセッサとメイクファイル ====================================================================== 9-1. 种类 プリプロセッサの种类は以下8种类あります。 #include #define #if #else #elif #endif #ifdef #ifndef #includeについては前に少しだけ说明しましたが说明不足ですね(^^; しかも分割コンパイルの仕方も书いてない。それも含めてコンパイラの働きか ら说明する必要がありそうです。 それでも高度な开発环境でプログラムを书いている人には分割コンパイルや makeについて特に気にしなくてもいいので说明すべきかどうか... gcc や lcc などコンソール型のコンパイラを利用する方には比较的重要なので 简単に说明しようと思います。 ======================================================================
8.関数 ============================================================================ 8-1. 関数の型 いよいよ今回からC言语のメインである関数に入ります。 そもそもC言语はmain関数に始まりmain関数の终了と共にプログラムが终了しま す。 いままでは、main関数のみでプログラムしていたのであまり関数の意识は无かっ たと思います。printfやscanfも関数ですが実态そのものを见たわけで无く関数の 中身はブラックボックスのまま使っていたから単に特别な命令セットのような感 覚だったと思います。 さて、これからはmain関数だけでなく他の関数も定义し利用していきます。 あまり难しく考えることもいりません。他の言语でプログラミングをやっていた 人なら、main関数がメインルーチン、これから作る别の関数がサブルーチンと考 えたほうが自然だと思います。 C言语がはじめての人も便利なものである事を実感していただければ幸いです。 ではまず、下のようなプログラムがあったとします。 #include<stdio.h> int a,b,x; a=5; b=6; main() { x=a*a+b*b; printf("a^2+b^2=%d\n",x); } 実行すれば、 a^2+b^2=61 と表示されます。つまりaの二乗+bの二乗=61をしめしています。 ここで、x=a*a+b*b を一つの関数として定义します。関数名はfunctionとします。 関数定义: function() { x=a*a+b*b; } これでOKです。そしてメイン関数侧ではfunction関数の呼び出しを行うので x=a*a+b*b; の代わりに function(); とよいのです。 ただし、変数と同じで使用にあたって宣言が必要になりますのでグローバル领域 でもメイン関数内でも结构ですからプロトタイプ宣言をしておいてください。 プロトタイプ宣言の例:void function(); #include<stdio.h> void function(); /* プロトタイプ宣言 */ int a,b,x; a=5; b=6; main() { function(); printf("a^2+b^2=%d\n",x); } function() { x=a*a+b*b; } これで1つ関数を作る事ができました。 上记のソースコードを元に今回の话を进めるわけですが、まずは订正版を以下 に掲载します。 #include<stdio.h> void function(); /* プロトタイプ宣言 */ int a=5, b=6, x; /* 宣言时に初期化 */ main() { function(); /* function関数の呼び出し */ printf("a^2+b^2=%d\n",x); } void function() /* プロトタイプ宣言と同じvoid型にする */ { x=a*a+b*b; } 前回では、型を持たない関数(void)で宣言しました。 これは、関数の终了时に値を返さないことを意味します。 分かりやすく言えば関数内の処理だけおこなうサブルーチンとなります。 プログラムの流れは 1.main()が始まる 2.function()が呼び出され処理が移る 3.function()が终了しmain()に戻る 4.main()の终了 になります。 それでは型をもつ関数としてint型関数を绍介します。 さっきのプログラムをint型関数を用いて表すと。 #include<stdio.h> int function(); /* プロトタイプ宣言でint型にする */ int a=5, b=6, x; /* 宣言时に初期化 */ main() { function(); /* function関数の呼び出し */ printf("a^2+b^2=%d\n",x); } int function() /* プロトタイプ宣言と同じint型にする */ { x=a*a+b*b; return 0; /* functionの终了と戻り値 */ } ここで return という新しいキーワードが出てきました。 このキーワードは関数から抜け出す(正确には呼出元の関数に戻る)働きがあり ます。そのとなりの0は関数を终了する时の戻り値の指定です。 void以外の関数では基本的に戻り値の指定が必要です。処理系によっては int型の场合、戻り値を省略すると成功(0)・失败(-1)で返す场合があります。 その他、変数と同じようにfloat,double型があります。 ============================================================================
7.○×ゲームを作ってみよう =========================================================================== 7-1. ゲームのルールと构成 ◇まずはゲームのルールと构成から まず、3×3の领域に先攻が○、后攻が×で空白を埋めていきます。 そして、先に1列揃ったほうが胜ちとします。 入力方法としては数字の1~9を使い各エリアはテンキーの配列に准じます。 それでは、ゲーム全体の流れを一気に书きます。 ○开始 │ □オブジェクトの初期化 │ △ □先攻—△←———┐不正 │ ■数値入力│ │ ◇判断——┘ │ ▽ │ □表示 │ ◇胜负判定————┐胜败が决定 │ │ □后攻—△←———┐不正 │ │ ■数値入力│ │ │ ◇判断——┘ │ │ ▽ │ │ □表示 │ │ ◇胜负判定————┤ ▽ │ │ ○终了 という感じです。フローなのかPADなのか訳のわからないもの书いてすみませ ん。 一応 ○端末(プログラムの开始と终了) □処理 △ループ开始 ▽ループ终了 ◇判断 ■入力 としています。 おまけにこの时点でバグがあります。引き分けの时の処理をしていません。 それも、后に付け加えるつもりで予定しています。 ===========================================================================
6.プログラムの制御 =============================================================================== 6-1. if文 もし…なら~ いままでは、プログラムは上から顺に书いていき、実行も顺番どおりになって いました。 しかし、『はい・いいえ』で答えてそれぞれに対応した処理を行う时など プロセスを分岐させたい时、または回数を指定して缲り返し処理を行う时は プログラムを构造化して処理・制御する必要があります。 とういことで、プログラムの制御第1回はプロセスの分岐(if)について说明 します。 ◇If~もし…だったら~ ここで、でてきたIfキーワードをつかって基本的な书式を说明します。 书式1: if(条件)条件が真の时に実行する1文; 书式2: if(条件)条件が真のときに実行する1文; else 条件が伪のときに実行する1文; の2つです。 ここで1文でなく一连の処理をさせたい时は{中括弧}で囲んで复文にすれば OKです。 また、条件の真伪は0か0以外かで判断します。 しかも、if文は2重3重に使うことができるので、分岐の多重化ができます。 今日は、理屈抜きでいきなりプログラムを作ってしまいます。 内容はどれでもいいのですが。判定プログラムにします。 题して『モバイル度判定』 まず、质问内容を决めておきます。 1.ノートパソコンを欲しいと思ったことがある。 2.いつも持ち歩いて使いたい。 3.たとえCDドライブがなくても軽いほうがいい。 4.分离型と一体型选ぶなら分离型だ! 5.HDドライブはいらない? 6.パソコンとの连携は当たり前。 7.メールだけでいい。 の7项目にしてみました。 构造としては、以下のような感じです。 1┬モバイル度0、今は特に必要ないでしょう。 2┬オールインワンノートがお勧めです。 3┬4┬薄型CDドライブ内蔵軽量ノートPCがいいでしょう。 │ └临机応変に使うあなたにはベースシステム分离型に决定! 5┬どうしてもパソコンがいいあなたはB5以下の小型PCがお似合い。 6┬PCと连携してあなたもPDA达人! 7┬电话帐からスケジュールまで携帯からケーブル一本で个人管理 └メールを快适にポケットボード では、実际にプログラミングしていきましょう。 最初に1の质问 printf("ノートパソコンを欲しいと思ったことがある。\n"); そして、YかNで答えます。それからifで分かれていきます。 では実际のプログラム、 #include<stdio.h> main() { char q1,q2,q3,q4,q5,q6,q7,buff; printf("ノートパソコンを欲しいと思ったことがある。(y/n):");scanf("%c%*[^ \n]",&q1);buff=getchar(); if(q1=='y'||q1=='Y'){ printf("いつも持ち歩いて使いたい。(y/n):");scanf("%c%*[^ \n]",&q2);buff=getchar(); if(q2=='y'||q2=='Y'){ printf("たとえCDドライブがなくても軽いほうがいい。(y/n):");scanf("%c%*[^ \n]",&q3);buff=getchar(); if(q3=='y'||q3=='Y'){
5.演算子 ======================================================================== 5-1. 四则演算・余剰 演算子とは、+-×÷=などの计算に使われる记号のことです。 今日は手始めとして四则演算子(+-×÷)についてやっていこうと思います。 ◇加算 言われるまでもなく足し算です。もちろん记号は+です。 -ところで、C言语ではどこで计算するのでしょう? 実は计算式のあるところすべてにおいて计算しているのです。 だから、 1 + 1 と书けば1+1を计算して2という値(リテラル)としてコンピュータは理解し ます。 いま上の书いたのは式ですが全体が文(ステートメント)になってないと文法エ ラーが出るので最低でも、 1 + 1 ; とする必要があります。 しかし、これでは『意味な~いジャン!』って言われそうですね。 确かに、计算はしますがそれだけで结果を使用せず、また出力も保存もせず 破弃するからです。 それではいけないので今日は计算结果を画面に出力するプログラムを书きます。 いままでprintf()でリテラルを表示するとき、 printf("%d\n",10); のようにしていましたね。さっき言った様に式があると自动的に计算してその 答えをリテラルとして理解するので、 printf("%d\n",1+1); という书き方が通用します。もちろん画面には2と出力されます。 それでは、次に行きましょう。 ◇减算 减算も加算同様说明するまではないのですが『左から右の値を引く』というこ とです。记号は-です。 printf("%d\n",13-3); はい、画面に10と表示されましたか? では、次は挂け算 ◇乗算 挂け算になってちょっと通常の常识と违うものが入ってきます。 それは、记号が×でなく*であることです。 なぜ? なぜっていわれても半角文字に×が用意されていないから代用して使 っているんでしょう。话によると小文字のxと混同しやすいから外したとか... なのでしきは、 2 * 3 という感じになります。では出力させて见ましょう。 printf("%d\n",4*6); 24と出力されましたか? ◇除算 最后は割り算です。これも÷という记号はなくて/(スラッシュ)を使います。 なぜ÷がないか?これも闻いたところ%と混同する(本当か?)のだそうです。 それともう一つ気をつけなければならないのは、整数の割り算の商は整数にな るということです。 たとえば、10÷4としたとき、両方とも整数なので商は2になります。 10÷4=2…2 (商は2、余り2) これを余りを出さない割り算にするには强制的に実数にしてあげることです。 10.0÷4.0=2.5 このような感じです。 では最后に上の二つの例を表示させて见ましょう。 #include<stdio.h> main() { printf("(整数)10÷4=%d…%d\n",10/4,10%4); printf("(実数)10÷4=%.1f\n",10.0/4.0); } 结果: (整数)10÷4=2…2 (実数)10÷4=2.5 と表示されたと思います。プログラム中の式に出てきた演算子%は余りを算出 するものです。 ◇余剰 これは整数どうしの割り算の时に使用可能で余りを算出する演算子です。 10 % 3 のように使います。 printf("%d\n"10%3); とすれば、画面に1と出力されたと思います。 この余剰演算子は実数に使うとコンパイルエラーになるので気をつけてください。 あと、割り算をするわけなので0で割って余りを...ってのも禁止です。 最后に一言注意! 绝対0で割らないでね。计算できないから... ========================================================================
4.记忆クラス ======================================================================== 4-1. 自动・静的 ◆记忆クラス 久々、変数の宣言に戻ります。すでに配列をやったのでこれからは変数と配 列をまとめてオブジェクトと呼びます。后に出てくる构造体などもオブジェク トに含まれます。 さて、いままでの変数の宣言の仕方について、 [修饰子] [データ型] [オブジェクト名] = [初期化値] ; または、 [修饰子] [データ型] [オブジェクト1], [オブジェクト2] ... ; という形でした。修饰子とはunsignedなどの型を拡张する接头语です。 …で、この修饰子についてまだ、やってないものがあります。 上のようにオブジェクトを宣言するとメモリにそのオブジェクト用の领域を确 保します。 そして、プログラムが终了するとそれらの领域はすべて开放されてしまいます。 しかし、プログラム中でほんの一部分でしか使わないオブジェクトが多ければ メモリは领域を确保して使わない时间が长くて无駄になります。(ほかのプログ ラムにとって迷惑) ということで、使用频度の低いオブジェクトや(特に记录の必要のないもの)は 必要时にだけメモリを确保すればいいことになります。 これらのメモリの领域确保の方法を记忆クラスで设定します。 记忆クラスには次のようなものがあります。 自动(auto) 静的(static) レジスタ(register) 外部(extern) 宣言するときは修饰子よりも前につけます。 auto unsigned int a; static const int b; register volatile int c; extern signed long int d; という感じです。 ◇自动・静的 まずは、自动记忆域期间(auto) 通常、関数の中で记忆クラスを省略して宣言するとautoになります。 この记忆クラスはある関数中で宣言されたときにオブジェクトの领域をメモリ に确保し、その関数の终了と同时にメモリから开放されます。 なお、初期化を忘れたときの値は不定です。 void fn() { auto int i; i = 3; } 1.ある関数 fn() の実行 2.auto int i; によって整数型変数iがメモリに确保される(図1) 3.i = 3; によってiの初期化(3を代入:図2) 4.関数fn()の终了と同时に変数iを开放(図3) ┌——————┐ ┌——————┐ ┌——————┐ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
3.printfを使いこなそう ========================================================================= 3-1. 书式付フォーマット ◆书式付フォーマット1 それでは、第一回目は変换指定子から -変换指定子? えーっと、printf()文中にある%dなど最初にパーセントがついたものです。 printf("var i = %d ",i); ~~~~ まずは、%dから说明しましょう。 ◇%d %dは変数(定数)の値を10进整数として出力します。 printf("%d\n",25); printf("%d\n",-3); 出力: 25 -3 文字定数ならその文字コードが出力されます。 printf("%d\n",'A'); 出力: 65 注意として整数型のみで使用してください。実数型の定数で%dを使っても正しい 値を出力できません。 ◇%i %iは%dと同じ働きをします。 ◇%u %uは符号なしの10进整数として表示します。 printf("%d\n",25); printf("%d\n",-3); 出力:(intが16bitの场合) 25 65533 出力:(intが32bitの场合) 25 4294967293 =========================================================================
2.変数・配列 2-1. 変数の说明と宣言 ◆変数とは 数学で変数といえば未知数であったり、ある関数の要素だったりします。 とにかく、使う変数を宣言することから事は始まります。 ということで変数の宣言の仕方 int a ; /* 整数型の変数 a を宣言 */ これで a という変数が宣言されました。これでこの変数を使うことが出来ます。 次に、どうやって使うか。 a = 10 ; はい、ここでは変数 a に10を『代入』しました。C言语では(=)は右の数字を 左に代入する记号として使われています。 ですから、 a = 3 + 5 ; /* a に 8 が代入されます。*/ a = 10 ; としても何ら问题はないのです。 これを理解するのに1年间かかりました。(小学3年の时ですけど...) こうやって変数に计算结果や定数を代入できますが、これだけでは画面に表示 されないので『见えません』 そんなわけで、今日は変数を表示させるところまで行きましょう。 下のプログラム #include<stdio.h> main() { int a = 1; /* 初期値1の整数 a */ printf("%d\n",a); } 実行すると画面に1と表示されます。 解说: ここでprintf関数は新たな使い方をしています。%dは10进整数を表示する 変换指定です。そして、文字列の后、(,)カンマで区切って変数名を书きます。 もちろん文字列と组み合わせて表示することが出来ます。 その例を以下に示 します。 #include<stdio.h> main() { int a = 1; printf("変数 a の値は%dである\n",a); } 出力结果: 変数 a の値は1である となります。%dの位置にちょうど数値が入っていることがわかります。 また、复数の変数を表示することが出来ます。 #include<stdio.h> main() { int a = 1, b = 2, c = 3; printf("各変数の値は a = %d, b = %d, c = %d である\n",a,b,c); } 出力结果: 各変数の値は a = 1, b = 2, c = 3 である %dと変数の顺番が対応しているのがわかります。 このようにprintfを使うことで変数の中身も表示できます。 ◆変数を宣言します まず、基本的な変数の宣言から int a; これは、整数型の変数 a を宣言するという意味になります。 intはinteger(整数)の意味になります。 また、复数の変数を宣言する场合 int a, b, c ; このように、同じ型の変数はカンマで区切ることにより続けて宣言できます。 よって上の変数宣言の形式は、 データ型 変数名1,変数名2,・・・ ; となっています。 それでは、変数の宣言はどこにすればよいのでしょうか? 変数はプログラム中すべての领域で宣言できますが、宣言をしたブロック内 の范囲でしか使用できません。 これは、共同作业でプログラムを组んだ场合、同名の変数が存在する时があ ります。そのとき违う目的で宣言された変数が共有されてしまうと処理がうま くいかなくなります。 そのためC言语では変数の有効な领域に制限が设けられています。
1.C言语入门 文法の基础から 1-1. なにもしないプログラム はじめにC言语の书式について解说します。 まずは何もしないプログラム、いわゆるスケルトンを作成します。 main() { } 上のプログラムをコンパイルするとスケルトンが生成されます。 ただし、実行しても何も起きませんので悪しからず。 解说: このプログラムはコンパイルできる最少のコードで构成しています。 まずmainは関数名でコンパイラは最初にmain関数をさがしてコンパイルしま す。 よって必ずメインプログラムにはmain関数を1つだけいれる必要があります。 次にある小括弧の左と右、これらに囲まれた领域は関数が受け取る引数を书 きます。このプログラムの场合引数がないのでなにも书かれていません。 最后に中括弧と囲まれた领域、ここに実际の処理を书きます。つまり、ここ に何も书かれていなかったため何もしないプログラムが生成されてしまいまし た。 以上をまとめると 関数名(引数) { 処理内容を记述する部分 } が関数の书式でその中の1つはmain関数である必要があるということになりま す。 また、これらよりC言语のプログラムは関数単位で実行することもわかります。 ここでは一つの関数しかないのですが…、二つ以上ある场合でもmain関数から 実行されてそのmain関数内で别の関数を呼び出すことによって処理を移行でき ます。これについては后ほど说明して。最初のうちはmain関数のみのプログラ ムを书くことからはじめます。
こんにちは、ここに歓迎しています。 ようこそ。
军阀前来围观 就是这样,乃们有什么意见
1
下一页