• 検索結果がありません。

( ) #include<stdio.h> int main(void){ printf(" :S19M999Y=n"); printf(" : Y=n"); printf(" : Y=n"); return 0; } #include<stdio.h

N/A
N/A
Protected

Academic year: 2021

シェア "( ) #include<stdio.h> int main(void){ printf(" :S19M999Y=n"); printf(" : Y=n"); printf(" : Y=n"); return 0; } #include<stdio.h"

Copied!
22
0
0

読み込み中.... (全文を見る)

全文

(1)

6.2

実習 解答例

課題の解答例であり、これ以外にも解答はある。むしろ、一致している方がめずらしい。 また、プログラミング環境(コンパイラ)によっては略解のプログラムで正しく動かな い場合もあるかもしれない。 略解1.5.1. #include<stdio.h> int main(void){ printf("学生番号:S19M999Y=n"); printf("氏名:理大 太郎Y=n"); printf("ふりがな:りだい たろうY=n"); return 0; } 略解1.5.2. #include<stdio.h> int main(void){ printf("1個Y=Y=150のリンゴを5個買ってY=n"); printf(" Y="20Y=%引きY="Y=n");

printf("になる。このリンゴを5個買うと、いくらでしょう?Y=n"); printf("ただし、消費税は10Y=%とする。Y=n"); return 0; } %はY=%で表示できない場合もある。その場合は%%で表示する。 略解1.5.3. #include <stdio.h> int main(void){

printf("1 #include <stdio.h>Y=n"); printf("2 int main(void)Y=n"); printf("3 {Y=n");

printf("4 printf(Y="Hello CY=Y=nY=");Y=n");

printf("5 printf(Y="こんにちは Cの世界へY=Y=nY=");Y=n"); printf("6 return 0;Y=n");

printf("7 }Y=n"); return 0;

}

(2)

略解1.5.5. #include<stdio.h> int main(void){ printf(" | 1| 2| 3| 4| 5| 6| 7| 8| 9|Y=n"); printf("---+--+--+--+--+--+--+--+--+--+Y=n"); printf("1の段| 1| 2| 3| 4| 5| 6| 7| 8| 9|Y=n"); printf("2の段| 2| 4| 6| 8|10|12|14|16|18|Y=n"); printf("3の段| 3| 6| 9|12|15|18|21|24|27|Y=n"); printf("4の段| 4| 8|12|16|20|24|28|32|36|Y=n"); printf("5の段| 5|10|15|20|25|30|35|40|45|Y=n"); printf("6の段| 6|12|18|24|30|36|42|48|54|Y=n"); printf("7の段| 7|14|21|28|35|42|49|56|63|Y=n"); printf("8の段| 8|16|24|32|40|48|56|64|72|Y=n"); printf("9の段| 9|18|27|36|45|54|63|72|81|Y=n"); return 0; } 略解1.5.6. #include<stdio.h> int main(void){ printf("   /) /)Y=n"); printf("  / ͡ ヽY=n"); printf("  |● ● |/\Y=n"); printf("  (〇 ∼ 〇| /Y=n"); printf("  /    |<Y=n"); printf(" |   L/ |/Y=n"); return 0; } 略解1.5.7. (1) #include<stdio.h> int main(void){ int a, c; double b; a=123; b=456.789; c=66; printf("%d,%o,%xY=n",a,a,a); printf("%f,%e,%EY=n",b,b,b); printf("%c,%c,%c%dY=n",c-1,c,c+1); return 0; }

(3)

(2) #include<stdio.h> int main(void){ int a; char c; c=’G’; a=5; printf("%cの%d個後は%cで、%cの小文字は%cです。Y=n",c,a,c+a,c,c+32); c=’P’; a=3; printf("%cの%d個後は%cで、%cの小文字は%cです。Y=n",c,a,c+a,c,c+32); return 0; } 略解1.5.8. 枠内のみ printf("2つのデータについての考察Y=n");

