21.下面程序的輸出結果是____。
#include "stdio.h"
struct str1
{ char c[5];
char *s;
};
main( )
{ struct str1 s1[2]={ {"ABCD""EFGH"},{"IJK","LMN"} };
struct str2
{ struct str1 sr;
int d;
}s2={"OPQ","RST",32767};
struct str1 *p[2];
p[0]=&s1[0];
p[1]=&s1[1];
printf("%s",++p[1]->s); /* ① */
printf("%c",s2.sr.c[2]); /* ② */
}
① A) LMN B) MN C) N D) IJK
、 A) O B) P C) Q D) R
22.以下程序的輸出結果是____。
struct st
{ int x,*y;
}*p;
int s[]={10,20,30,40};
struct st a[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};
main()
{ p=a;
printf("%d\n",++(*(++p)->y));
}
A) 10 B) 11 C) 20 D) 21
三、程序填空題
在程序填空題中,已經給出了程序的主干,讀者首先要理解程序的思路,再選擇正確的內容填入空白處,使程序完成既定的功能。這類習題的設計就是要引導讀者逐步掌握編程的方法。本節習題的難度適中,可能有些典型的程序在課堂上已經有所接觸,讀者一定要獨立完成它,這樣就可以逐步提高自己的編程能力。
1.下面程序的功能是不用第三個變量,實現兩個數的對調操作。
#include
main()
{ int a,b;
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
a= ① ;
b= ② ;
a= ③ ;
printf("a=%d,b=%d\n",a,b);
}
2.下面的程序的功能是求一維數組中的最小元素。
findmin(int *s,int t,int *k)
{ int p;
for(p=0,*k=p;p if(s[p] ① ; } main() { int a[10],i,*k=&i; for(i=0;i<10;i++) scanf("%d",&a[i]); findmin(a,10,k); printf("%d,%d\n",*k,a[*k]); } 3.下面程序的功能是計算1-3+5-7+ …… -99+101的值。 main() { int i,t=1,s=0; for(i=1;i<=101;i+=2) { ① ; s=s+t; 、 ; } printf("%d\n",s); } 4.下面程序的功能是將形參x的值轉換為二進制數,所得的二進制數放在一個一維數組中返回,二進制數的最低位放在下標為0的元素中。 fun(int x,int b[]) { int k=0,r; do { r=x% ① ; b[k++]=r; x/= ② ; }while(x); } 5.下面程序的功能是輸出1到100之間每位數的乘積大于每位數的和的數。例如數字26,數位上數字的乘積12大于數字之和8。 main() { int n,k=1,s=0,m; for(n=1;n<=100;n++) { k=1; s=0; 、 ; while( ② ) { k*=m%10; s+=m%10; 、 ; } if(k>s) printf("%d",n); } } 相關推薦: