一、数组
为什么需要数组?
为了解决大量同类型数据的存储和使用问题
为了模拟现实世界
数组的分类:
一维数组
**定义:**为n个变量连续分配存储空间
所有的变量数据类型必须相同
所有变量所占的字节大小必须相同
有关一维数组的操作
初始化
完全初始化
int a[5]={1,2,3,4,5};
不完全初始化,未被初始化的元素为0
int a[5]={1,2,3};
清零
int a[5]={0};
若要把a数组中的值全部复制给b数组:
for(i=0,i<5;++i)
b[i]=a[i];
赋值
代码如下
#include <stdio.h>
int main(void)
{ int a[5];
scanf("%d",&a[0]);
printf("%d\n",a[0]);
return 0;
}
二维数组
二维数组的使用:
#include <stdio.h>
int main(void)
{ int a[3] [4]={1,2,3,4,5,6,7,8,9,10,11,12};
int i,j;
for(i=0;i<3;++i)
{ for(j=0;j<4;++j)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
多维数组
是否存在多维数组?
不存在
内存是线性一维的,
二、函数
函数的简单使用
#include <stdio.h>
void max(int i,int j)
{ if(i>j)
printf("%d\n",i);
else
printf("%d\n",j);
}
int main(void)
{ int a,b,c,d;
a=1,b=2,c=3,d=4;
max(a,b);
max(c,d);
return 0;
}
为什么需要函数?
避免了重复性操作
有利于程序的模块化
什么是函数
**逻辑上:**能够完成特定功能的独立的代码块
物理上:
能够接受数据
能够对接收的数据进行处理
能够将数据处理的结果返回
总结:函数是工具,是为了解决大量类似问题而设计的
如何定义函数
函数的返回值 函数的名字(函数的形参列表)
{
函数的执行体
}
1、 函数定义的本质是详细描述函数之所以能够实现某个特定功能的具体实现方法
2、函数返回值的类型也称为函数的类型,
return和break的区别
return 表达式;的含义:
1、终止被调函数,向主调函数返回表达式的值
2、如果表达式为空,则只终止函数,不向被调函数返回任何值
函数的分类
有参函数 和 无参函数
有返回值函数 和 无返回值函数(void)
库函数 和 用户自定义函数
普通函数 和 主函数(main函数)
判断一个数是否为素数
代码如下:
#include <stdio.h>
bool Isprime(int val)
{ int i;
for(i=2;i<val;++i)
{if(val%i==0)
break;
}
if(val==i)
return true;
else
return false;
}
int main(void)
{ int m;
scanf("%d",&m);
if(Isprime(m))
printf("yes!\n");
else
printf("no!\n");
return 0;
}
函数的声明
如果函数调用写在了函数定义前面,则必须加函数前置声明。
函数前置声明:
1、告诉编译器即将可能出现的若干个字母代表的是一个函数
2、告诉编译器即将可能出现的若干个字母所代表的函数的形参和返回值的具体情况
3、函数是一个语句,末尾必须加分号
4、对库函数的声明是通过#include<库函数所在的文件的位置.h>来声明的
形参和实参
个数相同 位置一一对应 数据类型必须相互兼容
变量的作用和储存方式
按作用域分:
全局变量
局部变量:
在函数内部定义的变量或者函数的形参 ,都统称为局部变量
课后习题
2000:
代码如下:
遇到的问题: 1、输入多组数据需要用while(scanf(“xx”,&x)!=EOF)的形式 2、比较大小用if语句
2001:
代码如下
2002:
代码如下
2003:
代码如下
2004:
代码如下
2005:
不会写,将代码复刻了一遍自行理解 代码如下
2006:
代码如下
2007:
代码如下
总结:
要充分理解for循环和while循环的用法