当前位置:文档之家› 程序设计基础试题_03_答案.doc

程序设计基础试题_03_答案.doc

学院领导审批并签名 A / B卷广州大学学年第学期考试卷课程高级语言程序设计考试形式(开/闭卷,考试/查)学院系专业班级学号姓名分数评分一:选择题(每题3分,共60分)(1)若有以下定义: char a; int b;float c; double d;则表达式a*b+d-c值的类型为(A)A) double B) float C) int D) char(2)设a=1,b=2,c=3,d=4,则表达式:a<B?A:C<D?A:D的结果为(D) A) 4B) 3 C) 2 D) 1 (3)在下列选项中,不正确的赋值语句是(D)A)++t; B)n1=(n2=(n3=0)); C)k=i==j; D)a=b+c=1;(4)若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g;则数值为4的表达式是(D)A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c](5)若有以下说明8}}; int (*p)[4]=w;则数值为4的表达式是(D) A)*w[1]+1 B)p++,*(p+1) C)w[2][2]D)p[1][1](6)能正确表示a≥10或a≤0的关系表达式是(C) A)a>=10 or a<=0B)a>=10│a<=0 C)a>=10││a<=0 D)a>=10 ││ a<=0 (7)下列可作为C语言赋值语句的是(C) A) x=3,y=5 B) a=b=6C) i--; D) y=int(x);(8)设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf(i=%d,f=%f,&i,&f);为了把100和765.12分别赋给i和f,则正确的输入为(A) A) 100765.12B) i=100,f=765.12 C) 100765.12 D) x=100y=765.12(9)给出以下定义:char x[ ]=abcdefg;char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为(C)A) 数组X和数组Y等价 B) 数组x和数组Y的长度相同C) 数组X的长度大于数组Y的长度 D) 数组X的长度小于数组Y的长度(10)假定a和b为int型变量,则执行以下语句后b的值为(D) a=1;b=10; do{ b-=a; a++;}while (b--<0);A) 9 B) -2 C) -1 D) 8(11)设有以下宏定义: #define N 3#define Y(n) ( (N+1)*n)则执行语句:z=2 * (N+Y(5+1));后,z的值为(C) A) 出错 B) 42 C) 48 D)54 (12)设有如下定义:int arr[]={6,7,8,9,10}; int * ptr;则下列程序段的输出结果为(D) ptr=arr;* (ptr+2)+=2;printf (%d,%d\n,*ptr,*(ptr+2)); A)8,10 B)6,8 C)7,9 D)6,10 (13)执行以下程序段后,m的值为(A) 5,6} }; int m,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));A) 15 B) 14 C) 13 D) 12 (14)有以下程序{ int x,i;for(i=1;i<=50;i++) { x=i;if(++x%2==0) if(x%3==0)if(x%7==0)printf(%d,i); } }输出结果是(D)A) 28 B) 27 C) 42 D) 41(15)若有以下的说明和语句: main(){ int t[3][2], *pt[3],k;for(k=0; k<3;k++) pt[k]=t[k]; }则以一选项中能正确表示t数组元素地址的表达式是(D) A}&t[3][2] B}*pt[0] C}*(pt+1) D)&pt[2] (16)有以下程序#include <STDIO.H> main(){ int a,b,c=246; a=c/100%9; b=(-1)&&(-1);printf(%d,%d\n,a,b); }输出结果是(A)A) 2,1 B) 3,2 C) 4,3 D) 2,-1 (17)有以下程序#include <STDIO.H> struct stu { int num;char name[10]; int age; };void fun(struct stu *p){ printf(%s\n,(*p).name); }{ struct stu students[3]={ {9801,Zhang,20}, {9802,Wang,19}, {9803,Zhao,18} };fun(students+2); }输出结果是(B)A) Zhang B)Zhao C) Wang D) 18(18)有以下程序main(){ char a[]=programming, b[]=language; char *p1,*p2;int i;p1=a; p2=b; for(i=0;i<7;i++)if(*(p1+i)==*(p2+i)) printf(%c,*(p1+i)); }输出结果是(D)A) gm B) rg C) or D) ga(19)有以下程序int fun(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } main(){ int a, b, c, d; a=30; b=50; fun(a,b,&c,&d);printf(%d,%d\n, c, d); }输出结果是(C)A)50,30 B)30,50 C)80,-20 D)80,20 (20)有以下程序#include atdio.h int abc(int u,intv); main (){ int a=24,b=16,c; c=abc(a,b);printf('%d\n,c); }int abc(int u,int v) { int w; while(v){ w=u%v; u=v; v=w }return u; }输出结果是(C)A) 6 B) 7 C) 8 D) 9二:填空题(共20分)(1)int a[3][2]={10,20,30,40,50,60}, (*p)[2]; p=a;则 *(*(p+2)+1)值为 60 (1).(2分)(2)以下程序的输出结果是8,17(1).(3分)#include <STDIO.H> int fun(int x,int y){ static int m=0,i=2; i+=m+1; m=i+x+y; return m } main(){ int j=4,m=1,k; k=fun(j,m);printf(%d,,k); k=fun(j,m);printf(%d\n,k); }(3)下面程序的输出是9 (5分)long fun5(int n) { long s;if((n==1)||(n==2)) s=2; elses=n+fun5(n-1); return(s); }main() { long x; x=fun5(4);printf(%ld\n,x); }(4)以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空.(5分) #includectype.h #includestdio.hmain(){ char str[81],*sptr; int i;for(i=0;i<80;i++) { str[i]=getchar();if(str[i]=='\n') break; }str[i]= '\0' (1);sptr=str;while(*sptr) putchar(*sptr ++ (2)); }(5)以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同符的ASCII码之差.例如:输入的两个字符串分别为abcdef和abceef,则输出为-1.请填空. (5分)#include<STDIO.H> main(){ char str[100],str2[100],c; int i,s;printf(\n input string 1:\n); gest(str1);printf(\n input string 2:\n); gest(str2); i=0;while((strl[i]==str2[i])&&(str1[i]!=_ '\0'___(1))) i++;s=__str1[i]-str2[i]__(2); printf(%d\n,s);fgets(str,100,fp); printf(%s\n,str); fclose(fp); }三:程序编写题(下面3题任选2题,每题10分,共20分)题目1:有一个已经排好序的数组。

现输入一个数,要求按原来的规律将它插入数组中。

题目2:判断1001-2000之间有多少个素数,并输出所有素数。

题目3:海滩上有一堆桃子,五只猴子来分。

第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。

第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?答案:1void insert(int x[],int n,int y) { int i,j;for (i=0;i<n;i++) { if (x[i]>=y)break; } if (i==n) x[i]=y; else { for (j=n;j>i;j--) x[j]=x[j-1];x[i]=y; } } 2#include stdio.h#include math.hvoid main(int argc, char* argv[]) {int i,k,sum;for(i=1001,sum=0;i<=2000;i++) {for(k=2;k<=sqrt(i);k++) if ((i mod k)==0)break; if k>=sqrt(i){sum=sum+1;printf(%d ,i); } }printf(\n the total=%d,sum); }3int main(int argc, char* argv[]) { int i,k,n;float m;for (n=4;n<2000;n++) { k=n;for (i=0;i<4;i++) { if ((k-1)%5!=0) break; k=5*k/4+1;} if ((k-1)%5==0)printf( 最少要有%d\n,k); } }。

相关主题