1.在屏幕上输出以下图案:
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
第一种方法,利用字符数组定义一个空格数组和一个字符数组,然后找到中间元素从中间往两边开始交换,没换一次进行一次输出.
用两个for循环进行,这样上半部分就完成了,下半部分打印与之相类似.
第二种,直接观察图像特点,直接进行打印即可,但和第一种一样都是将复杂图形分开进行打印.
//打印菱形 1.
define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char arr1[] = "*************";
char arr2[] = " ";
int left = 0;
int right = 0;
int mid = 0;
int size_arr2 = strlen(arr2);
int size_arr1 = strlen(arr1);
right = size_arr2 - 1;
mid = left + (right - left) / 2;
//上半部分打印
for (left = mid, right = mid; left >= 0 && right <= size_arr2 - 1; left--, right++)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
}
//下半部分打印
for (left = 0, right = size_arr1 - 1; left <= mid && right >= mid; left++, right--)
{
arr2[left] = ' ';
arr2[right] = ' ';
printf("%s\n", arr2);
}
system("pause");
return 0;
}
//打印菱形2.
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int j = 0;
int k = 0;
for (i = 0; i <= 6; i++) //打印上面7行
{
for (j = 0; j <= 6 - i; j++)
printf(" "); //打印空格
for (k = 0; k < 2 * i + 1; k++)
printf("*"); //打印*号
printf("\n");
}
int a = 0;
int b = 0;
int c = 0;
for (a = 1; a < 7; a++) //打印下面6行
{
printf(" ");
for (b = 0; b <= a - 1; b++)
printf(" ");
for (c =0; c < 13 - 2 * a; c++)
printf("*");
printf("\n");
}
system("pause");
return 0;
}
2.求出0~999之间的所有“水仙花数”并输出。
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
/*
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),
是指一N位数,其各个数之N次方和等于该数。
例如153、370、371及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。
*/
//求出0~999之间的所有“水仙花数”并输出。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num,i, j, k = 0;
for (num = 100; num < 1000; num++)
{
k = num / 100;//百位
i = (num - k * 100) / 10;//十位
j = num % 10;//个位
if (i*i*i + j*j*j + k*k*k == num)
{
printf("%d", num);
printf("\n");
}
}
system("pause");
return 0;
}
3.求s= a + aa + aaa + aaaa + aaaaa的前5项之和,其中a是一个数字.
分析:
设第一位数为a,则对应两位数为aa=a*10+a,则对应三位数aaa=aa*10+a,则对应四位数为aaaa=aaa*10+a,则对应五位数为aaaaa=aaaa*10+a.用一个量如 j 进行存储上一位数,再使用循环将和算出来即可.
//求s= a + aa + aaa + aaaa + aaaaa的前5项之和,其中a是一个数字.
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int n = 0;
int j = 0;
int sum = 0;
printf("please input 1-9 num: ");
scanf("%d", &n);
//用来判断输入数字是否合法.
/*if (n <= 0 || n >= 10)
return 0;*/
for (i =0; i <5;i++)
{
j = j* 10 + n;
sum = sum + j;
}
printf("sum=%d\n", sum);
system("pause");
return 0;
}