printf("最高気温 %f, 最低気温 %fY=n",high2,low1); printf(" 年/月/日 最高気温 最低気温 降水確率Y=n");

printf("%4d/%02d/%02d %10f %10f %8d%%Y=n",y1,m1,d1,high1,low1,prec1); printf("%4d/%02d/%02d %10f %10f %8d%%Y=n",y2,m2,d2,high2,low2,prec2); 略解1.5.9. #include<stdio.h> void main(void){ int a,b; a=10;b=4; printf("2*a+b=%dY=n",2*a+b); printf("a-3*b=%dY=n",a-3*b); printf("a*b/b=%dY=n",a*b/b); printf("b/a*a=%dY=n",b/a*a);

printf("a%%b%%a=%dY=n",a%b%a); //Y=% とすると上手く行かない。%% とする。 }

略解1.5.10.

#include<stdio.h> int main(void){

int a1, a2, a3, a4, a5; double ave, vari;

a1=4;a2=-3;a3=5;a4=12;a5=-2; ave=(double)(a1+a2+a3+a4+a5)/5; vari=((a1-ave)*(a1-ave)+(a2-ave)*(a2-ave)+(a3-ave)*(a3-ave) +(a4-ave)*(a4-ave)+(a5-ave)*(a5-ave))/5; printf("5つのデータ %d, %d, %d, %d, %dの平均は%4.1fで、 分散は%4.5fです。Y=n",a1,a2,a3,a4,a5,ave,vari); return 0; }

(4)

略解1.5.11. #include<stdio.h> int main(void){ int a, b; double S; a=3;b=6; S=(a*b)/2.0; printf("底辺が%dで、高さが%dの三角形の面積は%2.1fです。Y=n",a,b,S); return 0; } 補足 S=(a*b)/2.0は、S=(double)(a*b)/2でもよい。 略解1.5.12. #include<stdio.h> int main(void){ printf("2の30乗は%dです。Y=n", 1<<30); return 0; } 略解1.5.13. #include<stdio.h> int main(void){ int a; a=(1<<15)+(1<<14)+(1<<11)+(1<<10)+(1<<7)+(1<<6)+(1<<3)+(1<<2); printf("2進数で1100110011001100と表示される数は10進数で%dです。Y=n",a); return 0; } ちなみに、答えは52428である。 略解1.5.14. #include<stdio.h> int main(void){ int a; a=12321012; printf("カンマ区切りしたaは%d,%03d,%03dです。Y=n", a/1000000,(a/1000)%1000,a%1000); return 0; }

(5)

略解1.5.15. #include<stdio.h> int main(void){ int a=87; printf("aを%dとします。Y=n",a); printf("%dを2進数で表すと"); printf("%d%d%d%d%d%d%d%dです。Y=n", (a>>7)%2,(a>>6)%2,(a>>5)%2,(a>>4)%2,(a>>3)%2,(a>>2)%2,(a>>1)%2,a%2); return 0; } 略解1.5.16. #include<stdio.h> int main(void){ int a; double d=18.5236; printf("dを%10.4fとします。Y=n",d); a=(d*10+5)/10; printf("%10.4fの小数点以下第一位を四捨五入した数は%3.1fです。Y=n", d,(double)a); a=(d*100+5)/10; printf("%10.4fの小数点以下第二位を四捨五入した数は%3.1fです。Y=n", d,((double)a)/10); return 0; } 略解2.2.1. #include<stdio.h> int main(void){ int a; char ch[100],name1,name2; printf("学生番号を入力してください : "); scanf("%s",ch); printf("名字のイニシャルを入力してください : "); scanf(" %c",&name1); printf("名前のイニシャルを入力してください : "); scanf(" %c",&name2);

printf("メールアドレスは%s%c%c@ous.jpです。Y=n",ch,name1,name2); return 0;

}

