C语言编程问题,求两数之和、差、积;调用,指针(帮忙看看我的程序哪错了)
int process(int *a,int *b)
{
char i; int j,m,n;
m=*a;
n=*b;
printf("请输入您想要的计算(+/-/*):");
getchar();
scanf("%c",&i);
if(i=='+')
{
j=add(m,n);
return j;
}
if(i=='-')
{
j=sub(m,n);
return j;
}
if(i=='*')
{
j=mul(m,n);
return j;
}
}
这个函数的问题。if语句下面不加{}的话,只有if下的第一条语句有用。所以输入+的话是对的,输入-*的话都是走的第一个return j;所以出错
前面声明变量的时候类型是浮点型,所以格式符应该使用%f而不是%d,%d是整型。改为:
#include "stdio.h"
void main(){
float x,y,a,b,c,d;
scanf("%f%f,&x,&y);
printf("%f%f%f%f%f",x+y,x-y,x*y,x/y,x%d);}
扩展资料:
printf函数格式字符:
常用的有以下几种格式字符:
1.d格式字符。用来输出十进制整数。有以下几种用法:
%d,按整型数据的实际长度输出;
%md,m为指定的输出字段的宽度;
%ld,输出长整型数据。
2.o格式符,以八进制整型式输出整数。
3.x格式符,以十六进制数形式输出整数。
4.u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。
5.c格式符,用来输出一个字符。
6.s格式符,用来输出一个字符串。
7.f格式符,用来输出实数(包括单双精度),以小数形式输出。
8.e格式符,以指数形式输出实数。
9.g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出是占宽度较小的一种),且不输出无意义的零。
10.p格式符,用于变量地址的输出。
参考资料:格式字符-百度百科
{
char i;
int j;
printf("请输入您想要的计算(+/-/*):");
getchar(); //要把之前输入两个数时按的回车给过滤掉
scanf("%c",&i);
if(i=='+') //字符比较用不着strcmp
{
j=add(a,b);
return j;
}
if(i=='-')
{
j=sub(a,b);
return j;
}
if(i=='*')
{
j=mul(a,b);
return j;
}
}
void main()
{
int a,b,*p1,*p2,m;
p1=&a;
p2=&b;
printf("请输入两个数:\n");
scanf("%d,%d",&a,&b);
m=process(p1,p2); //不是*p1,*p2
printf("所求的值为:%d",m);
}
if(strcmp(i,'+')==0)
j=add(a,b);
这个比较有必要用吗:if(i=='+') 不就好了
这个不需要指针,就能干的好好的
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int mul(int a,int b)
{
return a*b;
}
#include<stdio.h>
#include<string.h>
int add(int *m,int *n)
{
int i;
i=(*m)+(*n);
return i;
}
int sub(int *e,int *f)
{
int i;
i=(*e)-(*f);
return i;
}
int mul(int *p,int *q)
{
int i;
i=(*p)*(*q);
return i;
}
int process(int *a,int *b)
{
char i;
int j;
getchar(); /////
printf("请输入您想要的计算(+/-/*):");
scanf("%c",&i);
if(i-'+'==0) //不用strcmp
{j=add(a,b); //加{}
return j;}
if(i-'-'==0)
{ j=sub(a,b);
return j;}
if(i-'*'==0)
{ j=mul(a,b);
return j;}
}
void main()
{
int a,b,*p1,*p2,m;
p1=&a;
p2=&b;
printf("请输入两个数:\n");
scanf("%d%d",&a,&b);
m=process(p1,p2); //改为指针
printf("所求的值为:%d",m);
}
在主函数中声明下你自己定义的函数试试。
int
process(int
*a,int
*b)
{
char
i;
int
j,m,n;
m=*a;
n=*b;
printf("请输入您想要的计算(+/-/*):");
getchar();
scanf("%c",&i);
if(i=='+')
{
j=add(m,n);
return
j;
}
if(i=='-')
{
j=sub(m,n);
return
j;
}
if(i=='*')
{
j=mul(m,n);
return
j;
}
}
这个函数的问题。if语句下面不加{}的话,只有if下的第一条语句有用。
所以输入+的话是对的,输入-*的话都是走的第一个return
j;所以出错
答:printf("请输入两个数:\n");scanf("%d,%d",&a,&b);m=process(p1,p2); //不是*p1,*p2 printf("所求的值为:%d",m);}
答:printf("请输入两个整数(a,b):"); scanf("%d,%d",&a,&b); printf("和:%d\n",a+b); printf("差:%d\n",a-b); printf("积:%d\n",a*b); printf("商:%f\n",(float)a/b);} C语言简介: C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理...
答:i2 = (int)f2;printf("整数取余为:%d\n",i1 % i2);return 0;}
答:voidmain(){ inta,b;printf("请输入两个整数:");scanf("%d%d",&a,&b);printf("%d+%d=%d\t%d-%d=%d",a,b,a+b,a,b,a-b);}
答:<stdio.h> void main(){ int x, y;printf("please enter a,b,c:");scanf("%d,%d",&x,&y);printf("\nx+y=%d\n",x+y);printf("x-y=%d\n",x-y);printf("x*y=%d\n",x*y);printf("x/y=%d\n",x/y);printf("x%%y=%d\n",x%y);} 下图为C语言算术运算符:...
答:}具体如下:1、简介C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多...
答:include <stdio.h> void main(){ int a,b;printf("Input two integers:");scanf("%d%d",&a,&b);printf("和:a+b=%d\n",a+b);printf("差:a-b=%d\n",a-b);printf("积:a*b=%d\n",a*b);printf("商:a/b=%d\n",a/b);printf("余数:a%b=%d\n",a%b);...
答:include <stdio.h> void main() { int Number1,Number2; scanf("%d",&Number1); scanf("%d",&Number2); printf("两数和为%d 两数差为%d 两数积为%d 两数商为%d 余数为%d",Number1+Number2,Number1-Number2,Number1*Number2,Number1/Number2,Number1%Number2); } ...
答:可以参考下面的代码:include <stdio.h> void main(){ float x,y;char m;printf("Please input x and y :");scanf("%f,%f,%c",&x,&y,&m);switch(m){ case '+': printf("x+y=%f\n",x+y);break;case '-': printf("x-y=%f\n",x-y);break;case '*': printf("x*y=...
答:printf("请输入a和b:"); // 输入a,b scanf("%d %d",&a,&b); // 输出a,b c=a+b; //a与b的和 m=a-b; //a与b的差 n=a*b; //a与b的积 printf("a+b=%d\n",c); //输出a与b的和 printf("a-b=%d\n",m); //输出a与b的差 printf("a*b=%d\n",n); //输出a与b的...