[新]C语言期末复习,经典练习题+知识点总结+模拟考题 三位一体,完胜c语言!!!!考期必备神器 下载本文

for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21. 8、二维数组在内存中存贮时,是按行的顺序进行存储的。

9、C语言中引用数组元素的方括号可以用花括号代替.

10、每次调用函数时,都要对静态局部变量重新进行初始化. 11、在程序中的第二个函数之后定义了某全局变量,则该程序的所有函数均可使用它. 12、在C程序中 , 函数既可以嵌套定义 , 也可以嵌套调用

13、在定义宏时,在宏名与带参数的括弧之间不应加空格.

14、数组名与指针变量是相互等价的.

15、两个类型相同的结构体变量,可以互相赋值.

16、C语言中,在打开文件时,必须说明文件的使用方式,\用于打开一个不存在的文件.

答案:错错错错错 对对对错错 错错对错对 错 三、 填空

1、设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为____1.0_.

2、在C语言中,long类型数据占___4__个字节, short类型数据占_2____个字节.

3、int x=2,y=3,z=4; 则表达式x+y>z&&y==z的值为 0_____.

4、int x=2,y=3,z=4; 则表达式x+y&&(x=y)的值为____1_.

5、C语言中,二维数组在内存中的存放方式为按___行__优先存放.

6、函数调用时的实参和形参之间的数据是单向的_值____传递.

7、结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体___类型__,再说明结构体变量.

8、调用 fopen 函数打开一文本文件,在\使用方式\这一项中, 为输入而打开需填入_r____.

答案:(1)1 1.0 1. (2) 4 2 (3)

21 / 30

0 (4) 1 (5) 行 (6) 值 (7) 类型 (8)r+ r

四、程序设计

1、功能:求出二维数组外围元素之和,作为函数值返回。二

维数组的值在主函数中赋予。 ------------------------------------- #define M 4 #define N 5

#include \

int fun(int a[M][N]) {

/*********Begin**********/

/********** End **********/ }

main() {

int

a[M][N]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8}};

void TestFunc(); int y; y=fun(a);

printf(\ TestFunc(); }

void TestFunc() {

FILE *IN,*OUT; int iIN[M][N],iOUT; int i,j,k;

IN=fopen(\if(IN==NULL)

{printf(\Be Changed\}

OUT=fopen(\

if(OUT==NULL)

{printf(\Be Changed\}

for(k=0;k<10;k++) { for(i=0;i

fscanf(IN,\

iOUT=fun(iIN);

fprintf(OUT,\}

fclose(IN); fclose(OUT); }

【参考代码】 int s=0; int i,j;

for(i=0;i

s=s+a[i][0]+a[i][N-1]; for(j=1;j

s=s+a[0][j]+a[M-1][j]; return s;

===============

2、功能:找出一个大于给定整数且紧随这个整数的素数,并

作为函数值返回。

------------------------------------------------*/

#include \#include\

int fun(int n) {

/*********Begin**********/

/********** End **********/ }

void TestFunc() {

FILE *IN,*OUT; int s ;

22 / 30

int t; int o;

IN=fopen(\ if(IN==NULL) {

printf(\ }

OUT=fopen(\ if(OUT==NULL) {

printf(\ }

for(s=1;s<=5;s++) {

fscanf(IN,\ o=fun(t);

fprintf(OUT,\ }

fclose(IN); fclose(OUT); }

main() {

int m;

printf(\ scanf(\

printf(\ TestFunc(); }

【参考代码】

int i,k;

for(i=n+1;;i++){ for(k=2;k

五、程序改错

1、功能:一个5位数,判断它是不是回文数。即12321是回文数,个

位与万位相同,十位与千位相同。 ------------------------------------- #include \main( ) {

/**********ERROR**********/ long ge,shi,qian;wan,x; scanf(\

/**********ERROR**********/ wan=x000;

qian=x000/1000; shi=x0/10; ge=x;

/**********ERROR**********/ if (ge==wan||shi==qian)

printf(\ else

printf(\}

【改错1】 【参考答案】

long ge,shi,qian,wan,x;

===========================================

【改错2】 【参考答案】 wan=x/10000;

===========================================

【改错3】 【参考答案】

if (ge==wan&&shi==qian) if (shi==qian&&ge==wan)

===========================================2、功能:一个5位数,判断它是不是回文数。即12321是回文数,个

位与万位相同,十位与千位相同。 ------------------------------------- #include \main( ) {

/**********ERROR**********/ long ge,shi,qian;wan,x; scanf(\

23 / 30

/**********ERROR**********/ wan=x000;

qian=x000/1000; shi=x0/10; ge=x;

/**********ERROR**********/ if (ge==wan||shi==qian)

printf(\ else

printf(\}

【参考答案】 #include \#include

===========================================【参考答案】 float s=0,t=1,p=1; float s=0,p=1,t=1; float p=1,s=0,t=1; float p=1,t=1,s=0; float t=1,p=1,s=0; float t=1,s=0,p=1; double s=0,t=1,p=1; float s=0.0,t=1.0,p=1.0; double s=0.0,t=1.0,p=1.0;

===========================================

【参考答案】 while(fabs(t)>1e-4) while(0.00010.0001)

===========================================

【参考答案】

printf(\printf(\

===========================================

六、程序填空

1、功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。 ------------------------------------- #include \

/***********FILL***********/ int fun(_____ ) {

int m=0, mc=0, j, n;

/***********FILL***********/ while (k >= 2 && _____) {

/***********FILL***********/ if (k == 0 || _____) {

m=m+k; mc++; } k--; }

/***********FILL***********/ _____; }

main ( ) {

printf(\}

【空1】

【参考答案】 int k

===========================================

【空2】

【参考答案】 mc < 10 10 > mc mc <= 9 9 >= mc

===========================================【空3】 【参考答案】 k == 0 !(k) k/17*17==k

=========================================== 【空4】

【参考答案】 return m

24 / 30

return (m)

===========================================

2、功能:以下程序中,函数fun的功能是计算x^2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)^2-2(x+8)+6 y2=(sin(x))^2-2sin(x)+6

请填空。

-------------------------------------#include

#include double fun(double x) {

return(x*x-2*x+6); }

main() {

/***********FILL***********/ double x, __________; printf(\ scanf(\

/***********FILL***********/ y1=fun( _________);

/***********FILL***********/ y2=fun( _________);

printf(\ y1, y2); }

【空1】

【参考答案】 y1,y2 y2,y1

=========================================== 【空2】

【参考答案】 (x+8) (8+x) x+8 8+x

=========================================== 【空3】

【参考答案】