查找函数。
编写一个函数,利用参数传入一个3位数number,找出101~number之间所有满足下列两个条件的数:它是完全平方数,又有两位数字相同,如144、676等,函数返回找出这样的数据的个数#define _CRT_SECURE_NO_WARNINGS 1 #include<string.h> #include <stdio.h> #include<math.h> int Search(int num,int count) { int i = 101; int x = 0, k = 0; int item = 0; int a[3] = { 0 }; printf("请输入num\n"); scanf("%d", &num); for (i = 101;i<=num; i++) { x = sqrt(i); item = i; k = 0; if (x * x == i)//平方数 { while (item != 0) { a[k++] = item % 10;//存入数组 item /= 10; } if ((a[0] == a[1]) || (a[0] == a[2]) || (a[1] == a[2]))//满足的条件 { count++; } } else if (x * x > i) { break; } } printf("%d", count); return 0; } int main() { int num = 0; int count = 0; Search(num,count);//调用函数 return 0; }
1.它是完全平方数,
for (i = 101;i<=num; i++)
{
x = sqrt(i);
item = i;
k = 0;
if (x * x == i)//平方数
2.又有两位数字相同
while (item != 0) { a[k++] = item % 10;//存入数组 item /= 10; } if ((a[0] == a[1]) || (a[0] == a[2]) || (a[1] == a[2]))//满足的条件 { count++; }
2.假设有一个面值为N(1 <= N <= 10)的纸币,给定两种不同零钱:1元和2元,数目不限。
如果把这张N元的纸币换成零钱,,一共有多少种不同的换法?
#define _CRT_SECURE_NO_WARNINGS 1
#include<string.h>
#include <stdio.h>
// 递归函数求解纸币换硬币的总数
int a(int n)
{
if (n == 0)
{
return 1;
}
else if (n <= 0)
{
return 0;
}
else
{
// 递归调用,分别减去1元和2元零钱后进行计算
return a(n - 1) + a(n - 2);//a(3)+a(2) a(3)=a(2)+a(1) a(2)=a(1)+a(0) a(2)=a(1)+a(0)
}
}
int main()
{
int n=0;
scanf("%d", &n);//纸币总钱 4
printf("%d\n", a(n));//调用函数
return 0;
}
3.//2.出售金鱼。小明将养的一缸金鱼分5次出售:
// 第1次卖出全部的一半加1/2条;
// 第2次卖出余下的三分之一加1/3条;
// 第3次卖出余下的四分之一加1/4条;
// 第4次卖出余下的五分之一加1/5条;
// 最后卖出余下的11条。试编程求出原来鱼缸中共有多少条鱼。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int i = 0;
double a = 11;
for (i = 5; i > 1; i--)
{
a = (a + 1.0 / i) / (1 - 1.0 / i);//不会表示!(11+1/5)/(1-1/5)
//或者 n=(n+(1/i))/(i-1)*i
//(11+(1/5))/4*5 *5/4
}
printf("%lf", a);
return 0;
}
4.//2、编制一个乘法运算的程序。
//从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出。对准各位输出。
//例:
//输入:
//87x76
//输出:
// 87
//×76
//━━━
//522 //87*6
//609 //87*7
//━━━
//6612 //87*76
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int a = 0, b = 0;
int i = 0,t=0;
int h = 0,g=0,k=0;
printf("请输入两个整数\n");
scanf("%d%d", &a, &b);
int m = b;
k = a * b;
printf("%d*%d\n", a, b);//87 76
if (b!=0)
{
t = b % 10; //6
b = b / 10; //7
}
printf(" %d\n", a);
printf("*%d\n", m);
h = a * t;//87*6=522
g = b * a;//76*7
printf("----\n");
printf(" %d\n", h);
printf("%d\n", g);
printf("----\n");
printf("%d\n", k);//87*76
return 0;
}
//1.立方尾不变。
//有些数字的立方的末尾正好是该数字本身。
//比如:1, 4, 5, 6, 9, 24, 25, ....
//请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),
// 符合这个特征的正整数一共有多少个。
#define _CRT_SECURE_NO_WARNINGS 1
#include<string.h>
#include <stdio.h>
#include<math.h>
int main()
{
long long i = 0;
int count = 0;
for (i = 1; i < 10000; i++)
{
long long a = pow(i, 3);//int类型存储空间不够,使用long
//分四种讨论
if (i < 10)
{
if (a % 10 == i)
{
count++;
}
}
else if (i < 100)
{
if (a %100 == i)
{
count++;
}
}
else if (i< 1000)
{
if (a%1000 == i)
{
count++;
}
}
else if (i < 10000)
{
if (a%10000 == i)
{
count++;
}
}
//或者
//for(i=1;i<=10000;i++)
//{
// m=pow(i,3);//m为计算立方和
// if(i==m%10||i==m%100||i==m%1000||i==m%10000||i==m%100000)
// {
// count++;
// printf("%d\n",i);
// }
//}
}
printf("%d",count);
return 0;
}