補足 scanf(" %c"は空白があり、scanf("

(6)

略解2.2.2. #include<stdio.h> int main(void){ int a; char c; printf("自然数 : "); scanf("%d",&a); printf("英小文字 : "); scanf(" %c",&c); printf("%c の %d 文字後は %c です。Y=n",c,a,(c+a-97)%26+97); return 0; } 略解2.2.3. printf()は印刷の都合上2つに分けています。 #include<stdio.h> int main(void){ double d; printf("浮動小数を入力してください :"); scanf("%lf",&d); printf("%.3fの小数点以下第一位を切り捨てた数は%dで、",d,(int)d); printf("四捨五入した数は%dです。Y=n",(int)(d+0.5)); return 0; } 略解2.2.4. #include<stdio.h> #include<stdlib.h> int main(void){ int a,sum=0; srand(13); printf("10個の整数");

a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; a=(int)(rand()/(RAND_MAX+1.0)*100+1); printf("%3d,",a); sum=sum+a; printf("の平均は%.1fです。Y=n",(double)sum/10);

return 0; }

(7)

略解2.2.5. #include<stdio.h> int main(){ int n; printf("2から30の自然数を入力してください:"); scanf("%d",&n); printf("2の%d乗は%dである。Y=n",n,1<<n); return 0; } 略解2.2.6. #include<stdio.h> void main(void){ int a; printf("自然数aを入力してください (255以下):"); scanf("%d",&a); printf("%dを2進数で表すと%d%d%d%d%d%d%d%dです。Y=n",a,(a>>7)%2 ,(a>>6)%2,(a>>5)%2,(a>>4)%2,(a>>3)%2,(a>>2)%2,(a>>1)%2,a%2); } 略解2.2.7. #include<stdio.h> int main(void){ char ch[100]; printf("英数文字を5文字入力してください。"); scanf("%s",ch); printf("%sの順番を逆にすると%c%c%c%c%cです。Y=n" ,ch,ch[4],ch[3],ch[2],ch[1],ch[0]); return 0; } 略解2.2.8. #include<stdio.h> int main(void){ int a; printf("税抜き価格を入力してください:"); scanf("%d",&a); printf("消費税 %d円、お支払い金額は%d円です。Y=n" ,(int)(a*0.10),a+(int)(a*0.10)); printf(" %dポイントつきました。Y=n",(int)((a+(int)(a*0.10))*0.15)); return 0; }

(8)

略解2.2.9. #include<stdio.h> int main(void){ int a,b; printf("自然数 a を入力してください :"); scanf("%d",&a); printf("自然数 b を入力してください :"); scanf("%d",&b); printf("和、差、積、商、余はそれぞれ%d, %d, %d, %d, %dです。Y=n" ,a+b,a-b,a*b,a/b,a%b); return 0; } 略解2.2.10. #include<stdio.h> int main(void){ int a; printf("自然数aを入力してください (7∼9桁):"); scanf("%d",&a); printf("カンマ区切りしたaは%d,%d,%dです。Y=n" ,a/1000000,(a/1000)%1000,a%1000); return 0; } 略解2.2.11. #include<stdio.h> #include<stdlib.h> int main(void){ double x1,x2,x3,y1,y2,y3; srand(10); x1=(int)(((double)rand()/RAND_MAX)*20000)/100.0-100; x2=(int)(((double)rand()/RAND_MAX)*20000)/100.0-100; x3=(int)(((double)rand()/RAND_MAX)*20000)/100.0-100; y1=(int)(((double)rand()/RAND_MAX)*20000)/100.0-100; y2=(int)(((double)rand()/RAND_MAX)*20000)/100.0-100; y3=(int)(((double)rand()/RAND_MAX)*20000)/100.0-100; printf("(x1,x2,x3)=(%6.2f,%6.2f,%6.2f)Y=n",x1,x2,x3); printf("(y1,y2,y3)=(%6.2f,%6.2f,%6.2f)Y=n",y1,y2,y3); printf("(x,y)=%fY=n",x1*y1+x2*y2+x3*y3); return 0; } 略解3.4.1. #include<stdio.h>

(9)

int main(void){ int a; printf("整数を入力してください :"); scanf("%d",&a); if(a<0){ printf("入力された数は負の数です。Y=n"); }else if(a>0){ printf("入力された数は正の数です。Y=n"); }else{ printf("入力された数は0です。Y=n"); } return 0; } 略解3.4.2. #include<stdio.h> int main(void){ int n; printf("テストの点数を入力してください。 :"); scanf("%d",&n); switch(n/10){ case 10: case 9: printf("評価は S です。Y=n"); break; case 8: printf("評価は A です。Y=n"); break; case 7: printf("評価は B です。Y=n"); break; case 6: printf("評価は C です。Y=n"); break; default: printf("評価は D です。Y=n"); } return 0; } 略解3.4.3. #include<stdio.h>

(10)

int main(void){ int n; printf("2桁の自然数を入力してください。:"); scanf("%d",&n); if(n%2==0) printf("%dは2の倍数です。Y=n",n); else printf("%dは2の倍数ではありません。Y=n",n); if(n%3==0) printf("%dは3の倍数です。Y=n",n); else printf("%dは3の倍数ではありません。Y=n",n); if(n%5==0) printf("%dは5の倍数です。Y=n",n); else printf("%dは5の倍数ではありません。Y=n",n); if(n%7==0) printf("%dは7の倍数です。Y=n",n); else printf("%dは7の倍数ではありません。Y=n",n); return 0; } 略解3.4.4. 真と偽の場合分けを上手く理解しておくことが必要。 #include<stdio.h> int main(void){ int y; printf("西暦を入力してください。:"); scanf("%d",&y); if(y%4!=0){ printf("西暦%d年は平年です。Y=n",y); } else {

if(y%100==0 && y%400!=0){

printf("西暦%d年は平年です。Y=n",y); }else{ printf("西暦%d年はうるう年です。Y=n",y); } return 0; } 略解 3.4.5. コード表の65から90が大文字、97から122が小文字であることに注意す

