//c语言动态心型的实现代码,帮助熟悉指针和程序: #include <stdio.h> #include <stdlib.h> void show( int m) { // char a[3][5]; char *a=(char *)malloc((4*m/2+m)*(4*m+m)); int i,j,k; for(k=0;k<(4*m/2+m);k++) for(i=0;i<(4*m+m);i++) *(a+k*(4*m+m)+i)=' '; for(i=0;i<=(4*m/2);i++) * (a+i+((4*m/2)-i)*(4*m+m))='*'; for(j=(4*m/2);j<=4*m;j++) *(a+j+(j-(4*m/2))*(4*m+m))='*'; for(k=0;k<(4*m/2+1);k++) { for(i=0;i<(4*m+m);i++) { printf("%c",*(a+(k*(4*m+m))+i)); } printf("\n"); } } int main() { int num; int b; printf("please input one number:"); scanf("%d",&num); show(num); while(num) { for(b=0;b<6;b++) { sleep(1); show(b); } for(b=6;b>=0;b--) { sleep(1); show(b); } exit(1); } return 0; }
时间: 2023-03-19 12:21:37 浏览: 200
下面是用 C 语言实现动态心型的示例代码,其中使用了指针和循环等语法:
```
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int rows = 25; // 控制心型高度
int cols = 80; // 控制心型宽度
char* heart = (char*)malloc(rows * cols * sizeof(char)); // 分配存储空间
if (heart == NULL) {
printf("Error: failed to allocate memory.\n");
return 1;
}
double x, y, distance;
int row, col, index;
for (row = 0; row < rows; row++) {
for (col = 0; col < cols; col++) {
x = (col - cols / 2.0) / (cols / 2.0);
y = (rows / 2.0 - row) / (rows / 2.0);
distance = sqrt(x * x + y * y); // 计算到心型中心点的距离
if (distance < 1.0) { // 如果在心型内部
index = row * cols + col;
if (distance > 0.9 && distance < 1.0) {
heart[index] = '+'; // 心型的两个圆弧上的点
} else if (distance <= 0.9 && distance > 0.6) {
heart[index] = '*'; // 心型的左右两边的两个点
} else if (distance <= 0.6 && distance > 0.4) {
heart[index] = '-'; // 心型的中间部分
} else if (distance <= 0.4 && distance > 0.0) {
heart[index] = '#'; // 心型底部的两个点
}
} else {
index = row * cols + col;
heart[index] = ' '; // 不在心型内部的点
}
}
}
for (row = 0; row < rows; row++) {
for (col = 0; col < cols; col++) {
printf("%c", heart[row * cols + col]);
}
printf("\n");
}
free(heart); // 释放存储空间
return 0;
}
```
这个程序使用了一个二维字符数组 `heart` 来存储心型的每个点的符号,然后利用两个嵌套的循环遍历每个点,根据它们到心型中心的距离来判断它们应该是什么符号,并将符号存储到 `heart` 数组中。最后再遍历一遍 `heart` 数组,将其中的符号打印出来,就能得到一个动态的心型了。
阅读全文