南開100題C語言(011-020)


011 數組左下半三角元素中的值全部置成0

【題目】下列程序定義了N×N的二維數組,並在主函數中自動賦值。請編寫函數fun(int a[][N]),該函數的功能是:使數組左下半三角元素中的值全部置成0。

【代碼】

#include <stdio.h>
#define N 3

int fun(int a[][N]) {
	int i, j;
	for (i = 0; i < N; i++) {
		for (j = 0; j <= i; j++) {
			a[i][j] = 0;
		}
	}
}

int main() {
	
	int a[][3] = {{1,2,3},{2,3,4},{3,4,5}};
	fun(a);
	int i, j;
	for (i = 0; i < 3; i++) {
		for (j = 0; j < 3; j++) {
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

012 數組周邊元素的平均值返回給主函數

【題目】下列程序定義了N×N的二維數組,並在主函數中賦值。請編寫函數fun,函數的功能使求出數組周邊元素的平均值並作爲函數值返回給主函數中的s。

【代碼】

#include <stdio.h>
#define N 3

double fun(int w[][N]) {
	int i, j;
	double s = 0.0;
	for (i = 0; i < N; i++) {
		s += w[0][i];
	} 
	for (i = 0; i < N; i++) {
		s += w[N - 1][i];
	} 
	for (i = 0; i < N; i++) {
		s += w[i][0];
	} 
	for (i = 0; i < N; i++) {
		s += w[i][N - 1];
	} 
	s = s - w[0][0] - w[0][N - 1] - w[N - 1][0] - w[N - 1][N - 1];
	return s/(4 * N - 4);
}  
 
int main() {
	int a[][3] = {{1,2,3},{2,3,4},{3,4,5}};
	printf("%lf", fun(a));
	return 0;
}

013 求出二維函數組每列中最小元素

【題目】請編寫一個函數void fun(int tt [M] [N] ,int pp[N]),tt指向一個M行N列的二維函數組,求出二維函數組每列中最小元素,並依次放入pp所指定一維數組中。二維數組中的數已在主函數中賦予。

【代碼】

#include <stdio.h>
#define M 3
#define N 3

void fun(int tt[M][N], int pp[N]) {
	int i, j, min;
	for (j = 0; j < N; j++) {
		min = tt[0][j];
		for (i = 1; i < N; i++) {
			if (tt[i][j] < min) {
				min = tt[i][j];
			}
		}
		pp[j] = min;
	} 
}
 
int main() {
	int a[][3] = {{1,2,3},{2,3,4},{3,4,5}};
	int b[3];
	fun(a, b);
	int i;
	for (i = 0; i < 3; i++) {
		printf("%d ", b[i]);
	}
	return 0;
}

014 二維數組周邊元素之和,作爲函數值返回

【題目】請別寫函數fun,函數的功能使求出二維數組周邊元素之和,作爲函數值返回。二維數組中的值在主函數中賦予。

【代碼】

#include <stdio.h>
#define N 3

int fun(int w[][N]) {
	int i, j;
	int s = 0;
	for (i = 0; i < N; i++) {
		s += w[0][i];
	} 
	for (i = 0; i < N; i++) {
		s += w[N - 1][i];
	} 
	for (i = 0; i < N; i++) {
		s += w[i][0];
	} 
	for (i = 0; i < N; i++) {
		s += w[i][N - 1];
	} 
	s = s - w[0][0] - w[0][N - 1] - w[N - 1][0] - w[N - 1][N - 1];
	return s;
}  
 
int main() {
	int a[][3] = {{1,2,3},{2,3,4},{3,4,5}};
	printf("%d", fun(a));
	return 0;
}

015 w後n-1位的數作爲函數值返回

【題目】請編寫一個函數unsigned fun(unsigned w),w使一個大於10的無符號整數,若w是n(n≥2)位的整數,則函數求出w後n-1位的數作爲函數值返回。

【代碼】

#include <stdio.h>

unsigned fun(unsigned w) {
	unsigned t, s = 0, s1 = 1;
	t = w;	
	while (t > 10) {
		s = s + t % 10 * s1;
		s1 = s1 * 10;
		t = t / 10;
	}
	return s;
}

int main() {
	unsigned t = 123;
	printf("%u", fun(t));
	return 0;
}

016 值保留2位小數

【題目】請編寫一個函數float fun(double h),函數的功能使對變量h中的值保留2位小數,並對第三位進行四捨五入(規定h中的值位正數)。

【代碼】

#include <stdio.h>

float fun(double h) {
	int t;
	float s;
	h = h * 1000;
	t = (h + 5) / 10;
	s = t / 100.0;
	return s;
}

int main() {
	printf("%.2lf\n", 123.4567);
	printf("%.2lf", fun(123.4567));
	return 0;
}

017 字符串中的內容逆置

【題目】請編寫一個函數fun(char *s),該函數的功能使把字符串中的內容逆置。

【代碼】

#include <stdio.h>
#include <string.h>

void fun(char *s) {
	char ch;
	int i;
	for (i = 0; i < (strlen(s) - 1) / 2; i++) {
		ch = s[i];
		s[i] = s[strlen(s) - 1 - i];
		s[strlen(s) - 1 - i] = ch;
	}
}

int main() {
	char s[100];
	gets(s);
	fun(&s);
	puts(s);
	return 0;
}

018 矩陣(3行3列)的轉置

【題目】編寫程序,實現矩陣(3行3列)的轉置(即行列互換)。

【代碼】

#include <stdio.h>

void fun(int array[3][3]) {
	int i, j, temp;
	for (i = 0; i < 3; i++) {
		for (j = 0; j < i; j++) {
			temp = array[i][j];
			array[i][j] = array[j][i];
			array[j][i] = temp;
		}
	}
}

int main() {
	int s[3][3];
	int i, j;
	for (i = 0; i < 3; i++) {
		for (j = 0; j < 3; j++) {
			scanf("%d", &s[i][j]);
		}
	}
	fun(s);
	for (i = 0; i < 3; i++) {
		for (j = 0; j < 3; j++) {
			printf("%d ", s[i][j]);
		}
		printf("\n");
	}
	return 0;
}

019 從字符中刪除指定的字符

【題目】編寫函數fun,該函數的功能是:從字符中刪除指定的字符,同一字母的大、小寫按不同字符處理。

【代碼】

#include <stdio.h>

void fun(char s[], char c) {
	int i = 0;
	char *p;
	p = s;
	while (*p) {
		if ((*p) != c) {
			s[i++] = *p;
		} 
		p++;
	}
	s[i] = '\0';
}

int main() {
	char s[100];
	gets(s);
	puts(s);
	char c = 'a';
	fun(s, c);
	puts(s);
	return 0;
}

020 求出小於或等於lim的所有素數並放在aa數組中

【題目】編寫函數int fun(int lim,int aa[MAX]),該函數的功能是求出小於或等於lim的所有素數並放在aa數組中,該函數返回所求的素數的個數。

【代碼】

#include <stdio.h>
#include <math.h>
#define Max 100

int fun(int lim, int aa[Max]) {
	int i, j, k = 0;
	for (i = 2; i <= lim; i++) {
		for (j = 2; j <= sqrt(i); j++) {
			if (i % j == 0) {
				break;
			}
		}
		if (j > sqrt(i)) {
			aa[k++] = i;
		}
	}
	return k;
}

int main() {
	int lim = 9;
	int aa[Max];
	int k = fun(lim, aa);
	printf("%d\n", k);
	int i; 
	for (i = 0; i < k; i++) {
		printf("%d ", aa[i]);
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章