#include
void fouding(int a,int b)
{
int i;
if(a==1)
{
i=0;
}
else i=1;
printf("fouding : %d\n",i);
}
void hequ(int a,int b)
{
int i;
if(a==1&&b==1)
{
i=1;
}
else i=0;
printf("p^q : %d\n",i);
}
void xiqu(int a,int b)
{
int i;
if(a==1||b==1)
{
i=1;
}
else i=0;
printf("pVq : %d\n",i);
}
void yunhan(int a,int b)
{
int i;
if(a==1&&b==0)
{
i=0;
}
else i=1;
printf("p-->q : %d\n",i);
}
void dengjia(int a,int b)
{
int i;
if(a==b)
{
i=1;
}
else i=0;
printf("p<-->q : %d\n",i);
}
int main()
{
int p,q,i,z;
while(1){
printf("是否运算程序(1/0):");
scanf("%d\n",&z);
if(z!=1)
{
break;
}
printf("输入p的真值(0/1):");
scanf("%d\n",&p);
printf("输入q的真值(0/1):");
scanf("%d\n",&q);
if((p!=0 &&p!=1) ||( q!=0 && q!=1))
{
printf("值只能为1或0\n");
continue;
}
else {
fouding(p,q);
hequ(p,q);
xiqu(p,q);
yunhan(p,q);
dengjia(p,q);
}
printf("是否运算程序(1/0):");
scanf("%d",&i);
if(i==0)
break;
else continue;
}
return 0;
}

改了scanf的地方,还改了一些小细节:
#include<stdio.h>
#include <iostream>
void fouding(int a,int b)
{
int i;
if(a==1)
{
i=0;
}
else i=1;
printf("fouding : %d\n",i);
}
void hequ(int a,int b)
{
int i;
if(a==1&&b==1)
{
i=1;
}
else i=0;
printf("p^q : %d\n",i);
}
void xiqu(int a,int b)
{
int i;
if(a==1||b==1)
{
i=1;
}
else i=0;
printf("pVq : %d\n",i);
}
void yunhan(int a,int b)
{
int i;
if(a==1&&b==0)
{
i=0;
}
else i=1;
printf("p-->q : %d\n",i);
}
void dengjia(int a,int b)
{
int i;
if(a==b)
{
i=1;
}
else i=0;
printf("p<-->q : %d\n",i);
}
int main()
{
int p,q,i,z;
while(1){
printf("是否运算程序(1/0):");
scanf("%d",&z);
if(z!=1)
{
break;
}
printf("输入p的真值(0/1):");
scanf("%d",&p);
printf("输入q的真值(0/1):");
scanf("%d",&q);
if((p!=0 &&p!=1) ||( q!=0 && q!=1))
{
printf("值只能为1或0\n");
continue;
}
else {
fouding(p,q);
hequ(p,q);
xiqu(p,q);
yunhan(p,q);
dengjia(p,q);
}
//printf("是否运算程序(1/0):");
//scanf("%d",&i);
/*if(i==0)
break;
else continue;*/
}
system("pause");
return 0;
}
结果:
啥问题啊?
scanf("%d\n",&z);
scanf语句不要加\n,属于自找麻烦
第63 65 行里,输入语句里”%d\n“ ,’\n' 符多余了,应该为:scanf("%d",&p); scanf("%d",&q);