C语言基础与提高( 数组、函数 )
来源:互联网 发布:淘宝怎么刷信誉的方法 编辑:程序博客网 时间:2024/05/02 00:29
C语言的学习来到了数组和函数,这两者也是C语言相对重要的部分,对后面学习指针等内容有很大的帮助,所以我学起来也是相对认真。在学习这两部分时除了要理解相关的基础知识外,也要多练习编程,会一些基本的算法,所以在整理一些基础知识后,我着重的练习了一些简单算法的编程。
一:1、维数组的定义格式为:
类型说明符 数组名[常量表达式]; 例如: int a[10];
它表示定义了一个整形数组,数组名为a,有10个元素。
2、 数组的地址,a和&a
&a[0]:a[0]的首地址 &a[1]:a[1]的地址 &a[0]+1:a[1]的地址 &a+1:超出地址范围 a:a[0]的首地址
二:二维数组
1、 类型说明符 数组名[常量表达式][常量表达式];
2、在二维数组中 a+i ,a[i],*(a+i),&a[i],&a[i][0]的值相等即它们都代表同一地址。
3、*(a[1]+1) ,*(&a[1][1]),(*(a+1))[1]都表示一行一列元素值。
&a[i]或a+i指向行 a[i]或*(a+i)指向列
4、 #include <stdio.h>
int main()
{
int a[5] = {0};
int i,j;
int k ;
int length = sizeof(a)/sizeof(int);
printf("please input five numbers:\n");
for(i = 0; i < length; i++)
{
scanf("%d",&a[i]);
}
for(i = 0; i < length-1; i++)
{
for(j = 0; j < length-i-1; j ++)
{
if(a[j] > a[j+1])
{
k = a[j]; a[j] = a[j+1]; a[j+1] = k;
}
}
}
for(i = 0; i < length; i++)
printf("%d",a[i]);
return 0;
} (冒泡排序)
三、字符数组
1、逐个字符输入输出。用格式符“%c”输入或输出一个字符。
将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。
2、 (1)用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。
(2)如果数组长度大于字符串实际长度,也只输出到遇′\0′结束。
(3)输出字符不包括结束符′\0′。
(4)如果一个字符数组中包含一个以上′\0′,则遇第一个′\0′时输出就结束。
(5)可以用scanf函数输入一个字符串。
3、strcat函数
其一般形式为:strcat(字符数组1,字符数组2)
Strcat的作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。
4、strcpy函数
其一般形式为:strcpy(字符数组1,字符串2)
strcpy是“字符串复制函数”。
作用:是将字符串2复制到字符数组1中去。例如:
char str1[10],str2[]={″China″};
strcpy(str1,”china”);
5、strcmp函数
其一般形式为:strcmp(字符串1,字符串2)
strcmp的作用是比较字符串1和字符串2。
例如:strcmp(str1,str2);
strcmp(″China″,″Korea″);
strcmp(str1,″Beijing″);
6、strlen函数
其一般形式为: strlen (字符数组)
strlen是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括′\0′在内)。
7.#include <stdio.h>
#include <string.h>
int main()
{
char ptr[20] = {0};
char new[30] = {0};
char ch;
int num,i,length;
printf("please input:\n");
scanf("%s%d %c",ptr,&num,&ch);
length = strlen(ptr);
strncpy(new,ptr,num-1);
new[num-1] = ch;
strcat(new,ptr+num-1);
printf("%s\n",new);
return 0;
} (往字符串指定位置输入一个字符)
四、函数
1、 函数调用的形式:
(1)作为函数语句调用。函数一般无返回值。例:
printf(“Hello,World!\n”);
(2)作为函数表达式调用。例:
m=max(a,b)*2;
(3)作为函数参数调用。例:
printf(“%d”,max(a,b));
m=max(a,max(b,c));
2、值传递方式方式:
函数调用时,为形参分配单元,并将实参的值复制到形参中;
调用结束,形参单元被释放,实参单元仍保留并维持原值;
特点:
形参与实参占用不同的内存单元; 单向传递
3、 地址传递方式:
函数调用时,将数据的存储地址作为参数传递给形参
特点:
形参与实参占用同样的存储单元;
“双向”传递;
实参和形参必须是地址常量或变量;
4、(1)通过函数名找到函数的入口地址;
(2)为形参分配内存空间;
(3)把实参的值传给形参;
(4)执行函数体;
(5)返回;
(6)释放内存空间;
- C语言基础与提高( 数组、函数 )
- C语言基础与提高
- 【C语言提高31】数组基础概念
- C语言基础与提高1
- C语言的基础与提高
- C语言基础与提高2
- C语言基础与提高之指针
- C语言基础与提高5
- C语言基础与提高4——指针函数,函数指针
- C 语言复习与提高--- V. 函数
- C语言数组与函数
- C 语言复习与提高--- IV. 数组与指针
- c语言基础—指针与数组
- C语言基础 数组与排序
- C语言基础-指针与数组
- C语言基础 指针与数组
- C语言基础之指针与数组
- 2017.11.10 c语言基础与提高(一)
- Matlab2013a许可证过期问题,反复提示激活
- Ubuntu 16.04 Tensorflow 使用源码安装
- 关联规则
- redis异常: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on
- python中的try/except/else/finally语句
- C语言基础与提高( 数组、函数 )
- hdu6228
- css样式—字体垂直、水平居中
- Codeforces Round #445 (Div. 2, based on Technocup 2018 Elimination Round 3)
- 《软件工程(C编码实践篇)》总结
- M
- Spring+SpringMVC+MyBatis整合Druid之入门
- jsp/servlet第三章第一节Web项目打包
- LeetCode 643.Maximum Average Subarray 最大子数组的平均值