概述
目录
- 练习5-1 求m到n之和
- 练习5-2 找两个数中最大者
- 练习5-3 数字金字塔
- 习题5-1 符号函数
- 习题5-2 使用函数求奇数和
- 习题5-3 使用函数计算两点间的距离
- 习题5-5 使用函数统计指定数字的个数
- 习题5-6 使用函数输出水仙花数
练习5-1 求m到n之和
本题要求实现一个计算m~n(m<n)之间所有整数的和的简单函数。
函数接口定义:
int sum( int m, int n );
其中m和n是用户传入的参数,保证有m<n。函数返回的是m~n之间所有整数的和。
裁判测试程序样例:
#include <stdio.h>
int sum(int m, int n);
int main()
{
int m, n;
scanf("%d %d", &m, &n);
printf("sum = %dn", sum(m, n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
-5 8
输出样例:
sum = 21
代码:
int sum(int m, int n)
{
int i = 0;
int sum = 0;
for(i=m; i<=n; i++)
{
sum += i;
}
return sum;
}
练习5-2 找两个数中最大者
本题要求对两个整数a和b,输出其中较大的数。
函数接口定义:
int max( int a, int b );
其中a和b是用户传入的参数,函数返回的是两者中较大的数。
裁判测试程序样例:
#include <stdio.h>
int max( int a, int b );
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("max = %dn", max(a, b));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
-5 8
输出样例:
max = 8
代码:
int max(int a, int b)
{
return a>b?a:b;
}
练习5-3 数字金字塔
本题要求实现函数输出n行数字金字塔。
函数接口定义:
void pyramid( int n );
其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注意每个数字后面跟一个空格。
裁判测试程序样例:
#include <stdio.h>
void pyramid( int n );
int main()
{
int n;
scanf("%d", &n);
pyramid(n);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
5
输出样例:
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
代码:
void pyramid(int n)
{
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
printf(" ");
}
for (j = 0; j <= i; j++)
{
printf("%d ", i+1);
}
printf("n");
}
}
习题5-1 符号函数
本题要求实现符号函数sign(x)。
函数接口定义:
int sign( int x );
其中x是用户传入的整型参数。符号函数的定义为:若x大于0,sign(x) = 1;若x等于0,sign(x) = 0;否则,sign(x) = −1。
裁判测试程序样例:
#include <stdio.h>
int sign( int x );
int main()
{
int x;
scanf("%d", &x);
printf("sign(%d) = %dn", x, sign(x));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
10
输出样例:
sign(10) = 1
代码:
int sign(int x)
{
if(x > 1)
return 1;
else if(x == 0)
return 0;
else
return -1;
}
习题5-2 使用函数求奇数和
本题要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。
函数接口定义:
int even( int n );
int OddSum( int List[], int N );
其中函数even将根据用户传入的参数n的奇偶性返回相应值:当n为偶数时返回1,否则返回0。函数OddSum负责计算并返回传入的N个整数List[]中所有奇数的和。
裁判测试程序样例:
#include <stdio.h>
#define MAXN 10
int even( int n );
int OddSum( int List[], int N );
int main()
{
int List[MAXN], N, i;
scanf("%d", &N);
printf("Sum of ( ");
for ( i=0; i<N; i++ ) {
scanf("%d", &List[i]);
if ( even(List[i])==0 )
printf("%d ", List[i]);
}
printf(") = %dn", OddSum(List, N));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
6
2 -3 7 88 0 15
//结尾无空行
输出样例:
Sum of ( -3 7 15 ) = 19
//结尾无空行
代码:
int even(int n)
{
if(n % 2 != 0)
return 0;
else
return 1;
}
int OddSum(int List[], int N)
{
int i = 0;
int sum = 0;
for(i=0; i<N; i++)
{
if(List[i] % 2 != 0)
{
sum += List[i];
}
}
return sum;
}
习题5-3 使用函数计算两点间的距离
本题要求实现一个函数,对给定平面任意两点坐标(x1,y1) 和 (x2,y2),求这两点之间的距离。
函数接口定义:
double dist( double x1, double y1, double x2, double y2 );
其中用户传入的参数为平面上两个点的坐标(x1,y1) 和 (x2,y2),函数dist应返回两点间的距离。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>
double dist( double x1, double y1, double x2, double y2 );
int main()
{
double x1, y1, x2, y2;
scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
printf("dist = %.2fn", dist(x1, y1, x2, y2));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
10 10 200 100
输出样例:
dist = 210.24
代码:
double dist(double x1, double y1, double x2, double y2)
{
double dis = sqrt(pow((x1-x2), 2) + pow((y1-y2), 2));
return dis;
}
习题5-5 使用函数统计指定数字的个数
本题要求实现一个统计整数中指定数字的个数的简单函数。
函数接口定义:
int CountDigit( int number, int digit );
其中number是不超过长整型的整数,digit为[0, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。
裁判测试程序样例:
#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: %dn", digit, number, CountDigit(number, digit));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
-21252 2
输出样例:
Number of digit 2 in -21252: 3
代码:
int CountDigit( int number, int digit )
{
int count = 0;
if(number <0)
number *= -1;
while(number > 10)
{
if(number%10 == digit)
count++;
number /= 10;
}
if(number == digit)
count++;
return count;
}
习题5-6 使用函数输出水仙花数
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 1^3 + 5^3 + 3^3 。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。
函数接口定义:
int narcissistic( int number );
void PrintN( int m, int n );
函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。
函数PrintN则打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000。
裁判测试程序样例:
#include <stdio.h>
int narcissistic( int number );
void PrintN( int m, int n );
int main()
{
int m, n;
scanf("%d %d", &m, &n);
if ( narcissistic(m) ) printf("%d is a narcissistic numbern", m);
PrintN(m, n);
if ( narcissistic(n) ) printf("%d is a narcissistic numbern", n);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
153 400
输出样例:
153 is a narcissistic number
370
371
代码:
int cnt_num(int n)
{
int cnt = 0;
if (n < 10)
cnt = 1;
else
{
while (n)
{
n /= 10;
cnt++;
}
}
return cnt;
}
int narcissistic(int number)
{
int cnt = cnt_num(number);
if (number >= 3)
{
int i = 0;
int sum = 0;
int number2 = number;
for (i = 0; i < cnt; i++)
{
sum += (int)pow((number % 10), cnt);
number /= 10;
}
if (sum == number2)
return 1;
}
return 0;
}
void PrintN(int m, int n)
{
int i = 0;
int sum = 0;
for (i = m + 1; i < n; i++)
{
if (narcissistic(i) == 1)
{
printf("%dn", i);
}
}
}
最后
以上就是激动帽子为你收集整理的【PTA】浙大版《C语言程序设计(第3版)》题目集的全部内容,希望文章能够帮你解决【PTA】浙大版《C语言程序设计(第3版)》题目集所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复