哇呜呜!!!!今天做题做了好多决定把代码上机敲出来。
人家把人家的错题笔记都分享出来了,心意领了。
9.98,复制字符串
这样的思路很对,如果用*的话取不到 \0, 没办法判断是否结束,
自己第一次粗心漏掉了 != \0,结果依然能运行,但是输入空格的时候就不行了
结果打上了 ,也还是会这样
这个地方加不加这个 != \0,运行结果一样的
至于自己这样的思路
全部代码
#include <stdio.h>
#include <string.h>
//将字符串b复制到a
void s(char* s,char* t)
{
int i =0;
//while((s[i]=t[i])!='\0') i++;
/*
下面这个是错的,但是为什么不行呢。
*/
while(t[i]!='\0') strcpy(s,t);
}
int main()
{
char a[20],b[20];
scanf("%s",b);
s(a,b);
puts(a);
return 0;
}
9.99 判断两个字符串是否相等
同理这个题的思路不应该往用字符串函数那里想,因为既然用函数来完成,那肯定是一个字符串一个字符串的来哇。
return(s[i]=='\0'&&t[i]=='\0'?1:0)
要注意这个地方不加括号程序会报错。
应该是这样
return((s[i]=='\0'&&t[i]=='\0')?1:0)
全部程序:
#include <stdio.h>
#include <string.h>
//比较两个字符串是否相等,相等返回1,否则返回0
int f(char s[],char t[])
{
int i =0;
while(s[i]==t[i]&&t[i]!='\0') i++;
//return((s[i]=='\0'&&t[i]=='\0')?1:0);
return(strcmp(s,t));
//while(t[i]!='\0') strcpy(s,t);//这样会导致返回值不符合要求。
}
int main()
{
char a[20],b[20];
scanf("%s%s",a,b);
int i=f(a,b);
printf("%d",i);
return 0;
}
9.100 计算最长单词长度。
新理解
这个我的思路是 while结束的时候,直接if 判断后面 如果这个单词更长 新定义一个指针变量x = p - max 就可以定位到这个单词了。
9.101 统计指定字符个数,
答案错了,逻辑明显漏掉了。
#include <stdio.h>
#include <string.h>
//比较指定字符串个数
int check(char* s)
{
int l=0,r=0;
while(*s!='\0')
{
if(*s=='(') l++;
else if(*s==')') r++;
s++;
}
if(r==l||l>r) return 1;
else return 0;
}
int main()
{
char c[20],b[20];
int d;
gets(c);
d=check(c);
printf("%d",d);
return 0;
}
9.103
进制转换,我这个是全的进制转化,第一次看不懂的原因是因为看不懂
为什么加48和55,后来明白这是char型不是 int 型,转成数字需要加对应的。
注意不要犯他这种错误
倒序输出应该是 strlen-1
本题目拓展到其他进制,代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
int y = 0, num, x; //num为输入的十进制数字,x为目标进制类型
int arr[32] = { 0 }; //存放每一次余数的数组
printf("请输入你要转换的十进制数num和转的换的目标进制x:");
scanf("%d %d", &num, &x);
while (num != 0) //当num不等于0 时进入循环
{
y++;
arr[y] = num % x;
num = num / x;
if (arr[y] > 9)
{
arr[y] = 'A' + (arr[y] - 10); //对余数的判断 主要针对16进制
}
else
{
arr[y] = arr[y] + '0';
}
}
for (int i = y; i > 0; i--) //倒序输出数组
{
printf("%c", arr[i]);
}
return 0;
}
9.104 指针判断回文字符串自己意识不到位,没有意识到传入的是指针!!!
最好像这哥们一样画个图
这样的话就很清楚了。
9.105 自己做题还是没有意识到 字符数组默认是含有\0
的,所以少数了一个,应该是7个
9.107 首字母变大写的功能,设置一个标志位就好了。
其实考场上时间充足的话最好能画个框图。
9.110
tip :gets输入也是有\0的
9.112 大意了这不就是指定一段交换,其实不就是指定的那一段交换完成就是倒序了嘛。
9.116 插入法排序
自己不知道咋想的会漏了3
115:找子串,有就跳过!
错因:循环没走完漏一个,没想到\0 漏一个,所以是6
122
不知道为什么写的12 ,第二遍一看就会。
123 笑死。。。。直接看循环的判断条件,写了半天没写答案也是傻逼了。
126 粗心了 ,返回值是b不是c,就是说第一遍做不着急正确率会高很多??
129不要重新定义不然肯定会报错的。
130 第一遍为什么要+k呢,无语子。考不上不是不会是自己作的哈哈哈。
131 粗心漏了*,
136——139同一类题,记下来就好了。
141 搞不懂为什么不能用指针表示。
54号大佬说可以哈哈哈哈
144 不是i++。是每次加两个,自己还挺牛逼验算了一下首相加尾箱乘以项数除以二。
149 其实还是有点东西的,因为要考虑插入后,扩容的问题,所以只能n++,第三空是这样的,第二空的话,
应该是粗心了没有写 *号
150第一空错了。
自己被反套路了。上面给i赋值的时候已经减过1了不需要再减了。
9.175指针函数
176 的规律就是 正常的顺序
然后 180到最后面几个 基本都是,指针函数。