谁能帮我解决这个C语言程序问题?

/*代码*/
#include<stdio.h>
main()
{
int n1,n2;
char tag;
printf("C语言四则运算器\n");
printf("请输入两个数字格式如1,2\n");
scanf("%d,%d",&n1,&n2);
printf("请输入运算符:\n");
scanf("%c",&tag);
if(tag=='+') printf("&n1+&n2=",n1+2);
if(tag=='-') printf("&n1-&n2=",n1-n2);
if(tag=='*') printf("&n1*&n2=",n1*n2);
if(tag=='/') printf("&n1*&n2=",n1/n2);

}
执行后有个功能没有实现啊。初学者,请多多指教,感激。
谢谢各位的指明点睛!!以前我最爱Vb,也写过过百KB的程序,但是呢,C语言对我来说是一门新课,习惯性略带有VB的语法和思维,不过我相信努力可以学号C语言,编写功能更强大的程序,就是感觉啊C语言的细节问题特别要紧,我学VB是不用教的,挑兴趣的这里学点哪里学点,两年就完全可以了,学校啊,一个学期搞定C语言课程吓得我头大!估计就这点鸟技术没用的上吧!自学要紧!谢谢‘ simon_1712 ’网友的简短精辟回答!也谢谢‘ 徐光猪’网友思维紧密的程序!更要谢谢那位给我写最多代码的网友‘ 卓冰绿’!还有其他网友的帮助。

#include<stdio.h>
#include <Windows.h>
int main()
{
int n1,n2;
char tag;
printf("C语言四则运算器\n");
printf("请输入两个数字格式如1,2\n");
scanf("%d,%d",&n1,&n2);
printf("请输入运算符:\n");
getchar();//接受你输入数字后的回车,因为回车也是字符
scanf("%c",&tag);
if(tag=='+') printf("%d+%d=%d",n1,n2,n1+n2);
if(tag=='-') printf("%d-%d=%d",n1,n2,n1-n2);
if(tag=='*') printf("%d*%d=%d",n1,n2,n1*n2);
if(tag=='/')
if (n2!=0)//判断除数是否为零
{
printf("%d*%d=%d",n1,n2,n1/n2);
}
else
{
printf("error!\n");
}

system("pause");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-27
#include<stdio.h>
main()
{
int n1,n2;
char tag;
printf("C语言四则运算器\n");
printf("请输入两个数字格式如1,2\n");
scanf("%d,%d",&n1,&n2);
printf("请输入运算符:\n");
scanf("%c",&tag);
if(tag=='+') printf("n1+n2=%d",n1+n2);
if(tag=='-') printf("n1-n2=%d",n1-n2);
if(tag=='*') printf("n1*n2=%d",n1*n2);
if(tag=='/') printf("n1/n2=%d",n1/n2);
}
第2个回答  2011-02-27
应该是无法输出结果:最后的四个printf();语句有问题:
应该是:
if(tag=='+') printf("n1+n2=%d",n1+n2);
if(tag=='-') printf("n1-n2=%d",n1-n2);
if(tag=='*') printf("n1*n2=%d",n1*n2);
if(tag=='/') printf("n1/n2=%lf",(double)n1/n2);
最后的那个除法注意,如果你用printf("n1/n2=%d",n1/n2);的话,这样得不到正确结果,因为一个int和一个int相除,会得到一个整型int,所以除要强制转换成double才行!
第3个回答  2011-02-27
原因是你在第一个scanf里输入数据后,会按下Enter,这个仍然保存的缓冲区中
下一个scan时,你觉得你输入了运算符,但是在运算符前,还有一个Enter(ASCII好像是0DH),所以,结果是没有输出!!!

你应该在第一个scanf里消去那个Enter,代码:scanf("%d,%d%*c",&n1, &n2);
%*c会消支这个Enter了!!!
第4个回答  2011-02-28
问题补充:还有个
8用指针方法编写程序,输入三个字符串,按由小到大的顺序输出。要求用函数实现,并用指向一维数组的指针作为函数的参数。
======================
这一个在最后,多加些分吧,累死我了:(

给,都已经编译运行确认了:

1.任意输入一个数,判断它是否为素数
#include "stdio.h"
#include "conio.h"
#include "math.h"
int ss(int inputshu)
{
int i,m,t;
m=inputshu;
for(i=2;i<=sqrt(m);i++)
if(m%i==0)
if(i>sqrt(m)+1) t=1;
return(t);
}
int main(void)
{
int j;
printf("请输入一个数: \n");
scanf("%d",&j);
if(ss(j)==0) printf("%d不是素数",j);
else printf("%d是素数",j);

getch();
return 1;
}

2.打印1~1000内所有完数
#include<stdio.h> /*头文件*/
#include<conio.h>
#define N 1000 /*搜索范围在1000以内*/

int wanshu(int x) /*判断x是否完数*/
{
int i,sum=0;

for(i=1;i<=x;i++) /*对所有x的因子求和*/
{
if(x%i==0) sum=sum+i;
continue;
}

if(sum==x*2) return(1); /*如果求和结果等于2x则x是完数*/
else return(0); /*否则不是完数*/
} /*完数判断函数结束*/

int print_factor(int x) /*打印结果*/
{
int i,j,res[1000]=; /*i,j为循环变量.res数组记录每个因子.*/

for(i=1;i<x;i++) /*将每个非零因子存在数组res[]中*/
{
if(x%i==0) res[i]=i;
continue;
}
printf("%d its factors are: ",x); /*打印提示*/

for(j=0;j<x;j++) /*打印每个因子,以逗号相隔.*/
{
if(res[j]!=0)
{
printf("%d",res[j]);
printf("\,");
}
}
printf("\n");
return(0);
} /*打印函数结束*/

int main(int argc, char *argv[]) /*主函数*/
{
int i; /*循环变量*/

for(i=1;i<=N;i++) /*循环找出小于N的所有完数并输出其因子.*/
{
if(wanshu(i)) print_factor(i);
continue;
}
getch();
return 0;
} /*主函数结束*/

3.打印100~999之间的水仙花数
#include "stdio.h"
#include "conio.h"

int main()
{
int i,j,k,n;
printf("水仙花数是:\n");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)

printf("%d\n",n);
}

getch();
return 1;
}

