标签:scanf 段错误 直接插入 工作 blog 回车 ... 如何排序 二维
(5)在进行一个循环 for i=n-1 to i=1,i--;在逐一输出i的值即可。
(10)再到循环外,进行判断flag的值若奇值为1则输出YES 否则输出NO
起初对于数字在开头的表述方式是错误的没有注意到,然后另外一个错误是,我定义了一个flag=1,用来做判断这字符串是否正确,所以我在if((ch>=‘a‘ && ch<=‘z‘) || (ch>=‘A‘ && ch<=‘Z‘) || (ch==‘\n‘) || (ch==‘_‘) || (ch>=‘0‘ && ch<=‘9‘))的条件下加了一个flag=1,可是如果一个字符串中出现非法字符的同时又出现正确的字符那么这个flag 就会叠加,导致最后答案不正确。
然后我就在输入字符后加了一个if(j==1 && ((ch>=‘0‘) && (ch<=‘9‘)))判断第一个字符是否为数字,如果满足就 flag=0
在则我取消了if((ch>=‘a‘ && ch<=‘z‘) || (ch>=‘A‘ && ch<=‘Z‘) || (ch==‘\n‘) || (ch==‘_‘) || (ch>=‘0‘ && ch<=‘9‘))后面的flag=1的操作,这样就可以解决叠加的效果。
第一次莫名其妙的第一次出现了段错误这个名词,检查后发现在输入的时候漏掉了地址
这次是为非法字符的错误好像是漏掉的考虑ch是否为非法字符
然后我就在switch语句前加了一个if(ch==‘+‘ || ch==‘-‘ || ch==‘*‘ ||ch==‘/‘)的判断。
1:定义一个数组,需要明确数组变量名,数组元素的类型和数组的大小。
一般形式为类型名 数组名 [数组长度] 注意!!数组长度是一个常量
数组名是一个地址常量,存放数组内存空间的首地址
在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下表来相互区分。它的优点是表达简洁,可读性好便于使用循环结构。
for(i=k+1;i<n-k;i++);
if(a[i]<a[min]) min=i;
重复执行第5步骤,直到i=n-k为止;
temp=a[k-1]; a[k-1]=a[min]; a[min]=temp;
重复执行第4步骤,直到k=n时为止; for(i=k+1;i<n-k;i++);
if(a[i]<a[temp])
N=a[itemp]; a[temp]=a[i]; a[i]=N;
重复执行第5步骤,直到i=n-k为止;
重复执行第4步骤,直到k=n时为止; for(i=k+1;i<n;i++);
if(a[i]<a[bigger])
for(j=k;j>=0;j--)
a[ j+1]=a[ j ];
重复执行第5步骤,直到i=n-k为止;
重复执行第4步骤,直到k=n时为止;
6.输出n个元素数组的值。
```
二分查找法是在元素按从小到大排列的数组中查找一个数时,取数组的中间值判断是该数比要找的数大还是小,然后进一步锁定相应的范围,直到找到要找的数或者最后一个数并不是该数
区别:顺序查找法是从第一个找到最后一个,直到找到要找的数或者最后一个数并不是该数,没有找到该数。顺序查找法比二分查找法要简介明了,更直接;但是二分查找法工作效率更高,如果数组元素比较多的话,顺序查找法的效率就会降低。
1:在二维数组定义时,初始化有两种方法
1:分行赋值法:
类型名 数组名 [行长度] [列长度]={{初始值0},{初始值1}.......}
2:顺序赋值法
一般形式为:
类型名 数组名 [行长度][列长度]={初值表}
用二维数组 a[ n ][ n ],除对角线上的元素以外,当i小于j时(上三角),a[ j ][ i ]=a[ i ][ j ];即可实现矩阵转置。
上三角:i小于等于j;下三角:i大于等于j。
我觉得应该是用于表示矩阵,和多维向量。
对于数组的使用还是很生疏。
标签:scanf 段错误 直接插入 工作 blog 回车 ... 如何排序 二维
原文地址:http://www.cnblogs.com/1028-zwj/p/7897196.html