C语言:编写程序从键盘输入不定数量的正整数?

如果输入为负数就忽略掉,输入为0表示已输入完毕。然后显示输入的数值的个数和它们的平均值。

不考虑数据的存储,直接循环累计即可。

想要数据存储:

方法一:定义一个非常大的数组,循环输入并检测输入值,累计求平均。

方法二:动态数组,根据有效输入,实时扩展数组地址长度。

方法三:把每个数字创建成结构体,构建链表,实现自由扩展和删除。

下面我的代码是用方法二写的:

#include <stdio.h>

#include <malloc.h>

int input(int **nsp);//输入任意个整数,忽略负数,输入0结束,成功返回数组长度,失败返回-1

int main()

{

    int i,len,sum=0,*nums=NULL;

    len=input(&nums);

    printf("输入的正整数为:\n");

    for(i=0;i<len;printf("%d ",nums[i]),i++)

        sum+=nums[i];

    printf("\n");

    printf("个数为%d,平均值为%.2f\n",len,(sum*1.0)/len);

    free(nums);

    return 0;

}

int input(int **nsp)

{

    int len=0;

    int n,*nTemp=NULL,*nums=NULL;

    if(*nsp) free(*nsp),nsp=NULL;

    while(1)

    {

        scanf("%d",&n);

        if(n==0) break;

        if(n>0)

        {

            if(nums==NULL)//记录首个数字

            {

                nums=(int *)malloc(sizeof(int));

                if(!nums) return -1;

                nums[len]=n;

                len++;

            }

            else//非首数字,扩展内存空间

            {

                nTemp=realloc(nums,sizeof(int)*(len+1));

                if(nTemp) nums=nTemp,nTemp=NULL;

                nums[len]=n;

                len++;

            }

        }

    }

    *nsp=nums;

    return len;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-04-04
#include<stdio.h>
void main() { int x,s,n;
s=n=0;
while ( 1 ) {
scanf("%d",&x); if ( x==0 ) break; else if ( x>0 ) { s+=x; n++; }
}
if ( n ) printf("%d,%f\n",n,(float)s/n);
}
第2个回答  2020-04-04

#include<stdio.h>

int main()

{

int a[111],k=0,n,sum=0;

do{

scanf("%d",&n);

if(n>0)//非负数存入数组a中 

a[k++]=n;

}while(n!=0);//n为0,循环结束 

for(int i=0;i<k;i++)

{

sum+=a[i];

}

sum/=k;

printf("共%d个非负整数\n平均数为:%d",k,sum);

}

本回答被网友采纳

C语言:编写程序从键盘输入不定数量的正整数?
方法一:定义一个非常大的数组,循环输入并检测输入值,累计求平均。方法二:动态数组,根据有效输入,实时扩展数组地址长度。方法三:把每个数字创建成结构体,构建链表,实现自由扩展和删除。下面我的代码是用方法二写的:include <stdio.h> include <malloc.h> int input(int **nsp);\/\/输入任意个...

编写程序,从键盘上输入不超过8位的正整数,判断它是几位数?例如,输入123...
printf("请输入一个不超过8位的正整数:");scanf("%s", num);int length = strlen(num);printf("输入的数字是%d位数\\n", length);return 0;} 你可以将这段代码保存到一个名为count_digits.c的文件中,然后使用C编译器进行编译和运行。输入一个正整数,程序将会告诉你它是几位数。

C语言编写程序,输入一个不多于3位的正整数,编写程序,实现以下功能:
include<stdio.h>main(){int a;while(1){scanf("%d",&a);if(a>999) printf("输入错误。\\n");elseif(a\/100!=0){ printf("3位\\n"); printf("逆序=%d%d%d\\n",a%10,a%100\/10,a\/100);}else if(a\/10!=0){ printf("2位\\n");printf("逆序=%d%d\\n",a%10...

c语言程序编写:要求从键盘上输入一个不多于5位数的正整数,依次输出每一...
void main(){ int n;scanf("%d",&n);if(n\/100000)printf("应输入一个不多于5位数的正整数!\\n");else { printf("%d",n%10);n\/=10;while(n){ printf(",%d",n%10);n\/=10;} } }

c语言编写程序,输入一个不多于3位的正整数,要求,求出它有几位数,并逆 ...
include <stdio.h>int main(){char a[3]={0,0,0};int i,num=0,cnt=0;printf("input:");scanf("%d",&num);if(num>999) printf("input data must:0~999\\n");a[0] = (num\/100)%10;\/\/百位a[1] = (num\/10)%10; \/\/十位a[2] = num%10; \/\/个位 if(a[0]>...

用C语言编写程序,将某个位数不确定的正整数进行三位分节后输出,比如输 ...
include <iostream.h> void main(){ int result[256];int m,count=0;cin>>m;while (m != 0){ result[count++] = m%1000;m \/= 1000;} for (int i=count-1; i>=0; i--){ cout<<result[i]<<' ';} cout<<endl;}

编写程序:输入一个不多于五位数的正整数,要求:输出它的位数;顺序输出它...
include<stdio.h>int main(){ int x,i,j,a[12]; printf("输入一个正整数:\\n"); scanf("%d",&x); for(i=0;x;x\/=10)a[i++]=x%10; printf("它是%d位数\\n",i); for(j=i-1;j>=0;j--)printf("%d ",a[j]); printf("\\n"); for(j=0;j...

编写程序,输入一个不多于5位的正整数,要求:(1)输出它是几位数; (2...
j--){ printf("%d ",arr[j]);} } int main(){ int n = 0;printf("请输入n的值(0-99999):\\n");scanf("%d",&n);if(n<0||n>99999){ printf("输入错误!\\n");return 1;} printf("位数:");printf("%d\\n",getCount(n) );getNum(n,getCount(n));return 0;} ...

用C语言编写程序从键盘输入一个正整数数n,输出n,是什么情况?
C语言实现如下: #include<stdio.h> void main() { int i,j,k,n; scanf("%d",&n); \/\/输入一个正整数n for(i=2;i<=n;i++) { k=0; for(j=1;j<=i-1;j++) if(i%j==0) k+=j; if(k==i) printf("%d\\n",i); \/\/判断i的所有真因子之和是否等于i,是则输出i。 } } 注意:建...

用C语言编写程序从键盘输入一个正整数数n,输出n!
} void main(){int n =0,m=0;printf("请输入一个正整数:")scanf("%d",&n);m=Func(n);printf("%d!=%d\\n",n,m);} 在以上程序代码中,Func()为递归函数,主函数main()中接收键盘输入整数值后,调用Func()递归函数,首层m=n*(n-1)!,继续递归调用,m=n*(n-1)(n-2)...

相似回答