XJTU大计基例题分享(第8周)

1.从键盘输入一个整数x,输出其平方根(为整数)。

若输入数大于1000或小于等于0,则输出0,并继续接受下一个输入直至小于等于1000。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>

int main()
{
	double x;
	int i = 0,y;
	do
	{
		scanf("%lf", &x);
		i++;
		
	} while (x>1000||x<=0);
	while (i > 1)
	{
		y = 0;
		printf("%d\n",y);
		i--;
	}
	y =pow(x,0.5);
	printf("%d\n", y);
	return 0;
}

2.

从键盘输入3个整数(三个数取值均在闭区间 [1,10] ), 每行输入一个

每读取一个值,程序打印出该值个数的英文星号(*)。

输入:3个整数,3行。

输出:3行星号。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

	int main()
	{
		int x[3];
		for (int i = 0; i < 3; i++)
			scanf("%d", &x[i]);
		while (x[0] > 1)
		{
			printf("*");
			x[0] = x[0] - 1;
		}
		printf("*\n");
		while (x[1] > 1)
		{
			printf("*");
			x[1] = x[1] - 1;
		}
		printf("*\n");
		while (x[2] > 1)
		{
			printf("*");
			x[2] = x[2] - 1;
		}
		printf("*\n");
		return 0;
	}

3.

某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:

1. 每位数字都用自身加5后的和除以10的余数代替,如1用6代替,8用3代替;如3768就转换为8213;

2. 再将第一步生成的数字的第一位和第四位交换,第二位和第三位交换。 如8213转换为3128,即为最终的加密密码。

编写程序完成数据的加密。输入:一个整数。输出:一个整数。

#include<math.h>

int main()
{
	int x[4],y;
	scanf("%d", &y);
	for (int i = 0; i < 4; i++)
		x[i] =(int) (y / pow(10, 3 - i)) % (int)(pow(10, i+1));
	for (int i = 0; i < 4; i++)
		x[i] = (x[i] + 5) % 10;
	int temp;
	temp = x[0]; x[0] = x[3]; x[3] = temp;
	temp = x[1]; x[1] = x[2]; x[2] = temp;
	printf("%d%d%d%d\n", x[0],x[1], x[2], x[3]);
	return 0;
}

4.

找出整数m到整数n (闭区间)之间的所有同构数(m<n)。

 说明:一个正整数x,如果是它平方数的尾部,则称x为同构数。例如,6是其平方数36的尾部,25是其平方数625的尾部,那么6和25都是同构数。

输入:m和n两个正整数,用空格分隔。

输出:连续输出同构数,数据间用空格分隔(最后一个同构数后面无空格)。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int m, n;int t = 0;
	do
		{scanf("%d%d", &m, &n);}
	while (m >= n);
	for (int i=m; i<=n;i++)
	{
		int x, k, j = 10;
		do
		{
			x = i * i; k = x % j;
			if (i == k)
			{
				if (t > 0)//t作标志表明是第几个同构数
					printf(" ");
				printf("%d", i);
				t++;
				break;
			}
			j = j * 10;
		} while (k <x);
	}printf("\n");
	return 0;
	
}

5.

编程判断任意一个正整数各位数字之和是奇数还是偶数。

如果和是奇数输出1,偶数输出0。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	long long int x;
	int i=0;//储存各位数字之和
	scanf("%lld", &x);
	do
	{
		i =i+ x % 10;/*常见的将整数各位数字*/
          x = x / 10;   /*拆分的方法*/ 

	} while (x > 0);
	if (i% 2 == 0)
		printf("0\n");
	else
		printf("1\n");
	return 0;
}

6.

编程求以下级数前n项之和:

 s=1-1/3+1/5-1/7+1/9-1/11+1/13-1/15+.....

输入:一个正整数n

输出:前n项和的值,超出小数点后4位的,保留到小数点后4位

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int x;
	scanf("%d", &x);
	float s = 0;
	float i = 1, t = 0;//均定义为实数
	do
	{
		s = s + i * 1 / (2 * t + 1);
		i = i * (-1);//i表示正负
		t++;
	} while (t <x );
	
	printf("%.4f", s);
	return 0;
}

7.

编写程序,找出[m,n]范围内是7的倍数或带7的全部正整数(注意:如果一个是既是7的倍数又是带7的数,就输出2次,先输出倍数,再输出带7的整数,如:7 is a multiple of 7 7 contains 7)。

其中,m和n为正整数。

具体测试用例见样例的输入输出。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int m, n, i;
	do
	{
		scanf("%d%d", &m, &n);
	} while (m >= n);
	i = m;
	for (i; i <= n; i++)
	{
		if (i % 7 == 0)
			printf("%d is a multiple of 7\n", i);
		int o = i;
		do//将i每位数字拿出与7比较
		{
			int x, j = 10;
			x = o % 10;
			if (x == 7)
			{
				printf("%d contains 7\n", i);
            break;//必须+break否则可能多次输出同一个数
			}
			o = o / j;
		} while (o != 0);
	}
	return 0;
}

8.

若三个正整数a,b,c满足 a^2+b^2=c^2,则它们是一组勾股数。(^2表示平方,a^表示a的平方)。

编写程序,求给定区间[m,n]中的勾股数的数量(设一组勾股数满足a<b<c)。

例如[1,10]中的勾股数有(3,4,5)和(6,8,10),则[1,10]中勾股数的数量为2。

输入:正整数m,n,   空格分隔

输出:[m,n]中的勾股数的数量

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int m, n, i, j, s, t=0;//t储存勾股数个数
	scanf("%d%d", &m, &n);
	if (m >= n)
	{
		int temp;
		temp = n;
		n = m;
		m = temp;
	}

	for (i=m; i <=n-2; i++)//三个变量依次递增,符合勾股数的特征
	{
		for (j=i+1; j <= n - 1; j++)//三个正整数作为勾股数,其中三个一定都不一样大
		{
			for (s=j+1; s <= n; s++)
			{
				if (i * i + j * j == s * s)
					t++;
			}
		}
	}
	printf("%d\n", t);
	return 0;
}

9.

输入任意一个正整数,计算各位数字的平方和。

如:1234 则:计算1*1+2*2+3*3+4*4=30

输入:一个正整数

输出:平方和

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>

int main()
{
	long long int x, y = 0; int t=0;
	int p[100] = { 0 };//数组初始化
	scanf("%lld", &x);
	for (int i = 0; i < 100; i++)
	{
		p[i] = x % 10;//将x各位数字分别储存进数组p
		x = x / 10;
	}
	do
	{

		y = y + pow(p[t], 2);//y储存平方和
		t++;
	} while (t < 100);
	printf("%d\n", y);
	return 0;

}

10.

编写程序检验由三边能否构成三角形,检验方法是任意两边和均要大于第三边。

输入:三边长度(一行输入,空格分隔)
输出:如果可以构成三角形,输出YES,否则输出ERROR DATA

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//基本思路:先找到最大的一边,将其储存到a中
int main()
{
	double a, b, c;
	scanf("%lf%lf%lf", &a, &b, &c);
	float temp;
	if (a < b)
	{
		temp = a;
		a = b;
		b = temp;
		if (a < c)
		{
			temp = a;
			a = c;
			c = temp;
		}
	}
	else if (a < c)
	{
		temp = a;
		a = c;
		c = temp;
	}
	if (a < b + c)//比较
		printf("YES\n");
	else
		printf("ERROR DATA\n");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值