吉林大学C语言试题及答案

更新时间:2023-03-15 03:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

…………… … … … … … … 线号…学… … … … … … … …名…姓订 … … … … … … …业…专…级…年装 … … … … … … …系…院………吉林大学农学部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 3.下面的程序会( ) main( )

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 main( )

四、程序填空(每题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 printf(“alpha:%d space:%d digit:%d other:%d\\n”,alpha,space,digit,other); int main(void)

}

{ 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 页

…………… … … … … … … 线号…学… … … … … … … …名…姓订 … … … … … … …业…专…级…年装 … … … … … … }

main()

{int i=1,j=1,k=2;

printf(\

if((j++||k++)&&i++)

printf(\\n\); for(i = 0; i < 20; i++) /* 输出排序后20个数组元素的值 */ }

printf(\执行后输出结果是 。

A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 return 0; 10、有如下程序

main()

{float x=2.0,y; if(x<0.0)y=0.0;

吉林大学农学部2008-2009学年第一学期《C语言程序设计》考试试卷(B卷)else if(x<10.0)y=1.0/x; (一、单项选择题,答案不写入答题栏的一律不得分!(每题1.5分,共52.5分) else y=1.0;

printf(\\n\);}

1、结构化程序设计的3种结构是 。 该程序的输出结果是 。

A)顺序结构、选择结构、转移结构 B)分支结构、等价结构、循环结构 A)0.000000 B)0.250000 C)0.500000 D)1.000000 C)多分支结构、赋值结构、等价结构 D)顺序结构、选择结构、循环结构 11、有如下程序:

2、以下叙述中正确的是 。 main() A)C语言比其他语言高级 B)C语言可以不用编译就能被计算机识别执行 {int n=9;

C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 while(n>6){n--; printf(\);} D)C语言出现的最晚,具有其他语言的一切优点 }

3、C语言中最简单的数据类型包括 。 该程序的输出结果是 。

A)整型、实型、逻辑型 B)整型、实型、字符型 A)987 B)876 C)8765 D)9876 C)整型、字符型、逻辑型 D)字符型、实型、逻辑型 12、在下列选项中,没有构成死循环的是 。

4、若变量已正确定义并赋值,以下符合C语言语法的表达式是 。 A)int i=100; A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b while(1) 5、若变量a,i已正确定义,且i已正确赋值,合法的语句是 。A)a= =1 B)++i; C){i=i0+1;

a=a++=5; D)a=int(i); if(i>100)break; 6、已知: }

int t=0; B)for(;;);

while(t=1){...} C)int k=10000;

则以下叙述正确的是 。 do{k++;}while(k>10000); A)循环控制表达式的值为0 B)循环控制表达式的值为1 D)int s=36; C)循环控制表达式不合法 D)以上说法都不对 while(s)- -s;

7、若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,13、设int x=1,y=1;表达式(!x||y--)的值是 。

c赋予33.0,下列不正确的输入形式是 。 A)0 B)1 C)2 D)-1 A)10<回车>22<回车>33<回车> B)10.0,22.0,33.0<回车> 14、有以下程序

C)10.0<回车>22.033.0<回车> D)10 22<回车>33<回车> float fun(int x,int y) 8、有如下程序: {return(x+y);} main() main()

{ int x=1,a=0,b=0; {int a=2,b=5,c=8;

switch(x) printf(\\n\((int)fun(a+c,b),a-c)); { }

case 0: b++; 程序运行后的输出结果是 。A)编译出错 B)9 C)21 D)9.0 case 1: a++; 15、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 。case 2: a++;b++; A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 } C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参 printf(\\n\);} 该程序的输出结果是 16、若有以下调用语句,则不正确的fun函数的首部是 。

A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2 main() 9、有以下程序 { ?

第 5 页 共 9 页

int a[50],n; ?

fun(n, &a[9]); ? }

A)void fun(int m, int x[]) B)void fun(int s, int h[41]) C)void fun(int p, int *s) D)void fun(int n, int a) 17、fseek函数的正确调用形式是 。

