C語言 數組、函數應用實例篇

Seven Day
1、編寫程序,任意輸出10個整數的數列,先將整數按照從小到大的順序進行排序,然後輸入一個整數插入到數列中,使數列保持從大到小的順序
#include<stdio.h>
void mop(int n, int a[]) {              //定義mop()函數   
	int i, j, temp;
	for (i = 0; i < n; i++) {           //冒泡排序 ,從大到小 
		for (j = 0; j < n - i; j++) {
			if (a[j] < a[j + 1]) {
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}
	for (i = 0; i < n + 1; i++) {        //遍歷排好序的數組 
		printf("%d ", a[i]);
	}
}
int main(void) {                          
	int a[5], i, num;
	printf("請輸入4個整數的數列:");     
	for (i = 0; i < 4; i++) {           
	scanf("%d", &a[i]);                  //輸入4個整數
	}
	mop(3, a);                           //調用函數 
	printf("\n");
	printf("請輸入一個將插入數列中的整數:"); 
	scanf("%d", &num);                   //輸入需插入的整數 
	printf("\n");
	a[4] = num;
	mop(4, a);                           //調用函數 
}
輸出結果:


2、輸入一個正整數將其轉化爲二進制並輸出。(使用數組存儲二進制的每一位)
#include<stdio.h>
int main(void) {
	int num = 0, i, j, a[100];
	printf("請輸入一個整數:");
	scanf("%d", &num);
	for (i = 0; 1; i++) {
		if (num == 1) {
			a[i] = 1;
			break;
		}
		a[i] = num % 2;
		num /= 2;
	}
	for (j = i; j > -1; j--) {   //倒序輸出a[i]中的元素,得到二進制數 
		printf("%d", a[j]);
	}
}
輸出結果:


3、輸入年月日,判斷這天是該年份的第幾天。
  • switch 方法
#include<stdio.h>
int main(void) {
	int year, month, day, feb = 28, count = 0;
	printf("請輸入年:\n");
	scanf("%d", &year);
	printf("請輸入月:\n");
	scanf("%d", &month);
	printf("請輸入日:\n");
	scanf("%d", &day);
	if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { //判斷是否爲閏年 
		feb = 29;
	} 
	switch(month - 1) {
		case 12 : count += 31;
		case 11 : count += 30;
		case 10 : count += 31;
		case 9 : count += 30;
		case 8 : count += 31;
		case 7 : count += 31;
		case 6 : count += 30;
		case 5 : count += 31;
		case 4 : count += 30;
		case 3 : count += 31;
		case 2 : count += feb;
		case 1 : count += 31;
	}
	count += day;                                             //計算天數 
	
	printf("%d", count);
}
  • array 方法
#include<stdio.h>
int main(void) {
	int year, month, day, i, count = 0, a[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//定義數組 
	printf("請輸入年:\n");
	scanf("%d", &year);
	printf("請輸入月:\n");
	scanf("%d", &month);
	printf("請輸入日:\n");
	scanf("%d", &day);
	if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {// 判斷是否爲閏年 
		a[1] = 29;
	}
	for (i = 0; i < month - 1; i++) {
		count += a[i];
	}
	count += day;                                             //計算天數 
	printf("%d", count);
}
輸出結果:


3、把一個字符串倒序輸出
#include<stdio.h>
#include<string.h>

int main() {
	char a[] = "abcdefghrjklmnopqrstuvwxyz";        //定義一個數組,存放字符串 
	int count = 0;
	int i;
	for (i = 0; 1; i++) {                          //計算該數組的字符個數 
		count++;
		if (a[i] == '\0') {
			break;
		}
	}
	char b[count];                                  //聲明數組b[] 
	for (i = 0; 1; i++) {
		if (i == 0) {
			b[(count - 1) - i] = '\0';
		} else {
			b[(count - 1) - i] = a[i - 1];          //將a數組的元素倒序賦值給數組b 
		}
		if (a[i] == '\0') {
			break;
		}
	}
	printf("倒序輸出爲:%s\n數組長度爲:%d\n", b, strlen(b));
}
輸出結果:


4、冒泡排序
#include<stdio.h>
int main(void) {
	int a[4], i, j, temp;
	for (i = 0; i < 4; i++) {
		scanf("%d", &a[i]);
	}
	for (i = 0; i < 3; i++) {
		for (j = 0; j < 3; j++) {
			if (a[j] < a[j + 1]) {
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}
	for (i = 0; i < 4; i++) {
		printf("%d\t", a[i]);
	}
}
輸出結果:


5、求水仙花素(兩種方法)
  • 方法一
#include<stdio.h>
int main(void) {
	int i, a, b, c;
	for (i = 100; i < 1000; i++) {
		a = i / 100;                                  //百位數 
		b = i / 10 % 10;//i / 10 - a * 10             //十位數 
		c = i % 10;                                   //個位數 
		if (i == a * a * a + b * b * b + c * c * c) { //判斷百位、十位、個位數的3次方的和是否和這個三位數相同 
			printf("%d\n", i);
		}
	}
}
  • 方法二
#include<stdio.h>
int main(void) {
	int i, j, k;
	for (i = 1; i < 10; i++) {
		for (j = 0; j < 10; j++) {
			for (k = 0; k < 10; k++) {
				int num = i * 100 + j * 10 + k;
				if (num == i * i * i + j * j * j + k * k * k) {
					printf("%d\n", num);
				}
			}
		}
	}
}
輸出結果:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章