⑴ 同學,怎麼用c語言製作簡單的動畫啊
因為C的圖形處理功能太一般,不便於創作大型動畫。製作動畫用flash。
flash製作動畫:
打開Flash,點擊【文件】→【新建】,在打開的「新建」窗口中選擇「Flash文件(ActiveScript 3.0)「,然後點擊」確定「創建空白文檔。
在圖層1 的第一幀,把庫中的「Result0」拖動到場景中。
點擊「時間軸」上的「新建圖層」按鈕,創建圖層2,然後在圖層2的第5幀處,點擊【插入】→【關鍵幀】,把庫中的「Result1」拖動到場景中。
利用同樣的原理,將」Result2「、 」Result3「和」Result4「分別到圖層3、圖層4和圖層5中,對應的幀分別為10、15和20處。
最後調整各個圖層圖像的延續時間。至此,運動的小人影片剪輯製作完成。
切換至主場景中,使主場景處於活動狀態,點擊」屬性「面板中的」大小「按鈕,將場景的大小設置為」800*300「,同時將背景色設置為」黑色「點擊」確定「按鈕。
從庫中將」運動的小人「影片剪輯拖動到場景左邊外邊。
然後在」時間軸「第30幀處,點擊【插入】→【時間軸】→【關鍵幀】,在30幀處插入關鍵幀,然後將小人從場景的左側外面拖動到場景右側外面。至此,整個動畫設置完成。
在1到30幀之間滑鼠右擊,選擇」創建補間動畫「。
最後按下鍵盤組合鍵」CTRL+Enter「進行測試。如果感覺小人運動不規律,可適當將1至30幀的距離調整的稍微大一些,直到滿意為止。
⑵ 求二分法查找演示C語言源代碼
二分法查找演算法:
1.主要思想是:假設數據是按升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查找成功;若x小於當前位置值,則在數列的前半段 中查找;若x大於當前位置值則在數列的後半段中繼續查找,直到找到為止。
2. 時間復雜度: O(log2n)。
3. C語言源代碼(小例子)
search函數即為核心代碼:遞歸查找
#include<stdio.h>
intsearch(int*a,intnum,intlow,inthigh)
{
intmid=(low+high)/2;
if(low<=high)
{
if(num<a[mid])
returnsearch(a,num,low,mid-1);//加return
if(num>a[mid])
returnsearch(a,num,mid+1,high);//加return
if(num==a[mid])
return1;
}
else
return0;
}
intmain(){
inta[11]={0,1,2,3,4,5,9,11,12,13,15};
if(search(a,11,0,10)==1)
printf("success!!");
else
printf("failed!!");
}
⑶ c語言程序解答(在線等)
根據題意:
1、項目序號應為唯一值,用自增變數填充。
2、時間使用struct tm結構體(考慮如需時間運算,可使用相關函數)。
3、自定義結構類型SIINFO,分別實現插入鏈表和列印鏈表兩個功能。
4、由於這個演示程序執行完就結束程序了。所以鏈表我沒有寫free釋放內存,如你後期擴充代碼,自己寫釋放(除程序結束,malloc申請內存不會自動釋放)。
下面是演示代碼:
#include <stdio.h>
#include <malloc.h>
#include <time.h>
#define MS 4//最大類型個數
#define MN 20//名稱最大字元長度
char stypes[MS][10]={"速度型","力量型","耐力型","對抗型"};//項目類別,自行擴展,對應修改MS常量
typedef struct SportsItemInfo//定義一個體育項目結構類型
{
int id;//項目序號,從數據結構考慮,該項不能重復,應設為自增從0開始(實際開發,這個值由資料庫分配)。
char name[MN+1];//項目名稱
int stype;//項目類(對應stypes行下標)
int n;//參賽人數
struct tm sDate;//競賽時間
struct SportsItemInfo *next;
}SIINFO;
SIINFO *insert2List(SIINFO *p_sHead);//插入新數據,首次插入參數傳NULL。參數:鏈表頭節點地址(不是首節點)。成功返回頭節點,失敗返回NULL。
void selectFList(SIINFO *p_sHead);//查詢鏈表
int main()
{
char c;
SIINFO *p_sHead=NULL,*stemp=NULL;
printf("新增體育項目: ");
while(1)
{
stemp=insert2List(p_sHead);
if(!stemp)
{
printf("ERROR! ");
return 1;
}
p_sHead=stemp;
printf("是否繼續輸入(Y/N):");
c=0;
while(c!='Y' && c!='N')scanf("%c",&c);
if(c=='N') break;
}
selectFList(p_sHead);
return 0;
}
void selectFList(SIINFO *pht)
{
int i=0;
if(pht)
{
printf(" 輸出鏈表信息: ");
while(pht->next)
{
printf("-----------項目%d--------- ",++i);
printf("項目序號:%d ",pht->next->id);
printf("項目名稱:%s ",pht->next->name);
printf("項目類別:%s ",stypes[pht->next->stype]);
printf("參賽人數:%d ",pht->next->n);
printf("參賽時間:%04d-%02d-%02d %02d:%02d:%02d ",pht->next->sDate.tm_year+1900,pht->next->sDate.tm_mon+1,pht->next->sDate.tm_mday,pht->next->sDate.tm_hour,pht->next->sDate.tm_min,pht->next->sDate.tm_sec);
printf("-------------------------- ");
pht=pht->next;
}
}
}
SIINFO *insert2List(SIINFO *p_sHead)
{
static int x=0;
static SIINFO *p_sTail=NULL;
int i;
SIINFO *p_new=NULL;
if(!p_sHead){
p_sHead=(SIINFO*)malloc(sizeof(SIINFO));
if(!p_sHead)
return NULL;
p_sHead->next=NULL;
p_sTail=NULL;
}
p_new=(SIINFO*)malloc(sizeof(SIINFO));
if(!p_new)
return NULL;
p_new->next=NULL;
p_new->id=x++;
printf("-------------------------- ");
printf("項目名稱:"),scanf("%s",p_new->name);
for(i=0,printf("項目類(");i<MS-1;printf("%d、%s,",i,stypes[i]),i++);
printf("%d、%s):",i,stypes[i]);
p_new->stype=-1;
while(p_new->stype<0 || p_new->stype>MS-1)scanf("%d",&p_new->stype);
printf("參賽人數:"),scanf("%d",&p_new->n);
printf("參賽時間(輸入格式:年-月-日 時:分:秒):");
scanf("%d-%d-%d %d:%d:%d",&p_new->sDate.tm_year,&p_new->sDate.tm_mon,&p_new->sDate.tm_mday,&p_new->sDate.tm_hour,&p_new->sDate.tm_min,&p_new->sDate.tm_sec);
p_new->sDate.tm_mon--;//tm結構的月份是從0開始對應1月
p_new->sDate.tm_year=p_new->sDate.tm_year-1900;//tm結構的年份是實際年份-1900
if(!p_sHead->next)
p_sHead->next=p_new;
else
p_sTail->next=p_new;
p_sTail=p_new;
printf("-------------------------- ");
return p_sHead;
}
⑷ 如何用C語言或者C++實現圖形填充演示
可以嘗試下用Qt寫。先下載Qt的運行環境,然後打開Qt Creater,新建工程,一路默認設置就行了。建好工程後打開mainwindow.h在MainWindow類里添加頭文件<QtGui>,並添加公有函數
void paintEvent( QPaintEvent*),然後在mainwindow.cpp里實現這個函數,下面的代碼可以參考一下:
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter( this );
painter.setBrush( QBrush( "gray" ));
painter.drawRect( 100, 100, 50, 100 );
}
這段代碼的功能是在坐標為(100,100)的點上畫一個50x100的矩形,並用灰色填充。
具體的可以到下面參考資料的網站了解一下,有什麼不明白的可以Hi我哦
⑸ 如何用C語言編寫一個簡單的程序!
上了大學有很多同學都在學習C語言,C++就是C語言的一種,那麼怎麼用c語言寫一個簡單的程序hello world呢,下邊來給大家演示一下
工具/材料
電腦,c語言軟體
- 01
滑鼠左鍵雙擊c語言軟體,打開,打開後界面如圖,點擊關閉即可
- 02
點擊上方程序窗口左上角的文件,選擇新建
- 03
在打開的窗口中選擇文件,下邊一般是第四個 c++Source file,輸入文件名(hellw.c),一定要以「.c」為後綴結尾
- 04
進入編輯頁面在,頁面編輯源代碼就可以
#include<stdio.h>
void main()
{
printf("hello world!" );
}
然後選擇保存,列印,輸出運行。 - 05
輸出的效果就是這樣了,一個簡單的c語言程序就寫好了
特別提示
所有的輸入都要在英文半形的情況下輸入,不然程序會不能識別,會報錯。
⑹ 用C語言演示計算1+1/2+1/4+...+1/100的值,並顯示
#include "stdio.h"
main()
{
int i=1;
float s=0;
while(i<=100)
{
s+=1.0/i;
i++;
}
printf("s=1+1/2+1/4+...+1/100=%f",s);
}
⑺ 如何利用C語言實現動畫
基於擦除法的C語言動畫設計與實現
Movie design implement in C language base on erasure way
東華理工學院計算機與通信系姜林何月順江西南昌330013
摘要:
本文介紹了程序設計語言中動畫設計的原理,在C語言中的動畫設計常用方法,並提出了在C語言中新的動畫設計方法――擦除法。闡述擦除法動畫設計的原理,並通過一個具體的實例詳細介紹了這種方法的設計實現,文中末尾總結了擦除法動畫設計的優點及適用的范圍。
關鍵字:擦除法;C語言;TurboC2.0;動畫設計;原理;實現
中圖分類號:TP312
Summary:
Through the principium of movie design in program design language, the thesis present movie design general way in C language, and bring forward new movie design way――erasure . The thesis also expatiate the principium of erasure way, particular describe the design implement of erasure by a instance. The end summarize the excellence and range of erasure way.
Key words: erasure way; C language ; TurboC 2.0; movie design; principium; implement
0. 引言
動畫技術是計算機圖形學中的重要內容,它廣泛用於游戲娛樂,輔助教學,科學實驗模擬等計算機輔助設計。用於動畫設計的程序設計語言有多種,並且有多種方法。其中C語言程序設計又廣泛用於各種軟體開發項目中。因此,掌握C語言的動畫設計方法對於軟體開發很有必要。
1. 程序設計中動畫原理
程序設計中動畫設計的原理類似電影的方法,它利用人的視覺具有暫留的生理特點,即人眼對動態圖像的變化僅能分辨出時間間隔為25毫秒左右的變化,如果圖像變化太快,則人眼無法分辨。在程序設計中我們可以在屏幕上畫出一張圖像,而將這張圖像在不同時間出現,然後一張張快速(時間間隔小於25毫秒)呈現在屏幕上,從視覺效果上看這些畫面就如同電影在連續變化一樣,給人以動的視覺感覺。
2. C語言動畫設計常用方法C語言常用動畫設計方法[1]:
2.1利用動態開辟圖視口方法
在位置動態變化,但大小不變的圖視口中(用setviewpot()函數[2]),設置固定圖形,這樣呈現在觀察者面前的是當前圖視口位置在動態變化,因而在屏上看到的圖像就好像在動態變化一樣。
2.2 利用顯示頁和編輯頁交替變化
將當前顯示頁和編輯頁分開(用setvisualpage()和setactivepage()函數),在編輯頁上
畫好圖形後,立即令該頁變為顯示頁,然後在上次顯示頁上進行畫圖,畫好後,再交換,如此反復,在觀察者的視覺上,就出現了動畫的效果。
2.3 利用畫面存儲再重放的方法
如同製作幻燈片一樣,將整個動畫過程變成一個個片斷,然後存儲到顯示緩沖區內,當把它們按順序重放到屏幕上時,就出現了動畫效果。
2.4 直接對圖像動態存儲器進行操作
利用顯示適配器上控制圖像顯示的各種寄存器和圖像存儲器VRAM,對其進行直接操作和控制,從而可以高效快速的實現動畫效果。
上述4種方法均可以實現動畫效果,但其操作比較復雜,且在程序中要對圖像不斷進行存取操作,這需要耗費大量內存資源。下面的擦除法動畫設計可以解決上述問題。
3. 擦除法動畫設計原理
擦除法動畫設計方法在很多的動畫製作工具(如flash)中大量使用,但在程序設計中卻鮮有人用。它的設計原理是:利用同色原理,當圖形色與背景色相同時人眼不能感知。在動畫設計中,當在一個位置畫了一張圖像時,使圖像色與背景色相異,然後再到另一個位置畫一張圖像並使圖像色與背景色也相異,此時將先前畫的圖像在原位置再畫一張,並使圖像色與背景色相同,這樣人眼只能看到新畫的一張圖像而看不到先前畫的圖像,從而先前畫的圖像感覺被擦除了。這樣連續畫多張圖像並在每畫一張新的圖像,將原來的圖像擦除,從而在觀察者來看就實現了動畫的效果。
4. 擦除法的動畫設計實現
下面以一個上下翻滾的圓作為一個例子來講解在TurboC2.0開發環境下用C語言來實現動畫的設計過程,其中動畫設計的方法是擦除法。具體的實現步驟如下:
4.1 TC的圖形系統的初始化
TurboC2.0為用戶提供了一個功能強大的畫圖軟體庫,它包括圖形庫文件(graphics.lib),圖形頭文件(graphics.h)和許多圖形顯示器的驅動程序。在TurboC2.0開始進行圖形設計前必須對之進行初始化,使系統知道要用什麼類型的圖形顯示器的驅動程序,採用什麼模式的圖形方式,以及該適配器驅動程序的尋找路徑名。這個初始化的函數是initgraph()。在本程序中的初始化如下:
gdriver=DETECT;
initgraph(&gdriver, &gmode, "");//圖形顯示器、顯示模式、路徑自動檢測
4.2 畫圖
setcolor(LIGHTRED);//設置圓的線條顏色為淡紅色
setlinestyle(0,0,1);//設置線條為形狀為實線,線寬為一點寬
setfillstyle(1, 10);//設置圓的填充式樣為以實填充,填充色為淡綠色
circle(300, 10+10*y,15);//畫一個圓心在坐標(300,10+10y),半徑為15的圓
這個地方我們需要畫一個圓(用draw()函數實現),並且設置圓的圓周線條的顏色(用setcolor()函數),設置線條類型(用setlinestyle()函數),設置圓的填充色和填充模式(用setfillstyle()函數),設置圓的填充色(用floodfill()),最後是畫圓(用circle()函數)。在本程序(draw()函數)中的代碼如下:
floodfill(300, 10+10*y, 12);//給圓填充如上stfillstyle中的淡綠色
為了實現擦除操作需在同一個位置再畫一個圓(用clear()函數實現),該操作只需將上面的畫圓函數(draw()函數)改動兩個設置即可,如下示:
setcolor(BLUE);//設置圓的線條顏色為藍色(與背景色相同)
setfillstyle(1, 10);//設置圓的填充式樣為以實填充,填充色為淡綠色
4.3 動畫實現
本部分是核心部分,先設置背景色為藍色(用setbkcolor()函數),再在屏幕上畫一個填充色為淡綠色的圓(draw()函數)。設置一個循環控制語句實現在屏幕上不同的位置畫圓,同時在每畫一個圓後作一個時間的延遲(用delay()函數),再在延遲後實現擦除操作,即調用clear()函數。其流程圖及代碼如下:
setbkcolor(BLUE);//設置背景色為藍色
for(j=20;j>0;j=j-4)//控制動畫實現的次數為20次
{ for(i=j;i<30;i++)//實現動畫從上向下閃爍
{ draw(i);//畫圓
delay(100000);//延遲0.1秒
clear(i);//擦除已畫的圓
}
for(i=30;i>j;i--)//實現動畫從下向上閃爍
{ draw(i);//畫圓
delay(100000);//延遲0.1秒
clear(i);//擦除已畫的圓
}
}
動畫實現後的最後效果圖如下示。
4.4 關閉圖形系統
當圖形實現結束後需要關閉圖形系統,利用函數closegraph()即可實現。
5. 總結
擦除法動畫設計原理易於理解,便於操作。並且它的程序運行所需內存空間也比上述四種常用方法要少得多,因為它在程序執行過程中不需將圖形存入內存再從內存調出,這節省了大量的內存空間。如果程序運行在內存緊張的環境中,如嵌入式系統中,這種方法尤其適用
⑻ 簡單c語言程序
1、★編寫程序,輸入兩個整數:1500和350,求出它們的商和余數並輸出。
main()
{int
a;
int
b;
scanf("%d%d",a,b)
printf("商:%d\n余數:%d",a/b,a%b);
}
2、★編寫程序,讀入三個整數給a,b,c,然後交換它們中的數,把a中原來的值給b,b中原來的值給c,
c中原來的值給a,且輸出改變後的a,b,c的值
main()
{int
a;
int
b;
int
c;
int
tmp;
scanf("%d%d%d",a,b,c)
printf("a:%d
b:%d
c:%d",a,b,c);
tmp=c;
c=b;
b=a;
a=c;
printf("a:%d
b:%d
c:%d",a,b,c);
}
3、★輸入兩個整型變數a,b的值,輸出a+b,a-b,a*b,a/b,(float)a/b,a%b的結果,要求連同算式一起輸出,每個算式佔一行。
main()
{int
a;
int
b;
scanf("%d%d",a,b)
printf("a+b=%d\na-b=%d\na*b=%d\na/b=%d\n(float)a/b=%f\na%b=%d",a+b,a-b,a*b,a/b,(float)a/b,a%b);
}
4、★輸入一個非負數,計算以這個數為半徑的圓周長和面積。
main()
{float
a;
scanf("%f",a);
printf("周長=%f\n面積=%f",2*a*3.14,3.14*a*a);
}
5、★輸入任意一個三位數,將其各位數字反序輸出(例如輸入123,輸出321).
main()
{int
a;
int
b;
scanf("%d",a);
printf("%d",a%10);
a=a%100
printf("%d",a%10);
a=a%10
printf("%d",a%10);
}
6、★輸入任意大小的三個整數,判斷其中是否有兩個奇數一個偶數。若是,則輸出「YES」,不是則輸出「NOT」
(要求用條件表達式進行判斷,不使用if語句)
main()
{int
a;
int
b;
int
c;
int
n=0;
scanf("%d%d%d",a,b,c);
a%2==1?n++:a;
b%2==1?n++:b;
c%2==1?n++:c;
if
n==2
printf("YES");
else
printf("NOT");
}
7、★求前驅字元和後繼字元。輸入一個字元,找出它的前驅字元和後繼字元,並按ASCII碼值,按從大到小的順序輸出這三個字元及其對應的ASCII碼值。
main()
{char
a;
scanf("%c",a);
printf("%c%c%c"a-1,a,a+1);
}
累啊
⑼ C語言入門什麼是編程語言
學習編程語言之前,首先要搞清楚「編程語言」這個概念。
很小的時候,父母就教我們開口說話,也教我們如何理解別人講話的意思。經過長時間的熏陶和自我學習,我們竟然在不知不覺中學會了說話,同時也能聽懂其他小朋友說話的意思了,我們開始向父母要零花錢買零食和玩具、被欺負了向父母傾訴……
我們說的是漢語,是「中國語言」,只要把我們的需求告訴父母,父母就會滿足,我們用「中國語言」來控制父母,讓父母做我們喜歡的事情。
「中國語言」有固定的格式,每個漢字代表的意思不同,我們必須正確的表達,父母才能理解我們的意思。例如讓父母給我們10元零花錢,我們會說「媽媽給我10塊錢吧,我要買小汽車」。如果我們說「10元給我汽車小零花錢媽媽」,或者「媽媽給我10億人民幣,我要買F-22」,媽媽就會覺得奇怪,聽不懂我們的意思,或者理解錯誤,責備我們。
我們通過有固定格式和固定詞彙的「語言」來控制他人,讓他人為我們做事情。語言有很多種,包括漢語、英語、法語、韓語等,雖然他們的詞彙和格式都不一樣,但是可以達到同樣的目的,我們可以選擇任意一種語言去控制他人。
同樣,我們也可以通過」語言「來控制計算機,讓計算機為我們做事情,這樣的語言就叫做編程語言(Programming Language)。
編程語言也有固定的格式和詞彙,我們必須經過學習才會使用,才能控制計算機。
編程語言有很多種,常用的有C語言、C++、Java、C#、PHP、JavaScript等,每種語言都有自己擅長的方面,例如:
C語言和C++主要用於PC軟體開發、底層開發、單片機和嵌入式系統;
Java和C#不但可以用來開發軟體,還可以用來開發網站後台程序;
PHP主要用來開發網站後台程序;
JavaScript 主要負責網站的前端工作(現在也有公司使用 Node.js 開發網站後台)。
可以將不同的編程語言比喻成各國語言,為了表達同一個意思,可能使用不同的語句。例如,表達「世界你好」的意思:
漢語:世界你好;
英語:Hello World
法語:Bonjour tout le monde
在編程語言中,同樣的操作也可能使用不同的語句。例如,在屏幕上顯示「XX電子社區」:
C語言:puts("XX電子社區");
PHP:echo "XX電子社區";
Java:System.out.println("XX電子社區");
編程語言類似於人類語言,由直觀的詞彙組成,我們很容易就能理解它的.意思,例如在C語言中,我們使用puts這個詞讓計算機在屏幕上顯示出文字;puts 是 output string(輸出字元串)的縮寫。
使用 puts 在屏幕上顯示「XX電子社區」:
puts("XX電子社區");我們把要顯示的內容放在("和")之間,並且在最後要有;。你必須要這樣寫,這是固定的格式。
總結:編程語言是用來控制計算機的一系列指令(Instruction),它有固定的格式和詞彙(不同編程語言的格式和詞彙不一樣),必須遵守,否則就會出錯,達不到我們的目的。
C語言(C Language)是編程語言的一種,學習C語言,主要是學習它的格式和詞彙。下面是一個C語言的完整例子,它會讓計算機在屏幕上顯示」XX電子社區「。
這個例子主要演示C語言的一些固有格式和詞彙,看不懂的讀者不必深究,也不必問為什麼是這樣,後續我們會逐步給大家講解。
#include
int main(){
puts("XX電子社區");
return 0;
}
這些具有特定含義的詞彙、語句,按照特定的格式組織在一起,就構成了源代碼(Source Code),也稱源碼或代碼(Code)。
那麼,C語言肯定規定了源代碼中每個詞彙、語句的含義,也規定了它們該如何組織在一起,這就是語法(Syntax)。它與我們學習英語時所說的「語法」類似,都規定了如何將特定的詞彙和句子組織成能聽懂的語言。
編寫源代碼的過程就叫做編程(Program)。從事編程工作的人叫程序員(Programmer)。程序員也很幽默,喜歡自嘲,經常說自己的工作辛苦,地位低,像農民一樣,所以稱自己是」碼農「,就是寫代碼的農民。也有人自嘲稱是」程序猿「。
⑽ ppt可以在演示文稿中編寫c語言程序嗎
可以的,1、運行PowerPoint程序,打開要插入動畫的幻燈片。
2、在菜單中選擇「插入」選項,從打開的下拉菜單中選擇「對象」。會彈出「插入對象」對話框,選擇「由文件創建」,單擊[瀏覽],選中需要插入的Flash動畫文件,最後單擊[確定]返回幻燈片。
3、 這時,在幻燈片上就出現了一個Flash文件的圖標,我們可以更改圖標的大小或者移動它的位置,然後在這個圖標上右擊滑鼠,選中「動作設置」命令。
4、在彈出的窗口中選擇「單擊滑鼠」或「滑鼠移動」兩個標簽都可以,再點擊「對象動作」,在下拉菜單中選擇「激活內容」,最後單擊[確定],完成插入動畫的操作。