㈠ 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語言的題目注重的細心,要是上機題那當然可以調試,方便多了
就是細心兩子而言
以前我也是有問題就網路,大家互相學習吧。