首页 > 编程语言 >北科程序设计A第八周上机

北科程序设计A第八周上机

时间:2024-11-14 13:19:05浏览次数:3  
标签:输出 上机 int 样例 num 北科 格式 程序设计 输入

目录

1. WERTYU

 2. n按规律转换为1

3. 多项式求值

4. 判断上三角函数

5. 计算阶乘

 6. 计算平均成绩

 7. 寻找第N个闰年

8. 判断素数

9. 8进制转换为10进制

 10. 6174问题


1. WERTYU

【题目描述】

把手放在键盘上时,稍不注意就会往右错一位。这样的话,Q会变成W,J会变成K等。输入一个错位后敲出的字符串,输出打字员本来想打出的句子。    

提示:空格不变,如果按下的是最左边的键也不变。

键盘布局为:

`1234567890-=

QWERTYUIOP[]\

ASDFGHJKL;'

ZXCVBNM,./

【输入格式】

一行表示打错的句子。(英文字母均为大写)

【输出格式】

一行表示打字员原本想打的句子。

【输入样例】

   O S, GOMR YPFSU/
【输出样例】
   I AM FINE TODAY.   

示例代码:

#include <stdio.h> 
#include <iostream> 
using namespace std;
const char *str= "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";//将键盘顺序放入字符串数组中,其中斜杠要用转义字符//   
int main()   
{  
    char c;  
    int i;  
    while ((c = getchar()) != EOF) //键盘输入 
    {  
        for (i = 0; str[i] && str[i] != c; i++);  
        if ((str[i]=='`')||(str[i]=='Q')||(str[i]=='A')||(str[i]=='Z')) //如如果按下的是最左边的键不变。 
            putchar(c);  
        else if(str[i]) putchar(str[i-1]); //否则如果在str中找到了匹配字符,输出错位的字符 
            
    }   
    return 0;  
 }  

 2. n按规律转换为1

【题目描述】

给你一个数n(0  < n < 1,000,000 ) ,n遵循下面的规律:

    当n=1,n = 1;

    当n为偶数, n = n/2;

    当n为奇数, n =  3*n+1。

自定义一个函数cal_step(int n),输入n,按上述规律最后转为1。输出每次变化的值,并计算转换的次数。

【输入格式】

一行一个整数 n

【输出格式】

第一行输出每次操作后得到的数,中间用空格分隔。

第二行输出一个整数表示操作总次数。

【输入样例】

10

【输出样例】

5 16 8 4 2 1

6

注意: 第一行行尾有一个空格

 示例代码:

#include <iostream>
using namespace std;
int globalvariable=0;//定义一个全局变量计数 
int cal_step(int n)
{
	
	if (n==1) 
	{
		cout<<endl; 
		return 0;
	}
	globalvariable++;
	if (n%2==0)
	{
	    cout<<n/2<<" ";
	    return cal_step(n/2);//递归调用,继续重新执行函数	
    }
	else if (n%2==1)
		 {
		    cout<<(3*n+1)<<" ";
		    return cal_step(3*n+1);//递归调用,继续重新执行函数
		 }
	return 0;
}
int main()
{
    int n;
	cin>>n;
	cal_step(n);
	cout<<globalvariable<<endl;
	return 0;
} 

​​​​​​​3. 多项式求值

【题目描述】

给定一个多项式,以及变量的值,求多项式的值。

【输入格式】

输入为三行数据,第一行是多项式的项数n,第二行有n个数,是多项式从高到低的系数,第三行是变量x的值。

【输出格式】

一行一个数表示多项式的值

【输入样例】

3

1 2 1

2

【输出样例】

9

 示例代码:

#include <iostream>
#include <cmath> 
using namespace std;
void function(int n)
{	 
	//多项式有n项
	int num[n],x;
	int sum=0; 
	for (int i=0;i<=n-1;i++)
	{
		cin>>num[i];//多项式系数 
	}
	cin>>x;//变量x
	for (int i=0;i<=n-1;i++)
	{
		sum+=num[n-i-1]*pow(x,i);//多项式求和,其中pow为幂函数 
	} 
	cout<<sum<<endl;
}
int main()
{
	int n;
	cin>>n;
	function(n);
	return 0;
} 

4. 判断上三角函数

【题目描述】

输入4阶方阵a中的元素,如果a是上三角矩阵,输出"YES",否则,输出"NO"。(上三角矩阵,即主对角线以下的元素都为0,主对角线为从矩阵的左上角至右下角的连线)

【输入格式】

输入共四行,每行四个数表示一个四阶方阵

【输出格式】

按要求输出 YES 或 NO

【输入样例1】

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

【输出样例1】

NO

【输入样例1】

1 1 1 1

0 1 1 1

0 0 1 1

0 0 0 1

【输出样例1】

YES

 示例代码:

