学习了 C 语言基本内容,根据课后习题做一些记录
基本函数练习
本题要求实现一个计算 m 到 n(m<n),保证返回的是,m 到 n 之间所有整数之和
函数接口定义:
int sum(int m, int n)
其中 m 和 n 是用户传入的参数,保证有 m<n,函数返回的是 m 到 n 之间所有整数的和。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdio.h> int sum (int , int ) ;int main (void ) { int m, n; scanf ("%d %d" , &m, &n); printf ("sum = %d \n" , sum(m, n)); return 0 ; } int sum (int m, int n) { int sum = 0 ; for (int i = m; i <= n; i++) { sum += i; } return sum; }
找两个数中最大者
本题要求对两个整数 a 和 b,输出其中较大的数。
函数接口定义
int max(int a,int b);
其中 a 和 b 是用户传入的参数,函数返回的是两者中较大的数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <stdio.h> int max (int , int ) ;int main (void ) { int a, b; scanf ("%d %d" , &a, &b); printf ("max = %d \n" , max(a, b)); return 0 ; } int max (int a, int b) { if (a > b) { return a; } else { return b; } }
数字金字塔
本题要求实现函数输出 n 行数字金字塔。
函数定义
void pyramid( int n )
其中 n 是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出 n 行数字金字塔。注
意每个数字后面跟一个空格
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <stdio.h> void pyramin (int n) ;int main (void ) { int n; scanf ("%d" , &n); pyramin(n); return 0 ; } void pyramin (int n) { int i, j; for (i = 1 ; i <= n; i++) { for (j = 0 ; j < n - i; j++) { printf (" " ); } for (j = 0 ; j <= i; j++) { printf ("%d " , i); } printf (" \n" ); } }
符号函数
本题要求实现符号函数 sign(x)
函数接口定义
int sign(int x)
其中 x 是用户传入的整型参数。符号函数的定义为:若 x 大于 0,sign(x) = 1;若 x 等于 0,sign(x) = 0;否则,sign(x) = −1。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <stdio.h> int sign (int ) ;int main (void ) { int x; scanf ("%d" , &x); printf ("sing(%d) = %d \n" , x, sign(x)); return 0 ; } int sign (int n) { if (n > 0 ) { return 1 ; } else if (n == 0 ) { return 0 ; } else { return -1 ; } }
使用函数求奇数和
本题要求实现一个函数,计算 N 个整数中所有奇数的和,同时实现一个判断奇偶性的函数
函数接口定义
int even( int n );
int OddSum( int List[], int N );
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include <stdio.h> #define MAXN 10 int even (int ) ;int OddSum (int [], int ) ;int main (void ) { int list [MAXN], n, i; scanf ("%d" , &n); printf ("sum of( \n" ); for (i = 0 ; i < n; i++) { scanf ("%d" , &list [i]); { if (even(list [i]) == 0 ) { printf ("%d " , list [i]); } } } printf (") = %d \n" , OddSum(list , n)); return 0 ; } int even (int n) { if (n % 2 == 0 ) { return 1 ; } else { return 0 ; } } int OddSum (int List[], int N) { int i, sum = 0 ; for (i = 0 ; i<N; i++) { if (List[i] % 2 != 0 ) { sum = sum + List[i]; } } return sum; }
使用函数计算两点间的距离
本题要求实现一个函数,对给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离。
函数接口定义
double dist( double x1, double y1, double x2, double y2 );
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> #include <math.h> double dist (double x1, double y1, double x2, double y2) ;int main (void ) { double x1, y1, x2, y2; scanf ("%lf %lf %lf %lf" , &x1, &y1, &x2, &y2); printf ("dist = %.2f \n" , dist(x1, y1, x2, y2)); return 0 ; } double dist (double x1, double y1, double x2, double y2) { return sqrt (pow ((x1 - x2), 2 ) + pow ((y1 - y2), 2 )); }
使用函数求素数和
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。
素数就是只能被 1 和自身整除的正整数。注意:1 不是素数,2 是素数。
函数接口定义
int prime( int p );
int PrimeSum( int m, int n );
其中函数 prime 当用户传入参数 p 为素数时返回 1,否则返回 0;函数 PrimeSum 返回区间[m, n]内所有素数的和。题目保证用户传入的参数 m≤n。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #include <stdio.h> #include <math.h> int prime (int p) ;int primeSum (int m, int n) ;int main (void ) { int m, n, p; scanf ("%d %d" , &m, &n); printf ("sum of( \n" ); for (p = m; p <= n; p++) { if (prime(p) != 0 ) { printf ("%d " , p); } } printf (") = %d\n" , primeSum(m, n)); return 0 ; } int prime (int p) { int x = 0 ; if (p < 2 ) { return 0 ; } for (int i = 2 ; i < p; i++) { if (p%i == 0 ) { x++; } } if (x == 0 ) { return 1 ; } else { return 0 ; } } int primeSum (int m, int n) { int sum = 0 ; for (m; m < n; m++) { if (prime(m) != 0 ) { sum += m; } } return sum; }
使用函数统计指定数字的个数
本题要求实现一个统计整数中指定数字的个数的简单函数。
函数接口定义
int CountDigit( int number, int digit );
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include <stdio.h> int CountDigit (int number, int digit) ;int main () { int number, digit; scanf ("%d %d" , &number, &digit); printf (" Number of digit %d in %d : %d \n" , digit, number, CountDigit(number, digit)); return 0 ; } int CountDigit (int number, int digit) { int sum = 0 ; int mun; if (number < 0 ) { number = -number; } if (number == 0 && digit == 0 ) { sum++; } while (number) { mun = number % 10 ; if (mun == digit) { sum++; } number /= 10 ; } return sum; }