C

合法的标识符

标识符由字母(A-Z,a-z)数字 (0-9)、下划线“_”组成
首字符不能是数字,但是可以是字母或者下划线
标识符对大小写敏感,即严格区分大小写。

/和%

1/2=0
1.0/2=0.5

%的两个操作符必须是整数
例:6.0%4是错误的
余数符号与被余数的符号相同
例:4%(-3)=1,-4%3=-1

字母和数字的判别

1、用isalpha()函数来监测一个字符是否是字母
(头文件cctype)
若为英文字母,返回非0(小写字母为2,大写字母为1)。若不是字母,返回0

2、用ascii码判断
第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母。

#include <stdio.h>
int main() {
	char c;
	c = getchar();//读取一个字符
	if (c >= '0' && c <= '9')
		printf("是数字\n");
	else  if (c >= 'a' && c <= 'z')
		printf("是小写字母\n");
	else if (c >= 'A' && c <= 'Z')
		printf("是大写字母\n");
	return 0;
}

大小写字母的转换

大小写字母在ascii码上相差32,因此小写字母转换为大写字母的方法就是将小写字母的 ASCII 码值减去 32,便可得到与之对应的大写字母。同理大写字母转换小写字母就是将大写字母的ASCII码加上32。

#include <stdio.h>
int main()
{
	char a, b;
	printf("输入一个小写字母:\n");
	a = getchar();
	b = a - 32;
	printf("转换后的字母为:%c,%d\n", b, b);
	return 0;
}

类型强制转换

整型类型级别从低到高依次为:
int -> unsigned int -> long -> unsigned long -> long long -> unsigned long long
浮点型级别从低到高依次为:
float -> double

一个表达式中出现不同类型间的混合运算,较低类型将自动向较高类型转换。

#include<stdio.h>
int main() {
	int n;
	n = (int)10.9 + (int)12.7 + (int)11.8;
	printf("%d", n);
	return 0;
}

这里n的值为33。

#include<stdio.h>
int main() {
	int n = 10.9 + 12.7 + 11.8;
	printf("%d", n);
	return 0;
}

这里n的值为35。

运算符

运算符描述
++自增运算符,整数值增加 1
自减运算符,整数值减少 1
+=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数
-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数
*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数
/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数

关系运算符

C 语言提供的关系运算符有: >(大于)、>=(大于等于)、<(小于)、<=(小于等于)、==(等于)和 !=(不等于)6 种二元关系运算符。

例如:
int a=3,b=5;
则有:
a>b:逻辑假,其值为 0;
a>=b:逻辑假,其值为 0;
a<b:逻辑真,其值为 1;
a<=b:逻辑真,其值为 1;
a==b:逻辑假,其值为 0;
a!=b:逻辑真,其值为 1;

#include<stdio.h>
int main (void)
{
    int a=0,b=1,c;
    c=a>=b||b++>1;
    printf("a=%d,b=%d,c=%d\n",a,b,c);
    return 0;
}

代码分析:
根据运算符的优先级,表达式 a>=b||b++>1 等价于 (a>=b)||(b++>1)。a>=b 为假,其值为 0,逻辑或 || 不会发生“短路”。

接着计算逻辑或 || 的右操作数 b++>1,由于是后缀加 1,故先取 b 的原值 1 与 1 比较大小,由于 1>1 为假,故逻辑或 || 的右操作数也为假,假 || 假 = 假,故 c 的值为 0。执行了一次 b++ 运算,故 b 的自身值增了 1,变为 2。

