2019-西工大计算机复试-机试参考代码

题目来源-西工大计算机+本人机试

1.一组整数,由小到大排序,有n组测试数据,排序输出

输入样例:
2
1 5 8 6 3 2 0
4 2 3 8 15 63 20 1 

Output:
0 1 2 3 5 6 8
1 2 3 4 8 15 20 63

参考代码:https://www.cnblogs.com/maluning/p/7944809.html 

#include<stdio.h>
void quicksort(int data[],int begin,int end)
{
    //变量定义及初始化
    int i = begin,j = end;
    int key,temp;
    key = data[begin];

    //递归跳出条件
    if(begin >= end)
        return;

    //快速排序算法
    while(i < j)
    {
        while(i < j && key <= data[j])
            j--;

        if(key >= data[j])
        {
            temp = data[i];
            data[i] = data[j];
            data[j] = temp;
        }

        while(i < j && key >= data[i])
            i++;

        if(key <= data[i])
        {
            temp = data[i];
            data[i] = data[j];
            data[j] = temp;
        }
    }

    //快速排序的二分法
    quicksort(data,begin,i-1);
    quicksort(data,j+1,end);
}
int main()
{
    int n,data[100],i,length;
    scanf("%d",&n);
    char ch;

    while(n--)
    {
        length = 0;
        do
        {
            scanf("%d",&data[length]);
            length++;
        }while((ch=getchar())!= '\n');

        quicksort(data,0,length-1);

        for(i = 0;i < length;i++)
            printf("%d ",data[i]);
        printf("\n");
    }
}

2.利用海伦公式求三角形的面积,是三角形输出面积(保留两位小数)否则输出NaN;(会给海伦公式)

Input:
2
3.0 4.0 5.0
1.0 2.0 3.0

Output:
6.00
NaN

参考代码: 

#include<stdio.h>
#include<math.h>
int main(){
	int n;
	scanf("%d",&n);
	while(n--){
	double a,b,c,p,area;
	scanf("%lf%lf%lf",&a,&b,&c);
	if(a+b>c&&a+c>b&&b+c>a){
			p=(a+b+c)/2;
	                area=sqrt(p*(p-a)*(p-b)*(p-c));
	                printf("%0.2lf\n",area);
	}
	else
		printf("NaN\n");
	}
	return 0;
}

3.判断ip地址是否合法,以字符串的形式输入,格式为a.b.c.d,每个均为整数,若每个数均在[0,255]之间,则说明是合法的,输出yes,否则输出no

输入样例:
2
255.2.26.2
1.2.333.4

Output:
yes
no

使用字符串分隔,然后判断分割后的字符是否合法  split(IP,vs,'.')  或者  直接处理

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	while(n--){
		int a,b,c,d;
	        scanf("%d.%d.%d.%d",&a,&b,&c,&d);
                if(a>=0&&a<256&&b>=0&&b<256&&c>=0&&c<256&&d>=0&&d<256)
		        printf("yes\n");
                else
		        printf("no\n");
	}
	return 0;
}

#include <stdio.h>  
#include <string.h>  
// www.outofmemory.cn
int main(void)   
{  
    char str[31],temp[31];  
    int a,b,c,d;  
    while(gets(str)!=NULL)  
    {  
        if(sscanf(str, "%d.%d.%d.%d ",&a,&b,&c,&d)==4 &&   a>=0   &&   a<=255 &&   b>=0   &&   b<=255 &&   c>=0   &&   c<=255 &&   d>=0   &&   d<=255)  
        {  
            sprintf(temp, "%d.%d.%d.%d",a,b,c,d);    //把格式化的数据写入字符串temp  
            if(strcmp(temp,str)==0)   
            {  
                printf("YES\n");   
            }   
            else  
            {  
                printf("NO\n");   
            }  
        }  
        else   
        {  
            printf("NO\n");  
        }  
    }  
    return 0;   
}  

4.从m开始找出n个质数(如果m是,输出m)

输入样例:
4 3

Output:
5
7
11

参考代码: 

#include<stdio.h>
bool prime(int n){

	int i;
	if((n>2 && !(n&1) )|| n<2) return false;
	for(i=3; i*i<=n;i+=2)
	if(!(n%i)) return false;
	return true;
}
int main(void){

	int m,n,i;
	scanf("%d%d",&m,&n);
	for(m++,i=0;i<n;m++)
	if(prime(m)){
	printf("%d\n",m);
	i++;
	}
	return 0;

}

5.求任意两天的日期差(当时没写出来任意两天的,暴力写出一年中的任意两天)

输入样例:
2
2016 1 1 2016 3 1
2019 1 1 2019 1 2

OutPut:
61
2

参考代码:

https://blog.csdn.net/qq_43500769/article/details/83754163

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值