欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

再坚持一下————第三天

程序员文章站 2022-05-24 09:38:12
...

一、问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

#include<iostream>
#include<string>
#include<cmath>
using namespace std;

int main()
{
	long long d=0;
	string str_hex="";
	cin>>str_hex;
//	cout<<str_hex.length()<<endl;
	for(int i=0;i<str_hex.length();i++)
	{
		char t=str_hex[str_hex.length()-1-i];
	//	cout<<t<<endl;
		switch(t)
		{
			case '0':d=d+(t-'0')*pow(16,i);break;
			case '1':d=d+(t-'0')*pow(16,i);break;
			case '2':d=d+(t-'0')*pow(16,i);break;
			case '3':d=d+(t-'0')*pow(16,i);break;
			case '4':d=d+(t-'0')*pow(16,i);break;
			case '5':d=d+(t-'0')*pow(16,i);break;
			case '6':d=d+(t-'0')*pow(16,i);break;
			case '7':d=d+(t-'0')*pow(16,i);break;
			case '8':d=d+(t-'0')*pow(16,i);break;
			case '9':d=d+(t-'0')*pow(16,i);break;
			case 'A':d=d+(t-'7')*pow(16,i);break;
			case 'B':d=d+(t-'7')*pow(16,i);break;
			case 'C':d=d+(t-'7')*pow(16,i);break;
			case 'D':d=d+(t-'7')*pow(16,i);break;
			case 'E':d=d+(t-'7')*pow(16,i);break;
			case 'F':d=d+(t-'7')*pow(16,i);break;
			default:break;
		}
	
	}
	cout<<d;
	return 0;
 } 

二、

问题描述

  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。

输入格式

  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647

输出格式

  输出这个整数的16进制表示

样例输入

30

样例输出

1E

#include<stdio.h>
int main()
{
	long long n;
	scanf("%I64d",&n);
	char a[100000];
	int k=0;
	if(n==0)
	{
		putchar('0');
		return 0;
	}
	while(n)
	{
		if((n%16)<10)
		a[k++]=(char)(n%16+'0');
		else
		a[k++]=(char)(n%16+'A'-10);
		n=n/16;
	}
	int i;
	for(i=k-1;i>=0;i--)
	putchar((a[i]));
	return 0;
}

三、

问题描述

  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式

  输入一行,包含一个正整数n。

输出格式

  按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

52

样例输出

899998
989989
998899

数据规模和约定

  1<=n<=54。

#include"stdio.h"
int main()
{
	int n;
	scanf("%d",&n);
	int i;
	int a,b,c,d,e,f;
	for(i=10000;i<=99999;i++)
	{
		a=i/10000;//万位 
		b=i/1000%10;//千位 
		c=i/100%10;//百位 
		d=i/10%10;//个位 
		e=i%10;//个位 
		if(((a+b+c+d+e)==n)&&(a==e)&&(b==d))
		printf("%d\n",i);
	}
	for(i=100000;i<=999999;i++)
	{
		a=i/100000;
		b=i/10000%10;
		c=i/1000%10;
		d=i/100%10;
		e=i/10%10;
		f=i%10;
		if(((a+b+c+d+e+f)==n)&&(a==f)&&(b==e)&&(c==d))
		printf("%d\n",i);
	}
	return 0;
}

四、

问题描述

  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式

  按从小到大的顺序输出满足条件的四位十进制数。

#include"stdio.h"
int main()
{
	int i=10;
	for(;i<=99;i++)
	{
		printf("%d",i);
		printf("%d%d\n",i%10,i/10);
	}
	
	return 0;
}

五、

问题描述

  153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。

输出格式

  按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

#include"stdio.h"
int main()
{
	int i=100;
	int a,b,c;
	for(;i<=999;i++)
	{
		a=i/100;
		b=i/10%10;
		c=i%10;
		if(a*a*a+b*b*b+c*c*c==i)
		printf("%d\n",i);
	}
	return 0;
 } 

六、

问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

  

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

  

下面给出了杨辉三角形的前4行:

  

   1

  

  1 1

  

 1 2 1

  

1 3 3 1

  

给出n,输出它的前n行。

输入格式

输入包含一个数n。

输出格式

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

样例输入

4

样例输出

1
1 1
1 2 1
1 3 3 1

数据规模与约定

1 <= n <= 34。

#include"stdio.h"
int main()
{
	int n;
	scanf("%d",&n);
	int a[34][34]={0};
	int i,j;
	for(i=0;i<n;i++)
	for(j=0;j<=i;j++)
	{
		if(j==0||j==(n-1))
		a[i][j]=1;
		else
		a[i][j]=a[i-1][j-1]+a[i-1][j];
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<=i;j++)
		{
			printf("%d",a[i][j]);
			if(j!=(n-1))
			printf(" ");
		}
		printf("\n");
	}
	return 0;
} 

七、

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输出格式

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入

6
1 9 4 8 3 9
9

样例输出

2

数据规模与约定

1 <= n <= 1000。

#include"stdio.h"
int main()
{
	int n;
	scanf("%d",&n);
	int a[1000];
	int i;
	int t;
	int count=0;
	for(i=0;i<n;i++)
	scanf("%d",&a[i]);
	scanf("%d",&t);
	for(i=0;i<n;i++)
	{
		if(t==a[i])
		{
		printf("%d",(i+1));
		return 0;
		}
	}
	printf("-1");
	return 0;
}

八、

问题描述

给出n个数,找出这n个数的最大值,最小值,和。

输入格式

第一行为整数n,表示数的个数。

第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

输出格式

输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。

样例输入

5
1 3 -2 4 5

样例输出

5
-2
11

数据规模与约定

1 <= n <= 10000。

#include"stdio.h"
int main()
{
	int n;
	scanf("%d",&n);
	int a[10000];
	int i;
	for(i=0;i<n;i++)
	scanf("%d",&a[i]);
	int max,min,sum;
	sum=max=min=a[0];
	for(i=1;i<n;i++)
	{
		sum=sum+a[i];
		if(a[i]>max)
		max=a[i];
		if(a[i]<min)
		min=a[i];
	}
	printf("%d\n%d\n%d",max,min,sum);
	return 0;
 } 

九、

问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式

输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。

输出格式

输出n行,每个m个字符,为你的图形。

样例输入

5 7

样例输出

ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

数据规模与约定

1 <= n, m <= 26。

#include"stdio.h"
int main()
{
	int m,n,k;
	scanf("%d %d",&n,&m);
	int i,j;
	int p; 
	int flag=0;
	int t=0;
	for(i=0;i<n;i++)
	{
		k=i;
		k=k%26;
		t=k;
		for(j=0;j<m;j++)
		{	
			//p=(k+j)%26;
			if(flag==0)
			{
				if(t==0)
				{
					putchar(('A'+t));
					flag=1;
				}
				else
					putchar(('A'+(t--)));
				
			}
			else{
				putchar(('A'+(++t)));
			}
		}
		flag=0;
		printf("\n");
	}
	return 0;
 } 

今天状态不错啊,写了9道入门的题。加油,继续努力。。。啦啦啦啦啦啦啦啦啦啦啦啦