VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2719|回复: 1

[分享] 浙大PTA第六章函数练习答案

[复制链接]
66_avatar_middle
最佳答案
0 
在线会员 发表于 2021-5-5 18:26:19 | 显示全部楼层 |阅读模式
本帖最后由 三重岁月 于 2021-5-5 19:18 编辑

6-1 简单输出整数 (10分)
本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数
函数接口定义:
  1. void PrintN ( int N );
复制代码
其中N是用户传入的参数。该函数必须将从1到N的全部正整数顺序打印出来,每个数字占1行
裁判测试程序样例:
  1. #include <stdio.h>
复制代码
分析:
主函数只有声明语句和输入语句,题目要求打印从1到N的全部正整数,所以PrintN函数需要循环语句(求和),输出语句,注意每个数字占1行,最后一行无换行符。


C语言程序1:
  1. void PrintN ( int N ){
  2.         for(int i=1;i<=N;i++){
  3.                 printf("%d",i);
  4.                 if(i==N) continue;
  5.                 printf("\n");
  6.         }
  7. }
复制代码



6-2 统计个位数字 (15 分)
本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。

函数接口定义:
  1. int Count_Digit ( const int N, const int D );
复制代码


其中N和D都是用户传入的参数。N的值不超过int的范围;D是[0, 9]区间内的个位数。函数须返回N中D出现的次数。

裁判测试程序样例:
  1. #include <stdio.h>

  2. int Count_Digit ( const int N, const int D );

  3. int main()
  4. {
  5. int N, D;

  6. scanf("%d %d", &N, &D);
  7. printf("%d\n", Count_Digit(N, D));
  8. return 0;
  9. }
复制代码


输入样例:
  1. -21252 2
复制代码


输出样例:
  1. 3
复制代码
分析:

本题主函数有输入和输出语句,则Count_Digit函数填写数据的变化过程即可。
由于Count_Digit 函数已限制为常量,所以可以通过建立新变量R接收常量的方式对变量进行修改。
先考虑R>0的特殊情况,当R不为0时,建立新变量M接收R的末尾数字,同时R需要自除10。此时判断M是否与主函数输入的D相同,若相同,建立的计数变量count自加1。直到R被除尽,返回count的值。
再考虑R<0的情况。即相反数。
注意R==0为关键点。如果不返回1,将返回0。
C语言程序1:

  1. int Count_Digit ( const int N, const int D ){
  2.         int M,count=0;
  3.         int R=N;
  4.         if(R<0) R=-R;
  5.         if(R==0) return 1;
  6.         while(R!=0) {
  7.                 M=R%10;
  8.         R=R/10;
  9.                 if(M==D) count++;
  10.         }
  11.         return count;
  12. }
复制代码

6-3 找两个数中最大者 (10 分)

本题要求对两个整数a和b,输出其中较大的数。

函数接口定义:

  1. int max( int a, int b );
复制代码



其中a和b是用户传入的参数,函数返回的是两者中较大的数。


裁判测试程序样例:

  1. #include <stdio.h>
  2. #include <math.h>

  3. int IsSquare( int n );

  4. int main()
  5. {
  6.     int n;

  7.     scanf("%d", &n);
  8.     if ( IsSquare(n) ) printf("YES\n");
  9.     else printf("NO\n");

  10.     return 0;
  11. }

  12. /* 你的代码将被嵌在这里 */
复制代码



输入样例:
  1. <div>-5 8</div><div></div>
复制代码


输出样例:

  1. max = 8
复制代码



C语言程序1:
  1. int max( int a, int b ){
  2.         if(a>=b) return a;
  3.         else return b;
  4. }
复制代码


C语言程序2:
  1. int IsSquare(int n)
  2. {
  3.     int x;
  4.     x=(int)sqrt(n);
  5.     if(x*x==n)
  6.         return 1;
  7.     else
  8.         return 0;
  9. }/*此题即为你要先得将x整为整型
复制代码
6-4 使用函数判断完全平方数 (10 分)

本题要求实现一个判断整数是否为完全平方数的简单函数。

函数接口定义:
  1. int IsSquare( int n );
复制代码



其中n是用户传入的参数,在长整型范围内。如果n是完全平方数,则函数IsSquare必须返回1,否则返回0。

裁判测试程序样例:
  1. #include <stdio.h>
复制代码


输入样例1:
  1. 10
复制代码



输出样例1:
  1. NO
复制代码



输入样例2:
  1. 100
复制代码



输出样例2:
  1. YES
复制代码
分析:
本题主函数有输入和输出语句,则IsSquare函数填写数据的变化过程即可。
此题即为你要先得将x判断为整型,因为他可能不是整型,然后整型之后如果还可以平方之后还是n那才对
如果这样写
  1. int IsSquare(int n)
  2. {
  3. int x;
  4. if(x==(int)sqrt(n))
  5. return 1;
  6. else
  7. return 0;
  8. }
复制代码

则不一定对了,因为n的开方数可能是实数型,有无数多的实数型的数强制整型后都可以是x。(感谢网络大佬指正)
同时注意n==0的情况。
C语言程序1:

  1. int IsSquare(int n)
  2. {
  3.     int x;
  4.     x=(int)sqrt(n);
  5.     if(x*x==n||n==0)
  6.         return 1;
  7.     else
  8.         return 0;
  9. })
复制代码










上一篇:7-1 说反话-加强版
下一篇:C语言网编程练习普及题
66_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-5-5 18:33:01 | 显示全部楼层
本帖最后由 三重岁月 于 2021-5-5 18:52 编辑

这到底怎么处理啊。。。。实在无语
编辑器不能支持Markdown格式吗
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-9-28 02:09

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表