标签:全面 scan 输出 clu 条件 优势 解决方法 函数 for循环
补充:%04d是不足4位在该数前补0补到4位
解决问题的方法:原先算法存在错误,一开始我是让2与0,1,3,比较,如果都不相同则让sum++,再让0与1,3比较,以此类推
最后一个3就不判断,所以最开始sum为0,最后变为3,导致程序错误,所以后面改用r[10]数组存放(每次存放前数组里的元素都为0),
比如2013为r[2]=1,r[0]=1,r[1]=0,r[3]=1,2011为r[2]=1,r[0]=1,r[1]=1,r[1]=1,有相同位数在数组里项数是一样的,最后将r[10]里所以元素相加,得sum(不同位数)
4.最后判断flag,为0输出YES,为1输出NO
发现PTA上是错误的
5.输出:最开始让mark为0,如果mark不为0,则输出“ %d”(数前带空格),如果mark为0(说明为第一次输出),则输出“%d”(数前不带空格),并让mark=1
我的代码:
志坚的代码:
不同:志坚同学用了一个二维数组,输出二维数组条件为for(i=0;i<n;i++) for(j=0;j<=i;j++),输出数的个数与行数和列数相同,同时还使用了#include
没有发现错误,代码挺不错的 ,我说实话我喜欢志坚同学的代码的风格,确实比我的好
字符串可以存放在一维字符数组中并以空字符‘\0’作为结束标志
例如:static char s[6] = {‘H’,‘E’,‘L’,‘L’,‘O’,‘\0’};
因为普通数组元素的个数是确定的,一般用下标控制循环,而字符串没有显示地给出有效字符的个数
只规定‘\0’之前的字符为有效字符,所以通过判断字符是否为‘\0’来决定是否要结束循环
3.for(i=0;s!=‘\n‘;i++) scanf(‘%c",&s[i]),循环结束后s[i]=‘\0’,字符串中能带空格
2.再运用算法(number为int型)number=op-‘0’,再把number存放入普通数组b
1.将字符串存放入字符数组a,sum=0;
-2. 判断字符串里的每个元素是否为十六进制数
if(a[i]>=‘0‘&&a[i]<=‘9‘) sum=sum16+a[i]-‘0‘;
if(a[i]>=‘a‘&&a[i]<=‘f‘) sum=sum16+a[i]-‘a‘+10;
if(a[i]>=‘A‘&&a[i]<=‘F‘) sum=sum*16+a[i]-‘A‘+10;
直至a[i]=‘\0’结束,输出sum
当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址,不是数组每一个元素的地址。
4.粗心
选择题:第四题
错因:字节和数的概念模糊不清
1.字节通常用英文单词“bit”来表示,有时也可以写做“b” 改: bit是比特,Byte才是字节,也可以写做B
2.目前广泛使用的Pentium机其字长为16个字节 改:为32个字节
3.计算机中不是所有数的运算均为补码计算 正确 :逻辑运算就不为补码计算
4.计算机的字长并不一定是Byte的整数倍 改:一定是Byte的整数倍
错因:以为之前的代码中有输入语句
改:((ch=gerchar())!=‘\n‘)
错因:没看清题,以为之前做过类似的题目直接下手,认为是n++;
改n++为n+=2;
错因:定义函数时用返回值为int型,其他大体对
改正:将返回值改为double型
标签:全面 scan 输出 clu 条件 优势 解决方法 函数 for循环
原文地址:http://www.cnblogs.com/wlgczjw/p/7953826.html