A)fseek(文件指针,起始点,位移量) B)fseek(文件指针,位移量,起始点)C)fseek(位移量,起始点,文件指针) D)fseek(起始点,位移量,文件指针)

18、若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是 。

A)EOF B)-1 C)1 D)NULL

19、若有说明语句:char c='\72'; 则变量c 。

A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法,c的值不确定 20、若有说明 int a[3][4];则a数组元素的非法引用是 。

A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 21、设有以下说明语句

struct stu {int a; float b; } stutype;

则下面的叙述不正确的是 。 A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名 22、在C语言中,引用数组元素时,其数组下标的数据类型允许是 。

A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式 23、若运行时给变量x输入12,则以下程序的运行结果是 。

main() {int x,y;

scanf(\); y=x>12?x+10:x-12; printf(\\n\); } A)0 B)22 C)12 D)10 24、以下说法正确的是 。

A)C语言程序总是从第一个的函数开始执行

B)在C语言程序中,要调用函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分 25、表达式0x13^0x17的值是 。

A)0x04 B)0x13 C)0xE8 D)0x17 26、有以下程序

#define F(X,Y)(X)*(Y) main()

{int a=3, b=4;

printf(\\n\(a++, b++)); }

程序运行后的输出结果是 。 A)12 B)15 C)16 D)20 27、下列程序执行后的输出结果是 。

void func(int *a,int b[]) { b[0]=*a+6; } main()

{int a,b[5]; a=0; b[0]=3;

func(&a,b); printf(\\n\[0]); } A)6 B)7 C)8 D)9 28、若有下面的程序段:

char s[]=\ 则下列叙述正确的是 。

A)s和p完全相同 B)数组s中的内容和指针变量p中的内容相等 C)s数组长度和p所指向的字符串长度相等 D)*p与s[0]相等 29、有以下程序

void sort(int a[],int n) {int i,j,t;

for(i=0;i

if(a[i]

main()

{int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5);

for(i=0;i<10;i++)printf(\[i]); printf(\\n\); }

程序运行后的输出结果是 。

A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1, C)1,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3, 30、以下程序的运行结果是 。

#include \ main()

{struct date

{int year,month,day;}today;

printf(\\n\(struct date)); } A)6 B)8 C)10 D)12

31、若有语句int *point, a=4;和 point=&a;下面均代表地址的一组选项是 。

A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&a D)&a,&*point,point 32、已定义以下函数

fun(char *p2, char *p1) {

第 6 页 共 9 页

while((*p2=*p1)!='\0'){p1++;p2++;} }

函数的功能是 。

A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2

C)对p1和p2两个指针所指字符串进行比较 D)检查p1和p2两个指针所指字符串中是否有'\0' if(!(i%5)) printf (\\n\); }

printf (\\n\); }

39、调用C语标准库函数时要求用 命令。 33、若执行下述程序时,若从键盘输入6和8时,结果为 。

main() {int a,b,s;

scanf(\); s=a

if(a

printf(\); }

A)36 B)64 C)48 D)以上都不对 34、下列关于C语言数据文件的叙述中正确的是 。

A)文件由ASCII码字符序列组成,C语言只能读写文本文件 B)文件由二进制数据序列组成,C语言只能读写二进制文件

C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 35、有以下程序

void ss(char *s,char t) {while(*s)

{if(*s= =t)*s=t - 'a'+ 'A'; s++; } }

main()

{char str1[100]=\ ss(str1,c); printf(\\n\); }

程序运行后的输出结果是 。

A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd

二、填空题,答案不写入答题栏的一律不得分!(每空2分,共30分)

36、以下程序段的输出结果是 。

main()

得 分

{int a=2,b=3,c=4; a*=16+(b++)-(++c); printf(\); }

37~38、若变量n中的值为24,则print()函数共输出 行,最后一行有 个数。

