読者です 読者をやめる 読者になる 読者になる

mu chance or much chance ?

日々の戯れ言

戯れ

c

久々にC言語と戯れました.

  • int型変数を3つ入力して,関数を利用して昇順にソートする.
#include <stdio.h>

void sort3num(int *num1, int *num2, int *num3){
	int temp;
	if(*num1 > *num2){
		temp = *num1; *num1 = *num2; *num2 = temp; 
	}
	if(*num2 > *num3){
		temp = *num2; *num2 = *num3; *num3 = temp; 
	}
	if(*num1 > *num2){
		temp = *num1; *num1 = *num2; *num2 = temp; 
	}
}

int main(void){
	int a, b, c;
	printf("Input a --> "); scanf("%d", &a);
	printf("Input b --> "); scanf("%d", &b);
	printf("Input c --> "); scanf("%d", &c);
	printf("Before sorting\tA:%d, B:%d, C:%d\n", a, b, c);
	sort3num(&a, &b, &c);
	printf("After sorting\tA:%d, B:%d, C:%d\n", a, b, c);
	return 0;
}
  • 5つの点数を入力して,関数を利用して最大値,最小値,平均値を求める.
#include <stdio.h>
#define NUM 5
#define MIN_NUM 0
#define MAX_NUM 100

void func(int *score, int size, double *ave, int *max, int *min){
	int i, sum = 0;
	*max = MIN_NUM; *min = MAX_NUM;
	for(i = 0; i < size; i++){
		sum += *(score + i);
		if(*(score + i) > *max) *max = *(score + i);		
		if(*(score + i) < *min) *min = *(score + i);
	}
	*ave = (double)sum / size;	
}

int main(void){
	int i, result[NUM], maxScore, minScore;
	double aveScore;
	for(i = 0; i < NUM; i++){
		printf("Input Score %d --> ", i); scanf("%d", &result[i]);
	}
	func(result, NUM, &aveScore, &maxScore, &minScore);
	printf("Average Score : %.2f\n", aveScore);	
	printf("Maximize Score : %d\n", maxScore);	
	printf("Minimize Score : %d\n", minScore);	
	return 0;
}
  • 文字列を入力して,関数を利用してその文字列の数字を削除する.
#include <stdio.h>
#include <ctype.h>
#define MAX_LEN 255

void func(char *str){
	char *p = str;
	while(*str != '\0'){
		if(!isdigit(*str)){
			*p = *str;
			p++;
		}
		str++;
	}
	*p = '\0';
}

int main(void){
	char s[MAX_LEN];
	gets(s);
	func(s);
	puts(s);
	return 0;
}

gets関数ではなく,fgets関数を使うべきでした.