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;
}