#include
int main()
{
printf("******************\n");
printf("Hello World!\n\n");
printf("******************\n");
return 0;
}
1.求最大值最小值的代码是c语言的小套路,后续与排序结合在数组或是结构体中非常常见。
//常规代码
#include
int Max(int a,int b);
int main()
{
int a,b,c,max;
scanf("%d %d %d",&a,&b,&c);
max=a;
if(max>b)
max=b;
if(max>c)
max=c;
printf("Max = %d",max);
return 0;
}
/*
条件表示式版
max=max
//函数版代码
#include
int Max(int a,int b);
int main()
{
int a,b,c,max;
scanf("%d %d %d",&a,&b,&c);
max=Max(a,Max(b,c));
printf("Max = %d",max);
return 0;
}
int Max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
本章重点:流程图
小套路:闰年整除(取余的用法)
小套路:整除—对应着一个整数取余操作正好为0
/*
符合系列两条件之一的是闰年
1.能被4整除但不能被100整除
2.能被400整除
*/
#include
int isLeapYear(int year);
int main()
{
int i,n,m;
scanf("%d %d",&n,&m); //赋值年份上下限
for(i=n;i<=m;i++) //循环遍历年份判断闰年
if(isLeapYear(i))
printf("%d is Leap Year\n",i);
return 0;
}
int isLeapYear(int year) //判断闰年函数
{
if((year%4==0&&year%100)||year%400==0)
return 1;
else
return 0;
}
公式d=b2-4ac
求 根 公 式 一 : x 1 = ( − b − b 2 − 4 a c ) 2 a x 2 = ( − b + b 2 − 4 a c ) 2 a 求根公式一: \\ x_1={{(-b-\sqrt{b^2-4ac})}\over {2a}} \qquad x_2={{(-b+\sqrt{b^2-4ac})}\over {2a}} 求根公式一:x1=2a(−b−b2−4ac)x2=2a(−b+b2−4ac)
求 根 公 式 二 : p = − b 2 a q = d 2 a x 1 = p + q x 2 = p − q 求根公式二: \\ p={{-b}\over {2a}} \qquad q={\sqrt{d}\over {2a}} \\ x_1={p+q} \qquad x_2={p-q} 求根公式二:p=2a−bq=2adx1=p+qx2=p−q
#include
#include
int main()
{
double a,b,c,d,x1,x2;
scanf("%lf %lf %lf",&a,&b,&c);
d=b*b-4*a*c;
if(d<0)
printf("Sorry! System without solution!");
else
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("System Have a solution!\nx1 = %.2f\tx2 = %.2f",x1,x2);
}
return 0;
}
/*
else中的另一种解法
p=-b/(2*a);
q=sqrt(d)/(2*a);
x1=p+q;
x2=p-q;
*/
#include
#include
int main()
{
int i,digit,number,max;
scanf("%d",&digit);
scanf("%d",&number);
max=number;
for(i=1;i<digit;i++)
{
scanf("%d",&number);
if(max<number)
max=number;
}
printf("Max = %d",max);
return 0;
}
本章重点:math.h函数的调用
小套路:字符转换
#include
#include
int main()
{
double r=0.07,p;
r=1+r;
p=pow(1.07,10);
printf("p = %f",p);
return 0;
}
//输出结果
//p=1.967151
#include
#include
int main()
{
double band=1000,year;
double p1,p2,p3,p4,p5;
p1=band*(1+0.03*5);
printf("p1 = %f\n",p1);
p2=band*(1+0.021*2)*(1+0.0275*3);
printf("p2 = %f\n",p2);
p3=band*(1+0.0275*3)*(1+0.021*2);
printf("p3 = %f\n",p3);
p4=band*pow((1+0.015),5);
printf("p4 = %f\n",p4);
p5=band*pow(1+0.0035/4,20);
printf("p5 = %f\n",p5);
return 0;
}
//输出结果
/*
p1 = 1150.000000
p2 = 1127.965000
p3 = 1127.965000
p4 = 1077.284004
p5 = 1017.646235
*/
#include
int main()
{
double d=300000,p=6000,r=0.01;
double m;
m=log(p/(p-d*r))/log(1+r);
printf("m = %.1f",m);
return 0;
}
/*题目要求单个赋值法略,进阶
既A替换为E,a替换为e,V替换A,W替换为B……Z替换为D。
*/
#include
#include
int main()
{
int i;
char str[81];
gets(str); //输入字符串
for(i=0;i<strlen(str);i++)
{
if((str[i]<='Z'&&str[i]>='A')||(str[i]<='z'&&str[i]>='a')) //保证是字母
{
if((str[i]<='Z'&&str[i]>='V')||(str[i]<='z'&&str[i]>='v')) //进行转换
str[i]=str[i]-22; //末尾-22偏移
else
str[i]=str[i]+4; //首部+4偏移
}
}
puts(str);
return 0;
}
#include
#include
int main()
{
//已知半径为1.5,高为3
double r,h,pi=3.141526;
scanf("%lf %lf",&r,&h);
double lenth,area,oarea,v,cv;
lenth=2*pi*r;
area=pi*r*r;
oarea=4*pi*r*r;
v=3.0/4*pi*r*r*r;
cv=pi*r*r*h;
printf("lenth = %6.2f,area = %6.2f,oarea = %6.2f,v = %6.2f,cv = %6.2f",lenth,area,oarea,v,cv);
return 0;
}
定义为字符型和整型均可以。
输出ASCII值要用printf函数。
只有在字符型数据范围内(0~127),整型和字符型可以相互代替。
#include
#include
int main()
{
char c1,c2;
int c11,c12;
c1=getchar();
c2=getchar();
c11=getchar();
c12=getchar();
printf("\nchar类型:\n");
putchar(c1);
putchar(c2);
putchar('\n');
printf(" %c %d",c1,c1);
printf(" %c %d",c2,c2);
printf("\nint类型:\n");
putchar(c11);
putchar(c12);
putchar('\n');
printf(" %c %d",c11,c11);
printf(" %c %d",c12,c12);
return 0;
}
/*输出结果
AaBb
char类型:
Aa
A 65 a 97
int类型:
Bb
B 66 b 98
*/
本章重点:if-else,switch-case
小套路:交换,选择结构与整数除法取个位数的结合
错题: a=3,b=4,c=5 , !(a>b) && !c || 1 逻辑表达式的值是1
#include
#include
int main()
{
int n,sn;
printf("请输入一个小于1000的正数:");
scanf("%d",&n);
while(n>1000||n<=0)
{
printf("不符合要求,请重新输入:");
scanf("%d",&n);
}
sn=(int)sqrt(n);
printf("sqrt %d is %d",n,sn);
return 0;
}
#include
#include
int fact(int x);
int main()
{
int x;
scanf("%d",&x);
if(x<1)
printf("y = %d = %d",x,x);
else if(x>=10)
printf("y = 3*%d-11 = %d",x,3*x-11);
else
printf("y = 2*%d-1 = %d",x,2*x-1);
printf("\nfact(x) = %d",fact(x));
return 0;
}
int fact(int x)
{
if(x<0)
return -1;
else if(x==0)
return 0;
else
return 1;
}
#include
#include
void changegrade(int grade);
int main()
{
double sorce;
int grade;
scanf("%d",&sorce);
grade=(int)sorce/10;
switch(grade){
case 10:
case 9: printf("sorce = %.2f, grade is A",sorce);break;
case 8: printf("sorce = %.2f, grade is B",sorce);break;
case 7: printf("sorce = %.2f, grade is C",sorce);break;
case 6: printf("sorce = %.2f, grade is D",sorce);break;
default: printf("sorce = %.2f, grade is E",sorce);break;
}
return 0;
}
void changegrade(int grade) //把功能抽象出来
{
switch(grade){
case 10:
case 9: printf("sorce = %.2f, grade is A",sorce);break;
case 8: printf("sorce = %.2f, grade is B",sorce);break;
case 7: printf("sorce = %.2f, grade is C",sorce);break;
case 6: printf("sorce = %.2f, grade is D",sorce);break;
default: printf("sorce = %.2f, grade is E",sorce);break;
}
}
/*
题目变式,有90-85是B,84-70是C
那么case8:需要有微调加入选择结构
case8: if((int)sorce%10>=5)
printf("sorce = %.2f, grade is B",sorce);
else
printf("sorce = %.2f, grade is C",sorce);
break;
*/
#include
#include
int manydigit(int n);
void reversed(int n);
int main()
{
int n,count;
scanf("%d",&n);
//计算几位数
int i,digit=0;
for(i=n;i>0;i/=10)
digit++;
printf("digit = %d\n",digit);
//输出每位数
int g,s,b;
g=n%10;
if(g>0)
printf("g = %d\n",g);
s=n/10%10;
if(s>0)
printf("s = %d\n",s);
b=n/100;
if(b>0)
printf("b = %d\n",b);
//逆序
printf("方案一:逐个输出 ");
printf("%d%d%d\n",g,s,b);
printf("方案二:计算输出 ");
printf("%d",g*100+s*10+b);
return 0;
}
int manydigit(int n) //计算位数的函数 ,求水仙花数会用到
{
int i,digit=0;
for(i=n;i>0;i/=10)
digit++;
return digit;
}
/* 函数递归方式---打印各个位上的数字(和逆序递归的区别就在打印先执行还是函数调用先执行)*/
void printdigits( int n )
{
if(n/10==0)
printf("%d",n%10);
else
{
printdigits(n/10);
printf("%d",n%10);
}
}
//逆序打印方法一:
void reversed(int n)//逆序打印 常见的整数逆序套路,求和的一种变形
{
int i,sum=0;
for(i=n;i>0;i/=10)
{
sum=sum+i%10;
}
printf("%d",sum);
}
//逆序打印方法二:
/* 逆序输出打印的函数递归方式 */
void printdigits( int n )
{
if(n/10==0)
printf("%d",n%10);
else
{
printf("%d",n%10);
printdigits(n/10);
}
}
#include
#include
int main()
{
int cash,flag;
scanf("%d",&cash);
double profit;
flag=cash/100000;
switch(flag){
case 0: profit=cash*0.1;break;
case 1: profit=0.1*100000+(cash-100000)*0.075;break;
case 2:
case 3: profit=100000*0.175+(cash-200000)*0.05;break;
case 4:
case 5: profit=100000*0.185+(cash-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9: profit=100000*0.191+(cash-600000)*0.015;break;
default: profit=100000*0.194+(cash-600000)*0.01;break;
}
printf("switch-case output:\n");
printf("profit = %.2f\n",profit);
if(cash<=100000)
profit=cash*0.1;
else if(cash<=200000)
profit=0.1*100000+(cash-100000)*0.075;
else if(cash<400000)
profit=100000*0.175+(cash-200000)*0.05;
else if(cash<=600000)
profit=100000*0.185+(cash-400000)*0.03;
else if(cash<=1000000)
profit=100000*0.191+(cash-600000)*0.015;
else
profit=100000*0.194+(cash-600000)*0.01;
printf("id-else output:\n");
printf("profit = %.2f",profit);
return 0;
}
/*输出结果
156890
switch-case output:
profit = 14266.75
id-else output:
profit = 14266.75
*/
//不使用数组很繁琐,但是排序的核心是比较和交换,尤其是交换
//交换是最经典的一个套路:temp=a;a=b;b=temp;不管是数组也好,结构体也好框架不会变
#include
#include
void swap(int *a,int *b);
int main()
{
int a,b,c,d;
scanf("%d %d %d %d",&a,&b,&c,&d);
if(a>b)
swap(&a,&b);
if(a>c)
swap(&a,&c);
if(a>d)
swap(&a,&d);
//此时a已经为最小值
//重复操作,使得b,c,d依次通过交换变为升序
if(b>c)
swap(&b,&c);
if(b>d)
swap(&b,&d);
if(c>d)
swap(&c,&d);
printf("%d < %d < %d < %d",a,b,c,d);
return 0;
}
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
#include
#include
int main()
{
//塔外建筑高度为0,塔内建筑高度为10,判定在塔内还是塔外
//每个圆的半径都为1,且横纵坐标的绝对值都为2,而判定一点是否在园内
//只需要判定点掉圆心的距离是否超过半径,所以用两次fabs取绝对值即可。
double x,y,fx,fy,ret;
scanf("x=%lf y=%lf",&x,&y);
fx=fabs(fabs(x)-2);
fy=fabs(fabs(y)-2);
ret=sqrt(fx*fx+fy*fy);
if(ret<=1&&ret>=0)
printf("YES,height is 10m");
else
printf("No,height is 0m");
return 0;
}
/*
输出结果
x=0.5 y=0.7
No,height is 0m
-----------------
x=2.1 y=2.3
YES,height is 10m
*/