4.输入若干字符(以输入!为结束条件)分别统计其中字母、空格、数字和其它字符个数
#include "stdio.h"
#include "conio.h"
int main(void)
{
int word=0,digit=0,space=0,other=0,i=0;
char *p,s[80];
printf("\nInput a string:");
while ((s[i]=getchar())!='\n') i++;
p=s;
while(*p!='!')
{
if(((*p>='A')&&(*p<='Z'))||((*p>='a')&&(*p<='z')))
word++;
else if(*p==' '||*p==9)
space++;
else if((*p>='0')&&(*p<='9'))
digit++;
else
other++;
p++;
}
printf("字母:%d个,空格:%d个,数字:%d个,其它字符:%d个",word,space,digit,other);

getch();
return 1;
}

5.编写九九乘法表
#include <stdio.h>
#include <conio.h>

int main(){
int t[10][10]=;
int i,j;

for(i=1;i<10;i++)
for(j=1;j<10;j++)
t[i][j]=i*j;
for(i=1;i<10;i++){
for(j=1;j<10;j++)
if(i>=j)
printf("%d*%d=%2d ",i,j,t[i][j]);
printf("\n");
}

getch();
return 0;
}

6.求极数e的x次方=1+x+2的阶乘分之x平方+3的阶乘分之x立方+......n的阶乘分之xn次方
#include <stdio.h>
#include <conio.h>

int x;
float sum;

long f1(int n)
{
if(n==0) return 1;
else return x*f1(n-1);
}

long f2(int n)
{
if(n==0) return 1;
else return n*f2(n-1);
}

int main()
{
int i,n;

printf("请输入x: ");
scanf("%d",&x);
printf("请输入n: ");
scanf("%d",&n);

for(i=0;i<=n;i++)
sum+=(float)f1(i)/(float)f2(i);
printf("e的%d次方为: %f",x,sum);

getch();
return 1;
}

7.输入4个学生三门课题成绩(二维整型数组)要求:每个学生的平均分、每门课平均分、输出每个学生三门课成绩
#include <stdio.h>
#include <conio.h>

int main()
{
int a[4][3]=;
int i,j;
int total=0;
float ave;
printf("请输入4个学生三门课题成绩: \n");
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{
printf("第%d个学生第%d门课成绩: ",i+1,j+1);
fflush(stdin);
scanf("%d",&a[i][j]);
}

for(i=0;i<4;i++)
{
printf("第%d个学生三门课成绩为: \n",i+1);
for(j=0;j<3;j++)
{
printf("第%d门课: ",j+1);
printf("%d\n",a[i][j]);
}
printf("\n");
}

printf("\n");

for(i=0;i<4;i++)
{
total=0;
printf("第%d个学生平均分为: ",i+1);
for(j=0;j<3;j++) total+=a[i][j];
ave=total/3.0;

printf("%.1f \n",ave);
}

for(i=0;i<3;i++)
{
total=0;
printf("第%d门课平均分为: ",i+1);
for(j=0;j<4;j++) total+=a[j][i];
ave=total/4.0;

printf("%.1f \n",ave);
}

getch();
return 1;
}

8.用指针方法编写程序,输入三个字符串,按由小到大的顺序输出。要求用函数实现,并用指向一维数组的指针作为函数的参数。

#include<conio.h>
#include<stdio.h>
#include<string.h>

void convert(char *p[3])
{
char *t;
int i,j;

for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(strcmp(p[i],p[j])<0)
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
}

int main()
{
static char *a[3],b[20],c[20],d[20];
int i;
a[0]=b;
a[1]=c;
a[2]=d;

printf("Please input 3 strings: \n");
for(i=0;i <3;i++)
gets(a[i]);

convert(a);

printf("After Sort: \n",a[i]);
for(i=0;i <3;i++)
printf("%s\n",a[i]);

getch();
return 0;
}
第5个回答  2011-02-27
你第一条if语句,输出打印n1+n2,少打个n啊
相似回答