国二c语言笔试题库(专升本会出40分的题) 下载本文

char b[]=“ABCD”; main()

{char *chp;

for(chp=b; *chp; chp+=2) printf(“%s”, chp); printf(“\\n”); }

17.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。 #include main()

{char str[81],*sptr; int i;

for(i=0;i<80;i++) {str[i]=getchar();

if(str[i]==?\\n?) break; }

str[i]= '\\0' ; sptr=str;

while(*sptr) putchar( *sptr++ ); }

18.fun1函数的调用语句为:fun1(&a,&b,&c);它将三个整数按由大到小的顺序调整后依次放入a、b、c三个变量中,a中放最大数。请填空。 void fun2(int *x, int *y) {int t;

t=*x; *x=*y; *y=t; }

void fun1(int *pa,int *pb,int *pc)

{if(*pc>*pb) fun2( pc,pb ); if(*pa<*pc) fun2( pa,pb ); if(*pa<*pb) fun2( pa,pc ); } 19.以下函数用来在w数组中插入数x,w数组中的数已按由小到大的顺序存放,n所指存储单元中存放数组中数据的个数,x插入后数组中的数仍有序。请填空。 void fun(char *w,char x,int *n) {int i,p; p=0;

w[*n]=x;

while(x>w[p]) p++ ;

for(i=*n;i>p;i--) w[i]= w[i-1] ; w[p]=x; ++*n; }

20.阅读程序: main()

{char str1[]=“how do you do”, str2[10]; char *p1=str1, *p2=str2; scanf(“%s”, p2); printf(“%s ”, p2); printf(“%s\\n”, p1); }

运行上面的程序,输入字符串HOW DO YOU DO,则程序的输出结果是 HOW how do you do 。

21.下面程序的输出结果是 SO 。 main()

{char *p[]={“BOOL”, “OPK”, “H”, “SP”}; int i;

for(i=3;i>=0;i--,i--) printf(“%c”,*p[i]); printf(“\\n”); }

22.下面程序的输出结果是 17 。 funa(int a,int b) {return a+b;}

funb(int a,int b) {return a-b;}

sub(int(*t)(),int x,int y) {return((*t)(x,y));} main()

{int x,(*p)(); p=funa;

x=sub(p,9,3); x+=sub(funb,8,3); printf(“%d\\n”, x); }

23.下面程序的输出结果是 XYZA 。 #include

void fun(char *a1,char *a2,int n) {int k;

for(k=0;k

a2[k]=(a1[k]-?A?-3+26)&+?A?; a2[n]=?\\0?; }

main()

{char s1[5]=“ABCD”, s2[5]; fun (s1, s2, 4); puts(s2); }

24.下面程序的输出结果是 7 1 。 void as(int x,int y,int *cp,int *dp)

{*cp=x+y; *dp=x-y; }

main()

{int a=4,b=3,c,d; as(a,b,&c,&d);

printf(“%d %d\\n”,c,d); }

25.下面程序的输出结果是 eybdooG 。 #include main()

{static char b[]=“Goodbye”; char *chp=&b[7];

while(--chp>=&b[0]) putchar(*chp); putchar(?\\n?); } 26.若输入:this test terminal,以下程序的输出结果为:terminal test this。填空补充以下程序。 #include #define MAXLINE 20 main() {int i;

char *pstr[3],str[3][MAXLINE]; for(i=0;i<3;i++) pstr[i]=str[i];

for(i=0;i<3;i++) scanf(“%s”,pstr[i]); sort(pstr);

for(i=0;i<3;i++) printf(“%s\\n”,pstr[i]); }

sort( char *pstr [3] ) {int i,j; char *p;

for(i=0;i<3;i++) {for(j=i+1;j<3;j++)

{if(strcmp(*(pstr+i),*(pstr+j))>0) {p=*(pstr+i);

*(pstr+i)= *(patr+j) ; *(pstr+j)=p; } } } }

27.以下程序利用指针法将两个数按从小到大的顺序输出来。 main()

{int a,b, *p1,*p2 , p ;

printf(“input a, b:”); scanf(“%d%d”, &a,&b); p1=&a ; p2=&b; if(a

{p=p1; p1=p2; p2=p;}

printf(“a=%d b=%d\\n”,a,b);

printf(“max=%d min=%d\\n”, *p1,*p2 ); }

28.以下程序的输出结果是 8 。 fun(int n,int *s) {int f1,f2;

if(n==1||n==2) *s=1; else

{fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } }

main() {int x;

fun(6,&x);

printf(“%d\\n”,x); }

29.下面的程序通过函数average计算数组中各元素的平均值,请填空。 float average(int *pa,int n) {int i;

float avg=0.0; for(i=0;i

avg=avg+ *(pa+i) ; avg= avg/n ; return avg; }

main()

{int i,a[5]={2,4,6,8,10}; float mean;

mean=average(a,5);

printf(“mean=%f\\n”,mean); }

30.以下程序将字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后的新串存于字符数组s2中。 #include

void replace(char *s1,char *s2,char *str1,char *str2) {char *t0,*t1,*t2;