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语言规定,任何表达式在其未尾加上分号就构成为语句。