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)0 (4) 1 (5)行(6)值(7)类型(8)
21 / 30
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 ; int t; 22 / 30 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(\ /**********ERROR**********/ 23 / 30 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.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 return (m) 24 / 30 =========================================== 2、功能:以下程序中,函数fun的功能是计算x^2-2x+6,主函数中将调用fun函数计算: y1=(x+8)^2-2(x+8)+6 y2=(sin(x))^2-2sin(x)+6 请填空。 -------------------------------------#include #include 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】 【参考答案】 sin(x) C语言必背18个经典程序 1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/ #include \main() {int i,j,result; for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf(\表示左对齐,占3位*/ } printf(\每一行后换行*/ } } 2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf(\ if(i%2==0) printf(\控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ } } 3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素 25 / 30 数。*/ #include \main() { int m,i,k,h=0,leap=1; printf(\ for(m=101;m<=200;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap) /*内循环结束后,leap依然为1,则m是素数*/ {printf(\ if(h==0) printf(\ } leap=1; } printf(\} 4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程 找出1000以内的所有完数。*/ main() { static int k[10]; int i,j,n,s; for(j=2;j<1000;j++) { n=-1; s=j; for(i=1;i {printf(\ \ for(i=0;i printf(\