(11)

ればよい。コピー&貼り付け が大変かもしれないが、[Ctrl] + c, v を上手く使うこと。 #include<stdio.h> int main(void){ char ch[100]; printf("英数文字を5文字入力してください。:"); scanf("%s",ch); if(ch[0]>=65 && ch[0]<=90){ printf("%c",ch[0]+32);

}else if(ch[0]>=97 && ch[0]<=122){ printf("%c",ch[0]-32); }else{ printf("%c",ch[0]); } if(ch[1]>=65 && ch[1]<=90){ printf("%c",ch[1]+32);

}else if(ch[1]>=97 && ch[1]<=122){ printf("%c",ch[1]-32); }else{ printf("%c",ch[1]); } if(ch[2]>=65 && ch[2]<=90){ printf("%c",ch[2]+32);

}else if(ch[2]>=97 && ch[2]<=122){ printf("%c",ch[2]-32); }else{ printf("%c",ch[2]); } if(ch[3]>=65 && ch[3]<=90){ printf("%c",ch[3]+32);

}else if(ch[3]>=97 && ch[3]<=122){ printf("%c",ch[3]-32); }else{ printf("%c",ch[3]); } if(ch[4]>=65 && ch[4]<=90){ printf("%c",ch[4]+32);

}else if(ch[4]>=97 && ch[4]<=122){ printf("%c",ch[4]-32); }else{ printf("%c",ch[4]); } printf("Y=n"); return 0; } 略解3.4.6. 演算子のコード番号はそれぞれ+は43,-は45,*は42,/は47,%は37である。

(12)

#include<stdio.h> int main(void){ int a,b; char op; printf("整数を1つ入力してください(a=):"); scanf("%d",&a); printf("演算子(+,-,*,/,%%)を1つ入力してください: "); scanf(" %c",&op); printf("整数をもう1つ入力してください(b=):"); scanf(" %d",&b); switch(op){ case 43: //case ’+’: も可。以下同様

printf("%d %c %d の結果は %d です。Y=n",a,op,b,a+b); break; case 45:

printf("%d %c %d の結果は %d です。Y=n",a,op,b,a-b); break; case 42:

