admin 管理员组文章数量: 1086019
2025年1月2日发(作者:hscangku8)
《 程序设计基础 》考试试卷四
班级 姓名 学号
一、选择题(每题1分,共20分)
题号
一 二
得分
三
四
五
总得分
评卷人
审核人
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. 1,2 B. 1,3 C. 2,2 D. 2,3 7.有函数定义如下:当自变量x<0时y=-1;当x=0时y=0;当x>0时y=1;以下程序片段能实现该 函数功能的是( ): 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函数内部可嵌套定义子函数 第 1 页/共 4 页 B. main函数必须出现在所有函数之前 C. main函数必须出现在所有函数之后 D. main函数是程序执行的入口 10.关于局部变量和全局变量说法正确的是( ): A. 在main函数中定义的变量都为全局变量 B. 当全局变量与局部变量同名时,全局变量起作用 C. 当全局变量与局部变量同名时,局部变量起作用 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 并将其放在调用语句之后,则以下说法错误的是( ) A. 调用之前的函数声明可以写为void printarray(float a[], int n); B. 调用之前的函数声明可以写为void printarray(float [], int) ; C. 调用语句可以为printarray(a[8],8); 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",p->age); B. scanf("%s",pup[0].name); C. scanf("%d",&pup[0].age); D. scanf("%d",&(pup[1].sex)); 16 有以下程序段 int k=0 第 2 页/共 4 页 ) 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的值是() void min() { int i , sum; for(i=1;i<6;i++) sum+=i; printf("%dn",sum); } A.15 B. 14 C. 不确定 D.0 20 当调用函数时,实参是一个数组名,则向函数传送的是( ) A. 数组的长度 B. 数组的首地址 C. 数组每一个元素的地址 D. 数组每个元素中的值 二、读程序写执行结果(每题5分,共20分) 1.#include void main() { int x=3 do { printf("%d ",x-=2); }while (!(--x)); } 3、 void main() { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5; printf(“%dn”,d*y); } 2、#include void swap(int x, int y) { int temp; temp=x; x=y; y=temp; } void main() { int a[]={3,5}; swap a[0], a[1]); printf(“%d,%dn” ,a[0],a[1]); } 4.#include void main() { int a[ ]={1,2,3,4,5,6,7,8,9,0,},*p; p=a; printf("%dn",*p+9); } 三、程序改错题 (每题5分,共20分) 1、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。 #include #define PI 3.14 第 3 页/共 4 页 void main(){ int r; float s; scanf("%d",r); s=PI*r^2; printf("s=%fn",s); } 1 当n>5 2、以下程序用语实现分段函数cost= 0.7 当 3 #include void main(){ int n; float cost; if(n>5) cost=1; if(n>3) cost =0.7; else cost=0.5; } 3、以下程序用于从终端教授一个字符赋给c,如c不为换行符就循环输出,为换行符则停止 #include void main(){ c=getchar(); while(c!=’n’) printf(“%c”,c); } 4、以下程序用于实现矩阵的转置 #include void main(){ 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 #include void main() { int m, i, n; float k; m=100; 第 4 页/共 4 页 while(m<=500) { ; for(i=2; i<=k; i++) if(m%i= =0) ; if( i>k ) { printf(“%d ”,m); n++; } m++; } } 2.本程序用于动态建立一个链表。链表中每个结点包括学号、成绩及指向下一结点的指针,整个链 表共10个结点。 #include #include #define NULL 0 struct student { int num; float score; ; }; void main( ) { struct student *head=NULL,*p1,*p2; int n=0; do{ 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; } 五、编程题(画N-S图或PAD图,每题10分,共30分) 1.编程求1-1/3+1/5-1/7+……+1/97-1/99的值并输出。 第 5 页/共 4 页 2.定义一8个元素的整数数组,读入各元素值后用选择法由小到大排序,之后输出排序结果。 3.读入正整数n,用递归法和非递归法求F(n)并输出,已知F(1)=1; F(2)=1; 当n>2时 F(n)=F(n-1)+F(n-2)。 《 程序设计基础 》试卷四答案 一、选择题(每题1分,共20分) 1A 2C 3D 4B 5D 6C 7C 8C 9D 10D 11B 12C 13C 14B 15A 16A 17B 18C 19C 20B 二、读程序写执行结果(每题5分,共20分) 1. 1 -2 2. 3,5 3. 0 4. 10 三、程序改错题(每题5分,共20分) 1、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。 #include #define PI 3.14 void main(){ int r; float s; scanf("%d",r); //改为scanf(“%d”,&r); s=3.14*r^2; //改为s=3.14*r*r; printf("s=%fn",s); } 1 当n>5 2、以下程序用语实现分段函数cost= 0.7 当 3 #include void main(){ 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不为换行符就循环输出,为换行符则停止 第 6 页/共 4 页 #include void main(){ c=getchar(); //此句去掉 while(c!=’n’) //此句改为while((c=getchar())!=’n’); printf(“%c”,c); } 4、以下程序用于实现矩阵的转置 #include void main(){ 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; } } 四、程序填空(共10分) 1、 K=sqrt(m) ; break ; 2. struct student *next ; (struct student *)malloc(sizeof(struct student )); p2=p1 ; 五、编程题(每题10分,共30分PAD图或N-S图占一半的分) 1.#include void main() { int i,sign; float term,sum; sign=1; sum=1; for(i=2;i<=50;i++) { sign*=-1; term=sign*1.0/(2*i-1); sum+=term; } printf("the result is:%fn",sum); } 第 7 页/共 4 页 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]); } 3. (1) 递推法实现 (2)递归法实现 #include void main() int f(int n) { { int i,n,f1,f2,result; int r ; printf("input n:n"); if(n==1||n==2) r=1; scanf("%d",&n); else r=f(n-1)+f(n-2); f1=1;f2=1;result=0; return(r); if(n= =1||n= =2)result=1; } else void main() { { for(i=3;i<=n;i++) int n,result; { scanf("%d",&n); result=f1+f2; result=f(n); f1=f2; printf("the result is%dn",result); f2=result; } } } printf("the result is %dn",result); } 第 8 页/共 4 页
版权声明:本文标题:C语言 程序设计基础试题四及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1735840588a1694748.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论