• 浙大版《C语言程序设计(第3版)》题目集 --总结


    浙大版《C语言程序设计(第3版)》题目集

    此篇博客意义为总结pta上浙大版《C语言程序设计(第3版)》题目集所做题目的错误点,心得体会。

    1.练习2-10 计算分段函数[1]

    题目截图
    本题目要求计算下列分段函数f(x)的值:

    公式

    输入格式:
    输入在一行中给出实数x。

    输出格式:
    在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。

    输入样例1:

    10
    

    输出样例1:

    f(10.0) = 0.1
    

    输入样例2:

    0
    

    输出样例2:

    f(0.0) = 0.0
    
    #include<stdio.h>
    #include<math.h>
    int main(void)
    {
    	double x,result;
    	scanf("%lf",&x);
    	
    	if(x==0)
    	
    		result=0.0;
    		
    	else
    	
    		result=pow(x,-1);
    	
    	printf("f(%.1f) = %.1f",x,result);
    	return 0;
    
    }
    

    错误点:

    • (X=0)中少了一个'='号
    • printf语句中,输出的格式控制字符为%.1f,意思是指定输出时保留一位小数,详见课本P25页
    • pta作业上面对输出内容空格的要求

    **2.练习2-12 输出华氏-摄氏温度转换表 **

    输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。

    温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。

    输入格式:
    在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。
    
    输出格式:
    第一行输出:"fahr celsius"
    

    接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。

    若输入的范围不合法,则输出"Invalid."。

    输入样例1:
    32 35
    输出样例1:
    fahr celsius
    32   0.0
    34   1.1
    输入样例2:
    40 30
    输出样例2:
    Invalid.
    

    错误代码

    #include<stdio.h>
    int main()
    {
    	int fahr,lower,upper;
    	double celsius;
    	scanf("%d %d",&lower,&upper);
    	if(lower<=upper&&upper<=100)
    	{
    		for(fahr=lower;fahr<=upper;fahr=fahr+2)
    		{
    			celsius=5*(fahr-32)/9;
    			printf("f(%d)  %.1f
    ",fahr,celsius);
    		}
    		
    	}
    	else
    	printf("Invalid.");
    	
    	
    	return 0;
    }
    
    

    心得:一开始不知道怎么做测试,调试程序

    3.练习2-18 求组合数
    本题要求编写程序,根据公式 算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。

    输入格式:
    输入在一行中给出两个正整数m和n(m≤n),以空格分隔。
    
    输出格式:
    按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。
    
    输入样例:
    2 7
    输出样例:
    result = 21
    
    #include <stdio.h>
    
    double fact(int n) {
    int i;
    double result = 1.0;
    
    if (n == 0) {
        return 1.0;
    }
    for (i = 2; i <= n; i++) {
        result *= i;
    }
    
    return result;
    }
    
    int main(void) {
    int m, n;
    double result;
    
    scanf("%d %d", &m, &n);
    result = fact(n) / (fact(m)*fact(n - m));
    printf("result = %.0f
    ", result);
    
    return 0;
    }
    

    疑难点:对定义函数不熟悉,一开始做的时候会想起用for循环控制运算逻辑,但是后来写的时候发现用for循环太长了
    总结:怎么定义函数?

    4.习题2-1 求整数均值
    dev上面做测试,调试完全没有错误,但是在pta提交却出现了编译错误……且测试了多组数据,我想原因应该在double(Sum)上面

    更正:将第8行改为Average=1.0*Sum/4;pta应该识别不了double(sum)这种格式的输入。

    **5.习题2-5 求平方根序列前N项和 **

    在这道题目中,我把定义i放在了for循环类,即i首次出现的位置,给予i定义整形变量,这样是不是减少一个开辟空间,还是没有,哈哈。

    **6.练习3-3 统计学生平均成绩与及格人数 **

    #include <stdio.h>
    int main()
    {
    int N,i,defen;
    int sum=0,count=0;
    double average;
    scanf("%d
    ",&N);
    if(N>0)//注意检测人数,题干中要求非负数
        {
        for(i=0;i<N;i++)//通过for循环来控制循环输入,i<N控制循环次数
        {
    	scanf("%d",&defen);//一次输入一个数,进行下一逻辑运算
    		if(defen>=60)
    			count++;
    			sum+=defen; 	
        }
        average=1.0*sum/N;	
        }
        printf("average = %.1f
    ",average);
        printf("count = %d",count);
    
        return 0;
      }
    

    巧妙处:

        for(i=0;i<N;i++)
        {
    	scanf("%d",&defen);
    

    知识点:逐个输入,输入数字控制了数入个数。


    巧妙处:

     for(i=0;i<N;i++)
        {
    	scanf();
    		if()
    

    知识点:对逐个输入的数据进行判断;对符合赛选条件的元素,进行逻辑运算。


    **7. 比较大小 **

    用冒泡排序的方法求解

    #include<stdio.h>
      int main()
      {
    
          int n[3];
          for (int i = 0; i < 3; i++) {
    	      scanf_s("%d", &n[i]);
          }
          int x;
          for (int j = 0; j < 2; j++) {
    	      for (int i = 0; i <=2-i; i++)
    	      {
    		  if (n[i + 1] < n[i]) {
    	                x = n[i];
    			n[i] = n[i + 1];
    			n[i + 1] = x;
    	      }
    	      }
          }
    
          for ( int i = 0;  i < 3; i++)
          {
    	      if (i <= 1) {
    		      printf("%d->", n[i]);
    	      }
    	      else
    	      {
    		      printf("%d", n[i]);
    	      }
    	
          }
    
          return 0;
      }
    

    注明:vs2019编写

  • 相关阅读:
    ToolbarLayout的使用
    设置NavigationView子布局Menu图片的颜色
    设置RecyclerView显示滚动条(这里演示垂直的滚动条,水平的道理一样)
    在使用ToolBar + AppBarLayout,实现上划隐藏Toolbar功能,遇到了一个坑。
    Android中设置Imageview的图片充满整个布局
    Android透明状态栏设置
    关于NavigationView中item的字体颜色和icon选中状态颜色
    dp、sp 、 px之间的相互转化的工具类
    今天使用JNI时,出现了一个错误:java.lang.UnsatisfiedLinkError : dlopen failed: library //dlopen打开失败
    kubernetes的几个概念
  • 原文地址:https://www.cnblogs.com/spacexlxl/p/11909201.html
Copyright © 2020-2023  润新知