0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

C言語はQiitaで学びたい

Last updated at Posted at 2022-04-01

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にも触っていきたいと考えています。
記事を書いて投稿、とはいえ……まだインプット中の学生です。編集リクエスト大歓迎で、腰を据えてお待ちしています。
引き続き、よろしくお願いします。

0
0
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?