GG第三次作业

填空题

1. 给出下述程序的执行结果            

#include <stdio.h>

main()

{

 int i0;

 while(i<3)

  for(; i<4;i++)

  {

   printf("%d",i++);

   if(i<3)

    continue;

   else

    break;

   printf("%d ",i);

  }

}

2. 下述程序是否正确?如果正确,给出输出结果。空白处填写“不正确”或者直接写上输出结果。            

#include <stdio.h>

main()

{

 int x;

 for(x=100;x<=105;x++)

 {

  if(x%3==0)

   continue;

  printf("%d,",x);

 }

}

    

3. 给出下述程序的执行结果             

#include <stdio.h>

void increment();

main()

{

 int x=8;

 increment();

 x++;

 increment();

 x++;

 increment();

}

void increment()

{

 int x=0;

 x++;

 printf("%d,",x);

   

4. 以下程序的运行结果是             

int x1 = 30, x2 = 40;

void sub(int x, int y)

{

    x1 = x;

    x = y;

    y = x1;

}

main()

{

    int x3 = 10, x4 = 20;

    sub(x3, x4);

    sub(x2, x1);

    printf("%d,%d,%d,%d", x3, x4, x1, x2);

}    

5. 给出下述程序的执行结果         

#include<stdio.h>

int fun2(int a,int b)

{

 int c;

 c=a*b%3;

 return c;

}

int fun1(int a,int b)

{

 int c;

 a+=a;

 b+=b;

 c=fun2(a,b);

 return  c*c;

}

main()

{    

 int x=11,y=19;

 printf("%d ", fun1(x,y));

}

 择题

# 题目

1. C语言程序中,以下正确的描述是           

(A)  函数的定义可以嵌套,但函数的调用不可以嵌套

(B)  函数的定义不可以嵌套,但函数的调用可以嵌套

(C)  函数的定义和函数的调用均不可以嵌套

(D)  函数的定义和函数的调用均可以嵌套

   

2. 以下正确的函数声明形式是           

(A)  double fun(int x, int y)

(B)  double fun(int x; int y)

(C)  double fun(int x, int y);

(D)  double fun(int x, y);

3. 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为         

(A)  自动(auto)

(B)  静态(static)

(C)  外部(extern)

(D)  寄存器(register) 

   

4. 以下关于数组的描述正确的是

(A)数组的大小是固定的,但可以有不同类型的数组元素

(B)数组的大小是可变的,但所有数组元素的类型必须相同

(C)数组的大小是固定的,所有数组元素的类型必须相同

(D)数组的大小是可变的,可以有不同类型的数组元素

  

5. 对以下说明语句的正确理解是           

int a[10] = {6, 7, 8, 9, 10};

(A)  5个初值依次赋给a[1]a[5]

(B)  5个初值依次赋给a[0]a[4]

(C)  5个初值依次赋给a[6]a[10]

(D)  因为数组长度与初值的个数不相同,所以此语句不正确

   

6. 若用数组名作为函数调用的实参,传递给形参的是       

(A)  数组的首地址

(B)  数组第一个元素的值

(C)  数组中全部元素的值

(D)  数组元素的个数

   

7. 在定义 int a[10]; 之后,a的引用正确的是

(A)a[10]

(B)a[6.3]

(C)a(6)

(D)a[10-10]

答案:

填空题

1.02

for循环控制条件中第三句话会在每次循环结束,下一次循环开始前执行。

2.100,101,103,104,

3.1,1,1

4.10,20,40,40

注意,局部变量在其他函数中被改变值,在原本的函数中值不会改变。

5.4

选择题

1.B 2.A 3.A 4.C 5.B 6.A 7.D

编程题

1.【问题描述】

给定一个精度值e,用下列公式计算π的近似值,要求前后两次π的迭代之差的绝对值小于e,给出相应的最小迭代次数n和最后一次计算的π的值。

π/2=1+1!/3+2!/(3×5)+3!/(3×5×7)++(n-1)!/(3×5×7×…×(2n-1))

【输入形式】

从控制台输入e( e>=0.000001 )的值。

【输出形式】

输出迭代次数n和最后一次计算的π的值(以一个空格分隔,并且输出π时要求小数点后保留7位有效数字)。

【样例输入】

0.000003

【样例输出】

19 3.1415912

【样例说明】

输入的精度e0.000003,当n17时,计算的π值为3.1415864n18时计算的π值为3.1415896,两者之差为0.0000032,大于给定的精度值,所以需要继续计算。当n19时,计算的π值为3.1415912,与上次之差为0.0000016,小于给定的精度值,所以最小迭代次数为19,输出的π值为3.1415912

注意:

(1) 为保证计算精度,请使用double数据类型保存计算数据。

(2) 应至少迭代两次,即:n>=2

【评分标准】

该题要求输出最小迭代次数和π的值,共有5个测试点。上传C语言文件名为example1a.c

#include<stdio.h>

#include<stdlib.h>

 

void main()

{

    double fz=1.0,fm=1.0;

    int n=1;

    double e,num=1.0,test;

    scanf("%lf",&e);

    if (num<e) printf("1 2.0000000");

    else

    do

    {

        n++;

        fz*=(n-1); fm*=(2*n-1);

        test=fz/fm;

        num+=test;

    }while ((2*test)>=e);

    printf("%d %.7f",n,2*num);

    return;

}

其余略。

原文地址:https://www.cnblogs.com/Shymuel/p/8487944.html