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

一、问题描述

  从键盘输入一个不超过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道入门的题。加油,继续努力。。。啦啦啦啦啦啦啦啦啦啦啦啦

猜你喜欢

转载自blog.csdn.net/weixin_42143003/article/details/86533135