《C语言程序设计考试A卷答案.doc》由会员分享,可在线阅读,更多相关《C语言程序设计考试A卷答案.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言程序设计考试A卷答案学院领导系领导审批并签名A 卷广州大学2008-2009学年第一学期考试卷课程C语言程序设计考试形式(闭卷,考试)物理与电子工程学院 系 专业 学号 姓名 题号一二三总分评卷人123分数5020101010100评分一、 选择题(每题2分,共50分)下列每题A、B、C、D四个选项中,只有一个选项是正确的。1、以下说法正确的是( B )A)C语
2、言程序总是从第一个函数开始执行B)C语言程序总是从main()函数开始执行C)在C语言程序中,要调用函数必须在main()函数中定义D)C语言程序中的main()函数必须放在程序的开始部分2、若有定义 int k=5; ,表达式k+=k-=k*=k运算后k的值是( C )A)90 B)25 C)0 D)-153、有输入语句:scanf(“%d,%d,%d”,&a, &b, &c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式为( D )(其中,“ ”表示空格,表示Enter键)A)132 B)a=1,b=3,c=2 C) a=1b=3c=2 D) 1,3,24、以下程序段的输出
3、是( C )printf(“|%8.5f|n”,3461.45); A)|61.45000| B) |3461.450| C) |3461.45000| D) | 3461.4500|5、在x值处于-2x2 或 4x8时值为“真”否则为“假”的表达式是( D )A) (-2x2)|(4x8) B) (x=-2)&(x=4)&(x=-2)&(x=2)|(x=8)&(x2) D) (-2=x)&(x=2)|(4=x)&(x=8) 6、下列程序的执行结果是: ( A ) #include void main() int i=9,j=8,m,n;m=+i;n=j+;printf(%d %dn,m,n)
4、; A) 10 8 B) 8 9 C) 9 9 D) 9 87、假设所有变量均为整数,则表达式(a=2,b=5,a+,b+,a+b)的值为( C )A)7 B)8 C)9 D)108、有以下程序,执行后输出结果是 ( A )#include void main() int i=1,j=1,k=2;if(j+|k+)& i+)printf(%d,%d,%dn,i,j,k);A)2,2,2 B)2,2,1 C)1,1,2 D)2,2,39、有如下程序,该程序的输出结果是( D )#include void main() int x=1,a=0,b=0;switch(x) case 0: b+;ca
5、se 1: a+;case 2: a+;b+;printf(a=%d,b=%dn,a,b);A)a=2,b=2 B)a=1,b=1 C)a=1,b=0 D)a=2,b=1 10、下述程序的输出结果是: ( C ) #include main( ) int k=4,n=0;for(;nk;) n+; if(n%4!=0) continue;k-;printf(“k=%d,n=%dn”,k,n); A)k=1,n=1 B)k=2,n=2 C)k=3,n=4 D)k=4,n=511、不正确的赋值或赋初值的方式是( B )。A) char str=string;B) char str10;str=st
6、ring; C) char str7=s, t, r, i, n, g;D) char str7=s, t, r, i, n, g, 0;12、以下程序的输出结果是( A )#include void function1(int a,int b)int c;c=a;a=b;b=c;main()int x=3,y=4;function1(x,y);printf(“x=%d ,y=%dn”, x , y); A) x=3,y=4 B)x=4,y=3 C) 不确定 D) 3 , 413、以下程序的输出结果是:( B )# include int f(int); main() int w=2,k,e;
7、 for (k=0;k3;k+) e=f(w); printf(“%d,”,e); int f(int x) int y=0; static z=10; y+;z+; return (x+y+z); A) 14,14,14, B)14,15,16, C) 14 14 D) 14 1514、以下程序的输出结果是:( B )#include int func(int n)if(n=1) return 10; else return func(n-1)+3;void main()printf(“%d”,func(3);A) 13 B) 16 C) 19 D) 2215、以下程序的运行结果是 ( C
8、) #include #define DOUBLE(r) r*rmain ( ) int x=9,y=6,t; t = DOUBLE(x+y) ; printf (“%dn”,t);A)29 B)81 C)69 D)22516、若有函数fuction1(a,b),并且已使函数指针变量p指向函数function1,当调用该函数时,正确的调用方法是: ( C ) A)(*p)function1(a,b); B) *p function1(a,b) C)(*p)(a,b); D) *p(a,b);17、有如下定义:struct int x; char * y; tab2=1,ab,2,cd,*p=t
9、ab;则表达式(*p-y)的结果是:( A )A) a B) b C) c D) d18、若有定义:int x34=1,2,3,4,5,6,7,8,9,10,11,12,(*p)4=x;则能够正确表示数组元素x23的表达式是: ( B ) A) *(*p+2)3) B) *(*(p+2)+3) C) (*p+2)+3 D) *(*(p+5)19、若有定义:int b,*pb;则以下正确的赋值表达式是( A )A) pb=&b B)pb=b C)*pb=&b D)*pb=*b20、以下程序的输出结果是( C )#include void sub(int x,int y,int *z)*z=x-y
10、;void main()int a=0,x=5,y=10; sub(y,x,&a);printf(“%d”,a);A)-5 B) 0 C) 5 D) 不确定21、以下程序的输出结果是( B )#include void main()int a5=10,20,30,40,50;int *p=&a2;printf(%d,*p+);printf(%d,*p);A)20,30 B)30,40 C)21,30 D) 31,4022、若已建立下面的链表结构,指针p、q分别指向图中所示结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是( B )A) free(q);p-next=q-next;B
11、) (*p).next=(*q).next;free(q);C) q=(*q).next;(*p).next=q;free(q);D) q=q-next; p-next=q;p=p-next; free(p);23、以下程序的输出结果是( D )#include typedef struct dateint cat;long L;char c10; TOO;main( )printf(“%dn”,sizeof(TOO);A) 15 B) 26 C) 10 D) 1624、以下程序中c的二进制值是( A )char a=3,b=6,c;c=a|(b2);A) 00011011 B)0001010
12、0 C) 00011100 D) 0000000025、表达式strcmp(“box”, “boss”) 的值是一个( A )。A) 正数 B) 负数 C) 0 D) 不确定的数二、填空题(每空2分,共20分)1. 写出下列程序段的输出结果 d 。 char str=hellotworldn; printf(%cn, *(str+10);2.以下程序的输出结果是: 4 #include fun2(int a,int b)int c; c=a*b%3;return c;fun1(int a,int b)int c; a+=a;b+=b; c=fun2(a,b);return c*c;main()
13、int x=11,y=19; printf(%dn,fun1(x,y);3. 下列程序的功能是求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3,请填空。#include #include #define M 81int fun(char *ss, char c) int i=0;for(; *ss ;ss+)if(*ss=c)i+;return i ;main() char aM, ch;clrscr();printf(nPlease enter a string: ); gets(a);printf(nPlease enter a c
14、har: ); ch=getchar();printf(nThe number of the char is: %dn, fun(a,ch);4.以下程序在主函数中输入10个整数,调用sort函数实现10个整数按从小到大排序(使用选择排序法),在主函数中输出排序结果。请填空: #include void sort( int a ,int n) int i,j,k;int t; for (i=0;in-1;i+) k=i ; for(j=i+1;jaj ) k=j; t=ak;ak=ai;ai=t; main( ) int s10;int i;for(i=0;i10;i+) scanf(“%d”
15、,&si); sort(s,10) ; printf(“the sorted array:n”); for(i=0;i10;i+)printf(“%d ”,si); printf(“n”);5.下面程序把从终端读入的文本(用作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。#include stdio.h#include “stdlib.h”FILE *fp;void main() char ch;if(fp=fopen( “bi.dat” , “w”)=NULL)exit(0);while(ch=getchar( )!=)fputc (ch, fp );fclose(fp);三
16、、编程题(每题10分,共30分)1、编写一个程序,求一个55矩阵对角线元素之和。#include add_duijiaoxian(int b55,int m) int i,j,total=0; for (i=0;im;i+) for (j=0;jm;j+) if (i= =j)|(i+j=4) total=total+bij; return(total);main() int i,j,a55; int total=0,k=1; for (i=0;i5;i+) for (j=0;j5;j+) aij=k+; total=add_duijiaoxian(a,5); printf(the total
17、 of duijiaoxian is %dn,total);2、有一个分数数列: 求出这个数列前20项之和。#include void main()int i;int deno,fenzi;float term,sum;sum=0 ;term=2.0 ;fenzi=2;deno=1;for(i=0;i20;i+)sum+=term; fenzi=deno+fenzi; deno=fenzi-deno; term=(float)fenzi/deno; printf(sum=%fn,sum);3、存在这样的一个3位正整数,它的前两位和后两位都能被3整除,中间一位也能被3整除,例如:300、393、603等。找出100999之间满足以上条件的正整数并输出。#include #include main() int i,k=0; clrscr(); printf(n); for (i=100;i999;i+) if (i/10%3=0)&(i-i/100*100)%3=0)&(i/10%10)%3=0) if (k%5=0) printf(n); printf(i=%4d ,i); k+; -