《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
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
- 38 -
《C语言程序设计》习题集
while (*(s+n)= ){s++; t++;} }
3、以下程序运行后的输出结果是 。 #include
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 -