和黛玉学编程呀
这期就是普普通通题目和答案啦,大都也比较基础,适合初学者,下期我们就更单链表啦
求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;elsereturn 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);}