`

一些笔试的代码

阅读更多

1、非递归求最小公倍数和最大公约数

 

#include<stdio.h>
void main()
{
int a,b,num1,num2,temp;
printf("please input num1 and num2 \n");
scanf("%d%d",&num1,&num2);
if(num1 > num2)
{
a = num1;
b = num2;
}
else
{
a = num2;
b = num1;
}

while(b > 0)
{
temp = a % b;
a = b;
b = temp;
}
printf("最大公约数是%d\n最小公倍数是%d\n",a,(num1 * num2) / a);
}

 

 

2、递归求最大公约数

 

//用递归求最大公约数
#include<stdio.h>
int gcd(int m,int n);
int main()
{
  int m,n;
 printf("Input m,n:\n");
  scanf("%d%d",&m,&n);
  printf("%d\n",gcd(m,n));
}
int gcd(int m,int n)
{
 if(m>n)//大于和小于只要"<"或">"就够了,不需要两个
  return gcd(m-n,n);
  else if(m<n)
  return gcd(m,n-m);
 else if(m==n)
  return m;
}

 

3、字符串单词倒置题

 

//字符串转置
#include<string.h>
#include<stdio.h>
void Reversion(char *str)//方法一,利用string.h库函数
{
    int n=strlen(str)-1;
    //char *temp=(char*)malloc(n+1);
    char temp[30]="";
    while(n>0)
    {
        if((str[n]!=' ')&&(str[n-1]==' '))
        {
            strcat(temp,str+n-1);
            str[n]='\0';
        }
        n--;
    }
    strcat(temp,str+n);
    printf("%s\n",temp);
}
void turn(char *str)//方法二,利用循环
{
    char temp;
    int j=strlen(str)-1,i=0,begin,end;
    while(j>i)
    {
        temp=str[i];
        str[i]=str[j];
        str[j]=temp;
        j--;
        i++;
    }
    printf("%s\n",str);
    i=0;
    while(str[i])
    {
        if((str[i]!=' '))
		{
			begin=i;
			while(str[i]&&str[i]!=' ')
				i++;
			end=i-1;
		}
		while(end>begin)
		{
			temp=str[begin];
			str[begin]=str[end];
			str[end]=temp;
			end--;
			begin++;
		}
        i++;
    }
    printf("%s\n",str);
}
void main()
{
    char str[30]="hello world future";
    Reversion(str);
    char str1[]="ni hao a";
    turn(str1);
}

 

 

4、判断低地址还是高地址优先

 

#include<stdlib.h>
#include<stdio.h>
void main()
{
    int a=10;
    short b;
    memcpy(&b,&a,2);//将a的低两字节赋值给b
    printf("%d\n",b);
}

 

 

5、字符串翻转

 

#include <stdio.h>
#include <string.h>
void rotate(char *start, char *end)
{
    while(start != NULL && end !=NULL && start<end)
    {
        char temp=*start;
        *start=*end;
        *end=temp;
        start++;
        end--;
    }
}

void leftrotate(char *p,int m)
{
    if(p==NULL)
        return ;
    int len=strlen(p);
    if(m>0&&m<=len)
    {
        char *xfirst,*xend;
        char *yfirst,*yend;
        xfirst=p;
        xend=p+m-1;
        yfirst=p+m;
        yend=p+len-1;
        rotate(xfirst,xend);
        rotate(yfirst,yend);
        rotate(p,p+len-1);
    }
}

int main(void)
{
    char str[]="abcdefghij";
    leftrotate(str,3);
    printf("%s\n",str);
    return 0;
}

 

6、判断系统大端小端存储

 

#include<stdio.h>
union s{
int i;
char ch;
}c;
int check()
{
c.i=1;
return (c.ch);
}
void main()
{
if (check())
{
printf("little\n");
}
else
printf("big\n");
}

 

7、一道求概率的问题即一个边长为10的正方形和一个半径为10的圆重叠的部分答案为25π左右

 

#include<stdio.h>
#include<time.h>
void main()
{
    int count=0,i=100;
    srand(time(0));
    while(i>0)
    {
        int a=rand()%10;
        int b=rand()%10;
        if((a*a+b*b)<=100)
            count++;
        i--;
    }
    printf("%d",count);
}


8、数组a[N],存放了1至N-1个数,其中某个数重复一次,找出重复的那个数

 

 

#include<iostream>  
using namespace std;  
void do_dup(int a[] , int n)  
{  
    int *b = new int[n];  
    for( int i = 0 ; i != n ; ++i )  
    {  
        b[i] = -1 ;  
    }  
    for( int j = 0 ; j != n ; ++j )  
    {  
        if( b[a[j]] == -1 ){  
            b[a[j]] = a[j] ;  
        }  
        else  
        {  
        cout << b[ a[j] ] << endl ;  
        break ;  
        }    
    }  
}  
int main(){  
    int a[]={  1 , 2 , 3 , 4 , 3 } ;  
    do_dup( a , 5 ) ;  
}   

9、用两个线程实现1-100的输出

 

package lzf.thread;
//用两个线程实现1-100的输出
public class Synchronized {
	// state==1表示线程1开始打印,state==2表示线程2开始打印
	private static int state = 1;

	private static int num1 = 1;
	private static int num2 = 1;

	public static void main(String[] args) {
		final Synchronized t = new Synchronized();
		new Thread(new Runnable() {
			@Override
			public void run() {
				while (num1 < 95){
					// 两个线程都用t对象作为锁,保证每个交替期间只有一个线程在打印
					synchronized (t) {
						// 如果state!=1, 说明此时尚未轮到线程1打印, 线程1将调用t的wait()方法, 直到下次被唤醒
						if (state != 1) {
							try {
								t.wait();
							} catch (InterruptedException e) {
								e.printStackTrace();
							}
						}
						// 当state=1时, 轮到线程1打印5次数字
						for (int j = 0; j < 5; j++) {
							System.out.println("num1:"+num1);
							num1 += 1;
							num2 = num1;
						}
						// 线程1打印完成后, 将state赋值为2, 表示接下来将轮到线程2打印
						state = 2;
						// notifyAll()方法唤醒在t上wait的线程2, 同时线程1将退出同步代码块, 释放t锁
						t.notifyAll();
					}
				}
			}
		}).start();

		new Thread(new Runnable() {
			@Override
			public void run() {
				while (num2 < 100) {
					synchronized (t) {
						if (state != 2) {
							try {
								t.wait();
							} catch (InterruptedException e) {
								e.printStackTrace();
							}
						}
						for (int j = 0; j < 5; j++) {
							System.out.println("num2:"+num2);
							num2 += 1;
							num1 = num2;
						}
						state = 1;
						t.notifyAll();
					}
				}
			}
		}).start();
	}
}

linux下线程示例

gcc -o pthread_testpthread_test .c -lpthread

 

#include<stddef.h>
#include<stdio.h>
#include<unistd.h>
#include"pthread.h"

void reader_function(void);
void writer_function(void);
char buffer;
int buffer_has_item=0;
pthread_mutex_t mutex;
main()
{
    pthread_t reader;
    pthread_mutex_init(&mutex,NULL);
    pthread_create(&reader,NULL,(void*)&reader_function,NULL);
    writer_function();
}
void writer_function(void)
{
    while(1)
    {
        pthread_mutex_lock(&mutex);
        if(buffer_has_item==0)
        {
	    			buffer='a';
            printf("make a new item\n");
            buffer_has_item=1;
        }
        pthread_mutex_unlock(&mutex);
    }
}
void reader_function(void)
{
    while(1)
    {
        pthread_mutex_lock(&mutex);
        if(buffer_has_item==1)
        {
	    			buffer='\0';
            printf("consume  item\n");
            buffer_has_item=0;
        }
        pthread_mutex_unlock(&mutex);
    }
}

 

线程模拟火车售票

 

package lzf.thread;

class TicketSystem {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SellThread st = new SellThread();
		new Thread(st).start();
		try{
			Thread.sleep(10);
		}
		catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		new Thread(st).start();
		st.b = true;
		
	}

}

class SellThread implements Runnable{
	int tickets = 100;
	Object obj = new Object();
	boolean b = false;
	@Override
	public void run() {
		// TODO Auto-generated method stub
		if(b==false){
			while(true){
				sell();
			}
		}
		while (true) {
			synchronized (this) {
				if(tickets>0){
					try{
						Thread.sleep(1);
					}
					catch (Exception e) {
						// TODO: handle exception
						e.printStackTrace();
					}
					System.out.println("obj"+Thread.currentThread().getName()+" sell tickets:"+tickets);
					tickets--;
				}
			}
		}
	}
	public synchronized void sell(){
		if(tickets>0){
			try{
				Thread.sleep(10);
			}
			catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			System.out.println("sell"+Thread.currentThread().getName()+" sell tickets:"+tickets);
			tickets--;
		}
	}
}

 

10、宏定义交换两个数字

 

//第一种
#define SWAP(x,y) ((x)=(x)+(y),(y)=(x)-(y),(x)=(x)-(y))
//第二种
#define SWAP(x,y) ((x)=(x)^(y),(y)=(x)^(y),(x)=(x)^(y))//比上一种更好,不会出现大数字的溢出问题
#define swap(x, y)/
//带有换行
x = x + y;/
y = x - y;/
x = x - y;

#define swap(x, y)/
x ^= y;/
y ^= x;/
x ^= y;
void main()
{
int x=3,y=4;
swap(x,y);
printf("%d,%d",x,y);
}
分享到:
评论

相关推荐

    ThoughtWorks笔试代码

    以下是一些可能涉及到的知识点,它们可能会出现在ThoughtWorks的笔试代码中: 1. **数据结构与算法**:ThoughtWorks笔试可能会涵盖数组、链表、栈、队列、树(二叉树、平衡树如AVL或红黑树)、图等基本数据结构。...

    笔试面试题的代码.zip

    笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip笔试面试题的代码.zip...

    杭电笔试代码模板参考

    【标题】"杭电笔试代码模板参考" 涉及的知识点主要集中在编程能力和算法基础,这通常是大学或企业招聘IT职位时进行技术笔试的重要内容。杭电(Hangzhou Dianzi University)在线编程平台提供了丰富的题目,这些题目...

    笔试,面试常见代码(java)

    这份“笔试,面试常见代码(java)”的压缩包文件,很可能是收集了一些常见的编程题目和面试中可能会遇到的Java代码片段,旨在帮助提升大家的编程能力和面试技巧。 首先,Java的基础知识包括语法结构、数据类型、控制...

    华为在线笔试代码20180912

    在线笔试的一些源码,大家可以自己尝试。均在oj上进行了单元测试,可以通过。

    Java笔试题代码.png

    该文件为山大地纬Java开发岗笔试试题 该文件为山大地纬Java开发岗笔试试题 该文件为山大地纬Java开发岗笔试试题 该文件为山大地纬Java开发岗笔试试题 该文件为山大地纬Java开发岗笔试试题

    2020阿里笔试不通过代码

    奉行即拿即用原则,资源里面不论是代码文件还是项目压缩包,我会力求做好说明,保证每一台电脑上都能运行我的程序,都能用到我的程序。同时也给大家展示我的代码风格,如果有什么好的意见提出,欢迎。

    经典Java笔试算法解析和代码:二分查找.zip

    经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找...

    java代码-笔试代码提交 sample

    在Java编程语言中,笔试代码提交通常涉及到一系列的编程题目,要求应聘者在限定时间内编写出符合要求的代码。这个"java代码-笔试代码提交 sample"可能是一个示例集,帮助求职者了解如何准备和提交Java笔试代码。下面...

    C++笔试题(附答案),有难度

    这里我们将探讨C++的一些核心知识点,以及如何在Visual Studio 2005环境下进行C++开发。 1. **C++基础**:C++是面向对象的编程语言,它基于C语言并增加了类、模板、异常处理等特性。掌握C++的基础语法,包括变量...

    java在线笔试参考代码1

    这里提到的"java在线笔试参考代码1"很可能是一组示例代码,用于帮助准备这类考试的人理解问题解决策略。从提供的压缩包文件名称来看,我们有四个源代码文件:TestLuckBags.java、TestXipai.java、Test2.java和Test1....

    java面试常见笔试题(源代码)

    本资源包含的"java面试常见笔试题(源代码)"将帮助你实践和理解这些关键概念。 1. **Java语言基础**: - **变量与数据类型**:理解基本数据类型(如int、char、boolean)和引用数据类型,以及它们之间的区别。 - *...

    深信服2019实习笔试编程题及实现代码.txt

    本资源是深信服2019实习生编程题及其实现代码,由于能力有限只会两道题中的其中一题。本资源只有一题

    java笔试代码与编程题

    ### Java笔试代码与编程题详解 #### Singleton模式详解 **Singleton模式**是一种常见的设计模式,其目的是确保一个类仅有一个实例,并提供一个全局访问点。这种模式被广泛应用于那些需要频繁创建并销毁的对象,...

    Java常见笔试、面试题目深度剖析,方法重写详解、静态代码块与构造方法执行顺序问题

    静态代码块通常用来初始化类级别的变量,或者执行一些仅需执行一次的设置操作。静态代码块的执行顺序取决于它们在源码中的出现顺序。 接下来,我们将探讨**构造方法执行顺序**。在创建一个对象时,构造方法负责初始...

    华为外包项目的一些笔试题目

    ### 华为外包项目的一些笔试题目 #### 题目一:Java字符串不可变性 **题目描述**: 提供了一段Java代码示例,其中定义了一个名为`Test`的类,该类包含一个静态方法`changeStr`,该方法接收一个`String`类型的参数...

    拓维校招笔试题

    这些笔试题涵盖了多个IT领域的基础知识,主要涉及数据库管理和关系型数据库理论。让我们一一解析这些知识点: 1. 数据库应用:自动柜员机(ATM)、航空售票系统、图书管理系统都是典型的数据库应用,用于存储和管理...

    关于公司面试的一些笔试题

    ### 关于公司面试的一些笔试题 #### 知识点概览 本文将针对一份公司面试中的笔试题目进行解析,涵盖了一系列计算机科学与编程基础知识。这些题目不仅考验了应聘者的理论知识掌握情况,还考察了解决实际问题的能力。...

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx ...

Global site tag (gtag.js) - Google Analytics