前面那个有点问题,这是改进后的:
#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语言程序设计题目等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)