当前位置:首页 » 编程语言 » c语言计算数组非零个数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言计算数组非零个数

发布时间: 2022-06-30 05:44:49

1. c语言:编程统计数组a中的正数,0,负数的个数,并输出统计结果

修改如下:
#include "stdio.h"
int main()
{int s[40],i=0,j,num=0,a=0,b=0,c=0;
for (i=0;i<40 && (scanf("%d",&s[i])!=EOF);i++ )//当i<40且没有结束输入的时候,循环
//结束输入,你要按ctrl+z+回车
{
num++;
}
for(j=0;j<num;j++)
{if (s[j]>0) a++;else if (s[j]==0) b++;else c++;}
printf("数组a中正数有%d个,0有%d个,负数%d个",a,b,c);
}

2. C语言输出n*n的矩阵求非零个数n为正整数

#include<stdio.h>
void main()
{
int a[256][256],i=0,j=0,n=257,c=0;//考虑一下矩阵如何赋值
while((n>256)||(n<=0))
{
printf("请输入矩阵行列数n(大于0,且不大于256):");
scanf("%d",&n);
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("%d,",a[i][j]);
if(j==(n-1)) printf("\n");
if(a[i][j]!=0)c++;
}
printf("非零个数为:%d",c);
}

3. C语言,一个数组int a[10];但是我只初始化4个元素,要怎么求出已经被初始化的元素个数,也就是4

二维数组定义中,能够省略的是第一维的定义数,数组每行的数据元素总数必须指定,定义可以改为:inta[][2]={2,3,4};此时创建的是一个2行2列的数组,其中a[0][0],a[0][1],a[1][0]三个数据元素的内容分别是2,3,4要弄清二维数组在内存的排列方式,这个问题就不难理解了。

4. 统计出数组中非0元素的个数并输出

我用C++表述可以么?
#include<iostream>
using namespace std;
int main()
{
int a[10]={1,2,3,4,5,6,7,0,0,2}; //初始化10个值,其中为零的元素有两个
int count=0; //定义一个统计非零元素个数的变量,并初始化为零
cout<<"非零元素为: ";
for(int j=0;j<10;j++)
{
if(a[j]!=0)
{
cout<<a[j]<<" ";//用for循环输出
count++;
}
}
cout<<endl<<"非零元素个数为:"<<count<<endl; //输出非零元素个数
return 0;
}

5. C语言:求将一个数组全部赋值为一个非零的数字(别给我玩循环结构),要一个函数之类的

int 数组还真必须得用循环做
memset是字节为单位的,不可能对二维数组初始化为非0值

如果是char数组则可以
所以,还是用循环吧,循环的效率未必比memset低,memset内部实现也是用循环做的,差不了多少

6. C语言如何计算一维数组个数

以上代码中sizeof(a)的结果是40,而sizeof(int)的结果是4,len就是10,即数组a所占int型的个数;
你可以进行循环判断,当a[i]至a[9]都为0时,有效数值的个数为i

7. 编程作业,C语言 从键盘输入一组非0整数(个数不超过10个)存入数组中,以输入0标志结束,求这组

#include<stdio.h>
#include<stdlib.h>

intmain(void){
constintarrLen=10;//数组的长度
intdata[arrLen];
for(inti=0;i<arrLen;++i){//个数组初值
data[i]=0;
}

intgetNumber=0;//输入的数字
inta=0;//正数次数
inti=0;//输入的次数,减去正数次数,可以得到负数次数
intsum=0;//总数

do{
printf("请输入一个数字,0表示输入结束: ");
scanf("%d",&getNumber);
if(getNumber==0)break;//输入0,结束循环
if(getNumber>0)++a;//输入正数,正数+1
data[i]=getNumber;//把输入的数字存入数组
++i;//输入的次数
sum+=getNumber;//总数
if(i>=10)break;//超过10次,结束循环
}while(getNumber!=0);

printf("正数:%d,负数:%d,平均数:%f,总共输入了%d次 ",a,i-a,float(sum)/float(i),i);

system("pause");

return0;
}

8. C语言编程题,若函数形参为一维数组作函数参数编写函数,统计某一维数组中非0元素的个数

#include <stdio.h>

int func(int a[],int n)

{

int i,cnt;

for(cnt=0,i=0;i<n;++i)

if(a[i])

cnt++;

return cnt;

}

int main()

{

int a[10]={0,1,2,3,4,5,6,7,8,9};

printf("%d ",func(a,10));

return 0;

}

9. 怎样只用C语言的while和if求一个数组非零值对应的另一个数组的值

{

int i,j;
int bleft,bright;
bool isfound=false;

int i=500-1;
//结果是511对!不是510
//a(500) 表示函数?a,b是数组要用[]
//a b 坐标差=1100-500=600

while(++i<=1010)
{ if(!isfound)
{ if(isfound=a[i]!=0)
{
j=i;//left
continue;

}

}
if(a[i]==0) break;//这里继续数下去,直到第一个为零或最后一个数字时退出循环,低效。如果追求高效可以再写一个循环

}
if(isfound)
{ bright=b[i+600-1];//根据循环,i是结果的下一个序号,要减一
bleft=b[j+600];
}
else
{//没有结果
printf(_T("no result."));

}
}

//你写的这么详细,我也写的详细:)

10. C语言 一维数组排序 数组有不定个数的0怎么办 求教

这么简单的东西,不用过多用库函数。使用辅助数组b,必须是int型的。将数组c[30]中的元素的值作为数组b的下标,在数组b中的下标的值加1.当然,数组c中的0一直在数组b的第一位。
输出时,从数组b的第二位开始,输出那些值不是0的下标.
我用的java,大致算法是一样的。
使用伪码实现

public void sort(){
c[30]={......};
b[30]={0,...};
for(int i=0;i<c.length;i++){
b[c[i]]++;//此处执行后 b中元素加1

}
//从b中的第二个数字开始遍历

for(int i=1;i<b.length;i++){
if(b[i]>0){
c[j++]=i;//辅助数组c用来存储 由小到大排列的数。j从0开始.数组c就是你要获得的

}

}

}