如何写一个程序计算用户输入的数字的平均数?
#include<stdio.h>
int main()
{
int x;
double sum=0;
int c=0;
scanf("%d",&x);
while(x!=1)
{
sum=sum+x;
c++;
scanf("%d",&x);
}
if(c>0)
{
printf("%f\n",sum/c);
}
return 0;
}
何如写一个计算机用户输入的数字的平均数,并输出所有大于平均数的数?
数组
int number[100];
scanf("%d",&number[i]);
#include<stdio.h>
int main()
{
int x;
double sum=0;
int c=0;
int number[100];//定义数组
scanf("%d",&x);
while(x!=-1)
{
number[c]=x; //对数组的元素赋值
{
int i;
printf("%d\t",c) ;
for(i=0;i<=c;i++)
{
printf("%d\t",number[i]);
}
printf("\n");
}
sum=sum+x;
c++;
scanf("%d",&x);
}
if(c>0)
{
printf("%f\n",sum/c);
int i;
double age=sum/c;
for(i=0;i<c;i++)
{
if(number[i]>age) //
{ // 使用数组中的元素
printf("%d\n",number[i]); //
}
}
/* 遍历数组
for(i=0;i<c;i++)
{
if(number[i]>sum/c) //
{ // 使用数组中的元素
printf("%d\n",number[i]); //
}
} */
}
return 0;
}
定义数组
<类型>变量名称[元素数量];
int d[100];
double w[20];
元素数组必须是整数
c99之前:元素数量必须是编译时刻确定的字面量
有效的下标范围
长度为0的数组?
int a[0];
可能存在,但是无用
#include<stdio.h>
int main()
{
const int number=10; //数组的大小
int x;
int count[number]; //定义数组
int i ;
for(i=0;i<number;i++)
{
count[i]=0;
} //初始化数组
scanf("%d",&x);
while(x!=-1)
{
if(x>=0 && x<=9)
{
count[x]++; //数组参与运算
}
scanf("%d",&x);
}
for(i=0;i<number;i++){
printf("%d:%d\n",i,count[i]);
}
//遍历数组输出
}
初见函数
求素数的和
#include<stdio.h>
int main()
{
int m,n;
int sum=0;
int c=0;
int i;
scanf("%d %d",&m,&n);
if(m==1) m=2;
for(i=m;i<=n;i++){
int p=1;
int k;
for(k=2;k<i-1;k++){
if(i%k==0){
p=0;
break;
}
}
if (p){
sum+=i;
c++;
}
}
printf("%d %d\n",c,sum);
return 0;
}
求和
求出1到10,20到30和35到45的三个和
#include<stdio.h>
int main()
{
int i;
int sum;
for(i=1,sum=0;i<=10;i++){
sum=sum+i;
}
printf("1-10的和为:%d\n",sum);
for(i=20,sum=0;i<=30;i++){
sum=sum+i;
}
printf("20-30的和为:%d\n",sum);
for(i=35,sum=0;i<=45;i++){
sum=sum+i;
}
printf("35-45的和为:%d\n",sum);
return 0;
}
三段代码几乎一样(“代码复制是程序质量不良的表现”)
所以利用函数
#include<stdio.h>
void sum(int a,int b){
int i;
int sum=0;
for(i=a;i<=b;i++){ //i=a是上面sum(int a,int b)
sum=sum+i;
}
printf("%d到%d的和是%d\n",a,b,sum);
}
int main()
{
sum(1,10); //调用sum函数获取值
sum(20,30);
sum(35,45);
//sum(1,100); //后续会用到前n项求和;
return 0;
}
利用函数求前n项求和:
#include<stdio.h>
void sum(int a,int b){
int i;
int sum=0;
for(i=a;i<=b;i++){ //i=a是上面sum(int a,int b)
sum=sum+i;
}
printf("%d到%d的和是%d\n",a,b,sum);
}
int main() //调用sum函数获取值
{
int n;
//sum(1,100); //后续会用到前n项求和;
printf("请输入n的项:");
scanf("%d",&n);
sum(1,n);
return 0;
}
什么是函数?
void sum(int a,int b) //函数头 void是返回类型 sum是函数体 (int a,int b)是参数表
{
//-- 函数体
int i;
int sum=0;
for(i=a;i<=b;i++){
sum=sum+i;
}
printf("%d到%d的和是%d\n",a,b,sum);
//--
}
格式为:
函数名(参数值);
函数知道每一次哪里调用它,会回到正确的地方
从函数中返回
1
#include<stdio.h>
int max(int a,int b){
int r;
if(a>b){
r=a;
}else{
r=b;
}
printf("%d",r);
return r;
}
int main()
{
max(3,2);
}
#include<stdio.h>
int max(int a,int b){
int r;
if(a>b){
r=a;
}else{
r=b;
}
return r;
}
int main()
{
int a,b,c;
a=5;
b=6;
c=max(10,12);
c=max(a,b);
c=max(c,23);
printf("%d\n",max(a,b));
return 0;
}
int max(int a,int b){
if(a>b){
return a;
}else{
return b;
}
}
如果函数是有返回值的,就必须要一个return
函数的参数和变量
函数先后关系
假如sum函数和main主函数换下位置,那么就要在头部添加函数的原型声明
void sum(int a,int b);//原型声明(不是函数)
void sum(int a,int b){ //定义
int i;
int sum=0;
for(i=a;i<=b;i++){
sum=sum+i;
}
printf("%d到%d的和是%d\n",a,b,sum);
}
声明和定于必须一样
函数原型
调用函数
类型不匹配
C语言在调用函数时,永远只能传值给函数
传值
本地变量
变量的生存期和作用域
本地变量的规
没有参数时
void f(void);
还是
void f();
在传统c中,他表示f函数的参数表位置,并不表示没有参数
逗号运算符?
函数里的函数
没有意义
关于main
二维数组
二维数组的初始化
游戏
行和列
能否合并?
检查对角线