1、1.在 C 语言中,下列选项项中合法的常量是( )A.019 B.0xg C.3e2 D.32e E.”032” F.”ab” G.”n” H.”w”2.下列选项中不能作 C 语言表达式的是 ( )A.a=b=c B.a3?1:5)的值是( )A.1 B.2 C.3 D.54.设有 int x=1,y=2,z=3;则计算表达式 z+=(y=(x=10,20+4)后,x,y,z 的值分别是( )A.10,10,10 B.10,10,24 C.10,10,27 D.10,24,275.在 C 语言程序中 continue 语句不适于 ( )A.switch 语句 B.while 语句 C.do-w
2、hile 语句 D.for 语句6.执行下面程序,输出是( )A.1 B.2 C.15 D.16main()int t=2,r=0;switch(t)case 1:r=r+1;case 2;r=r+2;case 3:r=r+3;default:r=r+10; printf(“%d”,r);7.执行下面程序,输出是( )A.25 B.30 C.35 D.55main()int i=1,s=0;while(imain()int n,i,s=0;doscanf(“%d”,n);while(n%2=0);for(i=1,i#includemain()int n,i,j;scanf(“%d”,for(i
3、=3; ;i+)if( ) ;if( )printf(“%d”,i);15.运行结果:( )#include void main() char s=”2473”, c, i;for(i=0;c=si;i+) switch(c-0) case 2:case 3: putchar(c+4); continue;case 4: putchar(c+4); break;case 5: putchar(c+3);default: putchar(c+2);putchar(n);16.写出程序的输出结果(假定类型 unsigned int 的字长为 16位) 。( )#include void main(
4、) unsigned int u1=0x958,u2,u3;u2=(u1 printf(“%x %x %xn”,u2,u3,u2/u3);17.设一维数组 a 的 4 个输入整数是 1,2,3,4,则程序的输出是( )#include #define M 4void main( ) int i, j, k, m, a4;printf(“Enter 4 numbers: “);for(i=0; i0; i-) k=M-1;for(j=M-1; j0; j-)aj=aj-1;a0=k;for(m=0; m#02 int sum(int *b, int m) #03 int s=0, is_prim
5、e(long);#04 while(m-)#05 if(is_prime(*b+) s+=*b;#06 return s;#07 #08 is_prime(long m) #09 int k;#10 if(mbc;r2=ac;printf(“r1=%d,r2=%d”,r1,r2);(2) 执行下列程序后,输出( )#include void main() int *a10, b, c;a0=*a0=5;c=(*a0)+;printf(“%d %dn”, b, c);(3) 设有如下程序:#include void main() int clock; float f; char cpu20;sc
6、anf(“%4d%f%s”, printf(“%d %.0f %sn”, clock, f, cpu); 假设输入数据流为 200015.0 P4 is GOOD!,请写出执行该程序后的输出结果( )。(4)输出结果( )#include main() union int a; char b2; c;c.a=65;puts(c.b); printf(“%dn“,sizeof(c);(5)输出结果( )main() union struct int x,y; in;int a,b; e;e.a=1; e.b=2;e.in.x=e.a*e.b; e.in.y=e.a+e.b;printf(“%d
7、%d“,e.in.x,e.in.y);(6)输出结果( ) struct w char low ; char high ; ;union u struct w byte ; int word ; uu;main ( ) uu.word = 0x1234 ;printf(“%04xn”, , uu.word); printf(“%02xn”, , uu.byte.high) ;printf(“%02xn”, , uu.byte.low); uu.byte.low = 0xff ;printf(“%04xn”, , uu.word) ;26. 下面的函数是将 p 所指的结点插入 head(形参中)
8、所指的单向链表中。设链表已按学号(num)从小到大顺序排列,要求将p(形参)所指的结点插入后链表保持有序,函数返回插入后的链表的头指针。结点结构为:typedef struct node int num; struct node *next; NODE;函数为:NODE *insert(NODE *head ,NODE * p) NODE *front,*rear;front=head; while (front!=NULL ; if (front=NULL ) if (head=NULL) ;else rear-next=p; ;else if (head=front) head=p; el
9、se rear-next=p;27. 下面的函数 strcpy1 是将源串 src 拷贝到目的串 dest 中,并返回目的串的首地址。char *strcpy1(char *dest,const char *src)char *temp=dest;while ( );return ;28. 下面的 str_count 函数计算串 substring 在母串 string中出现的次数,并将次数返回。int str_count(char *string,char *substring) int i,j,k;int count=0;for (i=0; stringi!= ; i+)for (j= ,
10、k=0; substringk=stringj; k+,j+)if (substring =0) count+; break; return ;29 下面函数的功能是用递归法求数组中的最大值及下标值,请填空使程序完整。void findmax(int *a,int n,int i,int *pk) if (ia*pk) ;findmax( ) ;30. 运行结果( )void del (char *s,char c ) int i,j;for (i=j=0; si!=0; i+)if ( si = = c) sj+=si;sj=0;main() char s=“the c language“;
11、del(s,a); puts(s);31. 运行结果( ) #include #include void fun(char *p,int n) char *i,*j,t;for (i=p,j=p+n-1; i=0; j-) printf(“%sn”,*(p-) ;33. 下面程序用“ 插入法”对数组 a 进行由小到大的排序,请填(3)空使程序完整。经典算法提示:简单插入排序算法的基本思想使将数组处理 n-1 次,第 k 次处理是将第 k 个元素插入到目前的位置。第 k 次的元素是这样插入的:在第 k 次处理时,前面的元素 a0,a1,ak-1必定已排成了升序,将 ak与 ak-1,ak-2,a
12、0逐个比较(由后向前) ,若有 aj=0 j-;【3 】=k ;for (i=0; iamid) 【2 】;else return (mid) ;return (-1) ;37. 写出下面程序的运行结果。func (int a,int b) static int m=0,i=2;i+=m+1;m=i+a+b;return (m);main ( ) int k=4,m=1,p1,p2;p1=func(k,m) ; p2=func(k,m) ;printf(“%d,%dn”,p1,p2) ;38.写出下面程序的运行结果。# define MAX 10int aMAX, i ;sub1 ( ) fo
13、r (i=0; ifun (int n) int k,r ;for (k=2; k1) printf(“*”);r = n % k ;if (n!=1) printf(“%dn”,n); main ( ) int n ; scanf(“%d”,printf(“%d=”,n);if (n0) ;43. 以下程序输出结果是 。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+;prin
14、tf(“a=%d,b=%d”,a,b);44.写出下面程序运行的结果。main ( ) int i,j,k=19;while (i=k-1) k-=3 ;if (k%5=0) i+ ; continue ; else if (kprintf(“%d“,NULL);57. 表达式 (4|1)if ( k=0) ;59对于以下递归函数 f,调用 f (4) 的返回值是_。int f(int n) if (n) return f(n-1)+n;else return n;60下列程序段的输出结果是_。 static char s =“window“;printf(“%s“,s+3);61. 表达式
15、(5-1 63. 表达式 (365.对于以下递归函数 f,调用 f (3) 的返回值是_。int f(int x) return (x0)? f(x-1)+f(x-2):1);66.表达式 (2-5 | (5=4)的值是_。67用八位二进制表示带符号的整数,则能表示数的范围是从_ 到 127。 68. 表达式 (370以下程序段的输出结果是_。int k;for(k=10;k=0;k-);printf(”%d”,k);71.输出结果 # include main() int k = 2 ;while (k = 0) printf (“%d“, k) ; k+; printf (“%d#“, k
16、) ; 72. 输出结果 int k;for (k = 2 ; k main() f(f(2);int f(int x) static int k=0;x+=k;k+;printf(”%d,%d#”,x,k); return x;75 #include main() int m=0;m=f(2);printf (“%d#“, m);m=f(3);printf (“%d#“, m);int f(int x) static int k = 1;x += k;k+;printf(”%d,”,k); return x;76 #include main() int k;for (k=4; k=1; k-
17、) fun(); fun() static int m=0;m+;printf(”%d#”,m); 77#include main( ) int k=1, m=2;m+; int k=0; k += m*2; printf(“%d,%d#” ,k,m); k+;printf(“%d,%d#” ,k,m); 78#include main( ) int k=1, m=2;m+; k+; int m=0; k=10;m+;k+;printf(“%d,%d#” ,k,m); m+;k+;printf(“%d,%d#” ,k,m); 79#include int m=10; main( ) int k
18、=1;m+; k+; int k= -5;m+;k+;printf(“%d,%d#” ,k,m); m+;k+;printf(“%d,%d#” ,k,m); 80#include int x,y,z;void p(int *x,int y) int z;+*x;y-;z=*x+y;printf(“%d,%d,%d#“,*x,y,z);void main() x=2; y=3; z=5;p(printf(“%d,%d,%d#“,x,y,z);81#include int z;void p(int *x,int y) +*x;y-;z=*x+y;printf(“%d,%d,%d#“,*x,y,z)
19、;void main() int x=2, y=3, z=4;p(printf(“%d,%d,%d#“,x,y,z);82#include int c;func(int *a,int b) c=(*a)*b; *a=b-1; b+;return(*a+b+1); main() int a=4, b=2, p=0; p=func( printf(“%d, %d, %d, %d#“, a, b, c, p); 83#include void p(int x,int *y) *y=x+;void main() int x=0, y=0;p(10,printf(“%d,%d#“,x,y);p(y,pr
20、intf(“%d,%d#“,x,y);84#include func(int a,int b,int *c,int *d) *c=a+b; *d=a-b; a+; b+; main() int a=4, b=3, c=2,d=1; func(d,c, printf(“%d, %d, %d, %d#“, a, b, c, d); 85#include func(int *a,int n,int *b) int k;for(k=0;kvoid main()long in, power, i;int num;scanf(“%ld“,for(power=1;in/power0;power*=10);p
21、ower/=10;while(power0)printf(“%d#“,in/power);in%=power;power/=10;输入 0234587. #include void main() int m=0,sum=0;char c,oldc=+;do c=getchar();if(c=0) m=10*m+c - 0;else if(oldc=+) sum += m;else sum -= m;m=0;oldc=c; while(c!=);printf(“%d#“,sum);输入 -12+3*10=88. #include void main() int n;char ch;doch=ge
22、tchar();while(ch7);n=0;don=n*8+(ch-0);ch=getchar();while(ch=0void main() int s,k;for(s=0,k=0; kint cal( int a, int b, char op) if (op=*) return (a*b);else return (a+b);main() int x,y,z, result;char op1, op2;scanf(“%d%c%d%c%d”, if (op2=+ else result = cal(cal(x,y,op1),z,op2);printf(“%d#”, result);输入
23、2+3*591#include void main() static char a5=a,e,i,o,u;char str80;int k,j;gets(str);for(k=0;strk!=0;k+)for(j=0;j92若 head 是 node 类型的全程量,以 head 为头指针的链表各节点的值如下图所示。#include struct node int num; struct node *next; ;struct node *head ;int fun(struct node *h) int k=0;struct node *p=h; while(p!=NULL) k+=p-num
24、;p=p-next; return k; main() int m;m=fun(head);printf(“m=%dn”,m);93若 head 是 node 类型的全程量,以 head 为头指针的链表各2 1 3 4 7 NULLhead节点的值如下图所示。#include struct node int num; struct node *next; ;struct node *head;int fun(struct node *h) int k=0;struct node *p=h; while(p!=NULL) if(p-next!=NULL) k+=p-num;p=p-next; r
25、eturn k; main() int m;m=fun(head);printf(“m=%dn”,m);94若 head 是 node 类型的全程量,以 head 为头指针的链表各节点的值如下图所示。#include struct node int num;struct node *next;struct node *head;int fun(struct node *p) int k=0;struct node *pp=p;while (pp!=NULL) if (pp-num)%2=0) k+=pp-num;pp= pp-next;return (k);main() int m;m=fun
26、(head);printf(“m=%dn”,m); 95若 head 是 node 类型的全程量,以 head 为头指针的链表各节点的值如下图所示。#include struct node int num;struct node *next;struct node *head;int fun(struct node *h) int k=0;struct node *p=h;p = head-next ; p = p-next ;while (p!=NULL) k+=p-num; p= p-next;return (k); main() int m;m=fun(head);printf(“m=%
27、dn”,m);96若 head 是 node 类型的全程量,以 head 为头指针的链表各节点的值如下图所示。#include struct node char c;struct node *next;struct node *head;void fun(struct node *h) struct node *p=h;while(p!=NULL) if(p-c=A main() int m;m=fun(head);printf(“m=%dn”,m);97若 head 是 node 类型的全程量,以 head 为头指针的链表各节点的值如下图所示#include struct node int num;struct node *next;struct node *head;int fun(struct node *h) int k=0;struct node *p=h;while (p!=NULL) k+=p-num;p = p-next;if(p!=NULL) p = p-next;return (k);main() int m;m=fun(head);printf(“m=%dn”,m);10 20 30 40 50 NULL9514 13 15 16 17 NULL934 3 5 6 7 NULL97T h e 0 A NULL964 3 5 6 7 NULL94