C语言 求大神改成正确的 题目是:输入两个整数num1和num2,计算并输出它们的和、差、积、商和余数

#include <stdio.h>
int main(void)
{ int num1,num2;
int x,y,z,k,j;
print("Enter num1=",num1);
scanf("%d",&num1);
print("Enter num2=",num2);
scanf("%d",&num2);
x=num1+num2;
y=num1-num2;
z=num1*num2;
k=num1/num2;
j=num1%num2;
print("num1+num2=x",x);
print("num1-num2=y",y);
print("num1*num2=z",z);
print("num1/num2=k",k);
print("num1%num2=j",j);

return 0;
}
我上C语言就4节课 新手
我把下面改成printf("num1+num2=%d",x);
printf("num1-num2=%d",y);
printf("num1*num2=%d",z);
printf("num1/num2=%d",k);
printf("num1%num2=%d",j);

提醒成功编译,但有警告信息.
xfc2_6.c: In function ‘main’:
xfc2_6.c:5: warning: too many arguments for format
xfc2_6.c:7: warning: too many arguments for format
xfc2_6.c:18: warning: format ‘%n’ expects type ‘int *’, but argument 2 has type ‘int’
xfc2_6.c:18: warning: too few arguments for format
有什么要改的吗? 谢谢
额 最后格式还要这样的
Enter num1:5

Enter num2:3

5+3=8

5-3=2

5*3=15

5/3=1.67

5%3=2

#include <stdio.h>
int main(void)
{ int num1,num2;
int x,y,z,j;
float k; /**得将k定义成实型的,即float或double型,因为除法结果有可能为小数,否则会导致错误*/
printf("Enter num1=");/**这一行是提醒输入数字num1,只需要引号里面的就可以了*/
scanf("%d",&num1);
printf("Enter num2="); /**这一行是提醒输入数字num2,也只需要引号里面的就可以了*/
scanf("%d",&num2);
x=num1+num2;
y=num1-num2;
z=num1*num2;
k=num1/num2;
j=num1%num2;
printf("num1+num2=%d\n",x); /**等于号后面应该是%d,%d表示输出的是整形数据,即你定义的int型*/
printf("num1-num2=%d\n",y); /**输出应该是printf而不是print,最好加上\n换行*/
printf("num1*num2=%d\n",z);
printf("num1/num2=%f\n",k); /**k定义的是float型,所以输出时应该是%f而不再是%d*/
printf("num1%num2=%d\n",j);
return 0;
}
}
/** 你可以运行一下我给你改的,我建议你以后编程要学会缩进,这样让程序结构给清晰。在学C语言方面有什么疑问也欢迎多和我交流*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-28
k=num1/num2;
这句的发出警告是因为两个数相除,编译器是先把int型转化为float型,得到的结果也是float型的。你定义的k是int型的,编译器自动启动类型转换(把除得的float型转化为int型再赋值给k),你把这句改成:k=(int)(num1/num2);这个警告就不会出现了。

printf("num1/num2=%d",k);
这句发成警告是应为在printf函数中只要是 /n 。则作换行处理,你在 / 和 n 之间加一个空格 就不会有问题了:printf("num1 / num2=%d",k);

printf("num1%num2=%d",j);
如果这句还有问题,你同样加空格:printf("num1 % num2=%d",j);
有些符号是c语言规定的特殊符号,切记!
第2个回答  2012-03-28
把print("num1+num2=x",x);
print("num1-num2=y",y);
print("num1*num2=z",z);
print("num1/num2=k",k);
print("num1%num2=j",j);

中=后面的xyzkj都改成%d,编译通过就可以了,最好加一个换行
编译的警告一定是会有的,但是有些警告并不会影响运行结果,不需要修改,你先运行下看结果正不正确
第3个回答  2012-03-28
虽然我是学C++的,不是很记得C的输出格式,但是感觉你的输出有问题,最后那几个没有说明X,Y,Z,K,J是什么类型的 应该类似printf(“i=%d”,i);之类的
第4个回答  推荐于2017-10-04
print改成printf就可以了
标准答案 拿去吧 除法进行的Int型的除法 自己懂得
#include <stdio.h>
int main(void)
{ int num1,num2;
int x,y,z,k,j;
printf("Enter num1=");
scanf("%d",&num1);
printf("Enter num2=");
scanf("%d",&num2);
x=num1+num2;
y=num1-num2;
z=num1*num2;
k=num1/num2;
j=num1%num2;
printf("num1+num2=%d\n",x);
printf("num1-num2=%d\n",y);
printf("num1*num2=%d\n",z);
printf("num1/num2=%d\n",k);
printf("num1%%num2=%d\n",j);
return 0;
}追问

如果除法要保留2位呢

追答

那么num1 num2就得是double 但是 你的num1%num2 要求的是int型 所以不能改 你只是求商嘛 余数后面有求 所以没必要用double

本回答被提问者采纳