1.在屏幕上输出一下图案:
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
#include<stdio.h>
#include<stdlib.h>
int main(){
//打印菱形
//设对角线的一半为n,当前是7
//菱形的上半部分
//第一行:六个空格,一个星号
//第二行:五个空格,三个星号
//第三行:四个空格,五个星号
//第i行:n-i个空格,2*i-1星号
void PrintLine(int blank_count,int star_count){
int i=0;
for(;i<blank_count;++i){
printf("");
}
for(i=0;i<star_count;++i){
printf("*");
}
printf("\n");
}
void PrintLingXing(int n){
//打印上半部分
int i=1; //i表示当前的行数,从1开始数
for(i=1;i<n;++i){
PrintLine(n-i,2*i-1);
}
//打印中间
PrintLine(0,2*n-1);
//打印下半部分
for(i=n-1;i>0;--i){
PrintLine(n-i,2*i-1);
}
}
system("pause");
return 0;
}
2.求出0~999之间的所有“水仙花数”并输出。
“水仙花数”是指一个三位数,其个位数字的立方和恰好等于该数
例如:153、370及407就是三位数的水仙花数,其各个数之立方等于该数
153=1^3+5^3+3^3。
370=3^3+7^3+0^3。
371=3^3+7^3+1^3。
407=4^3+0^3+7^3。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//求0-999的水仙花数
//1000
int IsShuixian(int num) {
//判断是不是水仙花数:三位数,并且<999
if (num < 100 || num>999) {
return 0;
}
//是水仙花数
int tmp = num; //后边要判断是不是水仙花数,会改变num的值,所以要先将num的值赋给tmp保存下来
//比如 701
//取出个位
int num1 = num % 10; //701%10->70...1=1 /10表示的是取整 %10表示的是取余
//取出十位
num = num / 10; //701/10=70
int num2 = num % 10; //70%10->7...0=0
//取出百位
num = num / 10; //70/10=7
int num3 = num % 10; //7%10->0...7=7
if ( pow(num1, 3) + pow(num2, 3) + pow(num3, 3)==tmp) {
return 1;
}
return 0;
}
int main() {
int i = 100;
for (i = 100; i <= 999; i++) {
if (IsShuixian(i)) {
printf("%d\n", i);
}
}
system("pause");
return 0;
}
3.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222。
#include<stdio.h>
#include<stdlib.h>
//求数列的和
//构造出第n项的数字(从1开始数)
//例如 22222=>2+20+200+2000+20000
//=>2*10^0+2*10^1+2*10^2+2*10^3+2*10^4
int CreateNum(int a,int n){
if(a<=0||a>=10||n<=0){
return 0;
}
int num=0; //要构造出的数字
int i=0; //i表示10的指数
for(;i<n;++i){
num+=a*pow(10,i);
}
return num;
}
int main(){
int i=1;
int a=2;
int sum=0;
for(;i<=5;++i){
sum+=CreateNum(a,i);
}
printf("%d\n",sum);
system("pause");
return 0;
}