while 上限>=下限 中间值=(上限+下限)/2 若是 中间值等于所查找的数 找到数据,退出循环 若是 数>中间值 下限=中间值的前一位 不然 上限=中间值后一位 end while
输入数据 for(遍历数组) 若是 找到所插入数的位置 该位置日后数据右移一位,该位置赋值为插入的数 end for 输出更改后的数组
1.经过平移数组删除。数组
for(遍历数组) 若是 找到所需删除的数据 从该数据位置日后全部数据向前平移一位,数组长度减一 不然 输出未找到,退出循环 end for 输出更改后的数组
2.经过定义第二个数组进行删除。函数
定义第二个数组b[] for(遍历数组) 若是 不是所需删除的数据 b[K++]等于该数据 不然 继续循环 end for 输出b数组
1.选择法排序:学习
for(i=0;遍历数组) for(j=i+1;遍历数组) 若是a[i]<a[j] 交换a[i]a[j] end for end for 输出重构的数组
2.冒泡法排序:每次排序将最大的数移至最后测试
for(i=1;i<=数组长度-1;i++) //排序次数,全排列的次数为数组长度减一 for(j=1;j<数组长度-i;j++)//每次排序完所需循环次数减一 若是a[j-1]>a[j] 交换a[j-1]a[j] end for end for 输出重构后的数组
个人函数代码以下:
字体
个人代码以下:
指针
/ | 11周 | 12周 | 总计 |
---|---|---|---|
代码量 | 671 | 613 | 1284 |
定义数组a[10]={0} 输入年份,不一样数个数 while(1) 对以年份的4个数字为下标的4个数赋值为1 若是数组a中大于0的个数与输入的不一样数个数相同 则输出年份差及当前年份并退出循环 年份加一 end while
输入数据 | 输出数据 | 说明 |
---|---|---|
1988 4 | 25 2013 | 年份过1000,n为4 |
1 2 | 0 0001 | 最小边界 |
3000 4 | 12 3012 | 最大边界 |
2019 3 | 2 2021 | n为3,4为不一样的不算 |
233 2 | 67 0300 | n为2,输出前补0 |
1.部分正确:没有考虑到年份小于1000,千位的0没法记入数组。后续加上对年份小于1000 a[0]++的判断。 2.所有正确;
输入数据并找出“@”跟“.”所在下标及出现次数 若是 “@”跟“.”出现次数大于1或者“@”的下标大于“.”的下标 则 输出NO结束程序 for(i=0;i<“@”下标;i++) 若是 有一个元素不知足条件 则 输出NO结束程序 end for for(i=“@”下标+1;i<“.”下标;i++) 若是 有一个元素不知足条件 则 输出NO结束程序 end for 若是 从“.”日后三个元素若是不知足“com”或者com后仍有元素 则 输出NO结束程序 若都知足 输出YES
输入数据 | 输出数据 | 说明 |
---|---|---|
adf12_@qw_213.com | YES | 正常地址 |
abc@123.comx | NO | com后面有字符 |
abc.@123.com | NO | @前出现. |
abc@@123.com | NO | 多个@ |
abc@123..com | NO | 多个. |
ab c@123.com | NO | 有空格 |
abc123.com | NO | 无@ |
abc@123com | NO | 无. |
1.段错误:不知道为何在PTA使用while语句进行输入会报错,在VS却正常运行。后面改为scanf 2.部分正确:没有考虑到com后可能仍有字符的状况,随后加上了总字符长度跟m下标大小的判断 3.部分正确:因为scanf遇到空格会中止输入,因此致使数据不全。后面改为了gets 4.所有正确。
定义数组b//用于储存符合条件的字符 输入数据 for(i=0;遍历数组) 若是 数据符合条件 则 b[k++]=该数据 若是 b在被赋值以前出现'-' 则 flag=1 end for for(i=0;遍历数组b) 若是 数据在0-9 则 num=num*16+数据对应的十进制数 不然若是 数据在a-z(大小写均同样) 则 num=num*16+数据对应的十进制数 end for 若是flag等于1 则num=-num 输出num
输入数据 | 输出数据 | 说明 |
---|---|---|
+-P-xf4+-1!# | -3905 | 有两个'-' |
a-bda-# | 43994 | '-'无效 |
-((^(*# | 0 | 所有过滤 |
1.部分正确:起先定义num的类型为double,输出%.0f数值较大时会出现偏差,致使结果错误。而后改为了int。 2.部分正确:用于判断结果是否为负数的flag1未赋初值。随后赋值为0. 3.所有正确。