プログラミング講習 第0回 - Multi Media Club Wiki

第11章
*ポインタ;
もうわけわかめ
前回までのC++講座
 char型の変数に文字を入力、出力した
 配列作れば文字列を入れられる
 \0が文字列の最後に入ってる
第10章 文字列
練習問題
実行結果が同じになるように、プログラムを書い
てください
プログラムは小文字を大文字に、大文字を小文字
に入れ替える関数replaceを使用しています
int main(){
int i;
char s[128];
printf("input strings > ");
scanf("%s",s);
for(i=0;s[i]!='\0';i++)
s[i]=replace(s[i]);
printf(“変換後:%s\n",s);
return 0;
}
第10章 文字列
解答
#include<stdio.h>
char replace(char s){
if('A'<=s && s<='Z')return s+=32;
else if('a'<=s && s<='z')return s-=32;
else return s;
}
int main(){
int i;
char s[128];
printf("input strings > ");
scanf("%s",s);
for(i=0;s[i]!='\0';i++)
s[i]=replace(s[i]);
printf("変I換・後a:F%s\n",s);
return 0;
}
第10章 文字列
練習問題
実行結果が同じになるように、プログラムを書い
てください
プログラムは2つの文字列を入力し、その文字列を
つなげる関数connectを使用しています
int main(){
int i,j;
char s[128],t[128];
printf("input string 1 > ");
scanf("%s",s);
printf("Input string 2 > ");
scanf("%s",t);
connect(s,t);
printf(“つなげた文字列:%s\n",s);
return 0;
}
第10章 文字列
解答
void connect(char s[],char t[]){
int i,j;
for(i=0;s[i]!='\0';i++);
for(j=0;t[j]!='\0';j++){
s[i]=t[j];
i++;
}
s[i]='\0';
}
第10章 文字列
ポインタ
#include<stdio.h>
void addition(int a,int b,int *add){
*add=a+b;
}
int main(){
int a,b,add;
printf("Input a > ");
scanf("%d",&a);
printf("Input b > ");
scanf("%d",&b);
addition(a,b,&add);
printf("%d + %d = %d\n",a,b,add);
return 0;
}
第10章 文字列
練習問題
実行結果が同じになるようにプログラムを書いて
ください
プログラムは入力した2数の値を入れ替える関数
swapを使用しています
int main(){
int a,b,add;
printf("Input a > ");
scanf("%d",&a);
printf("Input b > ");
scanf("%d",&b);
swap(&a,&b);
printf("a:%d b:%d\n",a,b);
return 0;
}
第10章 文字列
解答
void swap(int *a,int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
第10章 文字列
#include<stdio.h>
文字列のポインタには配列である事の
int str_length(char *s){ 説明がいらない
(つまり*s[]って書かなくていいってこと)
int i;
for(i=0;s[i]!='\0';i++);
return i;
}
int main(){
char str[1024];
printf("Input string > ");
scanf("%s",str);
printf(“%d 文字\n",str_length(str));
return 0;
}
文字列には&をつけない
scanf(“%s”,str);
str_length(str)
第10章 文字列