㈠ c语言基础问题,画三角形
你描述的输入不清,我调整了一下。
其实最重要是分解程序编程一个一个操作。
首先要有个画板,
然后程序能画线,
最后对三角形填充。
就是这么简单,三种操作。
先来个短的代码:
#include<stdio.h>
#include<math.h>
#include<string.h>
usingnamespacestd;
constintbsize=64;//最大画板大小
constdoubleeps=1e-6;//精度控制
charboard[bsize][bsize];//画板
intbw,bh;//画板宽高
intmain()
{
voidprintBoard();//输出画板内容
intiw,ih;
doublex[3],y[3];
doublev0x,v0y,v1x,v1y,v2x,v2y;
doubled00,d01,d11,d20,d21,denom,v,u,w;
scanf("%d%d",&ih,&iw);
bw=iw+2;//你边缘多出了边框,所以+2
bh=ih+2;
scanf("%lf%lf%lf%lf%lf%lf",x,y,x+1,y+1,x+2,y+2);
//清空画板
for(inti=0;i<bh;i++)
for(intj=0;j<bw;j++)
board[i][j]='';
//利用质心坐标求值
v0x=x[1]-x[0],v0y=y[1]-y[0];
v1x=x[2]-x[0],v1y=y[2]-y[0];
for(inti=0;i<bh;i++)
for(intj=0;j<bw;j++)
{
v2x=i-x[0],v2y=j-y[0];
d00=v0x*v0x+v0y*v0y;
d01=v0x*v1x+v0y*v1y;
d11=v1x*v1x+v1y*v1y;
d20=v2x*v0x+v2y*v0y;
d21=v2x*v1x+v2y*v1y;
denom=d00*d11-d01*d01;
v=(d11*d20-d01*d21)/denom;
u=(d00*d21-d01*d20)/denom;
w=1-u-v;
if(0<=v&&v<=1&&0<=u&&u<=1&&0<=w&&w<=1)
board[bh-1-i][j]='*';
}
//画边框
for(inti=0;i<bw;i++)
{
board[0][i]='-';
board[bh-1][i]='-';
}
for(inti=0;i<bh;i++)
{
board[i][0]='|';
board[i][bw-1]='|';
}
board[0][0]=board[bh-1][0]=board[0][bw-1]=board[bh-1][bw-1]='+';
printBoard();
return0;
}
voidprintBoard()
{
inti,j;
for(j=0;j<bh;j++)
{
for(i=0;i<bw;i++)
putc(board[j][i],stdout);
putc(' ',stdout);
}
}
就是枚举三角形点来画的。
运行效果:
㈡ 在C语言中:表达式是什么意思
一、表达式的意义
[1]引表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。约束变量在表达式中已被指定数值,而自由变量则可以在表达式之外另行指定数值。
给与自由变量一些数值指定,可能可以给与一个表达式数值,即使对于一些自由变量的值,表示式或许没有定义。因此,一个表达式代表一个函数,其输入为自由变量的定值,而其输出则为表示式因之后所产生出的数值。
举例来说,表达式x / y,分别使自由变量x和y定值为10和5,其输出为数字2;但在y值为0时则没有定义。
一个表达式的赋值和算符的定义以及数值的定义域是有关联的。
两个表达式若被说是等值的,表示对于自由变量任意的定值,两个表达式都会有相同的输出,即它们代表同一个函数。
一个表达式必须是合式的。亦即,其每个算符都必须有正确的输入数量,在正确的地方。如表达式2+3便是合式的;而表达式*2+则不是合式的,至少不是算术的一般标记方式。
表达式和其赋值曾在一九三○年代由阿隆佐·邱奇和Stephen Kleene在其Λ演算中被公式化。Λ演算对现代数学和电脑编程语言的发展都曾有过重大的影响。
编辑本段
二、表达式的分类
1、算术表达式:
算术表达式是最常用的表达式,又称为数值表达式。它是通过算术运算符来进行运算的数学公式。我们先来看Visual Basic中的算术运算符:
算术运算符
1)乘法运算符 *
X*Y 求X乘Y的值 举例:6*7=42
2) 除法运算符 /
X/Y 求X除Y的值(浮点数运算) 举例:2.76/1.2=2.3
3)整除运算符 div
X div Y 求X除Y的整数商(对整型数计算) 举例:25=5
4)取余运算符 Mod
X mod Y 求X除Y的余数(对整型数运算) 举例:25 mod 4=1
5)加法运算符 +
X+Y 加法运算 举例:32+2=34
6)减法运算符 -
- X-Y 减法运算 举例:48-21=27
由于Visual Basic只能识别按其格式书写的数学表达式,所以必须将我们常用的数学表达式转换成Visual Basic表达式。
2、逻辑表达式
逻辑运算的结果只有两个:True(真)和False(假)。Visual Basic提供了六种关系运算符和三种逻辑运算符:
=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<>(不等于)
NOT(非)、AND(与)、OR(或)
运算关系
p q NOT p p AND q p OR q
True True False True True
True False False False True
False True True False True
False false True False False
例如:5>3 结果为 True, “a”>”b” 结果为False
——来自网络
详细请参加网络: 表达式 条目。不给网址,给网址需要审核,麻烦。
度娘会告诉你更多的。
㈢ C语言嵌入式系统开发光盘下载
http://202.193.70.169:90/lib/downloads/D016804.rar
http://down.aybook.cn/book5/aybook.cn_cyyxrs1115.rar
看看这两个是不是
㈣ 求KEIL C编写C语言控制交通红黄绿灯全过程
不是C是汇编 不知道 你是不是需要 这个是原程序 自己改一下哈
;左移
star: mov r3,#8 ;设置流水位数
mov p0,#11111110b ;从p0.0开始
loop: acall d01s
mov a,p0 ;读取p0当前数据到acc
rl a ;左移一位
mov p0,a ;将左移的数据再送到p1
djnz r3,loop ;没有完成8位继续
;******************
mov p0,#0ffh ;熄灭所有灯
;******************
;右移
mov r3,#8 ;设置流水位数
mov p0,#01111111b ;从p0.7开始
loop1: acall d01s
mov a,p0 ;读取p0当前数据到acc
rr a ;右移一位
mov p0,a ;将左移的数据再送到p1
djnz r3,loop1 ;没有完成8位继续
ljmp star ;完成后返回到开始再来
;延时子程序
d01s: mov r0,#255
d01l1: mov r1,#198
djnz r1,$
djnz r0,d01l1
ret
end
㈤ C语言中“”和“:”是什么意思
起来的意思
我举个例子吧
int
a
=3;
int
b=
2;
int
c;
if(a>b)?(c=a):(c=b);//意思是如果a>b就执行c=a,否则就执行c=b
类似于下面的语句
if(a>b)
{
c=a;
}
else
{
c
=
b;
}
条件运算符是
?
:
表达式为:表达式1?表达式2:表达式3
表达式2是条件成立(逻辑值为1)时整个表达式的取值
表达式3是条件不成立(逻辑值为0)时整个表达式的值
例如:
m<n?x:a+3
a++>=10
&&
b-->20
?
a
:
b
x=3+a>5
?
100
:
200
优先级
条件运算符优先级高于赋值、逗号运算符,低于其他运算符
例如:
⑴
m<n
?
x
:
a+3
等价于:(m<n)
?(x)
:(a+3)
⑵
a++>=10
&&
b-->20
?
a
:
b
等价于:(a++>=10
&&
b-->20)
?
a
:
b
⑶
x=3+a>5
?
100
:
200
等价于:x=
((
3+a>5
)
?
100
:
200
)
结合性
条件运算符具有右结合性
当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。
例如:
w<x
?
x+w
:
x<y
?
x
:
y
与
w<x
?
x+w
:
(
x<y
?
x
:
y)
等价
与
(w<x
?
x+w
:
x<y)
?
x
:
y
不等价
----欢迎加入------c++部落------------Hello
Word!--------
无论你是初学者还是家,只要你热爱编程、交流、分享,c++部落因为你而精彩~
㈥ c语言,编写程序用scanf函数输入x的值,计算并输出y的值。
scanf("%d",&x);
//y不用输入
if
(x<=1)
{
y=x;
printf("%d\n",y);}
//条件x<=1成立时,这两句都要执行,所以要用{}变成复合语句。
else
if(x>1&&x<10)
{
y=2*x+1;
printf("%d\n",y);}
//同上
else
{y=3*x+1;
printf("%d\n",y);}
//同上
更好的是:
scanf("%d",&x);
if
(x<=1)
y=x;
else
if(x>1&&x<10)
y=2*x+1;
else
y=3*x+1;
);
//
y求值
printf("%d\n",y);
//输出y
㈦ if在c语言中表示什么意思
你好!
if一般和else连用是如果的意思,例如if(a>b);printf("a>b"/n);else
printf("b>a");意思是如果a>b就输出a>b.反之就输出b>a
我的回答你还满意吗~~
㈧ c语言的问题
第一题答案如下,我已经调试过了。主要是考察条件运算符的灵活运用
switch((mark<60?5:mark/10))
{
case 5: k=1; break;
case 6: k=2; break;
case 7: k=3; break;
case 8: k=4; break;
default : k=5;
}
第二题:
条件运算符的结合方向是:
自右向左
即a<b?a:(b<c?b:(c<d?c:d))应该看的懂懂吧兄弟
第三题:
选择B,else与if的结合是
就近原则
关于补充的问题,是考察运算符的优先级别
s+=++x,++优于+=
a<b<c,自左向右
C语言的题目注重的细心,要是上机题那当然可以调试,方便多了
就是细心两子而言
以前我也是有问题就网络,大家互相学习吧。