1.在屏幕上打印菱形。
// *
// ***
// *****
// *******
// *********
//***********
// *********
// *******
// *****
// ***
// *
//规律:
//1.第一行5个空格,1个*号
//2.第二行4个空格,3个*号
//3.第三行3个空格,5个*号
//.....
//第i行,n-i个空格,2*i-1个*j号
//
#include <stdio.h>
#include <stdlib.h>
void PrintLine(int blank_count, int star_count){
for (int i = 0; i < blank_count; ++i) {
printf(" ");
}
for(int i = 0;i<star_count; i++ ){
printf("*");
}
printf("\n");
}
void PrintLingXing(int n){
//打印上半部分,n为菱形上半部分行数
int 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);//打印下半部分
}
}
int main(int argc, const char * argv[]) {
printf("请输入打印菱形的行数的一半:");
PrintLingXing(4);
system("pause");
return 0;
}
2.求出0~999之间的所有“水仙花数”并输出。
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
#include<stdio.h>
#include<stdlib.h>
int ShuiXianHua(int num){
if( num<100 || num>999){
return 0;
}
int tmp = num;
//123
//123 % 10 = 3。个位
//123 / 10 = 12
//12 % 10 = 2。十位
//12 / 10 = 1
//1 % 10 = 1 百位
int num1 = num % 10;//取出个位
num /= 10;
int num2 = num % 10;//取出十位
num /= 10;
int num3 = num % 10;//取出百位
if ( tmp == num1*num1*num1 + num2*num2*num2 + num3*num3*num3){
return 1;
}
return 0;
}
int main(int argc, const char * argv[]) {
int i =100;
for( i = 100;i < 1000;i++){
if(ShuiXianHua(i)==1){
printf("%d\n",i);
}
}
system("pause");
return 0;
}
3.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
//求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
//例如:2+22+222+2222+22222
//规律:Sn=a*10^0+a*10^1+a*10^2+a*10^3+a*10^4;
//
#include<stdio.h>
#include<stdlib.h>
#include"math.h"
//首先利用函数构造出每一项的数字
int CreatNum(int a, int n){
//a为例子中的a,n为第几项
if(a<1||a>9||n<0){
return 0;
}
int num = 0; //num为构造的数字,即Sn
int i = 0; //i为例句中的指数
for(i=0;i<=n;i++){
num = a*pow(10,i) + num;
}
return num;
}
int main(int argc, const char * argv[]) {
// printf("%d\n",CreatNum(2, 5))
int a,n;
printf("请输入俩个一位数字:");
scanf("%d,%d",&a,&n);
int i = 0;
int Sn = 0;
for(i = 0;i < n;i++){
Sn += CreatNum(a,i);
}
printf("%d",Sn);
system("pause");
return 0;
}