《 程序设计基础 》考试试卷四
一、1.以下叙述中正确的是( )
A. C程序中注释部分可以出现在程序中任意合适的地方 B. 花括号\"{\"和\只能作为函数体的定界符
C. 构成C程序的基本单位是函数,所有函数名都可以由用户命名 D. 分号是C语句之间的分隔符,不是语句的一部分
2.判断下面标识符中哪个是C语言中合法的用户定义标识符( )
A. 2a1b B. a%bd C. _123 D. char 3.设有以下定义 int a=0; double b=1.25; char c=‟A‟; #define M 2 则下面语句中错误的是( ) A. a--; B. b--; C. c--; D. M--;
4.有两条语句: static char x[]=”abcde”;
static char y[]={„a‟,‟b‟,‟c‟,‟d‟,‟e‟}; 则下列说法中正确的是( )
A. 数组x和数组y长度相同 B. 数组x长度大于数组y长度 C. 数组x长度小于数组y长度 D. 以上三种说法均错误; 5.设整型变量a=13,则经运算a+= a/=a%=5后,a的值为( ) A. 17.333 B. 17 C. 0 D. 2
6. 已知:int n,i=1,j=2;执行语句n=i A. if(x>=0) B. y=-1; C. if(x>=0) D. y=0; if(x>0) y=1; if(x!=0) if(x>0) y=1; if(x>=0) else y=-1; if(x>0) y=1 ; else y=0; if(x>0) y=1; else y= 0; else y=0; else y= -1; else y=-1; 8.当a=2,b=1,c=3,d=4,m和n值为1时,(m=a>b)||(n=c>d)的值是( ) A. TRUE B. FALSE C. 1 D.0 9.在C语言程序中,以下说法正确的是( ) A. main函数内部可嵌套定义子函数 B. main函数必须出现在所有函数之前 C. main函数必须出现在所有函数之后 D. main函数是程序执行的入口 10.关于局部变量和全局变量说法正确的是( ): A. 在main函数中定义的变量都为全局变量 B. 当全局变量与局部变量同名时,全局变量起作用 C. 当全局变量与局部变量同名时,局部变量起作用 第 1 页/共 4 页 D. 以上说法都不正确 11.下列关于switch和break语句的讨论中,只有( )是正确的。 A. break语句是switch 语句的一部分 B. 在switch语句中可以根据需要使用或不使用break语句 C. switch语句中必须使用break语句 D. 以上三种说法都不正确。 12.设main函数中有定义float a[8],此外,程序中还定义了以下函数 void printarray(float a[8],int n){ int i; for(i=0;i D. 调用语句可以为printarray(a,8); 13.以下说法正确的是( ) A. 若在某函数中用static声明一个局部变量,则该变量在此函数外也起作用 B. 若用static声明一个函数,则该函数可被其它文件中的函数调用 C. 若用static声明一个函数,则该函数不能被其它文件中的函数调用 D. 以上说法都不正确 14.设int i=5,且变量i的地址是2001,int *p=&i,变量p的地址是2011,则表达式&*p的值为(A. 5 B. 2001 C. 2011 D. 无法确定 15. 若有如下定义,则下面在scanf函数调用语句中对结构体成员的引用不正确是( )。 struct pupil { char name[20]; int age; int sex; }pup[5],*p; A. scanf(\"%d\ B. scanf(\"%s\C. scanf(\"%d\D. scanf(\"%d\16 有以下程序段 int k=0 while(k=1)k++;则while 循环执行的次数是( ) A. 无限次 B. 有语法错,不能执行 C. 一次也不执行 D. 执行1次 17有定义struct ex{ int x ; float y; char z ;} example;则下面的叙述中不正确的是( ) A. struct结构体类型的关键字 B. example是结构体类型名 C. x,y,z都是结构体成员名 D. struct ex是结构体类型 18 若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是() A. EOF B. -1 C. 非零值 D. NULL 19 以下程序执行后sum的值是() 第 2 页/共 4 页 ) void min() { int i , sum; for(i=1;i<6;i++) sum+=i; printf(\"%d\\n\ A.15 B. 14 C. 不确定 D.0 20 当调用函数时,实参是一个数组名,则向函数传送的是( ) A. 数组的长度 B. 数组的首地址 C. 数组每一个元素的地址 D. 数组每个元素中的值 二、读程序写执行结果(每题5分,共20分) 1.#include do{ printf(\"%d \ }while (!(--x));} 3、void main() { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5; printf(“%d\\n”,d*y); } 2、#include void swap(int x, int y) { int temp; temp=x; x=y; y=temp; } void main() { int a[]={3,5}; #include void main() printf(“%d,%d\\n” ,a[0],a[1]); } { int a[ ]={1,2,3,4,5,6,7,8,9,0,},*p; p=a; printf(\"%d\\n\ 三、程序改错题(每题5分,共20分) } 1、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。 #include #define PI 3.14 void main(){ int r; float s; scanf(\"%d\ s=PI*r^2; printf(\"s=%f\\n\1 当n>5 2、以下程序用语实现分段函数cost= 0.7 当 3 int n; float cost; if(n>5) cost=1; if(n>3) cost =0.7; else cost=0.5;} 3、以下程序用于从终端教授一个字符赋给c,如c不为换行符就循环输出,为换行符则停止 #include 第 3 页/共 4 页 void main(){ c=getchar(); while(c!=‟\\n‟) printf(“%c”,c);} 4、以下程序用于实现矩阵的转置 #include int a[][2]={{1,2},{3,4}}; int i,j,temp; for(i=0;i<2;i++) for(j=0;j<2;j++) { a[i][j]=a[j][i]; a[j][i]= a[i][j];}} 四、程序填空(共10分) 1.本程序用于求100-500之间的素数并输出 # include { int m, i, n; float k; m=100; while(m<=500) { ; for(i=2; i<=k; i++) if(m%i= =0) ; if( i>k ) {printf(“%d ”,m); n++; } m++;}} 2.本程序用于动态建立一个链表。链表中每个结点包括学号、成绩及指向下一结点的指针,整个链表共10个结点。 #include void main( ) { struct student *head=NULL,*p1,*p2; int n=0; do{ 第 4 页/共 4 页 p1= ; printf(“请输入学生的学号和成绩:\\n”); scanf(“%d,%f”,&p1->num,&p1->score); n=n+1; if(n= =1) head=p1; else p2->next=p1; ; }while(n<10); p1->next=NULL;} 五、编程题1.编程求1-1/3+1/5-1/7+……+1/97-1/99的值并输出。 2.定义一8个元素的整数数组,读入各元素值后用选择法由小到大排序,之后输出排序结果。 3.读入正整数n,用递归法和非递归法求F(n)并输出,已知F(1)=1; F(2)=1; 当n>2时 F(n)=F(n-1)+F(n-2)。 第 5 页/共 4 页 《 程序设计基础 》试卷四答案 一、1A 2C 3D 4B 5D 6C 7C 8C 9D 10D 11B 12C 13C 14B 15A 16A 17B 18C 19C 20B 二1. 1 -2 2. 3,5 3. 0 4. 10 三、1、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。 #include scanf(\"%d\ //改为scanf(“%d”,&r); s=3.14*r^2; //改为s=3.14*r*r; printf(\"s=%f\\n\1 当n>5 2、以下程序用语实现分段函数cost= 0.7 当 3 int n; float cost; if(n>5) cost=1; if(n>3) cost =0.7; //改为else if(n>3)cost=0.7; else cost=0.5;} 3、以下程序用于从终端教授一个字符赋给c,如c不为换行符就循环输出,为换行符则停止 #include c=getchar(); //此句去掉 while(c!=‟\\n‟) //此句改为while((c=getchar())!=‟\\n‟); printf(“%c”,c);} 4、以下程序用于实现矩阵的转置 #include int a[][2]={{1,2},{3,4}}; int i,j,temp; for(i=0;i<2;i++) for(j=0;j<2;j++) //此句改为for(j=i;j<2;j++) { a[i][j]=a[j][i]; a[j][i]= a[i][j];//此句改为temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp;}} 四、1、 K=sqrt(m) ; break ; 2. struct student *next ; 第 6 页/共 4 页 (struct student *)malloc(sizeof(struct student )); p2=p1 ; 五、编程题(每题10分,共30分PAD图或N-S图占一半的分) 1.#include printf(\"the result is:%f\\n\ 2. #include void main() { int a[8], i, j, min,temp; printf(“请输入原数组:\\n”); for(i=0;i<8;i++)scanf (“%d”,&a[i]); for(i=0;i<8;i++){ min=i; for(j=i+1;j<8;j++) if(a[min]>a[j])min=j; temp=a[min]; a[min]=a[i]; a[i]=temp;} printf(“排序后为:\\n”); for(i=0;i<8;i++)printf(“%d ”,a[i]);} 第 7 页/共 4 页 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务