我的c错题本

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45697774/article/details/102718084

我的错题总结

萌新报到!菜鸡萌新的错题总结刚刚踏上ACM之旅,在博客上记录一些知识,方便复习,如果有错误,烦请各位大佬评论指正,非常感谢!!
老司机们带带我
1.
/普通年:能被4整除但不能被100整除的年份为普通闰年。
世纪年:能被400整除的为世纪闰年。
/
2.
单纯的&1是没有意义的 而且是非法的

但是一个变量 a&1 是合法的 代表的意思是a和1做二进制的且运算 即看a的最后边那一位是不是1

是1的话(奇数) 返回1 否则返回0

那是不是就是判断奇偶呢?等效于a%2==0/1,那两种写法有什么区别?谢谢
是的 两者目的一样 但是a%2的效率要低一些 没有&运算快
3.
goto语句也只限于一个函数内,不能进行函数间的跳转。在c语言中,进行函数间的跳转使用setjmp和longjmp函数。
4.
n=n*8+*p-‘0’;指针p一位一位的往后走
*p-'0’就是将字符变成数字,例如123 当 p指向1的时候,*p = ‘1’ ,而‘1’-‘0’就是两者之间的ASCII码进行相减,
结果就是1了。
所以

n = 0*8+1=1
n=1*8+2=10
n=10*8+3=83
n=n*2+*p-'0';//二进制转十进制

如有输入多组值的时候,注意每次开始新的一组时值要清零

#include<stdio.h>
#include<math.h>
int main()
{
	int i,j;
	while(scanf("%d%d",&i,&j)!=EOF)
	{
	    int n=0,x=0;/*注意这里要清零*/
		for(i;i<=j;i++)
	  {
	    if(i&1)
			n+=(int)(pow(i,3));
		else
			x+=(int)(pow(i,2));
	  }
	printf("%d %d\n",x,n);
	}
	return 0;
}
   if(m > n) {     // 保证m<=n,以便控制循环
               i = m;
               m = n;
               n = i;
                     }

像这道题,一定要注意保证m<=n,要多写这一步
6.
%f代表单精度浮点型数据(float),%lf代表双精度浮点型数据(double)。
7.
7.1// 计算立方和:从个位、十位到百位分别计算求和

     int sum = 0;
		t = i;
            while(t) {
               int t2 = t % 10;
               sum += t2 * t2 * t2;
               t /= 10; // 去掉个位
            }//取每一位的数
7.2//

输出结果(没有水仙花数)和换行

     if(count == 0)
            printf("no");
        printf("\n");
	}//如果有要求没有的时候输出no这种要再定义一个变量用于储存目标的个数

8.如果遇见要求求得不等式的前n项和,用for循环并用if来限定好条件;
9.
如果进入一个函数没有达到要求未运行则return 的值默认为-1
10.
如果要求有单位,如5w即为50000
那么应该这样:

scanf("%d%c ",&a,&aa); 
		 
		 if(aa=='w')`在这里插入代码片`
			 a*=10000;

.
main’必须返回‘int’ c/c++的main函数必须是int类型,而且最后要return 0。这不仅对洛谷其他题目有效,而且也是noip/noi比赛的要求!
多组输出可以这样:

printf("                ********\n"
	"               ************\n"
	"########################################## ############\n" );
	
if(n%a[i][0]!=0) 
		{ 
                cnt[i]=n/a[i][0]+1;  //除完不为零则下面除完要加一(int只舍不入)   
                }         

s

-=c-300等价于s=s+300-c
13.

        x=i;
	if(x<min)
	min=x;//如果要求输出的是最小的那么在循环的时候要注意这一点,声明一个min用于储存这一最小值用(if)
        h+=s/100;
	s%=100;//h用于接收s中百位以上的数,用%100即可得到s的后两位


#include<time.h>
	printf(Time used="%.2f\n",(double)clock()/CLOCKS_PER_SEC);
	//求运行时间

猜你喜欢

转载自blog.csdn.net/weixin_45697774/article/details/102718084