void print (int n,int aa[]) {int i;

for (i=1; i

{printf (\[i]);

40、stract函数的作用是 。

41、C语言程序的注释可以出现在程序中的任何地方,一个注释以 作为开始和结束。

42、设二进制数A是00101101,若想通过异或运算A^B使A的高4位取反,低4位不变,则二进制数B应是 。

43、若已知a=10,b=20,则表达式!a

44、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为 。

for(i=0, j=10; i<=j; i++, j--)k=i+j;

45~46、下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。randomize()是初始化随机数生成器函数,rand()返回一个随机数函数。请填空。

#include #include

void fun(int a[],int n, int *max, int *d) { int i; *max=a[0]; *d=0;

for(i=0; ;i++) if(*max< ) {*max=a[i];*d=i;} }

main()

{ int i, x[20], max, index, n=10; randomize(); for(i=0;i

x[i]=rand()P; printf(\[i]); }

printf(\\n\);

fun(x,n,&max,&index);

printf(\\n\); }

47、以下程序的输出结果是 。

void fun()

{ static int a=0;

a+=2; printf(\); }

main() { int cc;

for(cc=1;cc<4;cc++)fun(); printf(\\n\);

第 7 页 共 9 页

} 48、以下程序的输出结果是 。 #define MAX(x,y)(x)>(y)?(x):(y) main() { int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(\\n\); } 49、下列y的值是 。 int y; y=sizeof(2.25*4); 50、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char *str) { int i; for(i=0; != ′\0′;i++); return(i); } printf(\ for (i=0;i<3;i++) for (j=0;j<3;j++)

scanf(\ minus=a[0][0]; for (i=1;i<3;i++) minus=minus+a[i][i];

printf(\ } 52.

#include #define N 10 struct student {

char stu_num[6]; char name[8];

float score[3];

三、程序设计题。要求程序结构清晰,没有逻辑错误,书写工整,无需写出运行结果。请写在float avr;

背面并标明题号(第51题7.5分、第52题10分,共17.5分,按关键步骤评分) }stu[N];

51、输入一个3╳3的整数矩阵,求其对角线元素之和。 得 分 52、有10个学生,每个学生的数据包括学号(stu_num,6个字符,如s00101)、姓名void main()

(name,8个字符)、三门课程的成绩(score[3],实型)及其平均分(avr,实型,初始时不赋值,)。首{

先输入这10个学生的数据,然后再计算每个学生3门课程的平均分,存回avr中,并输出第6号学生的所有float sum;

信息。 int i,j;

for (i=0;i

{printf(\

printf(\

一、选择题(每题1.5分 共52.5分)1.D 2.C 3.B 4.B 5.B 6.B 7.B 8.A scanf(\ 9.C 10.C11.B 12.D 13.B 14.B 15.D16.D 17.B 18.C 19.A 20.D21.C 22.C printf(\

scanf(\

23.A 24.C 25.A26.A 27.A 28.D 29.C 30.A31.D 32.A 33.B 34.D 35.B for (j=0;j<3;j++)

{printf(\ 9`二、填空题(每题2分 共30分)

scanf(\此处的&运算符是指取结构体数组中元素的地址*/

36. 28 37. 5 38. 4 39. Include 40. 连接两个字符数组中的字符串 } 41. /* */ 42. 1111 0000 43. 1 44. 10 45. i

for (i=0;i

48. 7 49. 8 50. *(str+i)或者写成str[i] {sum=0;

for (j=0;j<3;j++) 三、程序设计题。要求程序结构清晰,没有逻辑错误,书写工整,无需写出运行结果。(第51

sum+=stu[i].score[j]; 题7.5分、第52题10分,共17.5分,按关键步骤评分)

stu[i].avr=sum/3.0; 51.

}

#include

printf(\

void main()

printf(\

{

for (j=0;j<3;j++)

int a[3][3],minus;

printf(\

int i,j;

第 8 页 共 9 页

printf(\ }

第 9 页 共 9 页

本文来源:https://www.bwwdw.com/article/0h8t.html

Top