編程貓剛開始學習時候總是手動使用添加模塊的功能制作一些簡單的模型,其實我們可以通過一個代碼完成基本模型的搭建,這樣就省去了很多不必要的步驟,而且讓我們的效率提高的同時更加具有趣味性。
工具/原料電腦
編程貓
方法/步驟1、打開編程貓界面,首先我們可以選擇主界面上的事件選項,選擇事件中的當按下A按鈕,如圖所示,選中之后積木模塊就出現(xiàn)在編程界面上,選中之后按住鼠標左鍵拖到相應的位置。
2、保險期間我們最好把按下切換成放開,因為按鍵有抖動現(xiàn)象,如果選擇放開可能放置物品時會出錯。然后把后面的字母改成L。點擊a后面的三角,選擇彈出界面的l字母。
3、再選中建造選項,選擇建造中的在焦點上放置方塊。拖動到編碼位置。可以就將內(nèi)部的定義方塊拖出來,到最左側(cè)的回收站刪除,選擇物品中的字母方塊來代替原來默認的方塊。
4、選擇字母方塊后邊的倒三角可以選擇顯示的字母A_-Z,選擇好之后將第一個模塊和第二個模塊連接,實現(xiàn)第一個效果,當放下按鍵L的時候,就會在你定位的焦點上建造一個字母L的模型。可以自己試一下效果。
5、然后繼續(xù)進行第二個字母的編程,我們需要實現(xiàn)love單詞的擺放,右鍵點擊剛才制作好的編碼,選擇復制并粘貼,粘貼的積木塊,更改控制的按鍵和顯示的字母,完成第二個字母的擺放,同理可以完成V,E字母的擺放。
6、全部完成之后,點擊運行,定位焦點按下按鍵L,然后將焦點定位到L右側(cè),按下按鍵O,同理移動焦點位置分別按下V,E。就會出現(xiàn)如圖所示效果,建造了一個LOVE顯示。也可以設置成一鍵完成整個操作。
7、修改一下對應的代碼,使用定位點,將定位點設置為焦點位置,然后將定位點一直往右移一位,這樣只要點擊按鍵L,就會一次生成love圖案。還是比較方便的。這樣生成的圖案在平面上,沒有凸出來,可以再加上一句將定位點上移一個單位。這樣就實現(xiàn)了一開始想要達到的效果。
1、雙擊打開Visual Studio 2013軟件,如下圖所示,打開之后,映入眼簾的首先是Start Page頁面,建議大家盡量用英文版,依次點擊File-New-Project,選擇Win32,Win32 Console Application。
2、下面打開了一個新的窗口,窗口顯示W(wǎng)in32 Application Wizzards,這是一個創(chuàng)建項目導航,直接點擊下一步吧親。然后再進入下一個窗口,點擊Finish。
3、這樣就打開了一個C語言程序編程界面,先寫入如下代碼,如圖所示;先是寫出預處理命令,用于包含頭文件。頭文件中包括了系統(tǒng)或者其他庫已經(jīng)寫好的接口。這里寫的是標準輸入輸出庫的頭文件。
4、再寫出主函數(shù),再按Ctrl+F5就可以得出編譯結(jié)果,如下圖所示,可以在Hello World后加入\n換行命令。
5、可以對程序再做進一步的調(diào)整,點擊Tools-Options,彈出如下對話框,在對話框中可以對環(huán)境做出一些調(diào)整,點擊Font & Colors,可以調(diào)整字體和顏色。大家可以根據(jù)個人的喜好,做出一些調(diào)整。
6、可以調(diào)整字體大小進行比較,比如現(xiàn)在將字體大小(size)調(diào)整為20,可以通過以下兩張圖進行對比,可以看出字體大小已經(jīng)發(fā)生了改變,大家可以將字體調(diào)大以便看的更清楚喔。
我們使用C語言編寫出一個C程序后,往往需要從外部的輸入設備獲取數(shù)據(jù),比如從鍵盤鍵入一串字符;再把處理好的數(shù)據(jù)在輸出設備上顯示出來,比如在顯示器上輸出。為了做到這一點,僅僅憑借C語言自身那點語法是做不到的,于是就有牛人或者組織編寫了一套用于C程序的IO函數(shù)庫,例如ANSI就規(guī)定了一套IO函數(shù)庫,也就是標準的C語言IO函數(shù)庫。這套IO函數(shù)包含了四個常見的IO函數(shù),分別是getchar、scanf、putchar、printf。嗯,四大神器!下面分別介紹下這四個C程序中常用的IO函數(shù)。
1、實例代碼先上C語言編寫的一個C程序代碼,如下圖:
這里留個疑問點,如果我把第14行去掉,你認為會有什么問題?
很簡單的一段C程序,運行結(jié)果如下:
2、getchar函數(shù)這個函數(shù)的基本功能是從緩沖區(qū)中每次讀入一個字符。就像上面C程序運行結(jié)果顯示的那樣,我輸入了“abc”三個字符,getchar函數(shù)就一個一個地讀入,并且賦值給字符變量。用法不難。
3、putchar函數(shù)這個函數(shù)與getchar函數(shù)往往匹配使用,它的基本功能是把字符一個一個地送到緩沖區(qū)。上面C程序中g(shù)etchar函數(shù)依次讀入了三個字符,那么putchar函數(shù)就把這三個字符依次送出去。
注意:
上面提到了緩沖區(qū)的概念。在C語言編程中經(jīng)常會用到緩沖區(qū),一定要很好的理解它。
getchar函數(shù)與putchar函數(shù)經(jīng)常需要匹配使用,可以用來實現(xiàn)很多的小功能。例如,可以寫個C程序組合它們實現(xiàn)回顯功能、簡單的文件拷貝功能、甚至一些小游戲等。
4、scanf函數(shù)這個函數(shù)估計是用的最多的輸入函數(shù)了,它可以從緩沖區(qū)中讀入數(shù)字、字符等,就像上述C程序運行的結(jié)果一樣。不過使用scanf函數(shù)有一個點要注意,就是scanf函數(shù)會跳過空白符,如果與getchar函數(shù)結(jié)合使用處理的不好,可能會給你挖一個大坑!比如說scanf函數(shù)讀取完緩沖區(qū)數(shù)據(jù)后留下一個回車符,如果getchar函數(shù)不吸收這個回車符,那么整個C程序的運行走向會出乎你的意料!
5、printf函數(shù)這個與scanf函數(shù)一樣,是C程序中的輸出法寶。它負責將數(shù)字、字符等處理好的數(shù)據(jù)輸出到緩沖區(qū)。
上述四個IO函數(shù)是C程序中經(jīng)常會用到的四個函數(shù),所以一定要學好它們,也算是基本功了。
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct scorenode)
#define DEBUG
#include <string.h>
struct scorenode
{int number;/*學號*/
char name[10];/*姓名*/
float yuwen;/*語文成績*/
float yingyu;/*英語成績*/
float shuxue;/*數(shù)學成績 */
struct scorenode *next;
};
typedef struct scorenode score;
int n,k;/*n,k為全局變量,本程序中的函數(shù)均可以使用它*/
/*==============================================================================================*/
score *creat2311(void)
/*函數(shù)creat2311,功能:創(chuàng)建鏈表,此函數(shù)帶回一個指向鏈表頭的指針*/
{
score*head;
score *p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
n=0;
p1=p2=p3=(score *)malloc(LEN);head=p3; /*開辟一個新單元*/
printf("請輸入學生資料,輸0退出!\n");
repeat1: printf("請輸入學生學號(學號應大于0):");/*輸入學號,學號應大于0*/
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&p1->number);}
/*輸入學號為字符或小于0時,程序報錯,提示重新輸入學號*/
if(p1->number==0)
goto end;/*當輸入的學號為0時,轉(zhuǎn)到末尾,結(jié)束創(chuàng)建鏈表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat1;
/*當輸入的學號已經(jīng)存在,程序報錯,返回前面重新輸入*/
}
}
}
}
printf("請輸入學生姓名:");
scanf("%s",&p1->name);/*輸入學生姓名*/
printf("請輸入語文成績(0~100):");/*輸入語文成績,成績應在0-100*/
scanf("%f",&p1->yuwen);
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("輸入錯誤,請重新輸入語文成績");/*輸入錯誤,重新輸入語文成績直到正確為止*/
scanf("%f",&p1->yuwen);}
printf("請輸入英語成績(0~100):");/*輸入英語成績,成績應在0-100*/
scanf("%f",&p1->yingyu);
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");/*輸入錯誤,重新輸入英語成績直到正確為止*/
scanf("%f",&p1->yingyu);}
printf("請輸入數(shù)學成績(0~100):");/*輸入數(shù)學成績,成績應在0-100*/
scanf("%f",&p1->shuxue);
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("輸入錯誤,請重新輸入數(shù)學成績");
scanf("%f",&p1->shuxue);}/*輸入錯誤,重新輸入數(shù)學成績直到正確為止*/
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}/*當原來鏈表為空時,從首結(jié)點開始存放資料*/
else/*原來鏈表不為空*/
{
if(p1->next==NULL)/*找到原來鏈表的末尾*/
{
p1->next=p0;
p0->next=NULL;/*將它與新開單元相連接*/
}
else
{
while(p1->next!=NULL)/*還沒找到末尾,繼續(xù)找*/
{
p2=p1;p1=p1->next;
}
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;
p1=head;
p0=stu;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交換前后結(jié)點中的學號值,使得學號大者移到后面的結(jié)點中*/
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交換前后結(jié)點中的姓名,使之與學號相匹配*/
fen=max->yuwen;
max->yuwen=p1->yuwen;
p1->yuwen=fen;
/*交換前后結(jié)點中的語文成績,使之與學號相匹配*/
fen=max->yingyu;
max->yingyu=p1->yingyu;
p1->yingyu=fen;
/*交換前后結(jié)點中的英語成績,使之與學號相匹配*/
fen=max->shuxue;
max->shuxue=p1->shuxue;
p1->shuxue=fen;
/*交換前后結(jié)點中的數(shù)學成績,使之與學號相匹配*/
}
}
max=head;p1=head;/*重新使max,p指向鏈表頭*/
} end2:
printf("現(xiàn)在的學生數(shù)為:%d個!\n",n);
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score *search2311(score *head)
/*函數(shù)search2311,功能:查詢學生成績*/
{int number;
score *p1,*p2;
printf("輸入要查詢的學生的學號,");
scanf("%d",&number);
while(number!=0)
{
if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}
printf("-----------------------------------------\n");
printf("|學號\t|姓名\t|語文\t|英語\t|數(shù)學\t|\n");
printf("-----------------------------------------\n");/*打印表格域*/
p1=head;
while(number!=p1->number&&p1->next!=NULL)
{p2=p1;p1=p1->next;}
if(number==p1->number)
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
printf("-----------------------------------------\n");}/*打印表格域*/
else
printf("%d不存在此學生!\n",number);
printf("輸入要查詢的學生的學號,");
scanf("%d",&number);
}
printf("已經(jīng)退出了!\n");
return(head);}