和黛玉学编程呀
这期就是普普通通题目和答案啦,大都也比较基础,适合初学者,下期我们就更单链表啦
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
int main()
{
int a = 0;
int n = 0;
int i = 0;
int sum = 0;
int tmp = 0;
scanf("%d%d", &a, &n);
for(i=0; i<n; i++)
{
tmp = tmp*10+a;
sum += tmp;
}
printf("%d\n", sum);
return 0;
}
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for(i=0; i<=99999; i++)
{
int count = 1;
int tmp = i;
int sum = 0;
//判断i是否为水仙花数
//1. 求判断数字的位数
while(tmp/10)
{
count++;
tmp = tmp/10;
}
//2. 计算每一位的次方和
tmp = i;
while(tmp)
{
sum += pow(tmp%10, count);
tmp = tmp/10;
}
//3. 判断
if(sum == i)
printf("%d ", i);
}
return 0;
}
打印 菱形
int main()
{
int line = 0;
int i = 0;
scanf("%d", &line);//7
//打印上半部分
for(i=0; i<line; i++)
{
//打印一行
//打印空格
int j = 0;
for(j=0; j<line-1-i; j++)
{
printf(" ");
}
//打印*
for(j=0; j<2*i+1; j++)
{
printf("*");
}
printf("\n");
}
//打印下半部分
for(i=0; i<line-1; i++)
{
//打印一行
int j = 0;
for(j=0; j<=i; j++)
{
printf(" ");
}
for(j=0; j<2*(line-1-i)-1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
递归实现n的k次方
int Pow(int n, int k)
{
if(k==0)
return 1;
else if(k>=1)
{
return n*Pow(n, k-1);
}
}
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
int DigitSum(int n)//1729
{
if(n>9)
return DigitSum(n/10)+n%10;
else
return n;
}
递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
/*
Fac(N) = 1*2*3*……*N
递归方式实现:
1 N <= 1
Fac(N)
Fac(N-1)*N N >= 2
*/
long long Fac(int N)
{
if(N <= 1)
return 1;
return Fac(N-1)*N;
}
/*
循环方式:从1乘到N即可
*/
long long Fac(int N)
{
long long ret = 1;
for(int i = 2; i <= N; ++i)
{
ret *= i;
}
return ret;
}
递归方式实现打印一个整数的每一位
/*
思路:
N N <= 9
Print(N)
Print(N-1), 打印N
*/
void print(unsigned int n)
{
if(n>9)
print(n/10);
printf("%d ", n%10);
}