printf("%d %c %d の結果は %d です。Y=n",a,op,b,a*b); break; case 47:

printf("%d %c %d の結果は %d です。Y=n",a,op,b,a/b); break; case 37:

printf("%d %c %d の結果は %d です。Y=n",a,op,b,a%b); break; default: printf("そのような計算は出来ません。Y=n"); } return 0; } 略解4.3.1. (1) #include<stdio.h> int main(void){ int i,n,chk=1; printf("10000以上の自然数を入力してください:"); scanf("%d",&n); for(i=2;i<n;i++){ if(n%i==0){ chk=0; break; } } if(chk) //if(chk==1)と同じ printf("%dは素数ですY=n",n); else printf("%dは合成数ですY=n",n); return 0; }

(13)

(2) #include<stdio.h> int main(void){ int i,n; printf("10000以上の自然数を入力してください:"); scanf("%d",&n); printf("%dの約数は 1",n); for(i=2;i<=n;i++){ if(n%i==0){ printf(",%d",i); } } printf("です。Y=n"); return 0; } 略解4.3.2. #include<stdio.h> int main(void){ int n,i; char c[100]; while(1){ printf("平文 :"); scanf("%s",c); if(c[0]==’.’){ printf("終わります。Y=n"); break; } printf("暗号キー :"); scanf(" %d",&n); printf("暗号文は"); i=0; while(c[i]!=0){ printf("%c",(c[i]+n-97)%26+97); i++; } printf("Y=n"); } return 0; }

(14)

略解4.3.3. #include<stdio.h> int main(void){ int n,count; printf("2以上の自然数を入力してください :"); scanf("%d",&n); printf("%3d,",n); count=1; while(n!=1){ if(n%2==0) n/=2; else n=3*n+1; printf("%3d,",n); count++; if(count%10==0) printf("Y=n"); } printf("Y=n"); return 0; } 略解4.3.4. #include<stdio.h> int main(void){

int m,n,m original,n original,r=1;

printf("2以上の自然数を入力してください:"); scanf(" %d",&m); printf("2以上の自然数を入力してください:"); scanf(" %d",&n); m original=m;n original=n; if(m<n){ r=n; n=m; m=r; } while(r!=0){ r=m%n; m=n; n=r; }

printf("%dと%dの最大公約数は%dです。Y=n",m original,n original,m); return 0;

(15)

略解4.3.5. #include<stdio.h> int main(void){ char a[100]; int i; while(1){ printf("文字列を入力してください : "); scanf("%s",a); if(a[0]==’.’){ printf("終わります。Y=n"); break; } i=0; while(a[i]!=0){

if(a[i]>=65 && a[i]<=90){ printf("%c",a[i]+32);

}else if(a[i]>=97 && a[i]<=122){ printf("%c",a[i]-32); }else{ printf("%c",a[i]); } i++; } printf("Y=n"); } return 0; } 略解4.3.6. #include<stdio.h> int main(void){ int i,n; double sum=0.0; int max=-1*(1<<30),min=1<<30; printf("10個の整数値を入力してください。", for(i=0;i<10;i++){ scanf(" %d",&n); sum+=n; if(n<min)min=n; if(n>max)max=n; } printf("10個のデータの平均は%3.2lfで、最大値は%d,最小値は%dです。Y=n", sum/10,max,min); return 0; }

(16)

略解4.3.7. #include<stdio.h> int main(void){ int i,n,ind,chk,count=0; printf("2以上の自然数を入力してください:"); scanf("%d",&ind); n=1; while(count<ind){ n++; chk=1; for(i=2;i<n;i++){ if(n%i==0){ chk=0; break; } } if(chk==1)count++; } printf("2から数えて%d番目の素数は%dですY=n",ind,n); return 0; } 略解5.4.1. #include<stdio.h> int main(void){ int a=0,b=0,c=0,d=0,i=0; char in[100]; printf("文字列を入力してください。Y=n"); scanf("%s",in); while(in[i]!=0){

