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