#include <iostream>
using namespace std;
int main()
{
    int num[4][4];
    int flag=0;//标识符 
	for (int i=0;i<=3;i++)//输入矩阵 
	{
	    for (int j=0;j<=3;j++)
		{
		     cin>>num[i][j];	
		}	
	}
	for (int i=0;i<=3;i++)//判断是否是上三角矩阵 
	{
		for (int j=0;j<=3;j++)
		{
			if (i>j)
			{
				if (num[i][j]==0)	flag=1;
				else flag=0;	
			}
		}
	}
	if (flag==1)
	{
		cout<<"YES"<<endl;
	}
	else cout<<"NO"<<endl;
	return 0; 
} 

5. 计算阶乘

【题目描述】

使用递归函数实现计算n!。

【输入格式】

一行一个整数 n

【输出格式】

第一行输出 n 第二行输出 n! 的表达式

【输入样例】

3

【输出样例】

3(注意要输出n)

3!=6

 示例代码:

#include <iostream>
using namespace std;
int function(int n)
{
	if (n==1) return 1;
	else return (n*function(n-1));
}
int main()
{
	int n;
	cin>>n;
	cout<<n<<endl;
	cout<<n<<"!="<<function(n)<<endl;
	return 0;
} 
 

 6. 计算平均成绩

【题目描述】

编写一个函数,该函数接受的一个长度为6的数组,数组存放6个学生的考试成绩,函数计算并返回平均成绩。在主函数中输入成绩并输出平均成绩。    

【输入格式】

一行6个数

【输出格式】

一行一个实数表示平均成绩

【输入样例】

1 2 3 4 5 6

【输出样例】

3.5

 示例代码:

#include <iostream>
using namespace std;
int main()
{
	int num[6],sum=0;
	float average;
	for (int i=0;i<=5;i++)
	{
		cin>>num[i];
		sum+=num[i];
	}
	average=sum/6.0;
	cout<<average<<endl;
	return 0;
}

 7. 寻找第N个闰年

【题目描述】

给你一个正整数y表示开始的年份,再给你一个正整数N,请求出从开始年份起第N个闰年。

注意:如果开始年份y是闰年,那么认为开始年份后的第一个闰年就是y。

【输入格式】

一行两个整数分别表示开始年份和 N

【输出格式】

一行一个整数表示第 N 个闰年

【输入样例】

2005 25

【输出样例】

2108

 示例代码:

#include <iostream>
using namespace std;
int main()
{
   int year_start,n=1,res=0;
   cin>>year_start>>n;
   for (;;year_start++)//只定义循环步长 
   {
   	  if((year_start%4==0&&year_start%100!=0)||(year_start%400==0))//如果是闰年 
   	  {
   	       res++;//计数加一	
	  }
	  if(res==n) break;//直至第n个闰年,强制退出循环 
   }
   cout<<year_start<<endl;
   return 0;	
} 

8. 判断素数

【题目描述】

输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)

【输入格式】

一行一个整数 n

【输出格式】

输出 YES 或 NO

【输入样例】

5

【输出样例】

YES

 示例代码:

#include <iostream>
using namespace std;
void ifprime()
{
	int flag=0,n;
	cin>>n;
	for (int i=1;i*i<n;i++)
	{
		if(n%i==0)
		{
			flag=0;
		}
		else flag=1;
	}
	if (flag==1)
	{
		cout<<"YES"<<endl;
	}
	else cout<<"NO"<<endl;
}
int main()
{
	ifprime();
	return 0;
}

9. 8进制转换为10进制

【题目描述】

从键盘中输入一个8进制数,将这个8进制数转换为10进制数并输出。    

【输入格式】

一行一个8进制数

【输出格式】

一行输出转化后的10进制数

【输入样例】

456

【输出样例】

302

 示例代码:

#include <iostream>
#include <cmath>
using namespace std;
int swicth(int n)
{
	int num[100],sum=0,res=-1;
	for(int i=0;n!=0;i++)
	{
		num[i]=n%10;
		n/=10;
		res++;
	}//将八进制数拆分 
	for (int i=res;i>=0;i--)
	{
		sum+=pow(8,i)*num[i];
	}//转化成10进制数 
	cout<<sum<<endl;
	return 0;
}
int main()
{
	int n;
	cin>>n;
	swicth(n);
	return 0;
	
}

 10. 6174问题

【题目描述】

假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b换原来的数,并且继续操作。有趣的是这样操作了几次后会得到四位数6174,而对6174进行处理,为7641-1467=6174,回到了它自己。输入一个n位数(不一定是四位数),输出操作序列,直到第一次出现循环。输入保证在循环之前最多只会产生1000个整数。

注意:若输入0则无输出

【输入格式】

一行一个整数

【输出格式】

一行输出操作序列(包括一开始的数)

(注:序列中的每个数通过一个空格隔开。)

【输入样例1】

1234

【输出样例1】

1234 3087 8352 6174 6174

【输入样例2】

1234567

【输出样例2】

1234567 6419754 8319762 8639532 7529643 7419753 8429652 7619733 8439552 7509843 9529641 8719722 8649432 7519743 8429652

 示例代码:

