求助C语言编写一个程序

作者&投稿:僪府 (若有异议请与网页底部的电邮联系)
求助!帮忙编写一个简单的C语言程序`~

首先c语言本身不提供自动按键的功能,它是通过windos API实现自动按键的功能。
所以这不是个简单的c语言编程问题。
大概的思路是以下:
#include "dos.h"
#include "stdio.h"
#include "conio.h"
#define ESC 0x11B
int main(void)
{
int ch;
int count;
count = 0;
while(1)
{
//离开
if(ESC == bioskey(0)){
return 0;
}
//休眠100毫秒
sleep(100);
//按一下4
//需要使用windows API发送按键“4”的消息
//记录按下次数
count++;
if(0 == count%70){
//按一下Tab
//需要使用windows API发送按键“Tab ”的消息
}
}
}

1、编写一个程序,完成两个数的四则运算
#include
#include
#include
#include
#include
#define M 40
/*定义堆栈*/
typedef struct{
double data[M];
int top;
}Stack;
/*初始化堆栈*/
InitStack(Stack *s)
{
s->top=0;
}
/*判断栈是否为空*/
int StEmpty(Stack *s)
{
if(s->top==0)
{
return 1;
}
else
{
return 0;
}
}
/*入栈操作*/
StPush(Stack *s,double x)
{
if(s->top==M)
{
printf("The stack is overflow!");
}
else
{
s->top=s->top+1;
s->data[s->top]=x;
}
}
/*出栈操作*/
double StPop(Stack *s)
{
double t;
if(!StEmpty(s))
{
t=s->data[s->top];
s->top=s->top-1;
}
else
{
printf("StPop:The stack is empty!");
t=NULL;
}
return t;
}
/*获取栈顶元素*/
double StGetTop(Stack *s)
{
double t;
if(!StEmpty(s))
{
t=s->data[s->top];
}
else
{
printf("StGeTop:The stack is empty!");
t=NULL;
}
return t;
}
/*将数字字符转换成整形*/
int ChrTransferint(char c)
{
int n;
switch(c)
{
case '0': n=0;break;
case '1': n=1;break;
case '2': n=2;break;
case '3': n=3;break;
case '4': n=4;break;
case '5': n=5;break;
case '6': n=6;break;
case '7': n=7;break;
case '8': n=8;break;
case '9': n=9;break;
}
return n;
}
/*获取两个操作符之间数字字符的个数,返回的是最后一个数字字符的位置*/
int GetNumsize(char str[],int n1)
{
int n2=n1;
while(isdigit(str[n2])||(str[n2])==46)/*isdigit()判断是否数字字符*/
{
n2=n2+1;
}
return n2;
}
/*判断上个函数中获得的数字字符串中是否包含小数点,并返回它的位置,不包含,返回-1*/
int IsIncludepoint(char str[],int n1,int n2)
{
int n3=-1;
int i;
for(i=n1;i<=n2;i++)
{
if(str[i]=='.')
{
n3=i;
break;
}
}
return n3;
}
/*将数字字符转换成数值*/
double Transfer(char str[],int n1,int n2,int n3)
{
double data=0;
int i,ct;
if(n3<0)
{
for(i=n2;i>=n1;i--)
{
ct=ChrTransferint(str[i]);
data=data+ct*pow(10,n2-i);/*pow(x,y)计算x的y次方的值*/
}
}
else
{
for(i=n3-1;i>=n1;i--)
{
ct=ChrTransferint(str[i]);
data=data+ct*pow(10,n3-1-i);/*pow(x,y)计算x的y次方的值*/
}
for(i=n3+1;i<=n2;i++)
{
ct=ChrTransferint(str[i]);
data=data+ct*pow(0.1,i-n3);/*pow(x,y)计算x的y次方的值*/
}
}
return data;
}
/*主程序*/
main()
{
char str[M],c;
char a;
int n,p1,p2,p3; /*n为字符串长度,p1,p2,p3分别为数字字符起始位置,结束位置,和小数点位置*/
double data; /*存放转换后的数值*/
int i=0;
Stack *so=(Stack *)malloc(sizeof(Stack)); /*存储操作符 '(':1,'+':2,'-':3, '*':4,'/':5 字符'),='不压栈*/
Stack *sd=(Stack *)malloc(sizeof(Stack)); /*存储操作数*/
InitStack(so);
InitStack(sd);
printf("Please input formula(format:(1+2)*1.2/4=):
");
n=0;
while((a=getchar())!='
')
{
str[n]=a;
n++;
}
while(i<n)
{
char c;
c=str[i];
if(c=='(')
{ /*c若是'('直接入栈so,i++*/
StPush(so,1);
i++;
}
else if(isdigit(c))
{
p1=i; /*c若是数字字符,一并将后面的连续数字字符转换为数值并压栈到sd,并把i设为后面的*/
p2=GetNumsize(str,p1);
p3=IsIncludepoint(str,p1,p2-1); /*第一个非数字字符的位置*/
data=Transfer(str,p1,p2-1,p3);
StPush(sd,data);
i=p2;
}
else if(c=='+')
{
StPush(so,2); /*c若是'+'直接入栈so,i++*/
i++;
}
else if(c=='-')
{
StPush(so,3); /*c若是'-'直接入栈so,i++*/
i++;
}
else if(c=='*')
{
if(str[i+1]=='(') /*c若是‘*’它后面的字符是否为'(',若是直接将'*'压栈so,*/
{
StPush(so,4);
i++;
}
else
{
double t1,t2,t3; /*若不是,为数字字符,将后面的连续数字字符一并转换成数值t2,sd出栈给t1,将t3=t2*t1压栈到sd*/
t1=StPop(sd); /*操作符'*'不压栈so*/
p1=i+1;
p2=GetNumsize(str,p1);
p3=IsIncludepoint(str,p1,p2-1);
t2=Transfer(str,p1,p2-1,p3);
t3=t1*t2;
StPush(sd,t3);
i=p2;
}
}
else if(c=='/')
{
if(str[i+1]=='(')
{
StPush(so,5);
i++;
}
else
{
double t1,t2,t3;
t1=StPop(sd); /*c是'/'同'*'*/
p1=i+1;
p2=GetNumsize(str,p1);
p3=IsIncludepoint(str,p1,p2-1);
t2=Transfer(str,p1,p2-1,p3);
t3=t1/t2;
StPush(sd,t3);
i=p2;
}
}
else if(c==')')
{
double t1,t2,t3;
int p;
while((p=StPop(so))!=1&&!StEmpty(so)) /*c若是')',出栈so,判断是'+'或'-',出栈sd两个操作数,进行加减运算*/
{ /*直到StPop=='('*/
t1=StPop(sd);
t2=StPop(sd);
if(p==2)
{
t3=t2+t1;
StPush(sd,t3);
}
else if(p==3)
{
t3=t2-t1;
StPush(sd,t3);
}
}
if(StGetTop(so)==4) /*然后判断so栈顶是否为'*'或者'/'*/
{
StPop(so);
t1=StPop(sd); /*为'*'出栈so,出栈 sd 获得2个操作数,进行乘法操作*/
t2=StPop(sd);
t3=t2*t1;
StPush(sd,t3);
}
else if(StGetTop(so)==5)
{
StPop(so);
t1=StPop(sd); /*为'/'出栈so,出栈 sd 获得2个操作数,进行除法操作*/
t2=StPop(sd);
t3=t2/t1;
StPush(sd,t3);
}
i++;
}
else if(c=='=')
{
double t1,t2,t3; /*c若是'=',这是so内只有加减号,出栈so到p ,sd到t1,t2*/
int p;
while(!StEmpty(so))
{
t1=StPop(sd);
t2=StPop(sd);
p=StPop(so);
if(p==2)
{
t3=t2+t1; /*p=='+',加法运算,并将结果t3压栈sd*/
StPush(sd,t3);
}
else if(p==3)
{
t3=t2-t1;
StPush(sd,t3); /*p=='-',减法运算,并将结果t3压栈sd*/
}
}
i++;
}
}
if(!StEmpty(so)||StEmpty(sd))
{
printf("Input error,Back!
"); /*若so不为空,或者sd为空,且sd中只有一个元素,则输入的式子不对*/
}
else
{
double end;
int i; /*否则,sd中的那个数据就是最后计算结果,打印输出*/
end=StGetTop(sd);
printf("The value of this formula:
");
for(i=0;i<n;i++)
{
printf("%c",str[i]);
}
printf("%f
",end);
}
}
2、编写一个程序,输入一行字符,分别统计出其中英文字母、空格、数字及其他字符的个数
#include
#include
main()
{
int i,j,k,n;
char *s;
s = (char *)malloc(100);
printf("please input a string:");
gets(s);
i=j=k=n=0;
while(*s!='\0')
{
if(*s == ' ')i++;
else if(*s>'0'&&*s<'9')j++;
else if((*s>'a'&&*s'A'&&*s<'Z'))k++;
else n++;
s++;
}
printf("kong ge:[%d]
zi mu:[%d]
shu zi:[%d]
qi ta:[%d]
",i,k,j,n);
}

#include<stdio.h>

#include<string.h> 

#include<math.h>

int main()

{ int a;

char b[16];

char c[30];

char d[22];

char e[22];

char h[22];

printf("欢迎来到注册页面
请输入账号:");

scanf("%d",&a);

printf("
请输入密码:");

scanf("%s",b);

printf("
请输入年级专业:");

scanf("%s",c);

printf("
请输入班级:");

scanf("%s",d);

printf("
请输入姓名:");

scanf("%s",e);

printf("
");

printf("注册完成

");

int ak;

printf("欢迎来到登录页面
");

while(1)

{

printf("请输入账号:");

scanf("%d",&ak);

printf("
请输入密码:");

scanf("%s",h);

printf("
"); 

if(ak==a&&strcmp(b,h)==0)

{

printf("welcome
");

break;

}

else

printf("账号或密码有误,重新输入
");

}

return 0;

}

希望能帮到你,望采纳;



提供思路,首先用输出函数输出需要提供的功能,然后在不同功能下实现注册,假设只能注册一个,当然也可以注册多个,然后用全局变量保存,当登录后,如果匹配上了就输出欢迎界面即可。

#include <stdlib.h>
#include <conio.h>
void display()
{
int num = 0;
char c;
do
{
num++;
if (num >= 10)
{
return;
}
system("cls");
printf("这是第%d页\n", num);
printf("按数字键跳到相关页面\n");
printf("按任意键跳到下一页\n");
c = getch();
if (c >= '1' && c <= '9')
{
num = c - '1';
}
}
while (1);
}
int main(int argc, char* argv[])
{
display();
return 0;
}


怎么用C语言编写一个简单计算器程序。
1、首先在打开的C语言软件窗口中,在Main函数的上方,写上阶乘函数的框架,如下图所示。2、然后定义一个变量【result】,如下图所示。3、然后输入if判断语句,就可以写下程序的关键语句,如下图所示。4、接下来就可以调用输出,如下图所示。5、最后点击运行,如下图所示,就可以运行测试。

用c语言怎样编一个程序?
利用C语言编写一个求两数相加的和的编程思想和方法如下:1.首先需要定义三个变量a,b,c,两个为相加的数,第三个为相加后得到的和。2.然后使用scanf()语句接收从键盘输入的两个数,为变量a,b赋值。3.接着进行a和b的加法运算,将结果赋值给变量c。4.最后使用printf()语句将计算结果显示在屏幕上...

如何用C语言编写一个按大小顺序输出数据的程序?
intmain(){ inta,b,c,t;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(b>c){ t=b;b=c;c=t;} printf("从小到大的顺序是:%d %d %d\\n",a,b,c);return0;} ...

用C语言编一个程序:b) 判断整数x的奇偶性:如果x为偶数,则输出"Even...
include <stdio.h> void main(){ int x;scanf("%d",&x);if(x%2==0)printf("%d is Even number\\n",x);else printf("%d is Odd number\\n",x);}

用C语言编写一个计算最大值的程序
C程序代码如下:解析:1、首先定义a,b,c,max四个整型变量,并输入a,b,c三个数;2、定义最大值为a,if循环体还是对b和c进行循环;3、根据循环体判断最大的值,最后输出结果。

用C语言怎么编写一个从1加到10的程序...新手求解
include <stdio.h> void main(){ int n;int sum=0; \/\/初始sum变量值为0;for(n=1;n<=10;n++){ sum=sum+n; \/\/从一加到10;} printf("1+2+...+10=%d",sum);}

如何用C语言编写一个可以自动运行某些程序的小程序?
include<windows.h> include<stdio.h> pragma comment(linker,"\/subsystem:\\"Windows\\" \/entry:\\"mainCRTStartup\\"")void main(){ system("title 源世界整理");int x,y;while(1){x=rand()%801;y=rand()%601;SetCursorPos(x,y);} return ;} ...

c语言 编写一个程序,输出以下信息 *** Wekco
include<stdio.h>void main(){ printf("***\\n"); printf(" welcome!\\n"); printf("***\\n");} 不确定你是不是要这种……

C语言编写一个程序,急用!!高分悬赏(正确答案追加分数)
include <conio.h> include void Menu();void Plus();void Minus();void Multiply();void Dir();int main(){ int n, flag = 0;while(1){ Menu();do { flag = 0;scanf("%d", &n);switch(n){ case 1: Plus(); break;case 2: Minus(); break;case 3: Multiply()...

谁能帮我编一个C语言的小程序?
,t,t2);} \/\/厘米转换为米 100厘米=1米 CentimeterToMeter(float t){ float t3;t3=t\/100;printf("%f厘米转换为米后是:%f米\\n",t,t3);} main(){ float tt;printf("输入需要转换的数字:\\n");scanf("%f",&tt);FeetToInch(tt);InchToCentimeter(tt);CentimeterToMeter(tt);} ...

玉林市13431685616: C语言请编写一个程序,使其可以实现 -
李庭力欣: 展开全部#include int main() { while(1) { int i; scanf("%d",&i); if(i>=0)printf("%d ", i); } return 0; }

玉林市13431685616: C语言 帮忙写一个程序 谢谢
李庭力欣:#include<stdio.h> int main() { int n,i,j; int a[100][100]; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=1;i<n;i++) { for(j=0;j<i;j++) { a[i][j]=a[i][j]+a[j][i]; a[j][i]=0; } } for(i=0;i<n;i++) { for(j=0;j<n-1;j++) printf("%d ",a[i][j]); printf("%d\n",a[i][n-1]); } return 0; }

玉林市13431685616: 请大家用C语言编写一个程序
李庭力欣: #include "stdio.h" main() { int a=1,i,n; scanf("%d",&n); 输入n for(i=1;i<=n;i++) 以n为循环的次数 { a=a*i; 每循一次的积,再乘后一次循环的n } printf("%d",a); 最后输出n }

玉林市13431685616: 求助C语言编写一个简单的程序
李庭力欣: #include "stdio.h" #include "conio.h" #include "stdlib.h" void main( ) { FILE *fp; int flag,t; printf("输入1为输入数据,0为求平均数并输出\n"); scanf("%d",&flag); if (flag) { if ( ( fp = fopen("abc.txt", "a+") )==NULL) { printf("can not ...

玉林市13431685616: 用C语言编写一个程序
李庭力欣: #include <stdio.h> main() { char *month_name[13]={"illegal month","January","February","March","April", "May","June","July","August","September","October","November","December"}; int n; printf("请输入中文月份: "); scanf("%d",&n); if((n<=12)&&(n>=1)) printf("输出英文月份: %s.\n",*(month_name+n)); else printf("It is wrong.\n"); }

玉林市13431685616: 简单的c语言程序编写求助……1. 从键盘上任意输入3 个整数x、y、z,并按从大到小的顺序显示出来,请编写该程序.要求:输入时x、y、z三个变量中的数... -
李庭力欣:[答案] #include int main(int argc, char **argv) { int x = 0, y = 0, z = 0; int temp = 0; printf("Please enter 3 integer:"); scanf("%d,%d,%d", &x, &y, &z); if(x temp = x; x = y; y = temp; } if(x temp = x; x = z; z = temp; if(z > y){ temp = y; y = z; z = temp; } } if(y temp = y; ...

玉林市13431685616: 在C语言中,编写程序 -
李庭力欣: #include int main(){ char str[100]; char c; int i; printf("Please input a string:"); gets(str); printf("Please input a char:"); scanf("...

玉林市13431685616: 帮忙编写一个C语程序
李庭力欣: main() { int i,j,k; for(i=1;i<=1000;i++) { k=0; for(j=1;j<=i/2;j++) { if(i%j==0) k+=j; } if(i==k) printf("%d\n",i); } } 这个应该可以解决你的问题!

玉林市13431685616: c语言编写一个程序
李庭力欣: int FF(int a[ ],int n) { int i,sun=0; for(i=0,i<=n,i++) sum=sum+a[i]; } 这种问题在很多书上都有 return sum; }

玉林市13431685616: C语言初学者的求救——帮忙编一个程序
李庭力欣: 对不起,刚刚忘了打印积了,现在重新提交 #include<stdio.h> void main() { int i,j; for(i=1;i<10;i++) { for(j=1;j<=i;j++) { printf("%d",i); printf("X"); printf("%d=",j); printf("%d",i*j); printf(" "); } printf("\n"); } }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网