C语言如何对一个变量只赋值一次
如下图,我输入一组数字,如果我先输入负数正数最小值输出错误,我先输入正数则负数最大值错误,我知道是赋值错误,我的想法是分别将negative和positive两个都分别赋...
如下图,我输入一组数字,如果我先输入负数正数最小值输出错误,我先输入正数则负数最大值错误,我知道是赋值错误,我的想法是分别将negative和positive两个都分别赋第一个输入的负数和正数,然后再用来判断大小,可是无法实现赋第一个正数第一个负数同时正常,所以求解决方法。
#include <stdio.h>
int main()
{
int number;
int i;
int positive_max = 0;
int positive_min = 0;
int negative_max = 0;
int negative_min = 0;
for(i=1;;i++){
scanf("%d", &number);
if( number != 0 ){
if( number>0 ){
if( i==1 ) {
positive_max = number;
positive_min = number;
}
if( number>=positive_max ){
positive_max = number;
}
if( number<=positive_min ){
positive_min = number;
}
}else if(number<0 ){
if( i==1 ){
negative_max = number;
negative_min = number;
}
if( number>=negative_max ){
negative_max = number;
}
if( number<=negative_min ){
negative_min = number;
}
}
}
else break;
}
printf("正数之中的最大值是%d, 最小值是%d。\n", positive_max, positive_min );
printf("负数之中的最大值是%d, 最小值是%d。\n", negative_max, negative_min );
return 0;
} 展开
#include <stdio.h>
int main()
{
int number;
int i;
int positive_max = 0;
int positive_min = 0;
int negative_max = 0;
int negative_min = 0;
for(i=1;;i++){
scanf("%d", &number);
if( number != 0 ){
if( number>0 ){
if( i==1 ) {
positive_max = number;
positive_min = number;
}
if( number>=positive_max ){
positive_max = number;
}
if( number<=positive_min ){
positive_min = number;
}
}else if(number<0 ){
if( i==1 ){
negative_max = number;
negative_min = number;
}
if( number>=negative_max ){
negative_max = number;
}
if( number<=negative_min ){
negative_min = number;
}
}
}
else break;
}
printf("正数之中的最大值是%d, 最小值是%d。\n", positive_max, positive_min );
printf("负数之中的最大值是%d, 最小值是%d。\n", negative_max, negative_min );
return 0;
} 展开
2个回答
2015-12-05
展开全部
应该分别统计正数和负数已经输入的个数,只用 i 不行
追问
我知道啊,就是不知道怎么写下去
推荐于2016-11-18
展开全部
#define MAX(a, b) ({typeof(a) __a = (a);\
typeof(b) __b = (b);\
(void) (&__a == &__b);\
__a > __b ? __a : __b;})
#define MIN(a, b) ({typeof(a) __a = (a);\
typeof(b) __b = (b);\
(void) (&__a == &__b);\
__a < __b ? __a : __b;})
#include <stdio.h>
int main()
{
int number;
int i;
int positive_max = 0;
int positive_min = 0x7FFFFFFFU;
int negative_max = 0x80000000U;
int negative_min = 0;
for(i=1;;i++){
scanf("%d", &number);
if(number > 0)
{
positive_max = MAX(positive_max,number);
positive_min = MIN(positive_min, number);
}
else if(number < 0)
{
negative_max = MAX(negative_max,number);
negative_min = MIN(negative_min, number);
}
else break;
}
printf("正数之中的最大值是%d, 最小值是%d。\n", positive_max, positive_min );
printf("负数之中的最大值是%d, 最小值是%d。\n", negative_max, negative_min );
return 0;
}
typeof(b) __b = (b);\
(void) (&__a == &__b);\
__a > __b ? __a : __b;})
#define MIN(a, b) ({typeof(a) __a = (a);\
typeof(b) __b = (b);\
(void) (&__a == &__b);\
__a < __b ? __a : __b;})
#include <stdio.h>
int main()
{
int number;
int i;
int positive_max = 0;
int positive_min = 0x7FFFFFFFU;
int negative_max = 0x80000000U;
int negative_min = 0;
for(i=1;;i++){
scanf("%d", &number);
if(number > 0)
{
positive_max = MAX(positive_max,number);
positive_min = MIN(positive_min, number);
}
else if(number < 0)
{
negative_max = MAX(negative_max,number);
negative_min = MIN(negative_min, number);
}
else break;
}
printf("正数之中的最大值是%d, 最小值是%d。\n", positive_max, positive_min );
printf("负数之中的最大值是%d, 最小值是%d。\n", negative_max, negative_min );
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询