问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求C语言程序!答好追加500分`

发布网友 发布时间:2024-01-01 12:58

我来回答

4个回答

热心网友 时间:2024-02-27 21:37

点评:
1、一楼的功能基本实现了,不过,要把void main()改为int main(),不然编绎通不过.
2、二楼的似乎不合楼主要求.因为在输入错误时,不能及时回显*号,不过加上了时间统计,功强了功能.

楼主肯拿分砸,咱也不能让楼主失望。下面是我的程序,虽然是C++写的,不过全是面向过程的程序,改成C语言的起来很简单,如果楼主实在不想改了,可以写纸条给我。
//VC++ 6.0 + win2003下调试通过.
//main.cpp
#include <time.h>
#include <conio.h>
#include <iostream>

using namespace std;

const TEXTLEN = 50;
static char text[TEXTLEN+1];

void printWelcome(void);
void printBye(void);
void printMenu(void);
void typeClass(bool isA, int len=TEXTLEN);
void makeText(char* buf, bool isA, int len);

void main()
{
char key;
bool isExit = false;

printWelcome();
while (!isExit)
{
printMenu();

fflush(stdin);
cin>>key;
switch (key)
{
case '1':
typeClass(true);
break;
case '2':
typeClass(false);
break;
case '3':
isExit = true;
break;
}
}
printBye();
}

void printWelcome(void)
{
cout<<"|=============================================================================|"<<endl;
cout<<"| |"<<endl;
cout<<"| 欢迎您使用打字练习系统 |"<<endl;
cout<<"| 作者: 沙支夸依 2008-7-2 |"<<endl;
cout<<"| |"<<endl;
cout<<"|=============================================================================|"<<endl;
}

void printBye(void)
{
cout<<"|=============================================================================|"<<endl;
cout<<"| 感谢您的使用!再见! |"<<endl;
cout<<"|=============================================================================|"<<endl;
}

void printMenu(void)
{
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"- 1、*练习; 2、B级练习; -"<<endl;
cout<<"- 3、退出; -"<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<">>";
}

void typeClass(bool isA, int len)
{
char ch;
int err = 0;

if (isA)
{
cout<<">>"<<"*练习: 随机产生一串小写字符. 任意键开始!";
_getch();
fflush(stdin);
cout<<endl;
makeText(text, true, len);
cout<<">>"<<text<<endl<<">>";
}
else
{
cout<<">>"<<"B级练习: 随机产生一串小写或大写字符. 任意键开始!"<<endl;
_getch();
fflush(stdin);
makeText(text, false, len);
cout<<">>"<<text<<endl<<">>";
}
clock_t start= clock();
for (int i=0; i<len; i++)
{
ch=_getch();
if (text[i] != ch)
{
cout<<'*';
err++;
}
else
cout<<ch;
}
clock_t finish= clock();
double time=double((finish-start))/CLOCKS_PER_SEC;
cout<<endl;
cout<<time<<endl;
cout<<">> 字符串总长: "<<TEXTLEN<<endl;
cout<<">> 错识数 : "<<err<<endl;
cout<<">> 正确率 : "<<(float)(TEXTLEN-err)*100/(float)TEXTLEN<<"%"<<endl;
cout<<">> 打字速度 : "<<(float)TEXTLEN/time<<"字/秒"<<endl;
0==err? cout<<"厉害!全都打对了!"<<endl:cout<<"加把油!你会做的更好!"<<endl;
}

void makeText(char* buf, bool isA, int len)
{
memset(buf, 0, len+1);
srand((unsigned)time(NULL));
if (isA)
{
for (int i=0; i<len; i++)
{
buf[i] = (char)(rand()%26 + 0x61);
}
}
else
{
for (int i=0; i<len; i++)
{
int temp = rand()%52;
buf[i] = temp < 26? (char)(temp + 0x61):(char)(temp + 0x27);
}
}
}

热心网友 时间:2024-02-27 21:37

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "time.h"
void main()
{
int key=0,i,flag=0,ncrc=0,n;
char s[10],c;
printf("输入要打的字符个数n:");
scanf("%d",&n);
printf("设置打字练习难度:A或B(默认为A)");
c=getchar();
while (c!='A' && c!='B') c=getchar();
if (c=='B')
flag=1;
printf("打字练习开始,按esc退出\n");
while (key!=27){
ncrc=0;
srand((unsigned int)time(0));
for (i=0;i<n;i++){
s[i]=rand()%26+97-flag*32*rand()%2;
printf("%c",s[i]);
}
printf("\n");
for (i=0;i<n;i++){
key=getch();
if (key==27) return 0;
if (key==s[i]){
putchar(s[i]);
ncrc++;
}else
putchar('*');
}
printf("\n打对了%d个字符,打错了%d个字符.\n 按任意键继续,esc退出",ncrc,n-ncrc);
key=getch();
}
getch();
return 0;
}

热心网友 时间:2024-02-27 21:38

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
char *str,*scr;
long start,finish;
void random(int i,int s){
int j;
srand((unsigned)time(NULL));
str=(char*)malloc(sizeof(char)*(s+1));
scr=(char*)malloc(sizeof(char)*(s+1));
for(j=0;j<s;j++){
if(i){
str[j]=rand()%26;
if(rand()%2)str[j]+='A';
else str[j]+='a';
}else str[j]=rand()%26+'a';
}
str[j]='\0';
}void finishs(int sum){
long times=finish-start;
int h,m,s,ms,i,y=0,n=0;
h=(int)times/3600000;
m=(int)((times-(long)h*3600000)/60000);
s=(int)((times-(long)h*3600000-(long)m*60000)/1000);
ms=(int)((times%1000)/10);
printf("use time:\n %d:%d:%d.%d\n\n",h,m,s,ms);
for(i=0;i<sum;i++){
if(str[i]==scr[i]){y++;printf("%c",str[i]);}
else{n++;printf("*");}
}printf("\n\nright value:%d\nright:%d%%\nwrong number:%d\nwrong:%d%%\n",y,(int)(((double)y/(double)sum)*100),n,(int)(((double)n/(double)sum)*100));
}
int main(void) {
char ch;
int i,s;
printf("heard or easy(A或B):");
ch=getchar();
if(ch=='A'||ch=='a'){
i=0;
}else i=1;
printf("how long :");
scanf("%d",&s);
random(i,s);
printf("%s\nenter:\n",str);
start=clock();
scanf("%s",scr);
finish=clock();
finishs(s);
}

热心网友 时间:2024-02-27 21:38

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
char *str,*scr;
long start,finish;
void random(int i,int s){
int j;
srand((unsigned)time(NULL));
str=(char*)malloc(sizeof(char)*(s+1));
scr=(char*)malloc(sizeof(char)*(s+1));
for(j=0;j<s;j++){
if(i){
str[j]=rand()%26;
if(rand()%2)str[j]+='A';
else str[j]+='a';
}else str[j]=rand()%26+'a';
}
str[j]='\0';
}void finishs(int sum){
long times=finish-start;
int h,m,s,ms,i,y=0,n=0;
h=(int)times/3600000;
m=(int)((times-(long)h*3600000)/60000);
s=(int)((times-(long)h*3600000-(long)m*60000)/1000);
ms=(int)((times%1000)/10);
printf("用时:\n %d:%d:%d.%d\n\n",h,m,s,ms);
for(i=0;i<sum;i++){
if(str[i]==scr[i]){y++;printf("%c",str[i]);}
else{n++;printf("*");}
}printf("\n\n正确字符数:%d\n正确率:%d%%\n错误字符数:%d\n错误率:%d%%\n",y,(int)(((double)y/(double)sum)*100),n,(int)(((double)n/(double)sum)*100));
}
int main(void) {
char ch;
int i,s;
printf("请输入难度(A或B):");
ch=getchar();
if(ch=='A'||ch=='a'){
i=0;
}else i=1;
printf("请输入字符串长度:");
scanf("%d",&s);
random(i,s);
printf("%s\n请输入:\n",str);
start=clock();
scanf("%s",scr);
finish=clock();
finishs(s);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
桃李芬芳的近义词是? 请会答正确。 急... 墨西哥很混乱吗 为什么我的OPPOR9手机连接到任何蓝牙设备放歌曲,都没有办法在蓝牙设备... OPPOA9如何连接酷狗与手机蓝牙? 华为荣耀3X 白色畅玩版的声音调至最大声仍很小声 荣耀3x刷机后卸载了一些系统软件,然后就无法开机,一直停留在开机界面... 平安富赢金生年金保险值得买吗?最全产品测评! 收音机音量旋钮音量最大还是小 德生pl_450收音机音量电位器声音惑大惑小,电位器的型号是什么_百度知 ... 浙江金融学院有什么专业 体感9度可以穿短裤跑步吗 开片和不开片茶具哪个好 新注册怎么弄? 同一个手机号注册两个,新的刚注销,旧的怎么找回? 一个手机号注册两个微信后怎么登录第一个 同一个手机号注册两个,新的刚注销,旧的怎么找回? 重庆锦都企业服务有限公司怎么样 一年内怎么改第二次 工业用地土地收储费用 怎样把音频信号(比如收音机的耳机输出)通过MIC插孔直接接入电脑?_百度... ...小提琴现在二手可以卖出多少钱,这把琴大概闲置了三四年左右,如今因... 如何用3根筷子摆出一个数字,数字要大于3小于4 丝印定位线怎么量尺寸 怎样注册新的 具体操作步骤 用同一个手机号注册了两个怎么办? 波吉的爸爸是坏的吗 片材丝印用什么定位套色准确 一个完整的复式条形统计图除了有纵轴和横轴以及表示数据的直条还要写... win7系统如何进行搜索电脑里的图片文件 华硕笔记本为什么会蓝屏啊? ...号码注册了两个,旧的被新申请的微信替换了。请问怎么找回旧的... 从驻马店到宿州学院怎么走? 厦门科技幼儿园和思明区艺术幼儿园哪个好 家有个伞,直径是6米,高是3米,这个伞有多少面积 一个手机号在注册了一个微信后又注册了新的,旧的怎么找回? 求C语言的程序 一封腊肉是多少重量? 怎样注册新的 具体操作步骤 ...业企业在企业资质监督检查工作中的自查报告怎么写?急需 用一个手机号码注册了两个,旧的被新申请的微信替换了。请问... 如何在一年内修改两次 ...号码注册了两个,旧的被新申请的微信替换了。请问怎么找回旧的... 驻马店市到宿州市有多少里路 c语言求程序,还有运行结果,谢谢大神了(&#x0E51;&#x275B;&#x1D17;&#x275B;&#x0E51;) 一个号码注册了两个 怎么找回第一个? 我的被限制登录多久会好呀。 后天要去安徽宿州市箫县,但是不知道从河南驻马店泌阳走,有没有车,什么... 车载dvd导航一体机带行车记录仪吗 代理公司是什么意思? 看中一楼盘跟另一楼盘代理公司一样,开发商和赞助... ...号码注册了两个,旧的被新申请的微信替换了。请问怎么找回旧的...