if(65<=in[i] && in[i]<=90) //大文字 a++;

else if(97<=in[i] && in[i]<=122) //小文字 b++;

else if(48<=in[i] && in[i]<=57) //数字 c++; else d++; i++; } printf("入力された文字列の中にY=n"); printf("アルファベット大文字は%d文字あります。Y=n",a); printf("アルファベット小文字は%d文字あります。Y=n",b); printf("数字は%d文字あります。Y=n",c); printf("上記以外は%d文字あります。Y=n",d); return 0; }

(17)

略解5.4.2. #include<stdio.h> int main(void){ char in[100]; while(1){ printf("文字列を入力してください。Y=n"); scanf("%s",in); if(in[0]==’.’) break; printf("入力された文字列は%d文字です。Y=n",strlen(in)); } printf("入力を終了します。Y=n"); return 0; } 略解5.4.3. #include<stdio.h> int main(void){ int i; char tmp; char c[100]; printf("文字列を入力してください。Y=n"); scanf("%s",c); i=1; while(c[i]!=0){

if(48<=c[i] && c[i]<=57){ //数字 if(c[i-1]>c[i] || c[i-1]<48){ tmp=c[i-1];c[i-1]=c[i];c[i]=tmp; i=0; } } i++; } i=1; while(c[i]!=0){

if(65<=c[i] && c[i]<=90){ //大文字

if((c[i-1]>c[i] || c[i-1]<65)&& !(48<=c[i-1] && c[i-1]<=57)){ tmp=c[i-1];c[i-1]=c[i];c[i]=tmp; i=0; } } i++; }

(18)

i=1;

