填空题
1. 给出下述程序的执行结果
#include <stdio.h>
main()
{
int i=0;
while(i<3)
for(; i<4;i++)
{
printf("%d",i++);
if(i<3)
continue;
else
break;
printf("%d\n",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\n", 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
【样例说明】
输入的精度e为0.000003,当n为17时,计算的π值为3.1415864,n为18时计算的π值为3.1415896,两者之差为0.0000032,大于给定的精度值,所以需要继续计算。当n为19时,计算的π值为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; }
其余略。