#include <iostream>
using namespace std;
int linemax(int n)//从大到小排序
{
	int num[1000]={0},res=0;
	for (int i=0;n!=0;i++)//剥离各项 
	{
		num[i]=n%10;
		n/=10;
		res++;//记录有几项 
	}
	res-=1;
	//从大到小排序
	for (int i=0;i<=res;i++)
	{
		for (int j=0;j<=res-i-1;j++)
		{
			int t;
			if(num[j]<num[j+1])
			{
				t=num[j];
				num[j]=num[j+1];
				num[j+1]=t;
			}
		}
	} 
	int sum=0;
	sum=num[0];
	for (int i=0;i<=res-1;i++)
	{
		sum=sum*10+num[i+1];
	}
	return sum;
}
int linemin(int n)//从小到大排序后的数 
{
	int num[1000]={},res=0;
	for (int i=0;n!=0;i++)//剥离各项 
	{
		num[i]=n%10;
		n/=10;
		res++;//记录有几项 
	}
	res-=1;
	//从小到大排序
	for (int i=0;i<=res;i++)//冒泡排序 
	{
		for (int j=0;j<=res-i-1;j++)
		{
			int t;
			if(num[j]>num[j+1])
			{
				t=num[j];
				num[j]=num[j+1];
				num[j+1]=t;
			}
		}
	} 
	int sum=0;
	sum=num[0];
	for (int i=0;i<=res-1;i++)
	{
		sum=sum*10+num[i+1];
	}
	return sum;
}
int main()
{
	int n,n_result[1001];//定义一个数组来储存结果 
	int flag=0;
	cin>>n;
	cout<<n<<" ";//先输出自身 
	n_result[0]=linemax(n)-linemin(n);
	cout<<n_result[0]<<" ";//再输出转换后的第一个数 
	for (int i=1;flag!=1;i++)//其中(flag!=0)是循环条件,如果flag标识为1,退出循环 
	{
		n_result[i]=linemax(n_result[i-1])-linemin(n_result[i-1]);
		cout<<n_result[i]<<" ";//每次转换后储存到n_result数组中,并输出 
		for (int j=0;j<i;j++)//判断是否会重复出现 
		{
			if (n_result[i]==n_result[j])//如果重复出现 
			{
				flag=1;//改变标识符 
			    break;//退出循环 
			}
			
		}
	}		
} 

标签:输出,上机,int,样例,num,北科,格式,程序设计,输入
From: https://blog.csdn.net/m0_66717194/article/details/143766240

相关文章

  • 北科程序设计A第七周上机
    目录1. 分段函数 2. 程序改错:字符输出 3. 递归求斐波那契数列的第n项。 4. 将十进制转换二进制 5. 数字反射 6. 求1到n的立方和7. 走格子(递归)8. 汉诺塔问题 9. 验证歌德巴赫猜想1. 分段函数【问题描述】有一个定义在自然数上的函数f(x)定义如下:......
  • hnuJava程序设计基础训练-2024
    1. DNA序列(Java)【问题描述】 一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。给定一个很长的DNA序列,以......
  • 【SSM框架-毕业程序设计】-166-基于ssm线上花店管理系统
    系列文章【SSM框架-毕业程序设计】166-基于ssm线上花店管理系统文章目录系列文章【SSM框架-毕业程序设计】一、项目描述二、运行环境三、项目技术四、主要功能五、项目截图六、获取源码一、项目描述线上花店管理系统是基于java编程语言,ssm框架,mysql数据库开发的......
  • 用函数实现模块化程序设计四
    数组作为函数参数调用有参函数时,需要提供实参,实参可以是常量、变量或表达式数组元素的作用与变量相当,一般来说,凡是变量可以出现的地方,都可以用数组元素代替,因此,数组元素也可以用作函数实参,其用法与变量相同,向形参船体数组元素的值。此外,数组名也可以作实参和形参,传递的是数组第......
  • 第十届中国大学生程序设计竞赛 重庆站(CCPC 2024 Chongqing Site)
    B.osu!mania按照题目的公式进行计算,注意四舍五入的精度问题。#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;usingldb=longdouble;usingvi=vector<int>;usingpii=pair<int,int>;voidsolve(){ intppmax;......
  • Java后台微信在线教育视频点播学习小程序设计与实现(论文+作品)
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......
  • 【精品毕设推荐】基于微信小程序的外籍人员管理系统小程序设计与实现
    点击下载原文及代码,可辅助在本地配置运行......
  • CCPC(2024年中国大学生程序设计竞赛女生专场)
    #include<bits/stdc++.h>#defineendl'\n'#defineintllusingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();signedmain(){#ifdefGordenfreopen("in.txt","rt",stdi......
  • 盒子(2024年中国大学生程序设计竞赛女生专场)
    #include<bits/stdc++.h>#defineendl'\n'#defineintllusingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();signedmain(){#ifdefGordenfreopen("in.txt","rt",stdi......
  • 上机实验:数据准备与模型评估
    1、实验目的熟悉Python的基本操作,掌握对数据集的读写实现、对模型性能的评估实现的能力;加深对训练集、测试集、N折交叉验证、模型评估标准的理解。2、实验内容(1)利用pandas库从本地读取iris数据集;(2)从scikit-learn库中直接加载iris数据集;(3)实现五折交叉验证进行模型......