播客 > 没文化  >  c语言程序设计复赛  | 登录  | RSS订阅地址  | Code平台

c语言程序设计复赛

程序设计复赛
2003年7月10日

学号              姓名            学院            成绩           

注意事项:1. 请先用DOS的EDIT文本编辑器在考盘上建一个文件,文件名为: TEST.TXT
2. 上述TEST.TXT文件的内容应有2行:
第一行是:你的学号及姓名的汉语拼音码。如:
                01123456 zhangsan
             第二行是:考场号-座机号-考卷类。如:
      D317-10-B    表示D317考场,10号机,B卷。
座机号末位是单数,考A卷; 座机号末位是双数,考B卷。
3. 源程序必须存入考盘。文件名为:卷类-题号.C。如:
                   B-3.C   是B卷第3题的源程序。
4. 必须严格按题目要求的输出格式来输出。
5. 阅卷时以程序的运行结果为准。
A 卷
1.    编一个程序,输入若干个(不大于8)字符串,用字符串“end”作为结束输入标志。从中(含“end”)找出最长的一个字符串,并输出该字符串。(30分)
2.    编程序,输入一个长度为20的整型数组,把数组中重复出现的元素删去(如出现三个0,则删去后两个),输出删节後的新数组。(30分)
3.编写程序,将输入的一个base(取值2到16)进制正整数转换为十进制数输出。整数base和要转换的以字符串str表示的base进制数由键盘输入。如,输入16  2A则表示输入16进制数2A,程序将输出十进制整数42;输入3  211则输出22。(40分) 
B 卷
1.    编一个程序,输入一个字符串,请统计其中各元音字母(即A、E、I、O、U)的个数和辅音字母的总个数。注意:不分大小写。(30分)
2.    编程序,求并输出所有满足如下条件的三位正整数:它是某整数的平方,它的三位数码有两位是相同的。如100是10的平方,它有两个0,225是15的平方,它有两个2。 (30分)
3.    编程序,输入正整数n(n<8),输出全部n位的三进制数。如输入n为2则输出: 00
01
02
10
11
12
20
21
22 (40分)
   
天气:大雨,ccdot发表于2005-11-29 20:56:27,阅读了2852次,共有个1回复.

程序设计复赛(参考答案)
2003年7月10日

/* A-1 */
#include <string.h>
main()
{  char *str[80],state[80][30];
   int len[80],i,j,max,im;
   for(i=0;i<80;i++)
   {   str[i]=state[i];
       gets(str[i]);
       if(strcmp(str[i],"end")==0) break;
   }
   for(j=0;j<i;j++)
        len[j]=strlen(str[j]);
   im=0;max=len[0];
   for(j=0;j<i;j++)
     if(len[j]>max) im=j;
   puts(str[im]);
}
/* A-1 */
#include <string.h>
main()
{  char str[80][30];
   int i,max=0,im;
   for(i=0;i<80;i++)
   {   gets(str[i]);
       if(strlen(str[i])>max)
          { max= strlen(str[i]);
im=i;
          }
       if(strcmp(str[i],"end")==0) break;
   }
   puts(str[im]);
}
/* A-2 */
main()
{  int a[20],i,j,k,n=20;
   for(i=0;i<n;i++)   scanf("%d",&a[i]);
   for(i=0;i<n;i++)
   {   for(j=i+1;j<n;j++)
       if(a[i]==a[j])
       {  for(k=j;k<n-1;k++) a[k]=a[k+1];
          --n;
          j--;
       }
   }
   for(i=0;i<n;i++)  printf("%d ",a[i]);
}
/* A-2 */
main()
{  int a[20],b[20],i,j,k,n=20;
   for(i=0;i<n;i++)  scanf("%d",&a[i]);
   b[0]=a[0]; k=1;
   for(i=1;i<n;i++)
   {   for(j=0;j<k;j++)
          if(a[i]==b[j]) break;
       if(j>=k) b[k++]=a[i];
   }
   for(i=0;i<k;i++)  printf("%d ",b[i]);
}
/* A-3 */
#include <stdio.h>
main()
{  char str[10];
   int n,base,m=0,y;
   int i,j;
   scanf("%d%s",&base,str);
   n=strlen(str);
   for(i=0;i<n;i++)
   {  if(str[i]>='0'&&str[i]<='9') y=str[i]-'0';
      if(str[i]>='A'&&str[i]<='Z') y=str[i]-'A'+10;
      if(str[i]>='a'&&str[i]<='z') y=str[i]-'a'+10;
      m=base*m+y;
   }
   printf("%d\n",m);
}
/* B-1 */
main()
{  char c[80],*p;
   int a,e,i,o,u,count;
   a=e=i=o=u=count=0;
   gets(c);
   p=c;
   while(*p)
   { if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')count++;
     if(*p=='a'||*p=='A') a++;
      else if(*p=='e'||*p=='E') e++;
           else if(*p=='i'||*p=='I') i++;
                else if(*p=='o'||*p=='O') o++;
                     else if(*p=='u'||*p=='U') u++;
      p++;
   }
   printf("%d %d %d %d %d %d\n",a,e,i,o,u,count-a-e-i-o-u);
}
/* B-2 */
main()
{  int a,i,g,s,b;
   for(a=100;a<1000;a++)
{  g=a%10;
s=(a/10)%10;
b=a/100;
        if(g!=s&&s!=b&&b!=g) continue;
        for(i=10;i<32;i++)
          if(a==i*i) printf("%d ",a);
     }
   printf("\n");
}
/* B-3 */
#include <stdio.h>
#include <math.h>
main()
{  int x,i,j,end,n,k;
   int c[10];
   scanf("%d",&n);
   end=pow(3,n)-1;
   for(i=0;i<=end;i++)
   {  for(k=0;k<n;c[k]=0,k++);
      k=i; j=0;
      do{  c[j]=k%3;
           j++;
        } while(k/=3);
      for(j=n-1;j>=0;printf("%d",c[j--]));
      printf("\n");
   }
}





/* B-3 */
#include <stdio.h>
#include <math.h>
main()
{  int x,i,j,end,n,k;
   int c[10]={0};
   scanf("%d",&n);
   end=pow(3,n)-1;
   for(i=0;i<=end;i++)
   {  for(j=0,k=i;j<n;k/=3,j++)   c[j]=k%3;
for(j=n-1;j>=0; j--) printf("%d",c[j]);
      printf("\n");
   }
}

ccdot post in 2005-11-29 20:56:59 #1  
  1. 想要转载我文章的人滚远远的,能想多远,就滚多远。
  2. 不要提交任何带有网址URL信息的评论.
  3. 需要更多信息?请使用站内搜索,郁闷了?听听我在听什么吧!
用户名:*验证:看不清楚请点击刷新验证码*
内容: