再一次小结C语言
来源:互联网 发布:域名别名查询 编辑:程序博客网 时间:2024/05/20 22:02
2017年11月13号
在开始前补充一下上一次的知识,对于const:不能通过const修饰只读变量,不能通过变量名去修改对应的内存里的数据。
使用const注意就近原则,const保护常量,而volatile是防止变量编译时被优化。
开始今天的总结,首先对于二维数组的总结,对于a[3][4],能表示a[1][1]的有:*(a[1]+1),其中a[1]表示第二行首地址元素; (*(a+1))[1] :这里a+1表示第一行家到第二行的收地址;*(&a[1][1])表示a[1][1]地址上的值。
下面是对一些函数的总结:
1、冒泡排序法
#include <stdio.h>
int main()
{
int a[5] = {0};
int i, j, k;
int length = sizeof(a)/sizeof(int); //求整个数组长度
printf("please input 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;
}
2、在一个数组指定位置插入一个字符
方法一 :此方法是将指定位置之前的字符复制进新的,而后为指定位置输入字符,再使用strcat ,连接后面的字符。
#include <stdio.h>
#include<string.h>
int main()
{
char str[20] = {0};
char new[30] = {0};
int num, i;
char ch;
printf("Please input :\n");
scanf("%s%d%c",str, &num, &ch);
strncpy(new, str, num - 1);
new[num - 1] = ch;
strcat(new, str + num - 1);
printf("%s\n", new);
return 0;
}
方法二:此方法是将指定位置往后的字符分别向后位移,即分别向下一个地址赋值。
#include <stdio.h>
#include <string.h>
int main()
{
char ptr[20] = {0};
int num, i, length;
char ch;
printf("please input:\n");
scanf("%s%d %c",ptr, &num, &ch);
length = strlen(ptr);
for(i = 0; i < length - num + 1; i++)
{
ptr[length - i] = ptr[length - i - 1];
}
ptr[num - 1] = ch;
printf("%s\n",ptr);
return 0;
}
3、使用extern
主函数:
#include <stdio.h>
int num = 3;
int main()
{
print();
return 0;
}
print函数:
#include <stdio.h>
extern num;
void print()
{
printf("%d\n",num);
}
4、strcmp
#include <stdio.h>
#include <string.h>
int main()
{
char str[20] = {0};
char ptr[20] = {0};
scanf("%s%s", str, ptr);
if (strcmp(str, ptr) > 0)
{
printf("%s>%s\n",str, ptr);
}
else if (strcmp(str, ptr) < 0)
{
printf("%s<%s\n",str, ptr);
}
else
{
printf("%s=%s\n",str, ptr);
}
return 0;
}
对于strcpy
不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。
用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。
对于strcmp
作用是比较字符串1和字符串2, 两个字符串自左向右逐个字符相比(按ASCLL值大小相比较),直到出现不同的字符或遇到'\0'为止。
编写程序,实现strcmp()相同功能myStrcmp()函数
#include <stdio.h>
int myStrcmp( const char *str1, const char*str2)
{
while(*str1 && *str2 && (*str1 == *str2))
{
str1++;
str2++;
}
return *str1 - *str2;
}
int main()
{
char str1[10];
char str2[10];
scanf("%s%s", str1, str2);
printf("%d\n",myStrcmp(str1, str2));
return 0;
}
- 再一次小结C语言
- C语言小结
- c语言小结
- C语言小结
- c语言笔试小结
- C语言小结
- C语言指针小结
- c语言学习小结
- C语言关键字小结
- 19、C语言小结
- C 语言小结
- C语言小结
- C语言小结
- <C语言全局变量小结>
- C语言小结
- C语言小结
- C语言字符串小结
- C语言数组小结
- Android studio更新3.0后遇到的坑
- HDU 4501 小明系列故事——买年货
- 第三题
- c编程错误集
- 类简单工厂模式-笔记
- 再一次小结C语言
- 搭建Hadoop2.7.3+Hive2.1.1及MySQL(配置Hadoop)(一)
- 自定义异常类
- C++ XML简析
- js 积累
- <漏洞战争软件漏洞分析精要> 学习笔记
- 《The Practice of Programming》读书笔记(一)
- 687. Longest Univalue Path
- 米老师讲课(一年回顾)