新人,刚学C语言,有几道题不会,希望可以得到帮助

2024-11-24 16:17:49
推荐回答(3个)
回答1:

(1)
1、计算器#include
void main()
{
int x,y;
char op;
int d;
printf("第一个整数:");
scanf("%d",&x);
printf("第二个整数:");
scanf("%d",&y);
printf("运算符 (+,—,*,/,%%):");
getchar();
op=getchar();
switch(op)
{
case '+':
printf("%d+%d=%d\n",x,y,x+y);
break;
case '-':
printf("%d-%d=%d\n",x,y,x-y);
break;
case '*':
printf("%d*%d=%d\n",x,y,x*y);
break;
case '/':
if(y==0)
printf("溢出\n");
else
printf("%d/%d=%d\n",x,y,x/y);
break;
case '%':
if(y==0)
printf("溢出\n");
else
printf("%d%%%d=%d\n",x,y,x%y);
break;
default:
printf("输入错误!\n");
break;
}
scanf("%d\n",&d);
}

(2)#include#include#include#define MAX_STACK_SIZE 100typedef struct SqStack{ char data;struct SqStack *next;}SqStack;//链元素typedef struct Stack{ struct SqStack *base; //栈底指针struct SqStack *top; //栈顶指针}Stack;//栈Stack S;int a,Aj=0;//全局变量char string[100];typedef struct node{char key;}element_tr;//运算符栈typedef struct Node{int data;}element_nd;//操作数元素void creatstack(Stack &S){S.top=S.base=NULL;}//建立初始化链栈void push(Stack &S,char e){SqStack* Q;Q=(SqStack*)malloc(sizeof(SqStack));Q->next=S.top;S.top=Q;S.top->data=e;++Aj;}//左括号入栈char Pop(Stack &S){ char e;SqStack *q;e=S.top->data;q=S.top->next;free(S.top);S.top=q;return e;}//括号出栈int check( ){ a=1,Aj=0;int w=0;char sh,ch,*st,*stt;printf("请输入算术表达式并以“=”结束输入:\n");scanf("%s",string);getchar();st=stt=string;ch=*st;sh=*++stt;while(ch!='='){if(w==0)if(ch==']'||ch=='}'||ch==')'){a=-1;Aj=1;}if((ch=='['||ch=='('||ch=='{')&&(sh=='=')){a=-1;Aj++;break;}if(a==-1)break;w++;if(ch=='['||ch=='('||ch=='{'||ch==']'||ch=='}'||ch==')')//判断是否满足入栈和出栈条件switch(ch){case '[': {push(S,ch);break;}case '{': {push(S,ch);break;}case '(': {push(S,ch);break;}//左括号入栈case ']': if(Pop(S)!='['){a=-1;Aj++;break;}else {Aj++;break;}case ')': if( Pop(S)!='('){a=-1;Aj++;break;}else{Aj++;break;}case '}': if( Pop(S)!='{'){a=-1;Aj++;break;}else{Aj++;break;}}//出栈并与字符ch匹配比较ch=*(++st);sh=*(++stt);if((S.base==S.top)&&(ch==']'||ch=='}'||ch==')')){a=-1;Aj++;}if(a==-1)break;}if(S.base!=S.top)a=-1;return a;}void main()//主函数{int st;char w='y';printf("\n*******括号配对判别********\n");LL :while(w!='n'&&w!='N'){creatstack(S);st=check();if(st==-1){printf("表达式中第( %d )个括号与对应括号不匹配,请重新输入\n",Aj);goto LL;}else {printf("表达式中括号匹配\n");}printf("继续请输入“y”,退出请输入“n”!\n");w=getchar();getchar();}printf("********谢谢使用本系统!********\n");}
(3)冒泡排序:#include
using namespace std;
int main()
{
int sort[8],temp,flag;
flag=0;
for(int i=0;i<=7;i++)
cin>>sort[i];
for(int j2=0;j2<=7;j2++)
cout< for(int i1=0;i1<=7;i1++)
{
flag=0;
for(int j=6;j>=i1;j--)
{
if(sort[j+1] {
temp=sort[j+1];
sort[j+1]=sort[j];
sort[j]=temp;
flag=1;
}

cout< for(int j3=0;j3<=7;j3++)
cout< }

if(flag==0)
break;
}
cout< for(int j1=0;j1<=7;j1++)
cout< return 0;
}
直接插入排序
#include
using namespace std;
int main()
{
int sort[6],temp;
for(int i1=0;i1<=5;i1++)
cin>>sort[i1];
cout< for(int i2=0;i2<=5;i2++)
cout< for(int i3=1;i3<=5;i3++)
{
temp=sort[i3];
int j=i3-1;
while(sort[j]>temp)
{
sort[j+1]=sort[j];
j--;
}
sort[j+1]=temp;
}
cout< for(int i4=0;i4<=5;i4++)
cout< return 0;
}
直接选择排序
#include
using namespace std;
int main()
{
int sort[6];
int temp,temp2;
for(int i1=0;i1<=5;i1++)
cin>>sort[i1];
cout< for(int i5=0;i5<=5;i5++)
cout< for(int i2=0;i2<=5;i2++)
{
temp=sort[i2];
for(int i3=i2+1;i3<=5;i3++)
if(sort[i3] {
temp2=temp;
temp=sort[i3];
sort[i3]=temp2;
}
sort[i2]=temp;
}
cout< for(int i4=0;i4<=5;i4++)
cout< return 0;
}

回答2:

基本的东西,随便闪现的视频教程!

回答3:

..3154154521243