2016-2018年中央财经大学C语言程序设计考研真题及答案解析(9)

本站小编 免费考研网/2020-03-02


               }
    若输入数据为:19  <CR>,则输出结果为:                       。
10、下述程序的运行结果是                      。
            #include<stdio.h>
            void fun(int x)
            {    putchar('0'+(x% 10));
                 fun(x/10);
            }
            void main()
            {
                 printf("\n");
                 fun(1234);
            }
三、程序设计题(每题15分,共75分)
1、编写程序,读入一个以符号"."结束的长度小于20字节的英文句子,检查其是否为回文(即正读和反读都是一样的,不考虑空格和标点符号)。例如:
读入句子:MADAM I'M ADAM. 它是回文,所以输出:YES
读入句子:ABCDBA). 它不是回文,所以输出:NO
2、编写程序,其中包括一个函数,此函数的功能是:对一个长度为N 的字符串从其第K个字符起,删去M个字符,组成长度为N-M的新字符串(其中N、M<=80,K<=N)。例如输入字符串"We are poor students.",利用此函数进行删除"poor"的处理,输出处理后的字符串是"We are students."。
3、编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2。
4、编写程序将输入的两行字符串连接后,将串中全部空格移到串首后输出。
5、编写程序,输入字符串,分别统计字符串中所包含的各个不同的字符及其各自字符的数量。如:输入字符串: abcedabcdcd 则输出:a=2 b=2 c=3 d=3 e=1。
 
答案及解析
一、选择题
1. B   2. B  3. C  4. B  5. B
6. A   7. C  8. C  9. B  10.D
11. C   12. C  13. C  14. B  15. B
16. C   17. B  18. C  19. A  20.A
 
二、填空题
1、=1/i 
2default :  
3、i%3=0  
4、1 -2  
5、004   
6、  4   
7、y=1   
8、3.9     
9、  19
10、4321  
三、程序设计题
1、编写程序,读入一个以符号"."结束的长度小于20字节的英文句子,检查其是否为回文(即正读和反读都是一样的,不考虑空格和标点符号)。例如:
读入句子:MADAM I'M ADAM. 它是回文,所以输出:YES
读入句子:ABCDBA). 它不是回文,所以输出:NO
参考答案:
#include "stdio.h"
void main( )
{
  char s[21],*p,*q;
 gets(s);
 p=s;
 q=s;
 while(*q!='\0') 
  q++;
 q-=2;
 while(p<q) /* 指针p指向字符串首,指针q指向串未 */
  if(*p++ != *q--) 
  {
    printf("NO\n");
   break;
 }
 if(p>=q)
  printf("YES\n");
 }
 
2、编写程序,其中包括一个函数,此函数的功能是:对一个长度为N 的字符串从其第K个字符起,删去M个字符,组成长度为N-M的新字符串(其中N、M<=80,K<=N)。例如输入字符串"We are poor students.",利用此函数进行删除"poor"的处理,输出处理后的字符串是"We are students."。
参考答案:
strcut(s,m,k)
char s[ ];
int m,k;
void main()

 char *p;
 int i;
 p=s+m; /* 指针p指向要被删除的字符 */
 while((*p=*(p+k))!='\0') /* p+k指向要前移的字符 */
  p++;
 }
 
3、编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2。
参考答案:
insert(s1,s2,ch)
char s1[],s2[],ch;
void mian()
{
  char *p,*q;
 p=s1;
 while(*p++!=ch) ;
  while(*s2!='\0')
  {
    q=p;
   while(*q!='\0')
     q++;
   while(q>=p)
    *(q+1)=*q--;
   *++q=*s2++;
   p++;
  }
}
 
4、编写程序将输入的两行字符串连接后,将串中全部空格移到串首后输出。
参考答案:
strcnb(s1,s2)
char s1[],s2[];
void main()

 char *p;
 int i=1;
 p=s1;
 while(*p!='\0') 
  p++;
 while((*p++=*s2++)!='\0') ; /* 将s2接于s1后面 */
  p=s1;
 while(*p!='\0') /* 扫描整个字符串 */
 { 
  if(*p==' ') /* 当前字符是空格进行移位 */
  { 
   while(*(p+i)==' ') 
    i++; /* 寻找当前字符后面的第一个非空格 */
   if(*(p+i)!='\0')
   { 
    *p=*(p+i); /* 将非空格移于当前字符处 */
    *(p+i)=' '; /* 被移字符处换为空格 */
   }
   Else
     break; 
   }
   p++;
  }
 }
 
5、编写程序,输入字符串,分别统计字符串中所包含的各个不同的字符及其各自字符的数量。如:输入字符串: abcedabcdcd 则输出:a=2 b=2 c=3 d=3 e=1。
参考答案:
#include "stdio.h"
struct strnum
 int i;
char ch;
void main( )

 char c;
 int i=0,k=0;
 struct strnum s[100]={0,NULL};
 while((c=getchar())!='\n')
 { 
  for(i=0;s[i].i!=0;i++)
  {
    if(c==s[i].ch)
   {
     s[i].i++;
    break;
   }
  }
 if(s[i].i==0)
 {
   s[k].ch=c;
  s[k++].i=1;
 }
 }
 i=0;
 while(s[i].i>0)
 {
   printf("%c=%d ",s[i].ch,s[i].i);
  i++;
 }
}


相关话题/中央财经大学 语言 程序 设计