while(c[i]!=0){

if(97<=c[i] && c[i]<=122){ //小文字

if(!(48<=c[i-1] && c[i-1]<=57)){ //前が数字でない if(c[i-1]>c[i]||(c[i-1]>c[i]-32)&&(c[i-1]<97)||c[i-1]<65){ tmp=c[i-1];c[i-1]=c[i];c[i]=tmp; i=0; } } } i++; } printf("入力された文字列を辞書式に並べ替えるとY=n"); printf("%sY=n",c); printf("です。Y=n"); return 0; } 略解5.4.4. #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){ double box[20],tmp; int i; srand((unsigned)time(NULL)); for(i=1;i<=10;i++) box[i]=rand()/(RAND_MAX+1.0)*10; for(i=1;i<=10;i++)

printf("%2d番 %3.2fY=n",i,box[i]); for(i=1;i<10;i++){ if(box[i]>box[i+1]){ tmp=box[i]; box[i]=box[i+1]; box[i+1]=tmp; i=0; } } for(i=1;i<=10;i++)

printf("%2d番 %3.2fY=n",i,box[i]); return 0;

(19)

略解5.4.5. #include<stdio.h> int main(void){ int i; char a[100],b[100]; printf("英文字を入力してください(1):"); scanf(" %s",a); printf("英文字を入力してください(2):"); scanf(" %s",b); for(i=0;i<=strlen(a)+1;i++) if(a[i]!=b[i])break; printf("文字列%sと%sで最初に異なる文字は%d文字目の%cと%cです。Y=n" ,a,b,i+1,a[i],b[i]); return 0; } 略解5.4.6. #include<stdio.h> int main(void){ int y,m,d,uru=0; int month[12]={0,31,59,90,120,151,181,212,243,273,304,334}; //各月の1日までに何日あるかをリストにしたもの printf("西暦を入力してください :"); scanf(" %d",&y); printf("何月ですか :"); scanf(" %d",&m); printf("何日ですか :"); scanf(" %d",&d); if(y%4==0){

if(y%100==0 && y%400!=0){ uru=0; }else{ uru=1; } } printf("%d年%d月%d日は%d年の%d日目です。Y=n",y,m,d,y,month[m-1]+d+uru); return 0; } 略解5.4.7. 課題5.4.6.を参考に作成する。考え方として、求めたい日数は 生まれた年の残りの日数+うるう年を考えた年数の日数+今年の日数 で求まる。

(20)

略解5.4.8. #include<stdio.h> int main(void){ int a,pow=1; printf("自然数(2∼10)を入力してください :"); scanf(" %d",&a); while(a*pow<1000){ pow*=a; } if(a*pow-1000<1000-pow) printf("%dのべき乗で1000に一番近いのは%dです。Y=n",a,a*pow); else printf("%dのべき乗で1000に一番近いのは%dです。Y=n",a,pow); return 0; } 略解5.4.9. 1 #include<stdio.h> 2 int main(void){ 3 char a[100]; 4 char zen[50]=""; 5 char kou[50]=""; 6 int num; 7 scanf("%s",a); 8 num=strlen(a); 9 strncpy(zen,a,(num+1)/2); 10 // zen[(num+1)/2+1]=0; 11 strncpy(kou,a+(num+1)/2,num/2); 12 // kou[(num-1)/2+1]=0; 13 printf("%s%sY=n",zen,kou); 14 return 0; 15 } strncpyを用いて文字列を分けたとき、終端を書き加えることを忘れないように。 ただし、4行目、5行目のように空の文字列の初期化を行っている場合は、10行目、12 行目の終端の書き加えは必要ない(ことが多い)。 略解5.4.10. 略 課題4.3.3. を参考に作成する。変数odd,evenを作成し、2でわる場合はeven++、3 倍して1加えるときはodd++としておく。 操作の総回数はodd+evenであることは明らか。また、変数の初期化を忘れずに。

(21)

略解5.4.11. #include<stdio.h> int main(void){ int a,b,i,tmp,sum=0; printf("1つ目の整数を入力してください。:"); scanf(" %d",&a); printf("2つ目の整数を入力してください。:"); scanf(" %d",&b); if(a>b){ tmp=a; a=b; b=tmp; } for(i=a;i<=b;i++){ sum+=i; } printf("%dから%dまでの和は%dです。Y=n",a,b,sum); return 0; } 略解5.4.12. #include<stdio.h> int main(void){ int i,j,chk,count,num[100]; count=1; while(1){ printf("%d番目の自然数を入力してください。:",count); scanf(" %d",&num[count]); if(num[count]==0)break; count++; } for(j=1;j<count;j++) printf("%3d,",num[j]); printf("の倍数でない1000以下の数は、Y=n"); for(i=2;i<=1000;i++){ chk=1; for(j=1;j<count;j++){ if(i%num[j]==0) chk=0; } if(chk==1) printf("%3d,",i); } printf("Y=n"); return 0; }

(22)

略解5.4.13. #include<stdio.h> int main(void){ int i,j,chk,count,num[100]; count=1; while(1){ printf("%d番目の自然数を入力してください。:",count); scanf(" %d",&num[count]); if(num[count]==0)break; count++; } for(j=1;j<count;j++) printf("%3d,",num[j]); printf("の公倍数で1000以下のものは、Y=n"); for(i=2;i<=1000;i++){ chk=1; for(j=1;j<count;j++){ if(i%num[j]!=0) chk=0; } if(chk==1) printf("%3d,",i); } printf("Y=n"); return 0; }

参照

関連したドキュメント

この点について結果︵法益︶標準説は一致した見解を示している︒

・ホームホスピス事業を始めて 4 年。ずっとおぼろげに理解していた部分がある程度理解でき

 筆記試験は与えられた課題に対して、時間 内に回答 しなければなりません。時間内に答 え を出すことは働 くことと 同様です。 だから分からな い問題は後回しでもいいので

自由回答でも「廃炉も解決しないうち、とても 安心して住めますか」

本検討では,2.2 で示した地震応答解析モデルを用いて,基準地震動 Ss による地震応答 解析を実施し,

本事例は、上記事実関係を前提とした一般的な答えであり、必ずしも事案

これらの事例は、照会に係る事実関係を前提とした一般的

○安井会長 ありがとうございました。. それでは、ただいま事務局から御説明いただきました中間答申