栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

长沙理工大学计算机研究生复试2021笔试F0803

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

长沙理工大学计算机研究生复试2021笔试F0803

由于疫情原因,网络复试,6道编程题。
//1、写程序,输入数组a[n],输出a[0]!+a[1]!+......+a[n-1]!的值。(15分)
#include 
//单个数的阶乘
double Factorial(int n) {
    double sum = 1;
    for (int i = 1; i < n; i++) {
        sum *= i;
    }
    return sum;
}
//对数组的每个元素求阶乘相加
double Array_Factorial(int* s, int n) {
    double sum = 0;
    for (int i = 0; i < n; i++) {
        sum += Factorial(s[i]);
    }
    return sum;
}
//测试样例
int main()
{
    int a[10];
    double c=10;
    for (int i = 0; i < 10; i++) {
        a[i] = i+1;
    }
    c = Array_Factorial(a,10);
    printf("结果是:%f",c);
}
2、写程序,求区间[200,3000]中所有包含数字k(k为输入,0<=k<=9)的回文数
(回文数是正读与反读都是一样的数,如525、1551)。(15分)
//判断是否是包含k 的回文数
int isPalindrome(int n,int k) {
    int n1, n2, n3, n4;
    //分别取数的千,百,十,个位上的数
    n1 = n / 1000;
    n2 = (n % 1000) / 100;
    n3 = (n % 100) / 10;
    n4 = n % 10;
    int m;
    //如果是四位数
    if (n1 != 0) {
        m = n4 * 1000 + n3 * 100 + n2 * 10 + n1;
    }
    //如果是三位数
    else
    {
        m = n4 * 100 + n3 * 10 + n2;
    }
    if (n == m && (n1==k || n2==k || n3==k || n4==k))
        return 1;
    else
    {
        return 0;
    }
}
//测试样例
int main()
{
	int i, k;
	scanf("%d", &k);
    for (i = 200; i <= 3000; i++) {
        if (isPalindrome(i,k) == 1)
            printf("%dn", i);
    }
}
3、写程序,输入俩个数组A和B,输出俩个数组的公共元素(重复的公共元素只输
出一次)。例如:输入A=1 2 3 4 3 5,B=2 3 7 6.输出结果为:2 3。(15分)
#include
int main(){    
	int a[10],b[10];    
	for (int i = 0; i < 10; i++)        
		scanf("%d",&a[i]);    
	for (int i = 0; i < 10; i++)        
		scanf("%d",&b[i]);    
	int sum=0;    
	for (int i = 0; i < 10; i++)   
	{        
		for (int j = 0; j < 10; j++)        
		{            
			if(a[i]==b[j])            
			{                
				printf("%d", a[i]);
				break;           
			}        
		}    
	}   
	return 0;
}
4、写程序,输入一行字符,分别统计出其中英文小写字母、大写字母、空格、
数字和其它字符的个数。(15分)
#include
int main(){    
	int c1 = 0, c2 = 0, num = 0, space = 0, other = 0;
	char ch;
	while ((ch = getchar()) != 'n') {
		if (ch <= 'z' && ch >= 'a') {
			c1++;
		}
		else if(ch<='9'&&ch>='0') {
			num++;
		}
		else if (ch <= 'Z' && ch >= 'A') {
			c2++;
		}
		else if (ch==' ') {
			space++;
		}
		else {
			other++;
		}
	}
	printf("%d %d %d %d %d",c1,c2,num,space,other);
}
5、写程序,输入一个自然数N,输出一个整数M>0使得M是N的倍数,并且M的十进制
表示只包含0或1.求最小的M。例如:N=4,M=100。(20分)
#include
//判断是否是01组成的十进制数
int isNum(int n) {
	while (n) {
		if (n % 10 > 1)
			return 0;
		else n /= 10;
	}
	return 1;
}
int main(){    
	int N;
	int M;
	scanf("%d", &N);
	for (int i = 2;; i++) {
		if (isNum(i * N)) {
			M = i * N;
			printf("%dn", M);
			break;
		}
	}
}
6、写程序,输入一个只含有+1和-1的序列,输出和最大的子序列的和。例如:
序列+1 -1 -1 +1 +1 -1 +1 -1 -1 +1 的和最大的子序列之和为3
(最大子序列为+1 +1 -1 +1 +1)。(20分)
#include
//求最大子序列和
int MaxSubsequence(int* a) {
	int sum = a[0];
	int maxsum = a[0];
	for (int i = 1; i < 11; i++) {
		sum += a[i];
		printf("%dn", sum);
		if (sum < 0) {
			sum = 0;
		}
		else if (sum > maxsum)
		{
			maxsum = sum;
		}
	}
	return maxsum;
}
//测试样例
int main() {
	int a[11];
	
	for (int i = 0; i < 11; i++) {
		scanf("%d",&a[i]);
	}
	for (int i = 0; i < 11; i++) {
		printf("%d ", a[i]);
	}
	printf("n");
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/702551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号