C/C++の宿題を片付けます 58代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/01/18(水) 03:35:45【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/l50#tag993
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0412デフォルトの名無しさん
2006/01/22(日) 01:09:260413デフォルトの名無しさん
2006/01/22(日) 01:40:29ポインタについて質問させてください
int i;
void*p;
uint32*ui32p;
p = malloc(1024);
ui32p = (uint32* )p;
for (i=0;i<5;i++)
ui32p[i] = i*i;
↑のソースで一番下の行がどういった動作をしているのかがわかりません
uint32型のポインタに[ ]をつけるというのはどういうことなのでしょうか?
文字列のポインタに[ ]をつけるのはよく見かけるのですが・・・
0414デフォルトの名無しさん
2006/01/22(日) 01:41:11こんなのでいかがか
int find_max(int *a, int m, int n) {
int b, c;
switch (n - m) {
case 1:
return a[m] < a[n] ? a[n] : a[m];
case 0:
return a[m];
default:
return (b = find_max(a, m, (m + n) / 2)) < (c = find_max(a, (m + n) / 2 + 1, n)) ? c : b;
}
}
int find_min(int *a, int m, int n) {
int b, c;
switch (n - m) {
case 1:
return a[m] < a[n] ? a[m] : a[n];
case 0:
return a[m];
default:
return (b = find_min(a, m, (m + n) / 2)) < (c = find_min(a, (m + n) / 2 + 1, n)) ? b : c;
}
}
#include <stdio.h>
int main(void) {
int i, a[32];
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) scanf("%d", a + i);
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) printf("%d\n", a[i]);
printf("\nMax:%d\nMin:%d\n", find_max(a, 0, sizeof(a) / sizeof(a[0]) - 1), find_min(a, 0, sizeof(a) / sizeof(a[0]) - 1));
return 0;
}
0415デフォルトの名無しさん
2006/01/22(日) 01:42:14何のポインタだろうが、a[i]は*(a + i)と同じ。
0416デフォルトの名無しさん
2006/01/22(日) 01:46:49ポインタに[]をつけるのは配列と同じとでも考えてればよか
char *p="ABCDEF";
*pはAだしp[0]もAだ
0417413
2006/01/22(日) 01:52:11数値型に対して*(a + i)のようにするというのがどういうことなのかわかりません
文字列ならば*(a + i)でi個先の文字を参照したりできますが数値型だと何を参照するのでしょうか?
0418デフォルトの名無しさん
2006/01/22(日) 01:53:480419デフォルトの名無しさん
2006/01/22(日) 01:56:58[2] 問題文(含コード&リンク):
以下の関数を完成せよ。
int hoge(x,y)
int x,*y;
{
/*
関数の機能:
「変数xの値」と「ポインタyが示す変数値」をかけたものを「ポインタyが示す変数値」
に代入する。戻り値は「変数xの値」と「ポインタyが示す変数値」を足したものとする。
*/
}
3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月23日でお願いします。
[5] その他の制限:特にないです。
0420デフォルトの名無しさん
2006/01/22(日) 01:58:540421デフォルトの名無しさん
2006/01/22(日) 02:01:080422デフォルトの名無しさん
2006/01/22(日) 02:01:40*&*y = *&*&*&x*&**y;
return *&*&*&x+&**y;
0423413
2006/01/22(日) 02:06:16ということは413のコードだと1024バイトの領域を確保してるのでuint32型の数値が256格納できる
したがって、ui32p[0]〜ui32p[255]までは値を格納できると考えてよいのでしょうか?
0424デフォルトの名無しさん
2006/01/22(日) 02:06:34ありがとうございます。
0425デフォルトの名無しさん
2006/01/22(日) 02:08:15そういうこと
>>419
その引数の宣言方法は古い。その先生に「貴方の頭は化石ですか?」と
言ってやれ。
int hoge(int x, int *y) {
*y *= x;
return x + *y;
}
0426デフォルトの名無しさん
2006/01/22(日) 02:08:24同じと考えるのは微妙にマズイ
0427デフォルトの名無しさん
2006/01/22(日) 02:09:23工エエェェ(´д`)ェェエエ工工
0428デフォルトの名無しさん
2006/01/22(日) 02:10:29ま、そのうち分かるんだろうけど、面倒なことにはなるな。
しかし、そこのとこの教育方法については毎回宗教戦争じみたことに
なるから、やめとこ。
0429デフォルトの名無しさん
2006/01/22(日) 02:12:37マズイがマズはこれでいいと思う
本格的に困ったらまた相談に来るなり
自分で調べるなりするでしょ
大学の授業とかなら同じと考えてもまぁいいと思ってそう書いちゃった
0431デフォルトの名無しさん
2006/01/22(日) 02:13:260432デフォルトの名無しさん
2006/01/22(日) 02:14:400433デフォルトの名無しさん
2006/01/22(日) 02:24:48今日試験を受けた人間からがゆとり世代でしょ?
0434デフォルトの名無しさん
2006/01/22(日) 03:22:50こうじゃないのか?
int hoge(int x, int *y) {
int tmp = *y;
*y = x * tmp;
return x + tmp;
}
0435デフォルトの名無しさん
2006/01/22(日) 03:54:24それと>425のどこが違うのかね。
0436デフォルトの名無しさん
2006/01/22(日) 04:14:46見た目と手間と使用メモリ
0437デフォルトの名無しさん
2006/01/22(日) 04:28:18>>425の場合はy = 6, ret = 8
>>434の場合はy = 6, ret = 5
てことじゃねーの?
0438デフォルトの名無しさん
2006/01/22(日) 09:41:00[2] テキストファイルを読み込み、単語検索のアルゴリズムを作成する。
テキストファイルの中には数字や記号はなく、単語と単語の間はスペースが存在します。
[3]
[3.1] OS:Linux
[3.2]コンパイラ名:gcc
[3.3]言語:C
[4]2006/1/30まで
手こずってます。よろしくお願いします。
0439デフォルトの名無しさん
2006/01/22(日) 10:04:26[2] 問題文(含コード&リンク):
キーボードからEnqueue,Dequeue,Endの指示を読み込み、Enqueueであればscanfで整数データを読み込み、
データをキューへ追加、Dequeueであればキューからデータを削除するプログラムを作ること。
キューの処理はEndの指示を読み込まれた時点で終了する。各指示の実行後のキューを画面表示するようにすること。
[実行例]
1-20>a
Enqueue[1],Dequeue[2]End[0]:1
Data>4
List:[ 4]
Enqueue[1],Dequeue[2]End[0]:1
Data>3
List:[ 4, 3]
Enqueue[1],Dequeue[2]End[0]:2
List:[ 3]
Enqueue[1],Dequeue[2]End[0]:1
Data>5
List:[ 3, 5]
Enqueue[1],Dequeue[2]End[0]:2
List:[ 5]
Enqueue[1],Dequeue[2]End[0]:2
List:[]
Enqueue[1],Dequeue[2]End[0]:0
List:[]
1-20>
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月23日まで
[5] その他の制限: 学び始めて間もなく理解していきたいので、多少コメントを含めて頂けると助かります。
宜しくお願いしますm(_ _)m
0440デフォルトの名無しさん
2006/01/22(日) 11:10:26ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1520.txt
このプログラムはキューに入ってるデータは表示されてないから、あとは自分で考えてくれ。
0441デフォルトの名無しさん
2006/01/22(日) 11:31:46int SWProc(void){ printf("発見\n"); return 0; }
int SerchWord(char *filename,char *key,int(*lpSWProc)(void) = SWProc)
{
FILE *in = fopen(filename,"r");
if(!in) return 0;
char *lpBuf = (char*)calloc(1024,sizeof(char));
if(!lpBuf){ fclose(in); return 9; }
while(fscanf(in,"%s",lpBuf)!=EOF)
if(!strcmp(lpBuf,key)) lpSWProc();
free(lpBuf); fclose(in); return 1;
}
SerchWord関数
char *filename 対象ファイルの名称
char *key 検索文字
int(*lpSWProc)(void) = SWProc コールバック関数もどき(判らなければ指定しなくてOK)
filenameを"r"モードでオープンして全単語(EOFまで)をkeyと照会
もしkeyとその単語が一致した場合SWProc関数もしくは第3引数で指定された関数が処理される。
使い方 SerchWord("nurupo.txt","こんにちは");
戻り値 0ならば関数失敗、0以外なら成功
#include <stdio.h> #include <stdlib.h> #include <string.h>
追伸:C++の機能つかっちまいました
0442デフォルトの名無しさん
2006/01/22(日) 12:22:25[2] 問題文(含コード&リンク): http://making-gold-princessmaki.hp.infoseek.co.jp/last.htm
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: V.C6.0
[3.3] 言語: C++
[4] 期限: 今日中
57代目の852さん再アップお願いします。助けてください。
0443デフォルトの名無しさん
2006/01/22(日) 14:09:37[1] 情報処理
[2] ニュートン法orロンバーグ積分を用いて数値計算を行う(無理数など、出来れば自然対数の底)
[3] ビジュアルc
[3.1] OS: Windows
[3.2] ビジュアルc
[3.3] c++
[4] 今日中
[5] その他の制限:for文if文中心でお願いします。
0444デフォルトの名無しさん
2006/01/22(日) 15:00:07[2] 問題文
整数(AとB)をスキャンして
Aの値はBの〜%か求める。
[3] C Pad for Borland C++Compiler
[3.1] OS: Windows XP Pro
[3.2] BCC55
[3.3] C
[4] 今日中
[5] まだまだ始めの方なんですけど
0445デフォルトの名無しさん
2006/01/22(日) 15:16:15どうでもいいけどSearchな。
0446デフォルトの名無しさん
2006/01/22(日) 15:17:48#include<stdio.h>
int main()
{
int a,b;
scanf("%d,%d",&a,&b);
printf("%dは%dの%d%です\n",a,b,a*100/b);
return 0;
}
0447デフォルトの名無しさん
2006/01/22(日) 15:17:48#include<stdio.h>
int main(void){
long a,b;
double par;
printf("Aを入力:");scanf("%ld",&a);
printf("Bを入力:");scanf("%ld",&b);
par = (double)a*100/b;
printf("AはBの%f%\n",par);
return 0;
}
0448デフォルトの名無しさん
2006/01/22(日) 15:19:450449デフォルトの名無しさん
2006/01/22(日) 15:27:47ダメ。
printf()の書式中では'%'は"%%"としないといけない。ついでに言えば、percentなんだからparはないだろ。
0450デフォルトの名無しさん
2006/01/22(日) 15:28:46>>447
有り難うございます〜。
447の中には習ってないのがあったので
446を使わせてもらいます。
二人とも有り難うございました〜^^
0451デフォルトの名無しさん
2006/01/22(日) 15:30:55あ・・\\だけじゃなかったか
スペルは英語できないから勘弁
0452デフォルトの名無しさん
2006/01/22(日) 15:37:06ハズカシス
0453デフォルトの名無しさん
2006/01/22(日) 15:39:05'\\'はいつでもそう書かなければならないけど、
'%'はprintf()系scanf()系の書式文字列内のみだから念のため。
0454444
2006/01/22(日) 15:44:060455デフォルトの名無しさん
2006/01/22(日) 15:48:01お、本当だputsだと%2個出る
0456デフォルトの名無しさん
2006/01/22(日) 15:55:58俺通ってるガッコの先生の課題だな俺は
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1522.txt
で出したんだが俺バカチンなのでこのスレの諸兄の方々の熱い煽りとツッコミをお待ちしています
0457デフォルトの名無しさん
2006/01/22(日) 15:59:570458デフォルトの名無しさん
2006/01/22(日) 16:02:02それを直すんなら
訂正前>while(s1[i]==s2[i]){
訂正後>while(s1[i] != '\0' && s1[i]==s2[i]){
だな。
0459デフォルトの名無しさん
2006/01/22(日) 16:05:42s2 もチェックな
あと関数名がキモい
0460デフォルトの名無しさん
2006/01/22(日) 16:10:05不要。
あと関数名がキモいのは同意。
0461デフォルトの名無しさん
2006/01/22(日) 16:14:580462デフォルトの名無しさん
2006/01/22(日) 16:19:020463デフォルトの名無しさん
2006/01/22(日) 16:28:020464デフォルトの名無しさん
2006/01/22(日) 16:28:02[2] 問題文(含コード&リンク):
球の半径r(倍精度浮動小数点型の変数)の値を関数scanfで入力して、
その面積S1と表面積S2(S1,S2は倍精度浮動小数点型変数)を計算し、
表示(出力)するという作業を繰り返すプログラムを作成せよ。
ただし、半径rとして数値0が入力されたときには、その処理を終了することとする。
また、面積はS1=π(r*r)、表面積はS2=4π(r*r)で計算されるものとする。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:StudyC
[3.3] 言語:C
[4] できれば火曜までに
[5] 宿題とかじゃなく、テスト勉強のですがお願いします。
0465デフォルトの名無しさん
2006/01/22(日) 16:37:580466デフォルトの名無しさん
2006/01/22(日) 16:38:330467デフォルトの名無しさん
2006/01/22(日) 16:42:00#include<stdio.h>
#define pi 3.14159
void kyu(double r){
printf("S1 = %f\n",pi*r*r);
printf("S2 = %f\n",4*pi*r*r);
}
int main(void){
double r;
while(1){
scanf("%lf",&r);
if(r==0.0)break;
kyu(r);
}
return 0;
}
0469デフォルトの名無しさん
2006/01/22(日) 16:49:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1524.txt
0471デフォルトの名無しさん
2006/01/22(日) 17:19:49[2] 問題文:
要素数20、char型の配列mojiを用意し、入力する。ポインタ変数を用いて
文字数を求めるプログラムを作成しなさい。
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数
実行結果
文字列入力==>ABCD
文字数:4
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 明日の午前まで。
[5]標準関数strlenは使わないこと。
0472デフォルトの名無しさん
2006/01/22(日) 17:20:57[2] 問題文:
char型の配列mojiを用意し、初期化する。ポインタ変数を用いて大文字、
小文字、数字の文字数を求めるプログラムを作成しなさい。
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数
実行結果
英大文字:3
英小文字:2
数字:3
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 明日の午前まで。
この2つです。お願いします。
0473デフォルトの名無しさん
2006/01/22(日) 17:30:43int strlen(char *lpStr)
{
int count=0;
while(lpStr[count]) ++count;
return count;
}
こんなんでいいんじゃない?
>>472
2バイト文字は含むの?
0474デフォルトの名無しさん
2006/01/22(日) 17:31:16#include<stdio.h>
int main(void)
{
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数
printf("Input string\n");
gets(moji);
for(cnt=0;*(mp+cnt)!='\0';cnt++)
{}
printf("count:%d\n",cnt);
return 0;
}
0475デフォルトの名無しさん
2006/01/22(日) 17:35:142バイト文字は含まないです。
0476デフォルトの名無しさん
2006/01/22(日) 17:38:24#include<stdio.h>
int main(void)
{char moji[]="AB120aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数
int cnt;
alphl=0;
alphs=0;
num=0;
for(cnt=0;*(mp+cnt)!='\0';cnt++){
if(*(mp+cnt)>='A'&&*(mp+cnt)<='Z'){
alphl++;
}
else if(*(mp+cnt)>='a'&&*(mp+cnt)<='z'){
alphs++;
}
else if(*(mp+cnt)>='0'&&*(mp+cnt)<='9'){
num++;
}
}
printf("大文字:%d\n",alphl); printf("小文字:%d\n",alphs); printf("数字:%d\n",num);
return 0;
}
0477デフォルトの名無しさん
2006/01/22(日) 17:41:06#include<stdio.h>
int main(void){
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl=0; //大文字の数
int alphs=0; //小文字の数
int num=0; //数字の数
while(*mp!='\0'){
if(*mp>='A'&&*mp<='Z')alphl++;
else if(*mp>='a'&&*mp<='z')alphs++;
else if(*mp>='0'&&*mp<='9')num++;
mp++;
}
printf("英大文字:%d\n",alphl);
printf("英小文字:%d\n",alphs);
printf("数字:%d\n",num);
return 0;
}
0478デフォルトの名無しさん
2006/01/22(日) 17:47:590479デフォルトの名無しさん
2006/01/22(日) 17:56:160480デフォルトの名無しさん
2006/01/22(日) 17:59:11提出する本人が知っていて使う分には問題ないと思うが
0481デフォルトの名無しさん
2006/01/22(日) 18:00:160482デフォルトの名無しさん
2006/01/22(日) 18:00:22出てこない授業も少なくない希ガス
0483デフォルトの名無しさん
2006/01/22(日) 18:06:220484デフォルトの名無しさん
2006/01/22(日) 18:07:54俺も思った 頑張ろう
0485デフォルトの名無しさん
2006/01/22(日) 18:11:250486デフォルトの名無しさん
2006/01/22(日) 18:12:560487デフォルトの名無しさん
2006/01/22(日) 18:15:170488デフォルトの名無しさん
2006/01/22(日) 18:18:110489デフォルトの名無しさん
2006/01/22(日) 18:18:45ガンガル。
>>485
いや素でかっこいい。知識ある者への敬う気持ちが生まれた。
モチベーションの確保にも役に立つし。
てかマジかっけ〜よ・・・。>>487くれ!!DNAを。
0490デフォルトの名無しさん
2006/01/22(日) 18:20:350491デフォルトの名無しさん
2006/01/22(日) 18:23:100492デフォルトの名無しさん
2006/01/22(日) 18:26:46俺20秒あれば昇天できんだけど・・・OTL
0493デフォルトの名無しさん
2006/01/22(日) 18:27:260494デフォルトの名無しさん
2006/01/22(日) 18:33:03「C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ」
というのが出題されたのですが、どうしたらいいのでしょうか?
0495デフォルトの名無しさん
2006/01/22(日) 18:34:09ちんぽ剥いてしこしこ汁
0496デフォルトの名無しさん
2006/01/22(日) 18:34:17api
0497デフォルトの名無しさん
2006/01/22(日) 18:39:15RegCreateKeyEx
とか
RegSetValueEx
とか
0498デフォルトの名無しさん
2006/01/22(日) 19:23:41できれば具体例を教えていただけないでしょうか?
0499デフォルトの名無しさん
2006/01/22(日) 19:25:260500デフォルトの名無しさん
2006/01/22(日) 19:37:11[1] 授業単元: プログラミング�V
[2] 問題文(含コード&リンク): C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: ([2006年2月04日午後まで]
[5] その他の制限: 特になし
0501デフォルトの名無しさん
2006/01/22(日) 19:39:17[2] 問題文
次のようなLISPプログラムを書け
アトムとして整数のみを含むs表現wを入力とし、w中に現れる0以外の整数を全て掛け合わせた結果を計算する関数MULTALL(w)を帰納的に定義せよ
帰納的でないプログラムは回答と見なさない
例 w=((3.((1.0).−2)).(2.0))のとき、MULTALL(w)=−12。
LISPの文法の詳細については問わないが、なるべく読みやすく書くこと。
なお、整数の乗算には、以下のLISPの組み込み関数TIMESを使うこと。
TIMES(m、n) =m×n
[3] 環境
[3.1] OS: Windows
[3.2] ごめんなさい、わかりません
[3.3] 同上
[4] 期限:今月中
超初心者なので、教科書とか読んでもサッパリです、出来ればどなたかどうかお願いします。
0502デフォルトの名無しさん
2006/01/22(日) 19:45:230503デフォルトの名無しさん
2006/01/22(日) 19:50:23正直コンピューター系とかは皆同じに見えてしまう…
スレ違いになるかもしれないど、その違いだけでも教えてもらえますか?
0504デフォルトの名無しさん
2006/01/22(日) 20:07:23[2] 問題文(含コード&リンク):自由課題、ただし条件判断と繰り返し命令、配列は
かならず用いること。関数、ポインターなどは必要に応じて用いればよい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: 1月23日12:00まで
[5] その他の制限:なし
C言語の授業が分からなかったため最終課題ながら
全然思いつきませんでした、よろしくお願いします。
0505デフォルトの名無しさん
2006/01/22(日) 20:09:54オセロ
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;int k(){if(m[p]==0)for(i=m;*i;i
++){for(v=p+*i;m[v]==9-t;v+=*i){}if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v+=*
i;while(m[v]-t);}return 0;}int main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a
=d=0){for(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9
:s?s=0,puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}}
0506デフォルトの名無しさん
2006/01/22(日) 20:16:370507デフォルトの名無しさん
2006/01/22(日) 20:42:08#include <stdio.h>
#include <string.h>
int main()
{
char s[256];
int len;
int i;
char tmp;
printf(" input string: ");
scanf("%s",s);
if ((strlen(s))==1){ return 0; }
len = strlen(s);
for (i = 0; i < len/2; ++i) {
tmp = s[i];
s[i] = s[len-1-i];
s[len-1-i] = tmp;
}
printf("output string: %s\n", s);
return 0;
}
これは前の文字入れ替え課題の誰かが作った(どこにあるかわからんw)ソースに
ifを付け足した奴でつ。
たぶん大丈夫
0508デフォルトの名無しさん
2006/01/22(日) 20:50:45[2] 問題文(含コード&リンク): 1+2*3-4を標準入力から入力し計算順に
((1+(2*3))-4)とカッコをつけて出力
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限: 二分木で表現をお願いします。あと演算子の優先度と
左結合でお願いします。
ずっと出来なくて悩んでいます。どなたか教えてください。
0509デフォルトの名無しさん
2006/01/22(日) 20:52:070510デフォルトの名無しさん
2006/01/22(日) 20:52:480511デフォルトの名無しさん
2006/01/22(日) 20:55:42じゃあ俺も書いたけど結局貼らなかったやつ貼っとく
#include <stdio.h>
#include <string.h>
void strswap(char *s,int n)
{
int i,n1,n2;
char temp[256];
if(n%2==0){
n2=n/2;
}
else{
n2=n/2+1;
temp[n/2]=s[n/2];
}
for(i=0;i<n/2;i++){
temp[i]=s[n2+i];
temp[n2+i]=s[i];
}
temp[n]='\0';
strcpy(s,temp);
}
int main()
{
char s[256];
printf("-->");
scanf("%s",s);
strswap(s,strlen(s));
printf("-->%s\n",s);
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています