C语言程序设计题

C语言程序设计题,第1张

前面那个有点问题,这是改进后的:

#include<iostream>

#include<string>

#include<stack>

#include<cctype>

using namespace std;

double count(double left,char op,double right);

int you(char op);

double chuli(string stra);

stack<double>opnd;

stack<char>optr;

char car; string str="";

double count(double left,char op,double right)

{

double ret;

int reta;

if(op=='+'){

ret=left+right;

return ret;

}

if(op=='-'){

ret=left-right;

return ret;

}

if(op==''){

ret=leftright;

return ret;

}

if(op=='/'){

ret=left/right;

return ret;

}

if(op=='%'){

int lefta,righta;

lefta=(int)left;

righta=(int)right;

reta=lefta%righta;

return reta;

}

if(op=='^'){

int righta=(int)right;

double lefta=left;

if(righta>0){

for(int a=1;a<righta;a++)

lefta=left;}

else if(righta==0)

lefta=1000000;

else{

righta=-righta;

for(int a=1;a<righta;a++)

lefta=left;

lefta=1/lefta;}

return lefta;

}

}

int you(char op)

{

if(op=='(')

return 0;

if(op=='+'||op=='-')

return 1;

if(op==''||op=='/'||op=='%')

return 2;

if(op=='^')

return 3;

}

int main(){

double last;

char choice;

int num1=0;

while(true){

cout<<"请输入你要计算的表达式,并以‘=’号结束:\n";

do{

cin>>car;

if(car!='=')

str+=car;

if(car!='('&&car!=')'&&car!='+'&&car!='-'&&car!=''&&car!='/'&&car!='%'&&car!='^'&&car!='='&&!isdigit(car)&&car!='')

num1++;

if(car=='=')

break;

}while(car!='=');

if(num1==0){

str+="=";

last=chuli(str);

cout<<"你输入的表达式是:"<<str<<endl;

cout<<"运算结果是:"<<last<<endl;}

else{

cout<<"你输入的表达式不符合规则!\n";

num1=0;}

cout<<"'y'继续,'n'退出"<<endl;

cin>>choice;

str="";

if(choice=='n')break;

}

system("pause");

return 0;

}

double chuli(string stra)

{

string strb="";double dou;

for(int a=0;a<stralength();a++){//1

if(isdigit(stra[a])||stra[a]==''){//11

strb+=stra[a];

if(!isdigit(stra[a+1])&&stra[a+1]!=''){//111

dou=atof(strbc_str());

opndpush(dou);

strb="";}//111

}//11

if(stra[a]=='+'|| stra[a]=='-'||stra[a]==''||stra[a]=='/'||stra[a]=='%'||stra[a]=='^'){//12

if(a==0){//121

opndpush(0);

optrpush(str[a]);}//121

else if(stra[a-1]=='('){//124

opndpush(0);

optrpush(str[a]);}//124

else if(optrempty()){

optrpush(stra[a]);

}

else if(you(stra[a])>you(optrtop())){//122

optrpush(stra[a]);

}//122

else if(you(stra[a])<=you(optrtop())){//123

while(!optrempty()&&you(stra[a])<=you(optrtop())&&optrtop()!='('){

double left,right;

right=opndtop();

opndpop();

left=opndtop();

opndpop();

opndpush(count(left,optrtop(),right));

optrpop();}

optrpush(stra[a]);

}//123

}//12

if(stra[a]==')'&&optrtop()=='('){//13

optrpop();

}//13

if(stra[a]==')'&&optrtop()!='('){//16

while(optrtop()!='('){//161

double left,right;

right=opndtop();

opndpop();

left=opndtop();

opndpop();

opndpush(count(left,optrtop(),right));

optrpop();}//161

optrpop();

}//16

if(stra[a]=='('){//14

optrpush('(');

}//14

if(stra[a]=='='){//15

while(!optrempty()){//151

double left,right;

right=opndtop();

opndpop();

left=opndtop();

opndpop();

opndpush(count(left,optrtop(),right));

optrpop();}//151

}//15

}//1

return opndtop();

}

#include <stdioh>

int main()

{

int total = 18;

int i5, i2, i1;

for (i5 = 0; i5 5 <= total; i5++)

for (i2 = 0; i2 2 + i5 5 <= total; i2++)

for (i1 = 0; i1 + i2 2 + i5 5 <= total; i1++)

if (i1 + i2 2 + i5 5 == total && i1 + i2 + i5 == 10)

printf("1元%d张\t2元%d张\t5元%d张\n", i1, i2, i5);

return 0;

}

1元2张 2元8张 5元0张

1元5张 2元4张 5元1张

1元8张 2元0张 5元2张

#include <stdioh>

int main()

{

int total = 0;

int i;

for (i = 1; i < 5000; ++i)

if (i % 37 == 0)

total += i;

printf("total = %d\n", total);

return 0;

}

total = 339660

#include <stdioh>

int main()

{

int total = 0;

int i;

for (i = 300; i<= 600; i++)

if (i/100 == i%10)

total += i;

printf("total = %d\n", total);

return 0;

}

total = 13470

一、

1B

2A

二、

1

#include <stdioh>

void strcopy(char s,char t)

{ int i=0;

while((t+1) != NUll)

{ s=t;

i++;

t++;

}

}

void main()

{ char a[20],b[10];

gets(b);

strcopy(a,b);

puts(a);

}

2

w,one

3p表示a (&a)= p

1第一个是正确的 具体怎么改 我还没想好 方法很多

2

ABCDEFG

CDEFG

EFG

G

第一个循环,每次进入,s都变成1,这样的话,s最后的结果其实取决于k最后的值(每次循环s都是1);

第一个循环的累加条件是k++, k++。也就相当于k加了两次,也就是说k = 4的时候,决定了s的值(再加2,k就是6了,不满足循环的条件了);

k = 4时,进入第二个循环,从4开始要累加两次(s += j),第一次是1 += 4,第二次是5 += 5,所以最后结果是10。

完毕。

#include<stdioh>

void main()

{

int buff[10]={1,2,3,4,5,6,7,8,9,10};

int temp;//中间变量

int n;

printf("请输入n的值\n");

scanf("%d",&n);

for(int i=0;i<n;i++)//循环控制移动次数

{

/移动一位/

temp=buff[0];

for(int j=0;j<10;j++)

buff[j]=buff[j+1];

buff[9]=temp;

}

for(int j=0;j<10;j++)

printf("%d ",buff[j]);

}

第一个:用line( int x1,int y1,int x2,int y2)函数画一个边长为200的正方形

#include "conioh"

#include "graphicsh"

#define closegr closegraph

void initgr(void) / BGI初始化 /

{

int gd = DETECT, gm = 0; / 和gd = VGA,gm = VGAHI是同样效果 /

registerbgidriver(EGAVGA_driver);/ 注册BGI驱动后可以不需要BGI文件的支持运行 /

initgraph(&gd, &gm, "");

}

int main(void)

{

initgr(); / BGI初始化 /

line(125, 125, 125, 325);

line(125, 325, 325, 325);

line(325, 325, 325, 125);

line(325, 125, 125, 125);

getch(); / 暂停一下,看看前面绘图代码的运行结果 /

closegr(); / 恢复TEXT屏幕模式 /

return 0;

}

以上就是关于C语言程序设计题全部的内容,包括:C语言程序设计题、c语言程序设计题 最好附带答案、C语言程序设计题目等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10097195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存