兰大机试复试真题答案c语言版

1、/十进制转化为十二进制/

#include<stdio.h>
int main(){
   //十进制转化为十二进制
	while(1){
   
    int num;
    int i;
    int cnt=0;
    int w;
    char p[100];
    scanf("%d",&num);
    do{
   
    	w=num%12;
    	if(w==10){
   
    		p[cnt]='A';
		}
		if(w==11){
   
    		p[cnt]='B';
		}
		if(w<10){
   
			p[cnt]='0'+w;
		} 
		cnt++;
		num/=12;
	}while(num>0);
   cnt--;
   for(i=cnt;i>=0;i--){
   
   	printf("%c",p[i]);
   }
   printf("\n");
}
	return 0;
}

2、/十二进制转化为十进制/

#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
    //十二进制转化为十进制
	while(1){
   
	int i;
	int w=1;
	int x;
    int sum=0;
	char num[100]="";
	int newnum;
	scanf("%s",num);
	/*for(i=0;i<strlen(num);i++){
		if(num[i]=='A'){
			newnum[i]='A'-55;
		}else if(num[i]=='B'){
			newnum[i]='B'-55;
		}else{
			newnum[i]=num[i]-48;
		} 
	}
	for(i=strlen(nustrlen(num)m)-1,w=0;i>-1;i--,w++){
	sum+=newnum[i]*pow(12,w);
	} */
	for(i=0;i<strlen(num);i++){
   
		if(num[i]=='A'){
   
			newnum=num[i]-'A'+10;
		}else if(num[i]=='B'){
   
			newnum=num[i]-'B'+11;
		}else{
   
			newnum=num[i]-'0';
		} 
		if(strlen(num)-i-1>0){
   
			for(x=0;x<strlen(num)-i-1;x++){
   
			w*=12;
			}
		}else{
   
			w=1;
		}
		sum+=newnum*w;
	}
	
	printf("%d\n",sum);
	}
	return 0;
} 
//double pow(double x, double y)
 

3、/过滤重复字符串/

#include<stdio.h>
#include<string.h>
int main(){
     /*过滤重复字符串*/
    int i,j;
     char s1[100]="";
     char s2[100]="";
     int num=0;
     scanf("%s",s1);
     printf("你输入的数组为%s\n",s1);
     for(i=0;i<strlen(s1);i++){
   
     	int bol=1;
     	for(j=0;j<strlen(s2);j++){
   
     		if(s1[i]==s2[j]){
   
     		   bol=0;
     		   break;
			 }
			 
		 }
		 if(bol){
   
		 	s2[num]=s1[i];
		 	num++;
		 }
	 }
	 s2[num]='\0';
	 printf("输出的数组为");
     printf("%s\n",s2);

	return 0;
}  

4、/求最大公共子串/

#include<stdio.h>
#include<string.h>
int main(){
   /*求最大公共子串*/
	int i,j,k,n;
	int maxlen=0;
	char s1[100]="";
	char s2[100]="";
	char s3[100]="";
     scanf("%s",s1);
     scanf("%s",s2);
     for(i=0;i<strlen(s1);i++){
   
     	for(j=0;j<strlen(s2);j++){
   
     		if(s1[i]==s2[j]){
   
     			for(k=0;s1[i+k]==s2[j+k]&&s1[i+k]!='\0';k++){
   
				  
			 }
			 if(k>maxlen){
   
			 	maxlen=k;
			 	for(n=0;n<maxlen;n++){
   
			 		s3[n]=s1[i+n];
				 }
			 } 
		 }
	 } 
}
	s3[i]='\0';
	if(strlen(s3)>0){
   
			printf("%s\n",s3);
	}else{
   
		printf("无公共字符串");
	}
	
	return 0;
} 

5、/N以内的所有素数/

#include<stdio.h>
int main(){
   /*N以内的所有素数*/
	int n;
	int i;
	int x;
	int flag;
	scanf("%d",&n);
	if(n>=2){
   
	for(i=2;i<n;i++){
   
		flag=1;
		for(x=2;x<i;x++){
   
			if(i%x==0){
   
				flag=0;
				break;
			}
		}
		if(flag){
   
			printf("%d ",i);
		}
	}
}
	return 0;
}  

6、/字符串转置/
字符串转置
输入 To be or not to be
输出 oT eb ro ton ot eb

#include<stdio.h>
#include<string.h>
int main(){
   /*字符串转置*/
	char s1[100]="";
	char s2[100]="";
	int i,j;
	int num=0;
	gets(s1);
	for(i=0;i<=strlen(s1);i++){
   
		if(s1[i]==' '||s1[i]=='\0'){
   
				j=i;
				s2[i]=' ';
			for(num;num<i;num++,j--){
   
				s2[num]=s1[j-1];
			}
			num++;
			
		} 
	}
	puts(s2);
	return 0;
} 
7/*星号排版*/
#include<stdio.h>
int main(){
   /*星号排版*/
	int i,j,b,c;
	int number;
	do{
   
		printf("请输入一个奇数"); 
	   scanf("%d",&number);
	}while(number>=0&&number%2==0);
	int newnumber=number/2+1;
	for(i=0;i<number;i++){
   
		if(i<newnumber){
   
		  for(b=1;b<newnumber-i;b++){
   
				printf(" ");	
		}
			for(j=0;j<=i;j++){
   
	   		printf("* ");	
	    }	
      }else{
   
      	for(c=0;c<i+1-newnumber;c++){
   
				printf(" ");	
		}
      	for(j=0;j<=number-i-1;j++){
   
	   		printf("* ");	
	    }	
}
	   printf("\n");
	}
	return 0;
}  

8、/求三角形面积/

#include<stdio.h>
#include<math.h>
int main(){
   /*求三角形面积*/
    double a,b,c,m;
    double are;
    do{
    
    printf("输入正确的三角形的三边"); 
	scanf("%lf %lf %lf",&a,&b,&c);
	}while(!((a+b)>c)&&((a+c)>b)&&((b+c)>a));
	printf("%f %f %f\n",a,b,c);
    m=(a+b+c)/2;
    are=sqrt(m*(m-a)*(m-b)*(m-c));
    printf("%f\n",are);
}

9、/完数/

/*
问题:输出1000以内的完数
完数:如果一个数恰好等于除它本身外的因子之和,这个数就是完数。
例如6=1+2+3.
*/

  • 3
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值