题目来源-西工大计算机+本人机试
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