PAT及程序设计遇到的问题集锦 (常更新)

阅读: 评论:0

PAT及程序设计遇到的问题集锦 (常更新)

PAT及程序设计遇到的问题集锦 (常更新)

以下内容或者截图部分取自CSDN的博客内容,侵删噢

1.scanf和gets连用时注意的问题以及相关用法
一般来说gets和scanf避免一起用,要用也是gets先用,scanf后用,如果scanf在gets前就会出现异常:

注意:scanf和scanf连用同理

解决办法:加一个getchar()或者fflush(stdin)

getchar的用法:




2.scanf 的用法解析
其调用格式为:scanf("<格式化字符串>",<地址表>);

scanf()函数返回成功赋值的数据项数,出错时则返回EOF

2.1scanf函数的控制串使用

#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d,%d,%d",a,b,c);
//注:scanf里面的变量一定要加地址符: &
//合法输入:(□..□意思是若干个空格或者tab)
//1□..□2□..□3 ↙
//1↙ 2□..□3↙
}
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("%d,%d,%d",a,b,c);
//合法输入:
//1,□..□2,□..□3 ↙
//非法输入:
//1□..□ ,□..□2,□..□3 ↙//总结原因:scanf的输入格式必须按照“”内的内容输入
//如:scanf("a=%d",&a);也要完整输入:a=?
//scanf在输入有效数据后,遇到以下情况结束该数据输入(不是结束scanf而是结束该数据输入):
//回车,空格,tab,非法输入//注意:scanf不能输入带空格的字符串如i love u

2.2 scanf输入字符串

scanf()扫描到"i"后面的空格就认为对s的赋值结束,并忽略后面的"love China".这里要注意是"love China"还在键盘缓冲区(关于这个问题,网上我所见的说法都是如此,但是,我经过调试发现,其实这时缓冲区字符串首尾指针已经相等了,也就是说缓冲区清空了,scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中)
r如果需要清楚缓存区,可参照上文1.添加getchar; 或者getch;或者 fflush(stdin);
其中,fflush(stdin);是最好的办法,前两者需要讨论情况(其实我了解的也不太深刻所以不能给出合理的解释)

3.sizeof和strlen的区别

	//sizeof 和strlenchar a[5][10]={"qwer","aa","saddadsa","ddd"};int len =strlen(a[1]);//四个元素分别是4 2 8 3的长度,因为不算空格int len1=sizeof(a[1]);//四个元素都是10,因为要算空格,而10是因为二维数组的一为=维有10个大小啊a[][10]printf("%d",len);

字符串的输入如果有空格的话单纯用scanf并不能实现目的,用gets又存在无法考虑数组大小的问题。不过其实也可以解决,只是需要一些替代的方案罢了,以下展示的是使用比gets更安全的函数fgets

期间还遇到了指针遍历数组最后一个元素出错的问题,在此记录一下

char a[81];fgets(a,81,stdin);char *p,*q;printf("%d   %dn",strlen(a),strlen("asdasd"));//同样的字符串,用fgets输入后计算strlen比scanf输入要多1,q=a+strlen(a)-2;    //因为fgets会自动添加一个'n'printf("%c",*q);    //输入a12345678,字符串长度是10,因为字符长度9+''一共10个单位//但是数组下标从0开始,所以数组下标最大值是10-2即 数组空间大小-2

5.字符类型大小

本文发布于:2024-02-02 16:33:09,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170686278645041.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序设计   集锦   PAT
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23