A. c語言編寫指法練習程序
#include<string.h>
#include<alloc.h>
#include<dos.h>
#define SIZE 30
win()
{
clrscr();
gotoxy(20,2);printf("*------------------------------*");
gotoxy(20,3);printf("* Fingering Training System *");
gotoxy(20,4);printf("* Designed By PrOve *");
gotoxy(20,5);printf("* 2005-09-06 *");
gotoxy(20,6);printf("*------------------------------*");
gotoxy(16,7);printf("...Press any key to entry the System...");
getch();
clrscr();
gotoxy(5,2);printf("Input original text:\n");
gotoxy(5,22);printf("------------------------------------------------------");
gotoxy(5,23);printf(" CorrectRate:%");
gotoxy(33,23);printf("Speed: w/s");
}
main()
{
char o1[150],o2[SIZE],o3[SIZE],o4[SIZE];/*每一行原文,最多150字元*/
char i1[150],i2[SIZE],i3[SIZE],i4[SIZE];/*每一行輸入*/
int i;
long error = 0,correct = 0;
float crate;
double speed;
double ti;
char flag;
struct time t1,t2;
start:win();
gotoxy(5,4);printf("------------------------------------------------------");
gotoxy(5,3);gets(o1);
gotoxy(5,6);printf("------------------------------------------------------");
gotoxy(5,5);gets(o2);strcat(o1,o2);
gotoxy(5,8);printf("------------------------------------------------------");
gotoxy(5,7);gets(o3);strcat(o1,o3);
gotoxy(5,10);printf("------------------------------------------------------");
gotoxy(5,9);gets(o4);strcat(o1,o4);
gotoxy(5,11);printf("Start Now!\n");
gotoxy(5,13);printf("------------------------------------------------------");
gettime(&t1); /*計時開始*/
gotoxy(5,12);gets(i1);
gotoxy(5,15);printf("------------------------------------------------------");
gotoxy(5,14);gets(i2);strcat(i1,i2);
gotoxy(5,17);printf("------------------------------------------------------");
gotoxy(5,16);gets(i3);strcat(i1,i3);
gotoxy(5,19);printf("------------------------------------------------------");
gotoxy(5,18);gets(i4);strcat(i1,i4);
gettime(&t2);/*計時結束*/
for(i = 0;i <strlen(o1);i++)
{
if(o1[i] != i1[i])
error++;
else
correct++;
}
crate =(float) correct / (float)strlen(i1) * 100;
ti = (double)((t2.ti_hour * 3600 + t2.ti_min * 60 + t2.ti_sec ) - (t1.ti_hour * 3600 + t1.ti_min * 60 + t1.ti_sec ));
speed = (double)strlen(i1) / (double)ti;
gotoxy(20,23);printf("%f",crate);
gotoxy(40,23);printf("%lf",speed);
gotoxy(5,20);printf("Continue or Not(Y/N) ?");
flag = getch();
if(flag == 'y' || flag == 'Y')
goto start;
else
{
clrscr();
gotoxy(26,7);printf("Welcome to use!");
gotoxy(19,8);printf("...Press any key to exit...");
getch();
exit(1);
}
getch();
}
B. 求~正規C語言打字指法 在線等
寫C語言程序你能一直保持50-60的速度打字還真是牛了,打字的時間和想的時間比起來不算什麼。。。打字那麼快乾什麼。。。指法和一般打字沒有什麼區別的,你寫程度多了打字就自然快了。
另外,printf();"" 的打法不是為了快,而是為了不出錯。
F和J是兩個食指的位置,剩下的手指順序放在相鄰的鍵位上,每個手指管自己一列的鍵,中間和兩邊還剩下一些鍵,所以食指和小指管的多一些,中間的幾個鍵像HYU67哪個手方便就用那個手
C. 指法練習程序C語言作業,求幫助,程序對了,分都給你
理論不應該幫你做作業..不過我現在比較閑,寫了個比較簡單的代碼,如果需要從文件寫入系統需要的文字,請自行修改...
還是希望你能自己完成作業..
//start
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
//修改系統顯示的字元串,請在此處修改
char DisplayChar[] = "this is test string!";
int RightNum = 0;
int WrongNum = 0;
int OriginLen;
int InputLen;
float AccuracyRate;
char InputChar[1024];
OriginLen = strlen(DisplayChar);
printf("Please enter the characters on the screen:\n");
printf("%s\n",DisplayChar);
//輸入字元串
gets(InputChar);
InputLen = strlen(InputChar);
InputChar[1023] = 0;
//循環判定程序是否正確
while (InputChar[RightNum+WrongNum] != 0)
{
//當正確字元和錯誤字元數大於系統輸出字元長度時,後面的都是錯誤的,不需要再驗證
if ( (RightNum + WrongNum) > OriginLen)
{
break;
}
if ( InputChar[RightNum+WrongNum] != DisplayChar[RightNum+WrongNum])
{
WrongNum++;
}
else
{
RightNum++;
}
}
//處理為 正確率 = 正確字元數/系統輸出或輸入的最長字元串
if (OriginLen >= InputLen)
{
AccuracyRate = (float)(RightNum*100)/OriginLen;
}
else
{
AccuracyRate = (float)(RightNum*100)/InputLen;
}
if ( (int)AccuracyRate == 100)
{
printf("Congratulation! Accuracy Rate is 100%%\n");
}
else
{
printf("Continue to work hard, come on!\nAccuracy Rate is %3.2f%%\n",AccuracyRate);
}
return 0;
}
D. C語言怎樣敲代碼敲的快啊,我看視頻上都敲的那麼快
你必須要對鍵盤很熟悉,敲得快的,首先你要回盲打,其次,你要對代碼很熟。自己本身對代碼不熟,一邊敲一邊還要看書上代碼是什麼評的,能快才怪呢。這些都是慢慢練過來的,我當初就是上C語言課的時候,開始盲打,不然上課跟不上老師的節奏。自己課後多練練吧!
E. C語言編程:指法練習程序
可以只是說說思路嗎?
思路還是比較簡單的 隨機讀取 用隨機數 設置文件的讀取指針
判斷錯誤 我認為一個比較簡單的實現思路是 每輸入一個字元 判斷一次
可以用一個緩存區 存放 隨機選取的字元 然後 每匹配一個後 對這個進行移出緩存區的操作
也可以用一個int 類型作指針 指示 應對比的字母的位置
F. C語言題指法練習游戲 功能要求:隨機生成並顯示一個單詞(一個字元串),然後讀
#include"stdio.h"
#include"stdlib.h"
int n,i;
int main(){
n=rand()%100;
for(i=1;i<=n;i++)
printf("%c",rand()%26+97);
printf("\n");
return 0;
}
比較簡陋,不能實現絕對隨機......
可以根據個人需要自己改......
G. C語言指法練習程序
//HanZi.cpp:.//
#include"stdafx.h"
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#include"string.h"
/*
從鍵盤獲得漢字的編碼
在中文windows下,默認編碼方式為GB2312,每個漢字由兩個位元組組成。
函數的目的是:把這個漢字的高位元組寫入pc1指向的位置,低位元組寫入pc2指向的位置
*/
intget_han_zi(unsignedchar*pc1,unsignedchar*pc2)
{
charbuf[100];
printf(" 請輸入一個漢字:");
gets(buf);
if(strlen(buf)!=2)return-1;
*pc1=buf[0];
*pc2=buf[1];
if(*pc1<0xa1)return-2;
if(*pc2<0xa1)return-2;
return0;}
/*
從文件(字形文件HZK16)把字形裝入到一個32位元組的緩沖區buf中。
c1是該漢字GB2312編碼的高位元組,c2是低位元組。
每個bit代表1個像素點,16點陣的字模需要256個像素點信息,故需32位元組
位元組的排列與16點陣像素的對應關系如下圖:
第0位元組第1位元組
第2位元組第3位元組
.......
第14位元組第15位元組
也就是說:每1行的16個點由2個位元組提供。順序是:從上到下,從左到右。
GB2312的編碼規則是:前一個位元組表示區號,後一個表示區中的偏移序號。
每個區有94個漢字。區號和序號的編碼都是從0xA1開始(為了避免和西文沖突)
因此,已知某個漢字的編碼,就可以計算出文件中所在的絕對位置。
*/
voidload_han_zi(unsignedchar*buf,unsignedcharc1,unsignedcharc2)
{
intn=(c1-0xa1)*94+(c2-0xa1);//計算在文件中的位置
FILE*fp=fopen("HZK16.DAT","rb");
if(fp==NULL){
printf("漢字型檔打開錯!");
exit(1);
}
fseek(fp,n*32L,SEEK_SET);
for(inti=0;i<32;i++){
buf[i]=(unsignedchar)fgetc(fp);
}
fclose(fp);}
/*
顯示漢字
buf:從文件中讀出的漢字字模信息,32位元組,說明同上
italic:=1,如果要求斜體,=0正常
kx:水平放大率
ky:垂直放大率
fill:用於填充的字元
*/
voidshow_han_zi(unsignedchar*buf,intitalic,intkx,intky,charfill)
{
for(inti=0;i<16;i++){
for(intk1=0;k1<ky;k1++){
printf(" ");
if(italic){
for(intk3=0;k3<15-i;k3++)
printf("");
}
for(intj=0;j<16;j++){
if(buf[i*2+(j/8)]&(0x80>>(j%8)))
for(intk2=0;k2<kx;k2++)
printf("%c",fill);
else
for(intk2=0;k2<kx;k2++)
printf("");
}
}
}
}
voidwrite_to_file(unsignedchar*buf,intitalic,intkx,intky,charfill)
{
FILE*fp=fopen("a.txt","w");
for(inti=0;i<16;i++){
for(intk1=0;k1<ky;k1++){
fputc(' ',fp);
if(italic){
for(intk3=0;k3<15-i;k3++)
fputc('',fp);
}
for(intj=0;j<16;j++){
if(buf[i*2+(j/8)]&(0x80>>(j%8)))
for(intk2=0;k2<kx;k2++)
fputc(fill,fp);
else
for(intk2=0;k2<kx;k2++)
fputc('',fp);
}
}
}
fclose(fp);}
intset_zoom_k(int*pk)
{
printf("請輸入放大率(1-4):");
charbuf[100];
gets(buf);
intn=atoi(buf);
if(n<1||n>4)return-1;
*pk=n;
return0;
}
charget_fill_char()
{
for(;;){
printf("請輸入用於填充的字元");
charc=getch();
if(c>32&&c<125)returnc;
}
}
intmain(intargc,char*argv[])
{
unsignedcharhan_zi_buf[32]; //存儲16點陣漢字的字模
intfont_italic=0;
intfont_kx=1; //水平放大率
intfont_ky=1; //垂直放大率
charfill_char='@'; //填充字元
for(;;){
printf(" ---------------- ");
printf("1.輸入一個漢字 ");
printf("2.切換斜體 ");
printf("3.設置水平放大 ");
printf("4.設置垂直放大 ");
printf("5.設置填充字元 ");
printf("6.輸出到文件a.txt ");
printf("7.退出 ");
printf("---------------- ");
printf("請選擇相應的數字 "); charc=(char)getch();
switch(c){
case'1':
{
unsignedcharc1;
unsignedcharc2;
if(get_han_zi(&c1,&c2)!=0)
printf(" 輸入無效! ");
else{
load_han_zi(han_zi_buf,c1,c2);
show_han_zi(han_zi_buf,font_italic,font_kx,font_ky,fill_char);
}
}
break;
case'2':
font_italic=(font_italic+1)%2;
show_han_zi(han_zi_buf,font_italic,font_kx,font_ky,fill_char);
break;
case'3':
if(set_zoom_k(&font_kx)!=0)
printf(" 輸入無效! ");
else
show_han_zi(han_zi_buf,font_italic,font_kx,font_ky,fill_char);
break;
case'4':
if(set_zoom_k(&font_ky)!=0)
printf(" 輸入無效! ");
else
show_han_zi(han_zi_buf,font_italic,font_kx,font_ky,fill_char);
break;
case'5':
fill_char=get_fill_char();
show_han_zi(han_zi_buf,font_italic,font_kx,font_ky,fill_char);
break;
case'6':
write_to_file(han_zi_buf,font_italic,font_kx,font_ky,fill_char);
break;
case'7':
exit(0);
break;
default:
printf(" 您的選擇無效! ");
}
}
return0;
}
建立如此文件名HZK16.DAT
可以郵箱整套文件發給你
H. C語言程序編寫指法練習軟體
學MFC吧~~你的困惑一下子就會解除的~~~
用純C語言編帶界面的也不是不可能~~就是要用到WINDOWS API~~給你一段代碼試試吧~~是我做的一個OPENGL的程序~~~在VISUAL STUDIO.NET 2003下編譯通過~~代碼如下~~
#define WM_TOGGLEFULLSCREEN (WM_USER+1) // 定義全屏/窗口切換消息
#define TIMER1 101 // 定義時鍾代號,設置為101號
#define TITLE "5DG'S Color Shading" // 定義窗口標題
#define CLASSNAME "5DG_OPENGL" // 定義窗口類名
#define WIDTH 640 // 定義窗口寬度
#define HEIGHT 480 // 定義窗口高度
#define BPP 16 // 定義每象素的位數
#define NUM 200 // 定義繪制圓時用的頂點數(用頂點組成的線段逼近圓)
// 在此處引用程序要求的頭文件:
#include <windows.h> // Windows的頭文件
#include <gl\gl.h> // OpenGL32庫的頭文件
#include <gl\glu.h> // Glu32庫的頭文件
#include <math.h> // 數學函數庫的頭文件
// 在此處加入程序要求的庫到鏈接器中:
#pragma comment(lib, "opengl32.lib") // 鏈接時查找OpenGL32.lib
#pragma comment(lib, "glu32.lib") // 鏈接時查找glu32.lib
// 在此處定義與窗口相關的結構體:
typedef struct { // 定義處理鍵盤的結構體
BOOL keyDown [256]; // 存儲鍵盤按鍵狀態的數組
} Keys;
typedef struct { // 定義存儲應用程序實例的結構體
HINSTANCE hInstance; // 應用程序實例
const char* className; // 應用程序類名
} Application;
typedef struct { // 定義初始化窗口所需信息
Application* application; // 所屬的應用程序
char* title; // 窗口標題
int width; // 窗口寬度
int height; // 窗口高度
int bitsPerPixel; // 每像素的位數
BOOL isFullScreen; // 是否全屏
} GL_WindowInit;
typedef struct { // 定義窗口結構體
Keys* keys; // 鍵盤
HWND hWnd; // 窗口句柄
HDC hDC; // 設備描述表
HGLRC hRC; // 繪制描述表
GL_WindowInit init; // 提供Window初始化信息的結構體
} GL_Window;
// 此代碼模塊中包含的函數的前向聲明:
BOOL Initialize(GL_Window* window, Keys* keys); // 設置你繪制前的初始化值
void DrawSceneGL(void); // 在這里完成場景的繪制
void Update(void); // 在此處更新對消息的動作
void Deinitialize(void); // 在此處做退出前掃尾工作
// 在此處定義全局變數:
GL_Window* OGL_window; // 存儲窗口信息
Keys* OGL_keys; // 存儲按鍵信息
// 在此處定義用戶變數:
void ResizeWindowGL(int width, int height) // 重新設置窗口大小
{
glViewport(0, 0, (GLsizei)(width), (GLsizei)(height)); // 重置當前視口大小
glMatrixMode(GL_PROJECTION); // 切換到投影矩陣模式
glLoadIdentity(); // 重置投影矩陣
gluPerspective(45, (float)width/(float)height, 0.1, 100); // 設置透視投影
glMatrixMode(GL_MODELVIEW); // 切換到模型視圖矩陣
glLoadIdentity(); // 重置模型視圖矩陣
}
BOOL ChangeScreenResolution(int width, int height, int bitsPerPixel) // 修改屏幕解析度
{
DEVMODE dmScreenSettings; // 設備設置模式
ZeroMemory(&dmScreenSettings, sizeof(DEVMODE)); // 清空
dmScreenSettings.dmSize = sizeof(DEVMODE); // Devmode結構的大小
dmScreenSettings.dmPelsWidth = width; // 設置為屏幕寬度
dmScreenSettings.dmPelsHeight = height; // 設置為屏幕高度
dmScreenSettings.dmBitsPerPel = bitsPerPixel; // 設為指定位長;
dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
// 嘗試設置顯示模式並返回結果。注: CDS_FULLSCREEN 移去了狀態欄
if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
{
return FALSE; // 解析度修改失敗,返回 False
}
return TRUE; // 解析度修改成功,返回 True;
}
BOOL CreateWindowGL(GL_Window* window) // 建立OpenGL窗口
{
DWORD windowStyle = WS_OVERLAPPEDWINDOW; // 設置窗口樣式
DWORD windowExtendedStyle = WS_EX_APPWINDOW; // 設置窗口擴展樣式
PIXELFORMATDESCRIPTOR pfd = // 像素格式描述符(pfd)的設置
{
sizeof(PIXELFORMATDESCRIPTOR), // 像素的尺寸
1, // 版本號
PFD_DRAW_TO_WINDOW | // pfd必須支持窗口繪制
PFD_SUPPORT_OPENGL | // pfd必須支持OpenGL
PFD_DOUBLEBUFFER, // pfd必須支持雙緩存
PFD_TYPE_RGBA, // 像素格式為RGBA
window->init.bitsPerPixel, // 設置顏色深度
0, 0, 0, 0, 0, 0, // 忽略顏色位數
0, // 無Alpha緩存
0, // 忽略偏移位
0, // 無累積緩存
0, 0, 0, 0, // 忽略累積緩存位
16, // 深度緩存為16位
0, // 無模板緩存
0, // 無輔助緩存
PFD_MAIN_PLANE, // 主要繪制層
0, // 保留位
0, 0, 0 // 忽略層遮罩
};
RECT windowRect = {0, 0, window->init.width, window->init.height}; // 定義窗口大小
GLuint PixelFormat; // 保存像素格式
if (window->init.isFullScreen == TRUE) // 切換全屏
{
if (ChangeScreenResolution(window->init.width, window->init.height, window->init.bitsPerPixel) == FALSE)
{
// 全屏切換失敗
MessageBox(HWND_DESKTOP, "無法切換到全屏模式,在窗口模式下運行.\nMode Switch Failed,Running In Windowed Mode.", "Error", MB_OK | MB_ICONEXCLAMATION);
window->init.isFullScreen = FALSE; // 設置 isFullscreen 為False
}
else // 全屏切換成功
{
ShowCursor (FALSE); // 隱藏滑鼠
windowStyle = WS_POPUP; // 設置窗口樣式
windowExtendedStyle |= WS_EX_TOPMOST; // 設置窗口擴展樣式
}
}
else
{
// 調整窗口大小,包括窗口邊界
AdjustWindowRectEx(&windowRect, windowStyle, 0, windowExtendedStyle);
}
// 開始創建 OpenGL 窗口
window->hWnd = CreateWindowEx(windowExtendedStyle, // 窗口擴展樣式
window->init.application->className,// 應用程序類名
window->init.title, // 窗口標題
windowStyle, // 窗口樣式
0, 0, // 窗口的 X,Y 坐標位置
windowRect.right - windowRect.left, // 窗口寬度
windowRect.bottom - windowRect.top, // 窗口高度
HWND_DESKTOP, // 父窗口為桌面
0, // 無菜單
window->init.application->hInstance,// 傳入應用程序實例
window);
if (window->hWnd == 0) // 窗口是否成功創建
{
return FALSE; // 若失敗,則返回FALSE
}
window->hDC = GetDC(window->hWnd); // 取得當前窗口的設備描述表
if (window->hDC == 0) // 若未得到設備描述表
{
DestroyWindow(window->hWnd); // 銷毀該窗口
window->hWnd = 0; // 窗口句柄清零
return FALSE; // 返回FALSE
}
PixelFormat = ChoosePixelFormat(window->hDC, &pfd); // 選擇兼容的像素格式
if (PixelFormat == 0) // 若選擇失敗
{
ReleaseDC(window->hWnd, window->hDC); // 釋放設備描述表
window->hDC = 0; // 將設備描述表清零
DestroyWindow(window->hWnd); // 銷毀窗口
window->hWnd = 0; // 窗口句柄清零
return FALSE; // 返回FALSE
I. 在C語言中11種賦值運算符的具體含義,用法
1.六個變數=表達式的賦值:
=是賦值運算符,/=是除後賦值,*=是乘後賦值,
%=是取模後賦值,+=是加後賦值,-= 是減後賦值,
2.<<=是左移後賦值,變數<<=表達式 左移就是將左邊的數的二進制各位全部左移若干位,右邊的數指定移動位數,高位丟棄,低位補0, 移幾位就相當於乘以2的幾次方。
3.>>=是右移後,變數>>=表達式,右移運算符是用來將一個數的各二進制位右移若干位,移動的位數由右操作數指定(右操作數必須是非負值),移到右端的低位被舍棄,對於無符號數,高位補0。
對於有符號數,某些機器將對左邊空出的部分用符號位填補(即「算術移位」),而另一些機器則對左邊空出的部分用0填補(即「邏輯移位」);
對無符號數,右移時左邊高位移入0;對於有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。
如果符號位原來為1(即負數),則左邊移入0還是1,要取決於所用的計算機系統,系統移入0或系統移入1。
移入0的稱為「邏輯移位」,即簡單移位;移入1的稱為「算術移位」。
4.&= 按位與後,變數&=表達式,按位與是指:參加運算的兩個數據,按二進制位進行「與」運算。
如果兩個相應的二進制位都為1,則該位的結果值為1;否則為0。
5.^= 按位異或後賦值,變數^=表達式,參與運算的兩個量按照對應的位進行異或運算,且
0^0→0, 0^1→1, 1^0→1, 1^1→0
一個數與0異或仍保持不變,如a^0=a
一個數與自己異或結果為0,如a^a=0
11.|=是按位或後賦值,變數|=表達式,參與運算的兩個量按照對應位進行或運算,且0|0→0, 0|1→1, 1|0→1, 1|1→1。
(9)c語言中的指法擴展閱讀:
1.賦值表達式的功能是計算表達式的值再賦予左邊的變數。
賦值運算符具有右結合性,因此a=b=c=5可理解為a=(b=(c=5))。
2.在其它高級語言中賦值構成了一個語句,稱為賦值語句;
而在C語言中,
把「=」定義為運算符,從而組成賦值表達式。
3.凡是表達式可以出現的地方均可出現賦值表達式。
例如:式子x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a,b相加,和賦予x,故x應等於13。
4.在C語言中也可以組成賦值語句。
按照C語言規定,任何錶達式在其未尾加上分號就構成為語句。