C言語を学習中の大学3年生です。
記事を初めて投稿させて頂く前は、主に質問・相談でお世話になっていました。
➀区切りスペースを入れるか否かで分岐する整数の文字列(クリックで表示)
#include<stdio.h>
void sequence(int min,int max,int d){ //最小値=min,最大値=max,公差=d
int current=min; //現在値=current
for(;current<=max;current=current+d){
if(current==max){
printf("%d",current);
}else{
printf("%d ",current);
}
}
printf("\n\n");
}
int main(void){
sequence(1,99,2);
sequence(-100,0,2);
sequence(10,150,10);
return 0;
}
➁乱数生成のアルファベット版(クリックで表示)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void pwmaker(int x){
int num;
srand( time(0) );
for(int m=0;m<x;m++){
num=rand();
if(num%20>9){
char alp[]={"abcdefghijklmn"};
printf("%c",alp[num%( sizeof(alp)-1 )]);
}else{
printf("%d",num%10);
}
}
}
int main(void){
int a; //生成する整数列の桁数
scanf("%d",&a);
pwmaker(a);
}
➂キレイに並び替えてABCDEにするゲームのプログラム(クリックで表示)
#define MOJISIZE 5
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
char tbl[MOJISIZE];
char str[MOJISIZE];
void sequence(void);
int loading(void);
void change(int x);
int main(void){
sequence();
printf("%s\n",str);
strcpy(tbl,str);
int count=0;
int isEnd;
do{
int a;
do{
a=loading();
if(a>0&&a<=5){
printf("OK input=%d\n",a);
}else{
printf("ERROR\n");
}
}while(a<1||a>5);
change(a);
printf("%s\n", tbl);
count++;
isEnd=strcmp(tbl,"ABCDE");
}while(isEnd!=0); //比較した2つの文字列が同じ内容であれば strcmpは0を返す
printf("**%d回目で完成‼**",count);
}
//(sequence関数内)例えば文字列から「C」を選んだ場合、「C」以降のアルファベットを1つずつ前へ更新し、同時にsizeも1だけマイナスする
void sequence(){
srand( time(0) );
char alp[]={"ABCDE"};
int size=MOJISIZE;
for(int i=0;i<MOJISIZE;i++){
int rdn=rand()%size;
str[i]=alp[rdn];
for(int j=rdn;j<size;j++){
alp[j]=alp[j+1];
}
size--;
}
}
int loading(){
int n;
printf("入力値:");
scanf("%d",&n);
return n;
}
//x-1番目とx番目の値を入れ替えるプログラム(change関数内)は、ここでは原則次のような流れで実装する(入力に文字列の最大サイズが来たときは注意)
//➀x-1番目の値を別の変数に一時退避
//➁x-1番目にx番目の値を代入
//➂x番目に➀で退避した値を代入
void change(int x){
char temp=tbl[x-1];
if(x==sizeof(tbl)){
tbl[x-1]=tbl[0];
tbl[0]=temp;
return;
}
tbl[x-1]=tbl[x];
tbl[x]=temp;
}
➃配列を引数として受け取るプログラム(クリックで表示)
#include <stdio.h>
#define lengthof(array) sizeof(array)/sizeof((array)[0])
int sum(int num_array, int array[]){
int num=0;
int count=0;
while(count < num_array){
num=num+array[count];
count++;
}
return num;
}
int main(void){
int a[] = {3, 1, 4};
int b[] = {15, 92, 65};
int c[] = {358, 979, 323};
printf("%d\n", sum(lengthof(a),a));
printf("%d\n", sum(lengthof(b),b));
printf("%d\n", sum(lengthof(c),c));
}
僕には、paizaやQiitaのような、分からない時に質問・相談して共有出来る環境があり、そのおかげで壁に当たっても挫折せずに乗り越えてきました。
Cは全てのプログラミング言語の根幹をなす言語と聞いているので、幅広い分野の情報処理に対応出来る可能性がある点、習って損はないかもしれません。しかし、大学生の折り返しを通り越したところで、まだCのスキルしかないのには焦りを感じたため、JavaやPythonにも触っていきたいと考えています。
記事を書いて投稿、とはいえ……まだインプット中の学生です。編集リクエスト大歓迎で、腰を据えてお待ちしています。
引き続き、よろしくお願いします。