8、以下程序的运行结果是 。 main() {int k=4,a=3,b=2,c=1; printf(“\n%d\n”,k<a?k:c<b?c:a); A、4 B、3 C、2 D、1 9、设有程序段 int k=10; while(k=0) k=k-1; 则下面描述中正确的是 。 A、 while循环10次 B、循环是无限循环 C、循环体一次也不执行 D、循环体只执行一次 10、下面程序段的运行结果是 。 x=y=0; while(x<15) y++,x+=++y; printf(“%d,%d”,y,x); A、20,7 B、6,12 C、20,8 D、8,20 11、若有说明:int a[10];则对a数组元素的正确引用是 D 。 A、a[10] B、a[3,5] C、a(5) D、a[10-10] 12、下面对s的初始化,其中不正确的是 D 。 A、char s[5]={“abc”}; B、char s[5]={‘a’,’b’,’c’}; C、char s[5]=””; D、char s[5]=”abcdef”; 13、判断字符串s1是否大于字符串s2,应当使用 D 。 A、if(s1>s2) B、if(a==b) C、if(strcpy(s2,s1)>0) D、if(stcmp(s1>s2)>0) 14、以下有关函数的形参和实参的说法中正确的是 A 。 A、实参和与其对应的形参各占用独立的存储单元 B、实参和与其对应的形参各占用一个的存储单元 C、只有当实参和与其对应的形参同名时才占用一个的存储单元 D、形参是虚拟的,不占用存储单元 15、C语言中,简单变量做实参时,它和对应的形参之间的数据传递方式是 B 。 A、地址传递 B、单向值传递 C、由实参传给形参,再由形参传递给实参 D、同用户指定传递方式 16、C语言的编译系统对宏的处理是 D 。 A、在程序运行时 B、在程序连接时 C、和C程序中的其他语句同时进行编译 D、在对源程序中其它成份正式编译之前进行的 |
重庆邮电大学 2006-2007学年第 一 学期
一、单选题(每题1分 共三十分) 1、以下叙述正确的是 。 A、在C程序中main函数必须位于程序的最前面 B、C程序的每行中只能写一条语句 C、C语言本身没有输入输出语句 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误 2、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列 顺序为 。 A)、char<int=<long int<=float<double B、char=int<long int<float<double C、char<int<long int=float=double D、char<int<long int<=float=double 3、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 。 A、 7 B、 8 C、 6 D、 2 4、表达式 18/4*sqrt(4.0)/8值的数据类型为 。 A)、 int B)、 float C)、 double D)、不确定 5、若有以下定义,则能使值为3的表达式是 D 。 Int k=7,X=12; A、 X%=(k%=5) B、 X%=(k-k%5) C、 X%=k-k%5 D、(X%=k)-(k%=5) 6、下列运算符中优先级最高的是 B 。 A、< B、+ C、&& D、!= 7、执行以下语句后a,b的值分别为 。 int a,b,c; a=b=c=1; ++a||++b&&++c; A、2,2 B、1,1 C、2,1 D、1,2 |
年级
:
专业:
班级:
姓名:
学号:
程序设计基础 考试题 ( A 卷 )题号 | 一 | 二 | 三 | 四 | 五 | 六 | 七 | 八 | 九 | 十 | 总分 |
分数 | |||||||||||
评卷人 | |||||||||||
线 线
订 封
装 密
17、若有语句int *point,a=4;和point=&a;则下面均代表地址的一组是 D 。 A、a,point,*&A B、&*a,*point,&a C、&a,*&point,*point D、&a,&*point,point 18、设p1和p2是指向同一个字符串的指针变量,,c为字符变量,则以下不能正确执行赋值语句的是 B 。 A、c=*p1+*p2 B、p2=c C、p1=p2 D、c=*p1*(*p2) 19、下面程序段的运行结果是 C 。 char str[]="ABC" ,*p=str; p+=3; printf(“%d\n”,strlen(strcpy(p,”ABCD”))); A、8 B、12 C、4 D、7 20、若有以下定义,则对a数组元素地址的正确引用是 D 。 int a[5],*p=a; A、*a+1 B、p+5 C、&a+1 D、&a[0] 21、以下正确的定义语句和赋值语句是 。 A、int b[3][5],(*q)[5],(*p)[3];p=b;q=b; B、float b[3][5],*p[3];p[0]=b[0];p[2]=*b+4; C、double b[3][5],s[5][3],*q;q=b;s=q; D、int b[10],*q;char *s;q=b;s=b; 22、若sizeof(int)为2,计算1至10的乘积,下列语句序列中正确的是 。 A、int jc=1; for(int i=2;i<=10;i++) jc*=i; B、for(float jc=1,int i=2;i<=10;i++,jc*=i); C、float jc=1; for(int i=2;i<=10;jc*=i,i=i+1); D、for(float jc=1;i=2;i<=10;i++) jc*=i; 23、数组定义为“int a[4][5];”,引用“a[1]+3”表示 。 A、a数组第2行第4列元素的地址 B、a数组第2行第4列元素的值 C、a数组第4行的首地址 D、a数组第1行第4列的首地址 30、若程序中有下面的说明和定义 struct abc {int x;char y;} struct abc s1,s2; 则会发生的情况是 。 A、编译出错 B、程序将顺利编译连接执行 C、能顺利通过编译连接但不能执行 D、能顺利通过编译但连接出错 二、填空题(每题2分 共20分) 1. 设float x=2.5,y=4.7; int a=7;,则表达式 x+a%3*(int)(x+y)%2/4 的值为 程序设计c语言 。 2. 判断变量a、b的值均不为0的逻辑表达式为 。 3. 整型变量m的值为27,语句 printf("m=%x",m);的输出结果为 。 4. 如定义语句为“char a[]="windows ",b[]="95";”语句"printf("%s",strcat(a,b));"的输出结果为 windows 95 。 5. 宏定义语句 #define f(c) c>='A'&&c<='Z' 的引用 f(x[i])置换展开后为 x[i]>=’A’&&C<=’Z’ 。 6.int i=234,j=567; 函数printf("%d%d\n",i,j) 的输出结果是 234567 7. 下列程序段的输出是__5,35_____。 #define f(a, b, x) a*x+b printf("%d, %d\n", f(3,2,1), f(6, 5, f(3, 2, 1))); 8、为了建立如图所示的存储结构(即:每个结点含三个域,data是数据域,Ltree是指向左子树结点的指针域,Rtree是指向右子树结点的指针域),请填空. struct TREE {char data; Ltree data Rtree __struct terr *Ltree,*Rtree__________; }node; 9. 求1至100的和,写作 for(s=0,i=1; i<=100 ;++i) s+=i; printf("%s\n",a); } 3、#include <stdio.h> void main() { int a,b,c,find(int,int,int); scanf("%d%d%d",&a,&b,&c); printf("%d\n%d,%d,%d\n",find(a,b,c),a,b,c); } int find(int a,int b,int c) { int u,s,t; u=((u=(a>b)?a:b)>c)? u:c; t=((t=(a<b)?a:b)<c)? t:c; s=a+b+c-u-t; a=u; b=s; c=t; return s; } 运行时输入: 5 –7 3,输出结果: 4、 #include <stdio.h> #include<stdlib.h> #define NEW (struct info *)malloc(sizeof(struct info)) void main() { struct info { int data; info *pn; }; info *base,*p; base=NULL; for(int i=0;i<10;i++) { p= NEW;//new info; c++的用法; p->data=i+1; p->pn=base; base=p; } p=base; while(p!=NULL) { printf("%2d",p->data); p=p->pn; } printf ("\n"); } | 24、按位与运算:int a=7,b=12,c=a&b; 变量c的值是 。 A、19 B、4 C、5 D、9 25、以下程序的输出结果是 。 main() { int x=10,y=10; printf("%d %d\n",x--,--y); } A、10 10 B、9 9 C、9 10 D、10 9 26、定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是 。 for(i=0;i<3;i++) printf("%d",x[i][2-i]); A、1 5 9 B、1 4 7 C、3 5 7 D、3 6 9 27、main() {int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%x\n",p); printf("%x\n",p+9); } 该程序有两个printf 语句, 如果第一个printf 语句输出的是194, 则第二个printf语句的输出结果是 D 。 A、203 B、204 C、1a4 D、1a6 28、以下程序段的输出结果是 。 int x=3; do { printf("%3d",x-=2);} while(!(--x)); A、1 B、3 0 C、1-2 D、死循环 29、char *aa[2]={"abcd","ABCD"}; 则以下就法中正确的是 。 A、aa数组元素的值分别是"abcd"和ABCD" B、aa是指针变量,它指向含有两个数组元素的字符型一维数组 C、aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D、aa数组的两个元素中各自存放了字符'a'和'A'的地址 10. 定义a为长度为10的字符串、同时为字符串赋初值"continue"的语句为 char a[10]= "continue" 。 三、程序阅读题(每题5分 共30分) 1. #include <stdio.h> void main( ) { int k=0; char c='A'; do { switch (c++) { case 'A': k++; break; case 'B': k--; case 'C': k+=2; break; case 'D': k=k%2; break; case 'E': k=k*10; break; default: k=k/3; } k++; } while(c<'G'); printf("k=%d\n", k); } 输出结果: 2. #include <stdio.h> void print(int,char,int); void main() { print(3,'*',1); print(2,'*',3); print(1,'*',5); print(2,'#',3); print(2,'#',3); } void print(int begin,char pzf,int n) { char a[50]; for(int i=0;i<begin;i++) a[i]=' '; for(i=0;i<n;i++) a[begin+i]=pzf; a[begin+i]='\0'; 5、#include <stdio.h> #include <string.h> void del_bk(char *p) { char *p1; p1=p; while(*p1!='\0') if(*p1==' '&&*(p1+1)==' ') strcpy(p1,p1+1); else p1++; } void main() { char *aa="aa bb cccc ddd efg h"; printf("%s\n",aa); del_bk(aa); printf("%s\n",aa); } 6、#include <stdio.h> void main() {int x[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}}; int i,j; for(i=0;i<4;i++) for(j=0;j<4;j++) *(*(x+i)+j)/=*(*(x+i)+i); for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%3d",*(*(x+i)+j)); putchar('\n'); } } 四、编程题(每题10分 共20分) 1. 编程,统计在所输入的50个实数中有多少个正数、多少个负数、多少个零。 2.编写函数,通过指针连接两个字符。函数头如下: #include <stdio.h> char *strcat(char *str1,char *str2) | |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论