…………… … … … … … … 线号…学… … … … … … … …名…姓订 … … … … … … …业…专…级…年装 … … … … … … …系…院………吉林大学农学部2008-2009学年第一学期《C语言程序设计》考试试卷(A卷) {static int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; (考试时间:120分钟,本卷共4页,共印820份 for(i=1;i<3;i++)
一、选择题(本题共有15道小题,每道小题2分,满分30分) for(j=0;j<=i;j++) s+=a[i][j]; 1.C语言中,int类型数据占2个字节,则long类型数据占( ) printf(“%d”,s); A、1个字节 B、2 个字节 C、3个字节 D、4个字节 }
2.以下说法中正确的是( ) 该程序的输出结果是( )
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函A、18 B、19 C、20 D、21
数中定义 C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部 7.执行下列程序时输入123<空格>456<空格>789<回车>,输出结果是( )。
分 #include
main( ) {char s[100]; int c, i;
{ int x=3,y=0,z=0; scanf(\ scanf(\ scanf(\ if(x=y+z) printf(“****”); printf(\ else printf(“####”); }
}A、有语法错误不能通过编译 B、输出****C、可以通过编译,但不能通过连接,因而不能运A、123,456,789 行 D、输出#### B、1,456,789 4.以下程序的输出结果是( ) C、1,23,456,789 void func(int *a,int b[]) { b[0]=*a+6; } D、1,23,456
main() {int a,b[5]; 8.以下对C语言函数的描述中,正确的是( )。
a=0; b[0]=3; A、C程序由一个或一个以上的函数组成 func(&a,b); printf(\\n\[0]); B、C函数既可以嵌套定义又可以递归调用
} A)6 B)7 C)8 D)9 C、函数必须有返回值,否则不能使用函数
5.以下程序的输出结果是( ) D、C程序中调用关系的所有函数必须放在同一个程序文件中
main( ) 9.以下函数值的类型是( )。
{ int x=10,y=10,i; fun ( float x ) for(i=0;x>8;y=++i) {float y; printf(“%d %d”,x--,y); y= 3*x-4; } return y; A、 10 1 9 2 B、 9 8 7 6 C、10 9 9 0 D、10 10 9 1 }
6.有如下程序 A、int B、不确定 C、void D、float
main( ) 10.一个C程序由函数A( ),B( ),C( )和函数P( )构成,在函数A( )中分别调用了函数B( )和函数C( ),在函数
第 1 页 共 9 页
B( )中调用了函数A(),且在函数P( )中也调用了函数A( ),则可以说( )。
A、函数B( )中调用的函数A( )是函数A( )的间接递归调用B、函数A( )被函数B( )调用是直接递归调用C、 int k;
} r;
函数P( )直接递归调用了函数A( )D、函数P( )中调用的函数A( )是函数P( )的嵌套
11.对于int *pa[5];的描述,( )是正确的
A、pa是一个指向数组的指针,所指向的数组是5个int 型元素 B、pa是一个指向某数组中第5个元素的指针,该指针是int 型变量 C、pa[5]表示某个数组的第5个元素的值
D、pa是一个具有5个元素的指针数组,每一个元素是一个int 型指针
12.执行以下程序后,y的值是( )
main( )
{ int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1]; for(x=0;x<3;x++) y+=*(p+x); printf(“%d\\n”,y); }
A、17 B、18 C、19 D、20
13.有以下程序段
char arr[]=”ABCDE”; char *ptr;
for(ptr=arr;ptr A、ABCDE B、A C、 E D、ABCDE B D BCDE C C CDE D B DE E A E 14.以下程序的输出结果是( ) main() { union { char i[2]; r.i[0]=2; r.i[1]=0; printf(“%d\\n”,r.k); } A、 2 B、 1 C、 0 D、 不确定 15.在C程序中,可以把整型数以二进制形式存放到文件中的函数是( ) A、fprintf函数 B、fread函数 C、fwrite函数 D、fputc函数 9二、填空题(本题共有5道小题,每道小题2分,满分10得 分 分) 1.在C语言中使用到的变量,都应先(定义 ),后( 使用 )。 2.若有定义:char c=′\\010′;则变量c中包含的字符个数为__1个____。 3.函数的返回值是通过函数中的( return )语句获得的。 4.下面函数用来求出两个整数之和,并通过形参传回两数相加之和,请填空。 int add(int x,int y,( int)z) { ( * )=x+y;} 5.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是___22个___。 struct stud {char num[6]; int s[4]; double ave; }a; `三、分析程序结果(本题共有4道小题,每道小题5分,满分20分) 1.main( ) { int x=1,y=2,z=3; x+=y+=z; printf(\}5 2.main( ) { int a=24,b=16,r; while (b) 第 2 页 共 9 页 { r=a%b; a=b; b=r; } printf(\}8 3. #include int p(int k,int a[]) {int m,i,c=0; for(m=2;m<=k;m++){ for(i=2;i<=m;i++) if(!(m%i)) break; if(i==m) a[c++]=m; } return c; } #define MAXN 20 main( ) { int i,m,s[MAXN]; m=p(13,s); for(i=0;i 程序输出结果为( 2 3 5 7 11 质 数 , 并 依 次 存 数 4.int f(int b[ ],int n) { int i, s=0; for(i=0; i<=n; i+=2) s+=b[i]; return s; } main( ) { int x,a[ ]={2, 3, 4, 5, 6, 7, 8, 9}; x=f (a, 5); printf(“%d”,x ); }12 `#### 四、程序填空题(本题共有4道小题,每道小题5分,满分20分)1.程序打印如下形式的图形 * * * * * * * * * * main( ) { for(int i=1;i<=4;i++) { for(int j=1; ① ;j++) j<=i printf( ② ); \printf( ③ ); \} } 2.以下函数返回数组s中最大元素的下标,数组中元素的个数由t传入。 Findmax(int s[],int t) { );函数int p(int k,int a[])的功能为(求k以内(含k) int m,n; 入 数 组 a 中 , 返 回 质 数 个 for(n=0,m=n;n ) if(s[n]>s[m]) ( m=n ); return ( m ); } 3.函数strcpy( )将字符串from复制到字符串to。 第 3 页 共 9 页 void strcpy( char *to ) { while( char *from ); } 10.A11.D 12.C 13.D 14.A 15.C 9`二、填空题(每题2分 共10分)1.定义 使用 2.1个 3. return 4.int * 5.22 三、分析程序结果(每题5分 共20分)1.5 2.8 3. 2 3 5 7 11 求k以内(含k) 质数,并依次存入数组a中,返回质数个数。4.12 4.下面的程序的功能是:利用指针统计一个字符串中,字母、空格、数字、 及其它字符的个数,请填空。 #include 四、程序填空(每题5分 共20分)1.① j<=i ② \ ③ \ 2.m=n、m 3.char *to, char *from或char *from,char *to *to++=*from++4. ( *p>=’A’&& *p<=’Z’) || ( *p>=’a’&& *p<=’z’))、( *p==’ ‘|| { int alpha,space,digit,other; *p==’\\t’)、 char *p,s[80]; ( *p>=’0’ && *p <=’9’) alpha=space=digit=other=0; 五、编程题(每题10分 共20分) printf(“input string:\\n”); 1.int sum(int n) gets(s); { int s; for(p=s;*p!=’\\0’;p++) if (n==0) s=0; if( )alpha++; else s=sum(n-1)+n; else if( )space++; return(s); else if( )digit++; } else other++; 2. #include } { int i, index, k, n, temp; `#### int a[20]; /* 定义1个数组a,它有20个整型元素*/ 五、编程题(本题共有2道小题,第一题5分,第二题15分,满分20分) printf(“Please enter integers: \ for(i = 0; i < 20; i++) scanf(\ 1. 编写一个递归函数,计算1+2+3+......+n 的和。 printf(\ 2. 编程序,实现如下功能: (1)从键盘上输入20个整型数据(注:程序要提示输入方式); for(i = 0; i < 20; i++) /* 输出排序前20个数组元素的值 */ (2)输出此20个数据; printf(\ (3)对此20个数据按从小到大顺序进行排序; (4)输出排序结果。 for(k = 0; k < 19; k++){ /* 对20个数排序 */ 《C语言程序设计》考试试卷(A卷)答案及评分标准 index = k; for(i = k + 1; i < 20; i++) 一、选择题(每题2分 共30分) 1.D 2.C 3.D 4.A 5.D 6.A 7.D 8.A 9.A if(a[i] < a[index]) index = i; temp = a[index]; a[index] = a[k]; a[k] = temp; 第 4 页 共 9 页

