語記源碼
Ⅰ c語言編寫的記事本源代碼
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#define NULL 0
#define MAX 100
typedef struct lnode{
char date[MAX]; //存放數據
struct lnode * prior ; //前驅
struct lnode * next ; //後繼
int number ; //記錄一個節點的字元數!如果是頭節點就記錄他的節點個數
int quese ; //記錄節點在鏈表中的位置
}lnodetype;
lnodetype * l ; //設置兩個全局變數,分別是頭節點指針和尾節點指針
lnodetype * end ;
//**********這個函數是用來初始化的**********//
int iniatelist (lnodetype ** l , lnodetype ** end)
{
(*l) = (lnodetype *)malloc (sizeof (lnodetype) ) ;
if ( (*l) == NULL )
{
printf ("沒有隻夠的內存空間!程序即將退出!");
return 0 ;
}
(*l)->prior =(*l)->next = NULL ; //這是雙鏈表
(*l)->number = (*l)->quese = 0;
(*end) = (*l) ;
printf ("程序初始化完畢!");
return 0;
}
//**********這個函數是用來建立節點,並且插入元素的**********//
int link(lnodetype ** l, lnodetype ** end)
{
lnodetype *s ;
s = (lnodetype *)malloc ( sizeof (lnodetype) ) ;
if ( s == NULL ){
printf ("內存空間不夠,程序即將退出!") ;
return 0 ;
}
(*end)->next = s ;
s->prior = (*end) ;
(*end) = (*end)->next ;
(*l)->number++ ; //增加一個節點,頭節點的number就加1
s->quese = (*l)->number ; //這個是記錄節點在鏈表中的位置
printf ("%d行", s->quese ) ; //這個是節點在整個鏈表中的位置
gets(s->date) ;
s -> number = strlen(s->date) ;
return 0 ;
}
//**********這個是列印鏈表的函數**********//
int prin (lnodetype ** l, lnodetype ** end)
{
lnodetype * p ;
int i ;
int j = 0;
int couter = (*l)->number ;
p = (*l)->next ;
for (i=0; i < couter; i++){
printf ( "%d行" , i+1 ) ;
j = 0;
while ( ( p->date[j]>='a' && p->date[j]<='z') ||
(p->date[j]>='A' && p->date[j]<='z') ||
p->date[j]>='0' && p->date[j]<='9')
{
printf ( "%c" , p->date[j] ) ;
j++ ;
}
printf ("n") ;
p = p->next ;
}
return 0 ;
}
//*********這個查找和編輯相應行的函數**********//
int search (lnodetype ** l, lnodetype ** end )
{
int number ;
scanf ("%d" , &number) ;
int i ;
lnodetype * p ;
p = (*l)->next ;
for ( i=0; i<number-1; i++ )
p = p->next ;
printf ("%d行" , number ) ;
gets (p->date) ;
return 0 ;
}
//**********這個是在文本文件里搜索字元串的函數**********//
int searchstr(lnodetype ** l , lnodetype ** end)
{
char ptr[100] ;
int arrycouter ;
int mystrcmp( char *, char * , int ) ;
printf ( "ok!現在輸入你查找的字元串!" ) ;
scanf ( "%s" , ptr ) ;
arrycouter = strlen (ptr) ;
lnodetype * s ;
s = (*l)->next ;
char * p ;
int i = 1 ;
int couter = 0 ;
int number = (*l)->number ;
p = (char *)s->date ;
while ( i && number ){
// i=1是,證明沒有找到,向第二個節點繼續尋找
while ( i && ( ( (*p >= 'a') && (*p <= 'z') ) || ( (*p >= 'A') && (*p <= 'Z') ) ) ){
i = mystrcmp ( p , ptr , arrycouter );
if ( i == 1 ){
printf ("字元串已經在第%d行,第%d個字元開始,",s->quese, couter+1 );
i = 0 ;
}
else
{
p++ ;
couter++;
i = 1 ;
}
}
s = s->next ;
p = (char *)s->date ;
number -- ;
}
if ( i == 1 )
printf ("字元串在本文檔中不存在!");
return 0 ;
}
//**********(1)這個函數是用來實現退出不保存功能的**********//
int exitunsave(lnodetype ** l, lnodetype ** end)
{
lnodetype * s ;
while( (*l) != (*end) ){ //如果不保存的話,最好是把節點的空間都釋放,節省空間
s = (*end) ;
(*end) = (*end)->prior ;
free( s ) ;
}
return 0 ;
}
//**********(2)這個函數是用來實現退出但保存功能的**********//
int quitandsave( lnodetype ** l , lnodetype ** end )
{
FILE * fp ;
char ch ;
char filename[20] ;
lnodetype * p;
int i ;
int j ;
int couter = (*l)->number ;
p = (*l)->next ;
printf ("請輸入文件名:") ;
scanf ("%s" , filename ) ;
if ( (fp = fopen( filename , "w" )) == NULL ){
printf ("文件不能打開!n");
return 0 ;
}
for ( i=0; i<couter; i++ ){ //有幾個節點就進行多少次的存貯
ch = p->date[0] ;
j = 1 ;
while (ch != '\0'){
fputc (ch , fp) ;
ch = p->date[j] ;
j++ ;
}
p = p->next ;
fputc ( '#' , fp ) ; //注意在每個節點的後面加上結束的符號
}
fputc ( '@' , fp ) ; //整個文件關閉的標志
fclose ( fp ) ; //注意關閉文件,
return 0 ;
}
//**********由於庫函數比較字元串提供的功能不滿足要求,故自己寫了一個**********/
int mystrcmp( char * p ,char * sour ,int number )
{
while ( number && (*p) == (*sour) &&
( ( (*p >= 'a') && (*p <= 'z') ) || ( (*p >= 'A') && (*p <= 'Z') ) )){
p++ ;
sour++ ;
number-- ;
}
if ( number == 0 )
return 1 ;
else
return 0 ;
}
//**********這個函數是用來實現統計字元串功能的**********//
int coutword(lnodetype ** l , lnodetype ** end)
{ //考慮到只統計一行的單詞沒有意義,故統計整個文本
int yes = 1 ; //這個是進入單詞的標志
int no = 0 ; //在單詞外面的時候的標志
int i , j ,inaword ,count = 0 ;
inaword = no ;
lnodetype * s = (*l)->next ;
for (j=0; j<(*l)->number; j++){
for ( i=0; (s->date[i]>='a' && s->date[i]<='z') ||
(s->date[i]>='A' && s->date[i]<='z') ||
(s->date[i]>='0' && s->date[i]<='9' ) ||
(s->date[i]==' '); i++ )
{
if ( s->date[i] == ' ' )
inaword = no ;
else
if ( inaword == no )
{
inaword = yes ;
count++ ; //計算單詞
}
}
s = s->next ;
inaword = 0 ; //注意這里,把標志置為0了!
}
printf ( "n文本一共有 %d 行" , (*l)->number ) ;
printf ("n此文本一共有 %d 個單詞!" , count ) ;
return count ;
}
//**********這個函數是用來實現計算文本行數功能的**********//
int linecouter(lnodetype ** l , lnodetype ** end )
{
int couter ;
couter = (*l)->number ;
return couter ;
}
//**********這個函數是整和一上所有功能的菜單函數**********//
int editmenu(lnodetype ** l , lnodetype ** end )
{
char choice ;
char * p = "cls" ;
int i = 1 ; //這兩個變數是用來控制循環的
int j= 1 ;
system (p) ;
prin (&(*l) , &(*end)) ;
while (j){
printf ("*********************************** e: 編輯相應行 *************************************n") ;
printf ("*********************************** s: 搜索字元串 *************************************n") ;
printf ("*********************************** t: 統計單詞個數 ***********************************n") ;
printf ("*********************************** q: 退出編輯 ***************************************n") ;
scanf("%c",&choice);
scanf("%c" , &choice) ; //????莫名其妙的問題,非要兩個請求輸入語句才肯停下來!
switch (choice)
{
case 'e' : {
i = 1 ;
while (i)
{
search( &(*l) , &(*end) );
system (p) ;
prin( &(*l) , &(*end) ) ;
printf ("n1 繼續編輯 0 結束編輯n") ;
scanf ("%d" , &i) ;
}
}
break;
case 's' : {
i = 1 ;
while (i)
{
searchstr( &(*l) , &(*end) );
getchar();
getchar();
system (p) ;
prin( &(*l) , &(*end) ) ;
printf ("n1 繼續搜索 0 結束搜索n") ;
scanf ("%d" , &i) ;
}
}
break;
case 't' : {
coutword ( &(*l) , &(*end) ) ;
getchar() ;
}break;
default : return 0 ;
}
system (p) ;
prin( &(*l) , &(*end) ) ;
printf ("n1 回到編輯菜單 0 結束編輯n") ;
scanf ("%d" , &j) ;
if (j == 1)
system (p) ;
else
return 0 ;
}
return 0 ;
}
//**********實現第一個模塊:新建空白文檔**********//
int newtext( lnodetype ** l ,lnodetype ** end )
{
printf ( "新文本文件:n" ) ;
int i = 1 ;
char judstr[MAX] ;
lnodetype * temp ;
char jud ;
char * p = "cls" ;
while ( 1 ){
link( &(*l) , &(*end) ) ;
jud = (*end)->date[0] ;
if ( jud == '5' ){ //輸入『5』結束一切
temp = (*end) ;
(*end) = (*end)->prior ;
free (temp) ;
while (1){
printf ( "******************************* out :退出不保存 ****************************n") ;
printf ( "******************************* edit :編輯信息 *****************************n") ;
printf ( "******************************* quit :退出而不存檔 **************************n") ;
printf ( "******************************* qas :退出且存檔 ****************************n") ;
printf ( "******************************* con :繼續輸入! *****************************n") ;
gets(judstr) ;
if ( !strcmp(judstr , "out") )
{
exitunsave( &(*l) , &(*end) ) ;
return 0 ;
}
else
if ( !strcmp(judstr , "qas") )
{
quitandsave( &(*l) , &(*end) ) ;
return 0 ;
}
else
if ( !strcmp(judstr , "edit") )
{
editmenu (l , end) ;
return 0;
}
system (p) ;
}
return 0 ;
}
}
return 0 ;
}
//**********這個是裝入文件的函數**********//
int loadtaxt( char * filename )
{
FILE * fp ;
lnodetype * l ;
char ch ;
int i = 0 ;
char * p = "cls" ;
char judstr[MAX] ;
lnodetype * head ;
lnodetype * end ;
iniatelist ( &head , &end) ;
l = end = head ;
if ( (fp = fopen( filename, "r+")) == NULL ){
printf ("文件不能打開!n") ;
return 0 ;
}
ch = fgetc ( fp ) ;
while ( ch != '@' ){
lnodetype *s ;
s = (lnodetype *)malloc ( sizeof (lnodetype) ) ;
if ( s == NULL ){
printf ("內存空間不夠,程序即將退出!") ;
return 0 ;
}
end->next = s ;
s->prior = end ;
end = end->next ;
l->number++ ;
s->quese = l->number ;
printf ("%d行", s->quese ) ;
while ( ch != '#'){
s->date[i] = ch ;
ch = fgetc (fp) ;
i++ ;
}
i = 0;
while ( (end->date[i]>='a' && end->date[i]<='z') ||
(end->date[i]>='A' && end->date[i]<='z') ||
(end->date[i]>='0' && end->date[i]<='9' ) ||
(end->date[i]==' ') )
{
printf ( "%c" , end->date[i] ) ;
i++ ;
}
end->date[i] = '\0' ; //注意在節點的最好加上這個,以讓退出保存功能函數知道此節點已結束
printf ( "n" ) ;
i = 0;
ch = fgetc ( fp ) ;
}
fclose (fp) ;
printf ("n文件成功裝入!n") ;
while (1){
printf ( "******************************* out :退出不保存 ****************************n") ;
printf ( "******************************* edit :編輯信息 *****************************n") ;
printf ( "******************************* qas :退出且存檔 ****************************n") ;
printf ( "******************************* con :繼續輸入! *****************************n") ;
scanf("%s",judstr);
if ( !strcmp(judstr , "out") )
{
exitunsave( &l , &end ) ;
return 0 ;
}
else
if ( !strcmp(judstr , "qas") )
{
quitandsave( &l , &end ) ;
return 0 ;
}
else
if ( !strcmp(judstr , "edit") )
{
editmenu (&l , &end) ;
return 0 ;
}
system (p) ;
}
return 0 ;
}
//**********主函數**********//
void main ( void )
{
//iniatelist (&l , &end) ;
//newtext(&l , &end) ;
char filename[MAX] ;
scanf ( "%s" , filename ) ;
loadtaxt( filename ) ;
}
很不容易做的程序!!!
通過編譯
Ⅱ 易語言源碼
哦 哦 ,那我給你個記事本的源碼吧 如下
.版本 2
.支持庫 iext2
.支持庫 iext
.支持庫 eAPI
.程序集 窗口程序集1
.程序集變數 文件路徑, 文本型
.程序集變數 當前是否正在打字, 邏輯型
.子程序 _超級編輯框1_內容被改變, , , 更改超級編輯框的顏色
.局部變數 顏色, 字元格式
顏色.文本顏色 = 取顏色值 (取隨機數 (0, 255), 取隨機數 (0, 255), 取隨機數 (0, 255))
超級編輯框1.置選擇區字元格式 (顏色)
狀態條1.置文本 (0, 「行 」 + 到文本 (超級編輯框1.取行數 ()) + 「 文本長度 」 + 到文本 (超級編輯框1.取文本長度 ()))
.子程序 __啟動窗口_創建完畢, , , 設置通用對話框
通用對話框1.過濾器 = 「txt|*.txt」
通用對話框1.默認文件後綴 = 「txt」
通用對話框1.標題 = 「傳說記事本保存對話框...」
_時間日期_被選擇 ()
_炫銀皮膚_被選擇 ()
備忘錄提醒 ()
.子程序 __啟動窗口_位置被改變, , , 位置被改變後超級編輯框也跟著改變(按鈕1也跟著改變)
.如果真 (_啟動窗口.位置 = 3)
超級編輯框1.寬度 = 取屏幕寬度 () - 3
超級編輯框1.高度 = 取屏幕高度 () - 80 - 按鈕1.高度 - 10
按鈕1.頂邊 = 取屏幕高度 () - 狀態條1.高度 - 100
按鈕1.寬度 = 取屏幕寬度 () - 5
按鈕1.高度 = 狀態條1.高度 + 10
.如果真結束
.如果真 (_啟動窗口.位置 = 0)
超級編輯框1.寬度 = _啟動窗口.寬度 - 10
超級編輯框1.高度 = _啟動窗口.高度 - 55 - 按鈕1.高度 - 10
按鈕1.頂邊 = 200
按鈕1.寬度 = 560
.如果真結束
.子程序 _新建_被選擇, , , New文件
.如果真 (超級編輯框1.內容 ≠ 「」)
.如果真 (信息框 (「您還沒保存!請問您要進行保存嗎?」, 4, ) = #是鈕)
通用對話框1.類型 = 1
通用對話框1.打開 ()
寫到文件 (通用對話框1.文件名, 到位元組集 (超級編輯框1.內容))
.如果真結束
.如果真結束
.子程序 _打開_被選擇, , , Open文件
通用對話框1.類型 = 0
通用對話框1.打開 ()
.如果真 (通用對話框1.文件名 ≠ 「」)
超級編輯框1.內容 = 到文本 (讀入文件 (通用對話框1.文件名))
文件路徑 = 通用對話框1.文件名
.如果真結束
.子程序 _保存_被選擇, , , Save文件
.如果真 (文件路徑 = 「」)
通用對話框1.類型 = 1
通用對話框1.打開 ()
寫到文件 (通用對話框1.文件名, 到位元組集 (超級編輯框1.內容))
.如果真結束
.如果真 (文件路徑 ≠ 「」)
寫到文件 (文件路徑, 到位元組集 (超級編輯框1.內容))
.如果真結束
.子程序 _保存到_被選擇, , , Save As文件
通用對話框1.類型 = 1
通用對話框1.打開 ()
.如果真 (通用對話框1.文件名 ≠ 「」)
寫到文件 (通用對話框1.文件名, 到位元組集 (超級編輯框1.內容))
.如果真結束
.子程序 _撤銷_被選擇, , , Undo 文本
超級編輯框1.撤消 ()
.子程序 _剪切_被選擇, , , Cut 文本
超級編輯框1.剪切 ()
.子程序 _復制_被選擇, , , Copy 文本
超級編輯框1.復制 ()
.子程序 _粘連_被選擇, , , Paste文本
超級編輯框1.粘貼 ()
.子程序 _刪除_被選擇, , , Delete文本
超級編輯框1.刪除 ()
超級編輯框1.內容 = 取文本左邊 (超級編輯框1.內容, 取文本長度 (超級編輯框1.內容) - 1)
.子程序 _尋找_被選擇, , , Find文本
載入 (Find窗口, , 真)
.子程序 _尋找下一個_被選擇, , , 還沒解決好
.子程序 _文本替換_被選擇, , , 文本替換
載入 (文本替換窗口, , 真)
.子程序 _跳到_被選擇, , , 還沒解決好
載入 (跳到窗口, , 真)
.子程序 _全選_被選擇, , , Select All文本
超級編輯框1.被選擇字元數 = 取文本長度 (超級編輯框1.內容)
.子程序 _時間日期_被選擇, , , Time-Date
.局部變數 小時, 文本型
.局部變數 分鍾, 文本型
.局部變數 日期, 文本型
.局部變數 年份, 文本型
.局部變數 月份, 文本型
.局部變數 日份, 文本型
小時 = 到文本 (取小時 (取現行時間 ()))
分鍾 = 到文本 (取分鍾 (取現行時間 ()))
年份 = 到文本 (取年份 (取現行時間 ()))
月份 = 到文本 (取月份 (取現行時間 ()))
日份 = 到文本 (取日 (取現行時間 ()))
狀態條1.置文本 (1, 小時 + 「:」 + 分鍾 + 「 」 + 年份 + 「-」 + 月份 + 「-」 + 日份)
.子程序 _傳說記事本v13_被選擇, , , About Notepad
信息框 (「軟體作者:古老的傳說」 + #換行符 + 「QQ:1041750677」 + #換行符 + 「MSN:[email protected]」 + #換行符 + 「編寫工具:易語言」 + #換行符 + 「軟體版本:1.3」 + #換行符, 0, )
.子程序 _密碼保管_被選擇, , , Password Protect
載入 (密碼窗口, , 真)
.子程序 _備忘錄_被選擇, , , 載入備忘錄窗口
載入 (備忘錄窗口, , 真)
.子程序 備忘錄提醒, , , 備忘錄提醒
.局部變數 分割文本, 文本型, , "0"
.局部變數 今天日期, 文本型
.局部變數 分割今天日期, 文本型, , "0"
分割文本 = 分割文本 (讀配置項 (取運行目錄 () + 「\備忘錄.ini」, 「備忘錄」, 「提示日期」, ), 「日」, )
今天日期 = 到文本 (取日期 (取現行時間 ()))
分割今天日期 = 分割文本 (今天日期, 「日」, )
.如果真 (取數組成員數 (分割文本) = 1 或 取數組成員數 (分割文本) > 1)
.如果真 (分割文本 [1] = 分割今天日期 [1])
狀態條1.置文本 (2, 「您今天有一份備忘錄噢^_^」)
.如果真結束
.如果真結束
.子程序 _銀白皮膚_被選擇, , , 銀白皮膚
更換新皮膚 (1)
.子程序 _淺白皮膚_被選擇, , , 淺白皮膚
更換新皮膚 (10)
.子程序 _淺灰皮膚_被選擇, , , 淺灰皮膚
更換新皮膚 (13)
.子程序 _淺藍皮膚_被選擇, , , 淺藍皮膚
更換新皮膚 (19)
.子程序 _淺黑皮膚_被選擇, , , 淺黑皮膚
更換新皮膚 (5)
.子程序 _炫銀皮膚_被選擇, , , 炫銀皮膚
更換新皮膚 (2)
.子程序 _炫白皮膚_被選擇, , , 炫白皮膚
更換新皮膚 (15)
.子程序 _炫藍皮膚_被選擇, , , 炫藍皮膚
更換新皮膚 (18)
.子程序 _深黑皮膚_被選擇, , , 深黑皮膚
更換新皮膚 (14)
.子程序 __啟動窗口_可否被關閉, 邏輯型, , 透明顯示最小化運行
.局部變數 變數1, 整數型
變數1 = 255
.計次循環首 (255, )
設置窗口透明度 (_啟動窗口.取窗口句柄 (), 變數1)
變數1 = 變數1 - 1
.如果真 (變數1 = 1)
置托盤圖標 (#程序圖標, 「古老的傳說記事本v1.2」)
_啟動窗口.可視 = 假
.如果真結束
.計次循環尾 ()
返回 (假)
.子程序 __啟動窗口_托盤事件, , , 透明顯示_啟動窗口
.參數 操作類型, 整數型
.局部變數 變數1, 整數型
.如果真 (操作類型 = 1)
_啟動窗口.可視 = 真
.計次循環首 (255, 變數1)
設置窗口透明度 (_啟動窗口.取窗口句柄 (), 變數1)
.計次循環尾 ()
.如果真結束
.如果真 (操作類型 = 3)
彈出菜單 (圖標菜單, 取滑鼠水平位置 (), 取滑鼠垂直位置 ())
.如果真結束
.子程序 __啟動窗口_將被銷毀, , , 銷毀任務欄圖標
置托盤圖標 ({ }, )
.子程序 _打開傳說記事本_被選擇, , , _啟動窗口.可視=真
__啟動窗口_托盤事件 (1)
.子程序 _銷毀_被選擇, , , 銷毀軟體
銷毀 ()
.子程序 _超級編輯框1_按下某鍵, 邏輯型, , 正在打字中...
.參數 鍵代碼, 整數型
.參數 功能鍵狀態, 整數型
當前是否正在打字 = 真
按鈕1.標題 = 「正在打字中...」
時鍾1.時鍾周期 = 800
返回 (真)
.子程序 _超級編輯框1_放開某鍵, 邏輯型, , 暫停打字中...
.參數 鍵代碼, 整數型
.參數 功能鍵狀態, 整數型
當前是否正在打字 = 假
返回 (真)
.子程序 _時鍾1_周期事件, , , 暫停打字中...
.如果真 (當前是否正在打字 = 假)
按鈕1.標題 = 「暫停打字中...」
.如果真結束
.子程序 _超級編輯框1_選擇區被改變, , , 超級編輯框1.滾動
超級編輯框1.滾動 (1)
Ⅲ 一簡單的易語言記憶上次操作的問題(附源碼)
點擊按鈕是寫入配置項,打開程序時再讀取配置項,根據配置設置就可以
Ⅳ C語言源代碼是什麼
數字版「拼圖」游戲C源代碼:
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
int i, j, r, k; //i、j、r用於循環, k存放隨機數值
int m, n; // m、n是當前空位的下標, t標記排序是否成功
int a[4][4]; //存儲4×4共16個數字的數組
void show(void); //輸出數組表格
void csh(void); //初始化界面
int yes(void); //判斷排序是否成功
void up(void); //數字向上移動到空位(空位則下移)
void down(void); //數字向下移
void left(void); //數字向左移
void rght(void); //數字向右移
void inkey(void); //按鍵操作
void gtxy(int x, int y) ; //控制游標移動的函數
int main(void)
{ while(1)
{csh( );
while(1)
{ inkey();
show();
if ( yes( ) )
{gtxy(6,12); printf("你成功了! 再來一局y/n?"); break;}
}
if(getch( )== ʹnʹ)break;
}
return 0;
}
void csh(void)
{r=0;
CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下兩行是隱藏游標的設置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
for(i=0;i<4;i++) //給數組a依序賦值
for(j=0;j<4;j++)
{ if (i==3 && j==3) a[i][j]=0;
else a[i][j]=1+r++;
}
a[3][3]=a[1][1]; a[1][1]=0; //把a[3][3]與a[1][1]的值交換一下
m=1; n=1;
srand((unsigned)time(0)); //初始化隨機數發生器
for(r=0;r<500;r++) //將數組各值打亂
{k=rand( )%(4); //取0-3隨機數,分別代表上下左右四個方向
switch(k)
{ case 0: { up( );break; }
case 1: {down( );break; }
case 2: {left( );break; }
case 3: {rght( ); break; }
}
}
printf(" 數字拼圖");
printf(" ┌──────┬──────┬──────┬──────┐");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf("
└──────┴──────┴──────┴──────┘");
show( );
}
void show(void)
{for(i=0;i<4;i++)
for(j=0;j<4;j++) //gtxy(7*j+9, 2*i+4)是游標到指定位置輸出數字
{gtxy(7*j+9,2*i+4); if(a[i][j]==0)printf(" │");
else if(a[i][j]>9)printf(" %d │",a[i][j]);
else printf(" %d │",a[i][j]);
}
}
void inkey(void)
{ int key;
key=getch( );
switch(key)
{ case 72: { up( ); break;}
case 80: {down( ); break; }
case 75: {left( ); break; }
case 77: {rght( );break;}
}
}
void up(void)
{ if (m!=3) //移動時要考慮空位"0"是否已經在邊界
{ a[m][n]=a[m+1][n]; m++; a[m][n]=0; }
}
void down(void)
{ if (m!=0)
{a[m][n]=a[m-1][n]; m--; a[m][n]=0; }
}
void left(void)
{ if (n!=3)
{ a[m][n]=a[m][n+1]; n++; a[m][n]=0;}
}
void rght(void)
{ if (n!=0)
{ a[m][n]=a[m][n-1]; n--; a[m][n]=0; }
}
int yes(void)
{ r=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{ if (a[i][j]!=1+r++) return (r==16)?1:0; }
}
void gtxy(int x, int y) //控制游標移動的函數
{ COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
Ⅳ 求某個易語言記事本的源碼(圖)
易語亮前雀敬早言筆記悔激本源碼 http://nao.uueasy.com/read-htm-tid-63.html
Ⅵ c語言:原碼,反碼 補碼
1)原碼表示
原碼表示法是機器數的一種簡單的表示法。其符號位用0表示正號,用:表示負號,數值一般用二進制形式表示。設有一數為x,則原碼表示可記作[x]原。
例如,X1=
+1010110
X2=
一1001010
其原碼記作:
[X1]原=[+1010110]原=01010110
[X2]原=[-1001010]原=11001010
在原碼表示法中,對0有兩種表示形式:
[+0]原=00000000
[-0]
原=10000000
2)補碼表示
機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。設有一數X,則X的補碼表示記作[X]補。
例如,[X1]=+1010110
[X2]=
一1001010
[X1]原=01010110
[X1]補=01010110
即
[X1]原=[X1]補=01010110
[X2]
原=
11001010
[X2]
補=10110101+1=10110110
機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。設有一數X,則X的補碼表示記作[X]補。
例如,[X1]=+1010110
[X2]=
一1001010
[X1]原=01010110
[X1]補=01010110
即
[X1]原=[X1]補=01010110
[X2]
原=
11001010
[X2]
補=10110101+1=10110110
(3)反碼表示法
機器數的反碼可由原碼得到。如果機器數是正數,則該機器數的反碼與原碼一樣;如果機器數是負數,則該機器數的反碼是對它的原碼(符號位除外)各位取反而得到的。設有一數X,則X的反碼表示記作[X]反。
例如:X1=
+1010110
X2=
一1001010
[X1]原=01010110
[X1]反=[X1]原=01010110
[X2]原=11001010
[X2]反=10110101
反碼通常作為求補過程的中間形式,即在一個負數的反碼的未位上加1,就得到了該負數的補碼。
例1.
已知[X]原=10011010,求[X]補。
分析如下:
由[X]原求[X]補的原則是:若機器數為正數,則[X]原=[X]補;若機器數為負數,則該機器數的補碼可對它的原碼(符號位除外)所有位求反,再在未位加1而得到。現給定的機器數為負數,故有[X]補=[X]原十1,即
[X]原=10011010
[X]反=11100101+1
[X]補=11100110
例2.
已知[X]補=11100110,求[X]原。
分析如下:
對於機器數為正數,則[X]原=[X]補
對於機器數為負數,則有[X]原=[[X]補]補
現給定的為負數,故有:
[X]補=11100110
[[X]補]反=10011001+1
[[X]補]補=10011010=[X]原+1
[[X]補]補=10011010=[X]原
總結一下,原碼(為負時,正時都不變)全部取反即得到反碼,反碼加
"1"就得到補碼了,就是這么簡單。
Ⅶ 易語言編寫鍵盤記錄器 源碼 說的詳細點
.版本2
.程序集窗口程序集1
.子程序__啟動窗口_創建完畢
SkinH_Attach()
編輯框1.禁止=真
停止按鈕.禁止=真
信息框(「歡迎使用小天鍵盤記錄系統,在關閉此記錄系統後,會自動保存記錄的內容到運行目錄!」,#信息圖標,「歡迎使用!」)
.子程序_停止按鈕_被單擊
開始按鈕.禁止=假
編輯框1.禁止=真
時鍾1.時鍾周期=0
停止按鈕.禁止=真
.子程序_開始按鈕_被單擊
開始按鈕.禁止=真
編輯框1.禁止=假
時鍾1.時鍾周期=50
停止按鈕.禁止=假
.子程序_時鍾1_周期事件
編輯框1.加入文本(看看按鍵())
.子程序_按鈕1_被單擊
編輯框1.內容=「」
.子程序__啟動窗口_可否被關閉,邏輯型
寫到文件(取運行目錄()+「記錄內容.txt」,到位元組集(編輯框1.內容))
銷毀()
.子程序_按鈕2_被單擊
刪除文件(取運行目錄()+「記錄內容.txt」)
Ⅷ 學易語言記不住源碼格式怎麼辦 老是寫了幾次會了以後,過幾天又忘記了,請各位英雄給友招了,感激不盡啊!
從頭開始,當我學習易語言時候,才發現基本的語法,我就這么叫,叫法肯訂是不對了,但也記不住叫什麼了,網上找教程,有圖文的,視頻的,找來找去,發現有世恆教程,和世寶教程,這2個人都是視頻的,唯一的差(ge4 ren2 dou1 shi4 shi4 pin2 de0 _wei2 yi1 de0 cha1)別是,世寶教程是免費的,世恆教程需要花錢買才可以看,網上找了下試看版第一集和第二集,又下載了世寶教程的第一季,綜合的比較了下,2個人講的還是有一些差別的,給我的感覺是,圖文教程沒有視頻聲音教程好,這誰都知道,看了幾天,還是顫散發現世寶的教程我能看懂,(wo3 neng2 kan4 dong3 _)也能學懂,訂下來跟著世寶的教程學習吧。
當看完前4段視頻(an4 shi4 pin2),確實發現我的確學到了知識,確實通俗易懂,每天就這么學吧,當講到常式的時候,自己暫停視頻,啟動易語言,跟著學,也不知道啥時候能學到數組了,
學完前6段視頻時候,將以前的VB打開,VB我還沒操作過呢,只是安裝上看了下這個VB編程的平台和界面,因為我學了段世寶的教程,最最最最簡單的操作還是會的,在VB上操作,還弄個最簡單的,畫個編輯框,畫個按鈕,還別說,用世寶學到的知識,我在VB上也操作成功了,易語言的格式是我想按下按鈕就能在編輯框上輸出文字,我在VB上也會了,哈哈,易語言(yi4 yu3 yan2)格式是雙擊按鈕到編輯代碼的界面輸入(編輯框1.內容 = 「我愛你中國」),點擊啟動按鈕,此時點擊操作框上的按鈕,我愛你中國就在編輯框1上顯示了,這個(編輯框1.內容 = 「我愛你中國」)的意思是什麼呢,最最簡單也是最能理解,自己就應該這樣想的,當我按下按鈕的時候,在編輯框1的內容上輸出 我愛你中國 。那麼VB也是這樣么,我在VB上是這么寫的,(Text1.Text = "我愛你中國")其實VB上這句話的意思,和易語言的意思一樣,可以這么(de0 yi4 si1 yi1 yang4 _ke3 yi3 zhe4 me0)理解,當點擊 Command1 後,讓Text1的Text變成我愛你中國,(bian cheng wo ai ni zhong guo _)Text1就等於易語言的編輯框1,Text就等於易語言的 內容,真是差不多,唯一的區別,就是代碼界面VB是英文的,易語言是中文的,這里不想哪個編程是最強大的,這個不管,我就需要一個可以入門的可以看懂的編程語言平台就行了,門都沒進去,何談其他的了,當然如果誰的英文好,還是從VB開始學就行了,看來VB英文的編程和易語言,還是差不多的,估計易語言學的差不多,再轉到VB上,可能也行吧,暫時這么理解的,每一個階段想法都不一樣,總之現在是這么想的,關閉VB,回到易語言教程,繼續學習。 (本文章來自-IT信息網-網址-www.to3800.com)
還是回到世寶的教程上來,我對自己說個題外話,謝謝世寶,出這么好的教程,正適合我這什麼都不懂的菜菜鳥,真的很不錯,前6段視頻,是講解的最最基本的東西,想網更深處學習,都離不開前面6段所講的,就像世寶老師說的那樣,網上有很多現成的代碼,自己看和自己寫出來是完全不同的概埝,理解也完全的不同,自己總結了下前6段,包括,如果的是用,逗戚流程式控制茄指氏制方面的,計次鱘環首,判斷鱘環首,鱘環判斷首,且和或,到鱘環尾,跳出鱘環,上面這些是必須要非常熟練的掌握,我為什麼這么說呢,前6段看完之後,只會用了,印象也(an kan wan hou _ hui yong le _yin xiang ye)不是那麼深刻,當往下繼續看的時候,發現程序裡面是有以上的命令所組成,哪個不熟練,就吃力,還是停下來,不往下看了,繼續回到原先開始階段,重新看,認真學,因為印象不是那麼的深刻,第2遍看完後可以往下繼續跟著老師學習了,當講到第一季12段視頻的時候,數組這個我頭大的東西出現了,當看完後,感覺回到按鍵精靈那時候,不知道再從哪裡繼續學相比較,看老師的數組教程眼前(yan qian)一亮,啊,我能看懂了,的確是一個收獲啊,數組有的地方還是不太怎麼太懂,也就是說,不是那麼完全的明白,還是老規矩,暫停,回頭繼續學習,目前,教程只看到數組這里,寫了這么多的感觸吧。
總結,發現只要世寶老師的易語言第一季教程你能完全的吃透,學明白,那麼其他的編程語言,是完全可以經過短暫的時間過渡到上面的,而不會像才開始那樣,看英文完全不懂了,我在繼續學呢,估計吧,數組我們完全的吃透原理之後,對我的知識又是一次質的提高,有人會說,數組這么簡單怎麼都不會呢,我本人就是太笨了,腦子反應慢,學東西太慢,沒辦法,不說了,先寫到這里吧,希望我能早日知識再次提高吧!
過段時間再回來寫我所想的,每(guo4 an4 shi2 jian1 zai4 hui2 lai2 xie3 wo3 suo3 xiang3 de0 _mei3)個階段想的都不一樣了
(本文章來自-IT信息網-網址-www.to3800.com)
Ⅸ c語言的源代碼寫在哪 記事本上嗎
呵呵,自己喜歡寫在哪就姿族培哪了,只是C語言代碼的源程序是以.c為後綴名,如果你寫在記事本上,然後改下後綴穗好名在編譯器上也跡唯可以運行的。但是我們一般寫代碼都是在應用軟體上寫的,例如VC,這些軟體如果有編輯器和編譯器,你寫完的時候保存的話會有默認後綴名的,例如你建立了一個C++文件就保存的文件為.cpp。
Ⅹ 源碼是什麼怎麼使用
一、源碼是什麼:
源碼就是指編寫的最原始程序的代碼。運行的軟體是要經過編寫的,程序員編寫程序的過程中需要他們的"語言"。音樂家用五線譜和音符,建築師用圖紙和筆,那程序員的工作的語言就是"源碼"了。
人們平時使用軟體時就是程序把"源碼"翻譯成我拆螞敗們可直觀的形式表現出來供我們使用的。任何一個網站頁面,換成源碼就是一堆按一定格式書寫的文字和符號旅顫,但我們的瀏覽器幫我們翻譯成眼前的模樣了。
二、源碼怎麼使用:
可以用記事本打開的好多行英文的,用編程語言寫好的軟體源程序經過編譯成目標程序,才能運行。一般目標程序不能再修改了。電腦上安裝的軟體都是目標程序。源程序不可能直接運行的。提倡軟體開源的人士認為應該提供源程序給用戶,讓用戶自己修改,有利於軟體行業的發展。
知識擴展:
源代碼主要有以下2種作用:
1、生成目標代碼,即計算機可以識別的代碼。
2、對軟體進行說明,即對軟體的編寫進行說明。為數不少的初學者,甚至少數有經驗的程序員都物絕忽視軟體說明的編寫,因為這部分雖然不會在生成的程序中直接顯示,也不參與編譯。但是說明對軟體的學習、分享、維護和軟體復用都有巨大的好處。