当前位置:文档之家› 最新专升本c语言程序设计模拟试卷资料

最新专升本c语言程序设计模拟试卷资料

计算机科学与技术专业《基础知识》模拟试卷(考试时间150分钟,满分300分,共三部分)第一部分 C语言程序设计(共100分)一、单项选择题(本大题共30小题,每小题2分,共60分)1. 下列各选项中,均是合法有效的标识符的是【】A. 3dayB.lowerC.day_3D.abSum _days abcde student_name_of lotus_1_2_3 default M.D.john2. 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。

则以下不能满足要求的表达式是A.A%2==1B.!(A%2==0)C.!(A%2)D.A%23. 下列程序的输出结果是【】#include <stdio.h>void main(){int x=1,y=0,a=0,b=0;switch(x){case 1:switch(y){case 0: a++; break;case 1: b++; break;}case 2: a++;b++; break;case 3: a++;b++; break;}printf(“%d,%d\n”,a,b);}A.1,1B.2,1C.1,0D.2,24. 以下关于switch语句和break语句的描述中,只有正确的是【】A.在switch语句中必须使用break语句B.在switch语句中,可以根据需要使用或不使用break语句D.break语句是switch语句的一部分5. 下面程序的输出是【】。

main(){int x=0x23;printf(“%d\n”,- -x);}A.18B.19C.34D.356. 下列函数的输出结果是【】#include <stdio.h>int f1(int xb){extern int xa;return (xa * xb);}void main(void){extern int xb;int xa=5;printf(“xa=%d,xb=%d,result=%d”,xa,xb,f1(xa));return 0;}int xa=3,xb=4;A. 3,4,12B. 5,4,20C. 5,4,15D. 3,4,157. c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是A. 地址传递B. 由实参传给形参,再由形参传回给实参C. 单向值传递D. 由用户指定传递方式8. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其原因是【】void main(){int *p,a;p=&a;scanf(“%d”,*p);}A.*p表示的是指针变量p的地址B.*p表示的是变量a的值,而不是变量a的地址C.*p表示的是指针变量p的值D.*p只能用来说明p是一个指针变量9. 下列程序段的输出结果是【】。

int x=3;do{printf(“%2d\n”,x-=2);}while (!(――x))A. 1B. 1 -2C. 3 0D. 是死循环10. 若有语句:int a=4, *p=&a;下面均代表地址的一组选项是【】。

A. a,p,&*aB. *&a,&a,*pC. &a,p,&*pD. *&p,*p,&a11. 下面程序输出的结果是main(){ int i;int a[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d ",a[2-i][i]);}A)1 5 9B)7 5 3C)3 5 7D)5 9 112. 下面函数的功能是char *fun(char *str1,char*str2){while((*str1)&&(*str2++=*str1++));return str2;A)求字符串的长度B)比较两个字符串的大小C)将字符串str1复制到字符串str2中D)将字符串str1接续到字符串str2中13. 下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));A)1 B)2 C)4 D)513. 下面程序段的运行结果是char *s="abcde";s+=2;printf("%d",s);A)cdeB)字符′c′C)字符′c′的地址D)无确定的输出结果14. 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是void print_value(int *x){printf("%d\n",++*x);}A)23B)24C)25D)2615. 当顺利执行了文件关闭操作时,fclose函数的返回值是A)-1B)TRUEC)0D)116. 设有如下定义char *s[2]={ "abcd","ABCD"};则下列说法错误的是A)s数组元素的值分别是"abcd"和"ABCD"两个字符串的首地址B)s是指针数组名,它含有两个元素分别指向字符型一维数组C)s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素D)s数组的两个元素中分别存放了字符′a′和′A′的地址17. 以下不能对二维数组a进行正确初始化的语句是B)int a[][3]={{1,2},{0}};C)int a[2][3]={{1,2},{3,4},{5,6}};D)int a[][3]={1,2,3,4,5,6};18. 有以下程序struct STU{ char num[10]; float score[3]; };main(){struct STU s[3]={{"20021",90,95,85},{"20022",95,80,75},{ "20023",100,95,90},},*p=s;int i; float sum=0;for(i=0;i<3;i++)sum=sum+p->score[i];printf("%6.2f\n",sum);}程序运行后的输出结果是A)260.00B)270.00C)280.00D)285.0019. 若有说明:int a[10];则对a数组元素的正确引用是A)a[10]B)a[3,5]C)a(5)D)a[10-10]20. 下面程序段中,输出*的个数是char *s="\ta\018bc";for(;*s!=′\0′;s++)printf("*");A)9B)5C)6D)721.设有如下函数fun (float x)printf("\n%d",x*x);}则函数的类型是A)与参数x的类型相同B)是voidC)是int型D)无法确定22. 有如下定义#define D 2int x=5;float y=3.83;char c=′D′;则下面选项中错误的是A)x++;B)y++;C)c++;D)D++;23. 以下程序段的执行结果为#define PLUS(X,Y)X+Ymain(){ int x=1,y=2,z=3,sum;sum=PLUS(x+y,z)*PLUS(y,z);printf("SUM=%d",sum);}A)SUM=9B)SUM=12C)SUM=18D)SUM=2824. C语言规定,函数返回值的类型是由A)return语句中的表达式类型所决定B)调用该函数时的主调函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定25. 下列程序的运行结果是void fun(int *a,int *b){ int *k;k=a;a=b;b=k;main(){ int a=2004, b=9,*x=&a,*y=&b;fun(x,y);printf("%d%d",a,b);}A)2004 9B)9 2004C)0 0D)编译时出错26. 下列程序是用来判断数组中特定元素的位置所在。

如果输入如下整数:876 675 896 101 301 401 980 431 451 777#include#includeint fun(int *s, int t, int *k){ int i;*k=0;for(i=0;i if(s[*k]return s[*k];}main(){int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;clrscr();fun(a, 10, &k);printf("%d, %d\n ", k, a[k]);}则输出结果为A)7,431B)6C)980D)6,98027.下面程序应能对两个整型变量的值进行交换。

以下正确的说法是main(){int a=10,b=20;printf("(1)a=%d,b=%d\n",a,b);swap(&a,&b);}swap(int p,int q){int t;t=p;p=q;q=t;}A)该程序完全正确B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可D)以上说法都不对28. 有以下程序#includemain(){ char *p,*q;p=(char *)malloc(sizeof(char)*20); q=p;scanf("%s %s",p,q); printf("%s %s\n",p,q);}若从键盘输入:abc def<回车>,则输出结果是A)def defB)abc defC)abc dD)d d29.以下程序的输出结果是int f(){ static int i=0;int s=1;s+=i; i++;return s;}main(){ int i,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}A)20C)25D)1530.有以下程序#includestruct NODE{ int num; struct NODE *next; };main(){ struct NODE *p,*q,*r;p=(struct NODE*)malloc(sizeof(struct NODE));q=(struct NODE*)malloc(sizeof(struct NODE));r=(struct NODE*)malloc(sizeof(struct NODE));p->num=10; q->num=20; r->num=30;p->next=q;q->next=r;printf("%d\n ",p->num+q->next->num);}程序运行后的输出结果是A)10B)20C)30D)40二、程序阅读题(本大题共4小题,每小题5分,共20分)阅读下列程序,将输出结果写到答题纸的相应位置。

相关主题