C语言错题总结

文章介绍了C语言中的输出格式规范,包括%d、%5d、%-5d和%05d等用法,以及二维数组的声明。此外,讨论了运算符的优先级和结合性,如求余运算和赋值运算。还提供了判断闰年和求最大公约数的代码示例,分别使用辗转相除法和更相减损法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输出格式(以整形为例,其他类似):

  • %d是普通的输出。
  • %5d是将数字按宽度为5,采用右对齐方式输出,若数据位数不到5位,则左边补空格,若数据位数超过5位,则正常输出。
  • %-5d就是左对齐。
  • %05d,和%5d差不多,只不过左边补0,而不是补空格。
  • %.5d从执行效果来看,和%05d一样。

定义二维数组时,行可省略,列不可省,例如int a[ ][4] 。

运算符相关

  • 求余运算符两边必须是整型,即对整数求余。
  • 双目运算符优先级高于赋值运算符,故表达式c=(c)?a++:b—即 将右边双目运算符的结果赋值给c;双目运算符自右向左结合,例如(a>b)?m=1:(a<b)?m=0:m=2表达式中,先算右边的值。
  • 赋值运算符,a*=b+1相当于a=a*(b+1),而不是a=a*b+1,也就是对后面的整体进行运算。

在C语言中,整型数据在内存中以补码的形式存储

static类型——声明静态变量

static放在变量前用来声明一个变量为静态变量;

局部变量说明为static类型,其生存期将得到延长,该变量作用域消失了但数据不会被销毁。

固定题型的一些方法  

1、判断是否为闰年:

判断条件为:四年一闰,百年不闰,四百年再闰。即能被4整除且不能被100整除,或能被400整除,则为闰年。

#include<stdio.h>

int main()
{
    int year,leap;
    printf("输入一个年份year:");
    scanf("%d",&year);

    if((year%4==0 && year%100!=0) || (year%400==0))
        leap=1; 
    else
	    leap=0;

    if(leap)
	    printf("%d是闰年\n",year);
    else
	    printf("%d不是闰年\n",year);

    return 0;	
} 

 

2、求两个数的最大公约数:

(a)辗转相除法

思路:将两个整数(a>b时)求余c=a%b,如果c=0,则b为最大公约数;如果c!=0,则a=b,b=c,继续循环直到c=0时循环结束。

#include <stdio.h>

int main()
{
	int a,b,c,t;
	printf("请输入两个整数:");
	scanf("%d %d",&a,&b);
	
	if(a<b)
	{
		t=a,a=b,b=t;
	}
		
	while((c=a%b)!=0)
	{
		a=b;
		b=c;
	}

	printf("这两个数的最大公约数为:%d\n",b);
	
	return 0;
}

(b)更相减损法

思路:如果a>b,a=a-b,如果b>a,b=b-a;如果a=b,则a或b为最大公约数,如果a!=b,则继续循环直到a=b时循环结束。

#include <stdio.h>

int main()
{
	int a,b,c,t;
	printf("请输入两个整数:");
	scanf("%d %d",&a,&b);

	while(a!=b)
	{
		if(a>b)
			a=a-b;
		if(b>a)
			b=b-a;
	}
	printf("这两个数的最大公约数为:%d\n",b);
	
	return 0;
}

3、求两个数的最小公倍数:

先求a与b的最大公约数c,则a*b/c为最小公倍数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

朝 颜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值