PAT刷题笔记——基础编程题目集

6-3 简单求和

错误代码
int Sum ( int List[], int N ){
  
   for(int i=0;i<N;i++){
	  int Sum=0;
       Sum=Sum+List[i];
   }
    return Sum;
}
正确答案
int Sum ( int List[], int N ){
  int Sum=0;
   for(int i=0;i<N;i++){
	
       Sum=Sum+List[i];
   }
    return Sum;
}

反思:不要将初始化放进循环里,要不然会每一轮循环重置回初始的sum值,达不到递归的目的。

6-4 求自定类型元素的平均

PAT刷题笔记——基础编程题目集_第1张图片

错误代码 编译1 3不通过

ElementType Average(ElementType S[], int N)
{
	double sum=0;
    for (int i = 0; i < N; i++)
		for(int i=0;i<3;i++){
		sum=sum+a[i];
		int b=i+1;
		double average=(double)sum/b; 
	return average;
}

正确代码

ElementType Average(ElementType S[], int N)
{
	ElementType sum = 0;
    for (int i = 0; i < N; ++i)
		sum += S[i];

	return sum / N;
}

反思
1.:题目给的是ElementType类型,这是任意类型,所有题目没有给定类型,可以自定义,但是本道题不需要,我为了算小数强行变成double,有点乱来了.
2.我是将每一轮的平均数相加,因为是近似的,所以会导致数值精度越来越低,正确代码是将所有值相加,最后在除以总数,简洁,精度高,第一出口.

6-5 求自定类型元素的最大值

PAT刷题笔记——基础编程题目集_第2张图片

ElementType Max( ElementType S[], int N )
{
    int maxi = 0;
    int a = 0;
    for (int i = 0; i < N; i++) {
        if (S[maxi] > S[i + 1]) {
            a++;
        }
        else if (S[maxi] < S[i + 1]) {
            a++;
            maxi = a;
            }
          return (ElementType)S[maxi];
    }
 
    }

正确代码

ElementType Max( ElementType S[], int N )
{
    int max = 0;
    for (int i = 0; i < N; i++) 
        if (S[i] > S[max]) 
            max=i;
            return S[max];
     }

反思:
1.关于数组大小两种处理方法,一种找最大下标在S[max],一种直接比较数组找最大的数组值;
我的思路是两两比对保留大项,可以是可以,但是很繁琐,不是好方法
后面代码的思路就比较清晰,用S[i]与任意的数组值比较S[max],要是前者大,把下标i赋给max,这样S[max]在比较过的数组量中就一种保持着最大值了

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

如何使输出保留需要的小数位数?

PAT刷题笔记——基础编程题目集_第3张图片

%.xlf x是几就保留几位

你可能感兴趣的:(c语言)