一、分析程序,写出结果
1.int a[]={1,2,3,4,5,6,7,8,9}; printf("%d\n",*(a+4)); 2.int a[][3]={{1,2,3},{4,5,6},{7,8,9}},*p; p=&a[0][0]; printf("%d\n",p[5]); 3.int a[5]={1,2,3,4,5},*p; p=&a[0]; 则*(p+1)=____,*(a+2)=______. 4.#include "stdio.h" main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=a+5,*q=NULL; *q=*(p+5); printf("%d %d\n",*p,*q); } 5.int a=25,*p; p=&a; printf("%d\n",++*p); 6.void fun(int *a,int b[]) { b[0]=*a+6; } main() { int a=0,b[5]; b[0]=3; fun(&a,b); printf("%d\n",b[0]); } 二、编程 1.从键盘读入一串字符,遇到三个连续的'#'结束,统计其中英文字母的个数并输出。 #include "stdio.h" main() { char *p; int letter=0; gets(p); while(*p) { if(*p=='#'&&*(p+1)=='#'&&*(p+2)=='#') break; else if(*p>='A'&&*p<='Z'||*p>='a'&&*p<='z') letter++; p++; } printf("letter=%d\n",letter); } 2.输入一个字符串,判断这个字符串是否为“回文”。 #include "stdio.h" #include "string.h" main() { char *str; int a,b,flag=0; printf("please input string:"); gets(str); a=strlen(str); for(b=0;b<=a/2;b++) if(*(str+b)==*(str+a-b-1)) flag=1; else break; if(flag) printf("yes!\n"); else printf("no!\n"); } 3.写一个函数,求字符串长度。在在主函数中输入字符串并输出长度。 #include "stdio.h" int length(char *p) { int n=0; while(*p++) n++; return n; } main() { char *p; gets(p); printf("length=%d\n",length(p)); } 4.有一字符串包含N个字符,写一个函数, 将字符串中从第M个字符开始的全部字符复制成为另一个字符 串。 #include "stdio.h" void scopy(char *psn,char *psm,int m)/*自定义函数*/ { while(*(psn+m)) /*第m位置开始*/ *psm++=*(m+psn++);/*复制字符*/ *psm='\0'; /*加结束标志*/ } main() { char sn[100]="abcdefghijklmnopqrstuvwxyz",sm[100]; int m,n; n=strlen(sn); /*求sn实际长度*/ printf("Please input m:"); scanf("%d",&m); /*输入位置*/ if(m>n) printf("Position error!\n"); else { scopy(sn,sm,m); /*调用函数,进行复制*/ printf("\nThe new string is %s \n",sm);/*结果输出*/ } } |
|