数组
- 形式诸如:int number [100]; scanf ("%d", number [i] );
- 数组中所有元素的类型相同,且一旦创建,不能改变大小;
- 初始化:格式如下int v[5] = {1, 2, 3, 4, 5 };即用{1, 2, 3, 4, 5}初始化。也可以为int v[5] = {1, 3 };即用{1,3, 0, 0, 0}初始化。
求平均数
问题描述:
用户输入一些正整数,输入-1表示输入结束,计算用户输入的数字的平均值,并输出所有大于平均值的数。
程序:
#include <stdio.h>
int main()
{
int x;
int cnt = 0;
double sum = 0.0;
double average = 0.0;
int number[100]; //定义数组
scanf("%d", &x);
while (x != -1){
number[cnt] = x; //对数组中的元素赋值
sum += x;
cnt++;
scanf("%d", &x);
}
if (cnt > 0){
average = sum/cnt;
printf("平均值是%f\n", average);
printf("比平均值大的数:");
int i;
for (i=0; i<cnt; i++){ //遍历数组
if (number[i] > average){
printf("%d ", number[i]);
}
}
}
return 0;
}
但是这个程序是存在危险的,因为有可能数据会超过一百个。因此我们可以先让用户输入数据的个数,然后再确定数组的大小。
同时我们可以再修改一下:
- 这里已经输入了数据的数量,那么就不再需要-1来告诉程序输入停止了;
- 当只输入一个数字的时候,是没必要输出比平均值大的数的。
修改后的程序:
#include <stdio.h>
int main()
{
int x;
int cnt = 0;
double sum = 0.0;
double average = 0.0;
int n;
printf("请输入数字的数量:");
scanf("%d", &n);
if (n > 0){
int number[n]; //定义数组
for (cnt=0; cnt<n; cnt++){
scanf("%d", &x);
number[cnt] = x; //对数组中的元素赋值
sum += x;
}
average = sum/cnt;
printf("平均值是%f\n", average);
if(n > 1){
printf("比平均值大的数:");
int i;
for (i=0; i<cnt; i++){ //遍历数组中比平均值大的数
if (number[i] > average){
printf("%d ", number[i]);
}
}
}
}
return 0;
}
统计数字出现次数
问题描述:
输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束。
程序:
#include <stdio.h>
int main()
{
const int NUMBER = 10;//数组大小
int count[NUMBER] ;
//初始化数组
int i;
for (i=0; i<NUMBER; i++){
count[i] = 0;
}
//统计数字出现次数
int n;
scanf("%d", &n);
while (n != -1){
if (n>=0 && n<=9){
count[n]++;
}
scanf("%d", &n);
}
//遍历输出
for (i=0;i<NUMBER; i++){
printf("%d:%d\n", i, count[i]);
}
return 0;
}