运行结果为:
a=0,b=2, c=0
(此代码和分析参考自此网站

逻辑运算符

&& 与运算,双目,对应数学中的“且”
|| 或运算,双目,对应数学中的“或”
! 非运算,单目,对应数学中的“非”
参考

条件运算符

格式:条件?表达式1:表达式2

int max(int a,int b){return a>b?a:b;}//找两个数最大值

switch语句(注意break)

switch(表达式)
{ 
    case 常量表达式1:  语句1;
    case 常量表达式2:  语句2;case 常量表达式n:  语句n;
    default:语句n+1;// 没有识别到任何命令}

三个数找最大值、最小值

#include<stdio.h>
int main()
{
	int a, b, c, max, min;
	printf("请输入三个整数\n");
	scanf("%d%d%d", &a, &b, &c);
	max = (a > b) ? a : b;
	max = (max > c) ? max : c;
	min = ( a<b ) ?  a:b ;
	min = ( min<c ) ?  min:c ;
	printf("三个数中最大值为:%d,最小值为:%d\n", max, min);
	return 0;
}

将百分制成绩输出为相应的等级

输入一个百分制的成绩t,将其转换成对应的等级然后输出,具体转换规则如下:
90~100为A
80~89为B
70~79为C
60~69为D
0~59为E
要求:如果输入数据不在0~100范围内,请输出一行:“Score is error!”。

#include<stdio.h>
int main()
{
	int score;
	printf("Input the score:");
	scanf("%d", &score);
	if (score >= 90 && score <= 100)
		printf("The level is A.\n");
	else if (score >= 80 && score < 90)
		printf("The level is B.\n");
	else if (score >= 70 && score < 80)
		printf("The level is C.\n");
	else if (score >= 60 && score < 70)
		printf("The level is D.\n");
	else if (score >= 0 && score < 60)
		printf("The level is E.\n");
	else printf("Score is error!\n");
	return 0;
}

判断闰年

判断任意年份是否为闰年,需要满足以下条件中的任意一个:
① 该年份能被 4 整除同时不能被 100 整除;
② 该年份能被400整除。

#include<stdio.h>
int main()
{
	int year;
	scanf("%d", &year);
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
		printf("%d此年是闰年\n", year);
	else
		printf("%d此年非闰年\n", year);
	return 0;
}

奇偶数

#include<stdio.h>
int main()
{
	int a;
	scanf("%d", &a);
	if (a % 2 != 0)
		printf("%d是奇数",a);
	else
		printf("%d是偶数",a);
	return 0;
}

水仙花数

“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
求1000以内的水仙花数

#include<stdio.h>
#include<math.h>
int main()
{
	int sum,a,b,c;
	for (int i = 100; i < 1000; i++)
	{
		a = i / 100;
		b = (i - a * 100) / 10;
		c = i % 10;
		if (i == pow(a, 3) + pow(b, 3) + pow(c, 3))
			printf("%d  ", i);
	}
	return 0;
}

求解一元二次方程

#include<stdio.h>
#include<math.h>
int main()
{
	float a, b, c, x1, x2;
	printf("输入方程的abc:");
	scanf("%f%f%f", &a, &b, &c);
	if (b * b - 4 * a * c < 0)//判断方程是否有实根
	{
		printf("方程无实根!");
	}
	else//如果有解就打印出方程的根
	{
		x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
		x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
		printf("输出为:x1=%.2f,x2=%.2f", x1, x2);
	}
	return 0;
}

99乘法表

#include <stdio.h>
int main() {
    int i,j;
    for(i=1;i<=9;i++) {
        for(j=1;j<=9;j++)
            printf("%d*%d=%2d\t", i, j, i*j);
        printf("\n");
    }
    return 0;
}

输出各种三角形

参考
正三角

#include <stdio.h>
int main() {
	int i, j,n;
	scanf("%d", &n);//输入行数
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - i - 1; j++)
			printf(" ");
		for (j = n - i - 1; j < n + i; j++)
			printf("*");
		printf("\n");
	}
	return 0;
}

倒三角

#include <stdio.h>
int main() {
	int i, j,n;
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < i; j++)
			printf(" ");
		for (j = 0; j < 2 * n - 2 * i - 1; j++)
			printf("*");
		printf("\n");
	}
	return 0;
}

fabonacci数列前n项

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值