指针和函数习题集上机

哇呜呜!!!!今天做题做了好多决定把代码上机敲出来。
人家把人家的错题笔记都分享出来了,心意领了。
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到最后面几个 基本都是,指针函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方-教育技术博主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值