zoukankan      html  css  js  c++  java
  • 上机练习七

    导航:复试上机历年真题,题目未搜集全
    十四:2003 十三:2004
    十二:2005 十一:2006
    十:2007 九:2008
    八:2009 七:2012
    六:2013 五:2014
    四:2015 三:2017
    二:2018 一:2019

    2012

    1、打印菱形

    题目:
    打印菱形,中间以空格隔开
    如 n=5 时输出如下图形:

        *
      * * *
    * * * * *
      * * *
        *
    

    代码:

    #include<stdio.h>
    
    int main()
    {
    	int N;
    	scanf("%d", &N);
    
    	for(int i=1;i<=N/2+1;i++)//三角带中间一行 
    	{
    		for(int j=1;j<=N/2+1-i;j++)
    			printf("  ");
    		for(int j=1;j<=2*i-1;j++)
    			printf("* ");
    		printf("
    ");		
    	}	
    	
    	for(int i=N/2+2;i<=N;i++)//下半个倒三角 
    	{
    		for(int j=N/2+2;j<=i;j++)
    			printf("  ");
    		for(int j=1;j<=(N-i+1)*2-1;j++)
    			printf("* ");
    		printf("
    ");
    	}
    	
    	
    	return 0;
    }
    
    

    2、素数

    题目:
    打印 n 以内(包括 n)的所有素数,从小到大,中间用空格隔开

    代码:

    #include<stdio.h>
    
    
    bool isprime(int x)
    {
    	for(int i=2;i<=x/2;i++)
    		if(x%i==0)
    			return false;
    	return true;
    }
    
    
    
    int main()
    {
    	int N;
    	scanf("%d", &N);
    	for(int i=2;i<=N;i++)
    	{
    		if(isprime(i)==true)
    			printf("%d ", i); 
    	}
    	
    	
    	return 0;	
     } 
    

    3、递归多项式

    题目:
    函数P(n, x)满足如下关系

    • P(n, x)= 1, n=0时
    • P(n, x)= x, n=1时
    • P(n, x)= ((2n-1)x-P(n-1, x)-(n-1)*P(n-2, x)), n>1时

    代码:

    #include<stdio.h>
    
    
    double p(int n, double x)
    {
    	if(n==0)
    		return 1;
    	else if(n==1)
    		return x;
    	else 
    		return ((2*n-1)*x-p(n-1, x)-(n-1)*p(n-2, x));
    	
    }
    
    
    int main()
    {
    	int n;
    	double x;
    	scanf("%d %lf", &n, &x);
    	printf("变量为%5.2f的第%d阶多项式值为%5.2f
    ", x, n, p(n, x));
    	
    	return 0;
    }
    

    4、求满足条件的数

    题目:
    求出10-99之间所有每位数的乘积大于每位数之和的数,如98满足:9*8>9+8。

    代码:

    #include<stdio.h>
    
    
    
    int main()
    {
    	int a[100];
    	int num=0;
    	
    	int x,y;
    	for(int i=10;i<=99;i++)
    	{
    		x = i/10;
    		y = i%10;
    		if(x*y>x+y)
    			a[num++]=i;
    	}
    	
    	int sums=0;
    	for(int i=0;i<num;i++)
    	{
    		sums+=a[i];
    	}
    	
    	printf("%d
    ", sums);
    	
    	return 0;
    } 
    

    5、学生链表

    题目:
    建立一个链表,其每个节点代表一位学生的信息。信息从文件 a.in 中读取(其格式为第一行为一个大于零的整数表示学生的数量,以后每行表示一位学生的信息)完成:(这里用输入代替从文件中读取)
    1.求平均年龄。
    2.以姓名为标准(字典序,从小到大,区分大小写)对链表进行排序,输出排序后的学号

    对于名字字典相同的学生要比较其id,按照id排列
    使用尾插法创建链表
    使用选择排序对链表排序

    代码:

    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<algorithm>
    
    using namespace std;
    
    
    typedef struct Node{
    	char id[100];
    	char name[100];
    	int age;
    	struct Node *next;
    }Node, *Linklist;
    
    
    void creatLinklist(Linklist L, int n)//尾插法创建新链表, n个结点 
    {
    	L->next = NULL;
    	Node *q, *r;
    	r = L;
    	for(int i=0;i<n;i++)
    	{
    		q = new Node;
    		scanf("%s %s %d", q->id, q->name, &q->age);
    		q->next = NULL;
    		r->next = q;
    		r = r->next;
    	}
    }
    
    
    double calAverAge(Linklist L)//遍历链表求平均值 
    {
    	Node *r;
    	r = L->next;
    	int count;
    	double res, sums;
    	
    	sums=0; count=0;
    	while(r!=NULL)
    	{
    		count++;
    		sums+=r->age;
    		r = r->next;
    	}
    	res = sums/count;
    	return res;
    }
    
    
    int cmp(Node *p, Node *q)
    //对学生的名字按照字典序比较
    //如果p->name<q->name,返回负数,如果p->name>q->name返回正数
    //如果p->name==q->name,进一步比较学生id
    //如果p->id<q->id,返回负数,如果p->id>q->id返回正数
    //不可能存在两人名字相同并且学号相同 
    {
    	int res;
    	res = strcmp(p->name, q->name);
    	if(res!=0)
    		return res;
    	else//如果名字相同,则按照id比较
    	{
    		int idcmp = strcmp(p->id, q->id);
    		return idcmp;
    	} 
    }
    
    
    void selcetSort(Linklist L) 
    //根据姓名对链表进行选择排序 
    {
    	Node *p, *q, *m;
    	for(p=L->next;p->next!=NULL;p=p->next)
    	{
    		m = p;
    		for(q=p->next;q!=NULL;q=q->next)
    		{
    			if(cmp(q, m)<0)
    				m = q;
    		}
    		
    		if(m!=p)
    		{
    			swap(p->age, m->age);
    			swap(p->name, m->name);
    			swap(p->id, m->id);
    		}
    			
    	}
    }
    
    
    
    int main()
    {
    	Linklist L;
    	L = new Node;
    	int N;
    	
    	printf("请输入学生个数:"); 
    	scanf("%d", &N); 
    	
    	creatLinklist(L, N);
    	double aver = calAverAge(L);
    	printf("平均年龄为:%.2f
    ", aver);
    	
    	Node *r;
    	r = L->next;
    	printf("学生链表为:
    "); 
    	while(r!=NULL)
    	{
    		printf("%s %s %d
    ", r->id, r->name, r->age);
    		r = r->next;
    	}
    	
    	selcetSort(L);
    	r = L->next;
    	printf("学生链表按照姓名从小到大排列为:
    "); 
    	while(r!=NULL)
    	{
    		printf("%s %s %d
    ", r->id, r->name, r->age);
    		r = r->next;
    	}
    	
    	return 0;
    } 
    
  • 相关阅读:
    Lambda表达式、依赖倒置
    ASP.NET vNext 概述
    Uname
    RHEL4 i386下安装rdesktop【原创】
    Taxonomy of class loader problems encountered when using Jakarta Commons Logging(转)
    How to decompile class file in Java and Eclipse
    先有的资源,能看的速度看,不能看的,抽时间看。说不定那天就真的打不开了(转)
    Google App Engine 学习和实践
    【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询
    js正則表達式语法
  • 原文地址:https://www.cnblogs.com/welan/p/12714903.html
Copyright © 2011-2022 走看看