else result = cal(cal(x,y,op1),z,op2); printf(“%d\\n”, result); }
问题: (1) 当输入为 3+4*5时,上述程序将输出________
(2) 当把上述if语句op1= =?+? && op2= =?*?中的op1,op2对调后, 对于输入为3+4*5时,上述程序将输出:__________ 2.写出下列程序的运行结果(8分) #include
int x[3]={1,2,3}, sum=0, i; void f0(int a[])
{ a[1]=a[0]; a[0]=a[2]; a[2]=a[1];} void f1(void)
{ for(i=0;i<3;i++) sum+=x[i];} void f2(int *p)
{ int sum=0; sum++; *p=sum;} main()
{ int y[3]={3,2,1};
printf(\ f0(y);
printf(\ f1();
printf(\ f2(&sum); f2(&sum); printf(\ }
3.写出下列程序的运行结果(8分) #include
void f(int a[], int n, int m) { int i,j,t;
for(i=0; i while(j { int a[]={0,1,2,3,4,5,6,7,8,9},i; f(a,10,3); for(i=0; i<10; i++) putchar(a[i]+'0'); } 4.写出下列程序的运行结果(6分) #include struct node *next; 30 }; main() { struct node *head=NULL, *p=NULL, *q, *t; char *s=\ while(*s) { q=(struct node *)malloc(sizeof(struct node)); q->c=*s; q->next=NULL; if(head = = NULL) head=q; else p->next=q; p=q; s++; } p=q=head; while(q!=NULL) { if(!(q->c>='A' && q->c<='Z')) { if(q = = head) head=q->next; else p->next=q->next; t=q; q=q->next; free(t); } else {p=q; q=q->next;} } q=head; while(q!=NULL) {putchar((*q).c); q=q->next;} } 四、程序设计题 (每题10分,共20分) 1. 有一100个元素的整数数组,假设已存放了99个从小到大的整数, 最后一个空缺。编写一程序,从键盘输入任一整数,把它放到数组中, 使数组中数据仍然有序并输出。 2. 请编写一个带命令行参数的程序prog.c. 当运行prog filename时将文本文件filename按原样在标准输出(终端)上输出;当运行prog -u filename时将文本文件filename全部以大写方式(指字母)在标准输出(终端)上输出; 当运行prog -l filename时将文本文件filename全部以小写方式(指字母)在标准输出(终端)上输出;其它运行方式均显示出错信息. 31 综合自测题3 一、单项选择题(每题2分,共20分) 1.C 语言程序的三种基本结构是顺序结构、选择结构和______结构。 A、循环 B、递归 C、转移 D、嵌套 2.若x是单精度实型变量,表达式 (x = 10/4) 的值是_____ 。 A、2.5 B、 2.0 C、 3 D、 2 3. 表达式 !x 等价于_____。 A、x==0 B、x==1 C、x != 0 D、x != 1 4.若变量已正确定义且 k 的值是 4,计算表达式 ( j = k--) 后,_____。 A、j=3, k=3 B、j=3, k=4 C、j=4, k=4 D、j=4, k=3 5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_____。 A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算 C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算 6.C语言中,形参的缺省的存储类说明是______。 A、 auto B、static C、 register D、extern 7.下列语句定义pf为指向float类型变量f的指针,_____是正确的。 A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f; 8.表达式 sizeof(―key‖) 的值是______。 A、1 B、2 C、3 D、4 9.将程序prog.c编译后运行:prog –nla hello world 则 *(*(argv+2)) 是______。 A、‘p‘ B、?-? C、?h‘ D、?w‘ 10.若a是整型变量,表达式 ~(a ^ ~a ) 等价于______。 A、~a B、1 C、0 D、2 二、填充题(每空3分,共24 分) 1.printf (\的输出结果是________________________。 2.下列程序段的输出结果是________________________。 #define F(x) x - 2 #define D(x) x*F(x) printf(\ 3.下列程序段的输出结果是________________________。 int k ; char *s = ―ABC‖; for( k=10; k != 0; k-- ) ; printf ( \ while( *s++ ) putchar( *s ); 4.下列程序的输出结果是________________________。 void fun(int k) { static int a; printf(‖%d,‖, a); a += k; } main() { int k; for (k=1; k<=3; k++) fun(k); } 32 5.下列程序的输出结果是________________________。 main( ) { struct st { int x, y; } a[4]={{10,20},{30,40},{50,60},{70,80}}; struct st *p=a; printf(\ printf(\ printf(\} 6.下列程序的输出结果是________________________。 #include \ void main() { int k, j, m, n, a[6][6], b[6]; m=3, n=2; for(k=0; k for(j=0; j for(k=0; k 7.下列程序的输出结果是________________________。 # include case 0: return(0); case 1: case 2: return(2); } printf(\ return ( fib(g-1) + fib(g-2) ); } main() { long k; k = fib(4); printf(\} 8.用typedef定义一个长度为10的整型数组NUM是________________________。三、程序分析题 (每题5分,共20分) 1.写出下列程序的输出结果。 #include void p(int *x, int y) { --*x; 33 y++; z = *x+y; printf(\} void main() { x=5; y=2; z=0; p(&x, y); printf(\ p(&y, x); printf(\} 2.写出下列程序的输出结果,并指出该程序的功能。 #include for ( k = 0; x!=0; x &= x-1 ) ++k; printf(\} 3.写出下列程序的输出结果。 #include { int v[]={6,3,4,1,2}; int n=5; int gap, j, k, temp; for( gap = n/2; gap > 1; gap /= 2 ) for( j = gap; j < n; j++ ) for( k = j-gap; k >= 0 && v[k] > v[k+gap]; k -= gap ){ temp = v[k]; v[k] = v[k+gap]; v[k+gap] = temp; } for(k=0; k<5; k++) printf(\} 4.输入1 2 3 4 5 0后,写出下列程序的输出结果。 #define LEN sizeof(struct line) #define NULL 0 struct line{ int num ; struct line *next ; } main() { struct line *p1 , *p2 , *head ; int j, k = 0; p1 = p2 = head = (struct line *) malloc (LEN) ; scanf(\ while (p1->num != 0){ p1 = (struct line *) malloc (LEN) ; scanf(\ if ( p1->num == 0 ) p2->next = NULL ; 34