<类型> 变量名称[元素数量];
元素数量必须是整数
如果初始化为:int a[10] = {[1] = 2,[4] = 1,6};
初始化遍历输出结果为 0 2 0 0 1 6 0 0 0 0
1、如何写一个程序计算用户输入的数字的平均数,并输出所有大于平均数的数?
#include <stdio.h>
int main(){
int x; //输入的数
double sum;
int cnt = 0;
int number[100]; //定义数组
scanf("%d",&x);
while(x!=-1){
number[cnt] = x; //让当前cnt那个单元值等于x,对数组赋值
sum += x;
cnt ++;
scanf("%d",&x);
}
if(cnt > 0){
double avg = sum/cnt;
printf("平均数是%f\n",avg);
int i;
for(i = 0;i < cnt;i++){ //遍历整个数组,把其中大于平均数的值找出来
if(number[i] > avg){
printf("%d\n",number[i]);
}
}
}
return 0;
}
2、写一个程序,输入数量不确定的[0,9]范围内的整数,统计每种数字出现的次数,输入-1表示结束
int count[number] = {0};可以将count数组的值全部初始化为0
#include <stdio.h>
int main(){
int x;
scanf("%d",&x);
int count[10];
int i;
for(i = 0;i < 10;i++){
count[i] = 0; //初始化数组,写循环遍历数组
}
while(x != -1){
if(x >= 0 && x <= 9){
count[x] ++; //数组参与运算
}
scanf(%d,&x);
}
for(i = 0;i < 10;i++){
printf("%d出现了%d次\n",i,count[i]); //遍历数组输出
}
return 0;
}
3、在一组给定的数据中,找出某个数据是否存在?
必须要用length来传入数组的大小,否则没法计算;在函数参数中不能使用sizeof来计算数组大小
ret返回的是x在数组a中的位置
#include <stdio.h>
int main(){
int a[] = {2,4,6,7,1,3,5,9,11,13,23,14,32};
return 0;
}
int a[] = {1,2,3,4,5,6};
printf("%lu\n",sizeof(a)); //结果是24
printf("%lu\n",sizeof(a[0])); //结果是4
所以整个数组的number还可以用sizeof(a)/sizeof(a[0])计算得出
判断素数
不用从1到x遍历除,只需判断能否被已知的素数整除,那么需要将已知的素数存到数组中
#include <stdio.h>
int main(){
const int number = 100;
int prime[number] = {2}; //构造素数表,初始化为2,因为2是已知的第一个素数
int count = 1; //已经有一个素数2,所以count为1
int i = 3; //从3开始判断是不是素数
while(count < number){
if(isPrime(i,prime,count)){
prime[count++] = i; //如果i是素数,就把i加到数组中去
}
i++;
}
for(i = 0;i <number;i++){
printf("%d",prime[i]);
if((i +1) % 5)
printf("\t");
else
printf("\n");
}
return 0;
}
int isPrime(int x,int knownPrimes[],int numberOfKnownPrimes){
int ret = 1;
int i;
for(i = 0;i < numberOfKnownPrimes;i++){
if(x % knownPrimes[i] == 0){
ret = 0;
break;
}
}
}
方法二:先构造素数表,在数组中将素数标为1,不是素数标为0,再遍历数组,用if(isPrime[i] == 1)输出所有素数
二维数组
int a[3][5];三行五列的矩阵
外围遍历行号,内围遍历列号
定义二维数组时,列数必须给出!!int a[ ][5] = {{0,1,2,3,4},{2,3,4,5,6},};
每一个{}必须用逗号隔开
检查列的话把i和j交换