C语言题

来源:百度文库 编辑:神马文学网 时间:2024/04/30 01:50:32
一、分析程序,写出结果
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);/*结果输出*/
    }
  }