求C语言的一个小程序

来源:百度知道 编辑:UC知道 时间:2024/05/17 13:34:32
任意输入俩个数字做为菱形的对角线长度
然后在屏幕上用*号打出满足此条件的菱形
我记得当初我们老师给我们示范的时候 挺简单的啊 并且不用管奇数偶数都可以的 只不过有点不太规范而已了就是.....大家答的都很好 呵呵 谢谢大家 不过我有点看不懂...本人是新学C的小菜

对角线长度的单位是什么呢?如果是一个输入位,则只能做成奇数长度的,所以要求输入奇数值。否则无法构造这样的菱形。如输入(5,5),则菱形如下:
*
* *
* *
* *
*
对于输入(4,4),在屏幕上是不可能模拟的。
另外,长对角线值减一要求是短对角线值减一的整数倍,否则也不能在屏幕上模拟该菱形。
所以基于此二点,增加了合法性检查函数。

最后程序如下:
#include<stdio.h>
#include<stdlib.h>
int legal(int x,int y)
{
if(x>1&&y>1&&y>=x&&y%2==1&&x%2==1&&(y-1)%(x-1)==0)
return 1;
printf("输入的值不符合要求,请重新输入。\n\n");
return 0;
}
void main()
{
char **diamond;
int x,y,i,j,min,dis;
do{
printf("请输入长对角线值(只能是奇数)\n y=");
scanf("%d",&y);
printf("请输入短对线值(只能是奇数)\n x=");
scanf("%d",&x);
}while(!legal(x,y));

//创建动态数组
diamond=(char **)malloc(x*sizeof(char*));
for(i=0;i<x;i++)
diamond[i]=(char*)malloc(y*sizeof(char));

//初始数组
for(i=0;i<x;i++)
for(j=0;j<y;j++)