《C语言程序设计》习题集

《C语言程序设计》习题集

printf(\ printf(\}

程序运行后的输出结果是( )。

A)15 B)16

C)12

D)59

7、有以下函数

fun(char *a,char *b) {

while((*a!='\\0')&&(*b!='\\0')&&(*a==*b)) { a++; b++;} return (*a-*b); }

该函数的功能是( )。

A)计算a和b所指字符串的长度之差 B)将b所指字符串复制到a所指字符串中 C)将b所指字符串连接到a所指字符串后面 D)比较a和b所指字符串的大小 8、有以下程序

void main()

{ int a=7,b=8,*p,*q,*r; p=&a;q=&b; r=p; p=q;q=r;

printf(\}

程序运行后的输出结果是( )。 A) 8,7,8,7 B) 7,8,7,8 C) 8,7,7,8

D) 7,8,8,7

9、设有定义语句

int x[6]={2,4,6,8,5,7},*p=x,i;

要求依次输出x数组6个元素中的值,不能完成此操作的语句是(A) for(i=0;i<6;i++) printf(\B) for(i=0;i<6;i++) printf(\C) for(i=0;i<6;i++) printf(\D) for(i=0;i<6;i++) printf(\ 10、有以下定义和语句

int a[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=a[1];

则*(p[0]+1)所代表的数组元素是( )。 A) a[0][1] B) a[1][0] C) a[1][1] D) a[1][2]

11、有以下程序 void main()

{char s[]=\

for(p=s+1;p

程序运行后的输出结果是( )。 A) ABCD B) A C) B

D) BCD

- 36 -

。 ) 《C语言程序设计》习题集

BCD B CD C D D

C D

CD D

12、有以下程序

int a=2; int f(int *a) {return (*a) ++;} void main( ) { int s=0; { int a=5; s+=f(&a) ; }

s+=f(&a) ;

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

执行后输出结果是( )。 A) 10 B) 9 C) 7 D) 8

13、下面程序把数组元素中的最大值放入a[0]中,则在if 语句中的条件表达式应该是( )

A)p>a B)*p>a[0] C)*p>*a[0] D)*p[0]> *a[0] void main( )

{ int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i; for(i=0;i<10;i++,p++) if(________) *a=*p; printf(\,*a); } 14、 以下程序的输出结果是( )

A)AfghdEFG B)Abfhd C)Afghd D)Afgd #include\void main( )

{ char *p1,*p2,str[50]=\; p1=\; p2=\;

strcpy(str+1,p2+1); strcpy(str+3,p1+3); printf(\,str); }

15、以下程序中函数scmp的功能是返回形参指针s1和 s2所指字符串中较小字符串的首地址。

#include #include

char *scmp(char *s1, char *s2) { if( strcmp (s1, s2)<0)

return(s1); else return(s2); }

main ()

- 37 -

《C语言程序设计》习题集

{ int i; char string[20], str[3][20]; for(i=0;i<3;i++) gets(str[i]);

strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/ strcpy(string,scmp(string,str[2])); printf(\}

运行时依次输入:abcd、abba和abc三个字符串,则输出结果为( )。 A) abcd B) abba C) abc D) abca 16、已定义以下函数:

fun(char *p2, char *p1)

{ while((*p2=*p1)!=?\\0?){p1++;p2++; } } 函数的功能是( )。

A) 将p1所指字符串复制到p2所指内存空间 B) 将p1 所指字符串的地址赋给指针 p2 C) 对p1和p2两个指针所指字符串进行比较

D) 检查p1和p2两个指针所指字符串中是否有‘\\0’ 17、有以下程序

#include “string.h” void main()

{ char s[]=\

char *p=“abcde\\0fghjik\\0”;

printf(\}

执行后输出结果是( )。

A) 赋初值的字符串有错 B) 6,7,12 C) 5,6,5 18、有以下程序

void main()

{ char str[]=\

while(*ps)ps++;

for(ps--;ps-str>=0;ps--) puts(ps); }

执行后的输出结果是( )。 A) yz B) z C) z xyz yz yz

xyz

D) 6,6,6

D) x xy xyz

二、填空题

1、已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向两个双精度型 的动态存储单元 。

2、以下函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的

尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。 # include void sstrcat(char *s, char *t) { int n; n= strlen(s);

- 38 -

《C语言程序设计》习题集

while (*(s+n)= ){s++; t++;} }

3、以下程序运行后的输出结果是 。 #include char *ss(char *s) { char *p, t; p=s+1; t=*s; while(*p) { *(p-1) = *p; p++;} *(p-1)=t; return s; } void main() { char *p, str[10]=\ p = ss(str) ; printf(\ }

4、以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返

回字符串:yesyes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如:adgda.请填空. #include \

char *huiwen(char *str) {

char *p1,*p2; int i,t=0; p1=str; p2= for(i=0;i<=strlen(str)/2;i++) if(*p1++!=*p2--) { t=1; break; } if( ) return (\ else return (\}

void main() {

char str[50];

printf(\ printf(\ ); } 5、以下程序中,函数 sumColumM的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。

#define M 2 #define N 4

void SumColumMin(int a[M][N],int *sum) { int i,j,k,s=0; for(i=0;i

- 39 -

联系客服:779662525#qq.com(#替换为@)