C语言问题,求正数个数\负数个数\总合\绝对值最大和最小的数.我的代码为什么不对?0.put

#include<stdio.h>

int main()
{
int sz[100];
int i,n,s,a,b,c,z,f;
z=0;
f=0;
s=0;
b=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&sz[i]);
if(sz[i]>0){
z=z+1;
s=s+sz[i];
}
if(sz[i]<0){
f=f+1;
s=s+sz[i];
}

if(sz[i]>0){
if(i=1){
a=sz[i];
}
c=sz[i];
if(a>c){
a=c;
}
if(b<c){
b=c;
}
}
if(sz[i]<0){
if(i=1){
a=-sz[i];
}
c=-sz[i];
if(a>c){
a=c;
}
if(b<c){
b=c;
}
}
}

printf("%d %d %d %d %d",z,f,s,b,a);

return 0;
}

看样子你可能还没有学过函数,如果用函数的话,代码会简洁的多。下面我给出在你的基础上修改后的代码,修改过的地方,后面基本(我不敢保证是全部)都有 ////
#include<stdio.h>

int main()
{
int sz[100];
int i,n,s,a,b,c,z,f;
z=0;
f=0;
s=0;
a=0; ////
b=0;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d",&sz[i]);
if(sz[i]>0)
{
z=z+1;
s=s+sz[i];
}
if(sz[i]<0)
{
f=f+1;
s=s+sz[i];
}

if(sz[i]>0)
{
if(a<0) ////
{
a = -a;
}
if(b<0) ////
{
b = -b;
}
if(i==1) ////
{
b=sz[i]; ////
}
c=sz[i];
if(a>c)
{
a=c;
}
else ////
{
a = -a; //a还原为原来的值
}

if(b<c)
{
b=c;
}
else ////
{
b = -b;
}
}
if(sz[i]<0)
{
if(a<0) ////
{
a = -a;
}
if(b<0) ////
{
b = -b;
}
if(i==1) ////
{
a=-sz[i];
}
c=-sz[i];
if(a>c)
{
a= -c; ////
}
else ////
{
a = -a; //a的值还原为原来的值
}

if(b<c)
{
b= -c;
}
else ////
{
b = -b;
}
}
}

printf("%d %d %d %d %d",z,f,s,b,a);

return 0;
}追问

先谢谢你

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-12
#include<stdio.h>
#include<stdlib.h>
int main()
{
int sz[100];
int i,n,z,f, sum=0, a_max, a_min;
z=0;
f=0;

scanf("%d",&n);
for(i=0;i<n;i++){ //下标从0开始
scanf("%d",&sz[i]);
}
for(i=0; i<n; i++){
if(sz[i]>0){ //正数
z++; //z=z+1;效果一样
}
if(sz[i]<0){ //负数
f++;
}

sum += sz[i];
sz[i] = abs(sz[i]);
}

a_min = a_max = sz[0];
for(i=0; i<n; i++)
{
if(sz[i] > a_max)
a_max=sz[i];
if(sz[i] < a_min)
a_min=sz[i];
}
printf("正数:%d\n负数:%d\n总和:%d\n绝对值最大%d\n绝对值最小:%d\n",z,f,sum,a_max,a_min);
return 0;
}
第2个回答  2011-11-11
if(i=1) 两处 i==1啊
第3个回答  2011-11-11
错误太多追问

谢谢啊

C语言求n个整数中的绝对值最大的数,求挑错
2)if(max<num[i]||max<-num[i])这种算法有问题。max可能为负数(这时num[i]为正数,就判断错了)应该改为if(abs(max)<abs(num[i]) ,前要加#include <math.h>

c语言求10个数绝对值中最小的数。我的程序这样写的,但是不知道哪里错了...
c=i;} } printf("min=%d\\n",a[c]);代码没啥大问题,但是你确认输入的数肯定是整数吗?

c语言求绝对值最大值的问题,运行没错,提交就错了,错在哪里了,求解
在for循环上面对max变量赋值为a[0]是不正确的思路,此时a[0]为一个不确定的数(可能为 0),而且不是你的意愿中数组的元素a[0],因为后面你从标准输入对a[0]重新赋值了

C语言 3个整数,输出其中绝对值最大的数。详细要求看图片,为什么提交的...
你比较a1和b1的时候没把c1比较,就第一步如果a1>b1就输出而忽略了c1。

C语言 绝对值问题
c语言不是盲目的完成题目要求,要加入算法,这样会大大的减少运算时间和空间,比如这题就可以用公式算,先判断Thefirstnumber,Thesecondnumber的正负性,因为是连续整数 适用等差数列求和公式 还有 这题你理解的有问题,你求的是绝对值之后两个数之间的所有数和 题说的是绝对值前的所有数的和 ,你...

C语言求绝对值
1. 绝对值的概念:绝对值是一个数值不考虑正负号的大小值。例如,数字5和-5的绝对值都是5。在C语言中,我们可以通过编程来实现求一个数的绝对值。2. 使用条件语句求绝对值:C语言中的条件语句可以用于判断一个数是正数、负数还是零,并据此做出不同的处理。求绝对值时,我们关心的是数值是否为负...

C语言---求绝对值最大值
回答:你的是算法是正确的, 错在C语言的变量定义要放在开始, 你把int i, int j;放在程序开始就好了

C语言里编辑了一个程序 算两个数绝对值之和 输入正数的时候结果是对的...
你看一下scanf里面的%d,%d,中间的逗号是中文字符还是英文,输入数据时中间的逗号也要保持一致(中文逗号跟英文逗号不一样)程序没问题,我试过了,如果程序里用英文逗号,输入时用中文逗号,我也会得到你的结果

C语言 初学者 绝对值的问题。
printf("请输入任意两个整数(负数也可有):");scanf("%d %d",&Thefirstnumber,&Thesecondnumber);for(i=Thefirstnumber+1;i<Thesecondnumber;i++){ sum+=abs(i);} printf("%d\\n",sum);return 0;} 这样就行了,你原先的写法有误。比如:-3~3,你的写法是先取了绝对值,Thefirst...

c语言,输入几个数,输出几个数中绝对值最大的数
include<stdio.h> include<math.h> int main(){ int x,n,max,maxx,i;printf("请输入有几个数");scanf("%d",&n);scanf("%d",&x);max=abs(x);maxx=x;for(i=1;i<n;i++){ scanf("%d",&x);if(abs(x)>max){ max=abs(x);maxx=x;} } printf("绝对值最大的数是%d\\n",...

相似回答
大家正在搜