第二次总结
分支语句和循环语句重点
语句:c语言中由一个分号隔开的就是一条语句。
分支语句(选择结构):
1.if 语句
语法结构
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
注:如果表达式的结果为真,则语句执行。(0表示假,非0表示真)
else永远和最近的if语句相结合
2.switch
语法结构
switch(整型表达式)
{
case整型常量表达式: //语句项;
printf(); //语句;
break;
}
完善的switch语句要素:
①switch case和case对应的条件
②每一个case后面把break带上包括default后面也带上
③每一个switch语句最后要把default带上
循环语句
1.while循环
语法结构
while(表达式)
循环语句;
continue:结束本次循环立马开启下一次循环
break:结束循环
2.for循环
语法结构
for(表达式1;表达式2;表达式) //表达式1 为初始化部分 表达式2 为条件判断部分 表达式3 为调整部分
循环语句;
练习代码:
①打印100~200之间的素数
方法一
#include<stdio.h>
#include<windows.h>
int IsPrime(int x)
{
int i=2;
for(;i<x;i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int x=100;
for(;x<=200;x++)
{
if(IsPrime(x))
{
printf("%d ",x);
}
}
printf("\n");
system("pause");
return 0;
}
方法二
#include<stdio.h>
#include<math.h>
#include<windows.h>
int IsPrime(int x)
{
int i=2;
int top =(int)sqrt(x);
for(;i<=top;i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int x=100;
for(;x<=200;x++)
{
if(IsPrime(x))
{
printf("%d ",x);
}
}
printf("\n");
system("pause");
return 0;
}
②输出乘法口诀表
#include<stdio.h>
#include<windows.h>
void show(int n)
{
int=1;
for(;i<=n;i++)
{
int j=1;
for(;j<=i;j++)
{
printf("%d*%d=%d ",i,j,i*j);
}
printf("\n");
}
}
int main()
{
show(9);
system("pause");
return 0;
}
③判断1000年—2000年之间的闰年
#include<stdio.h>
#include<windows.h>
int IsLeapYear(int year)
{
if((year % 4==0 && year % 100!=0)|| year % 400==0)
{
return 1;
}
return 0;
}
int main()
{
int year =1000;
for(;year<=2000;year++)
{
if (IsLeapYear(year))
{
printf("%d",year);
}
}
printf("\n");
system("pause");
return 0;
}
④给定两个整形变量的值,将两个值的内容进行交换
方法一
#include<stdio.h>
#include<windows.h>
int main()
{
int x=100;
int y=200;
int tmp=0;
printf("before: %d %d\n",x,y);
tmp=x;
x=y;
y=tmp;
printf("after: %d %d\n",x,y);
system("pause");
return 0;
}
方法二(不创建临时变量)
#include<stdio.h>
#include<windows.h>
int main()
{
int x=100;
int y=200;
printf("before: %d %d\n",x,y);
x^=y;//1. x=x^y; x->x^y
y^=x;//2. y=y^x;->y^x^y;y->x
x^=y;//3. x=x^y;->x=x^y^x
printf("after: %d %d\n",x,y);
system("pause");
return 0;
}
⑤求10 个整数中最大值
#include<stdio.h>
#include<windows.h>
int Max()
{
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int num = sizeof(a) / sizeof(a[0]);
int i = 1;
int max = a[0];
for (; i<num; i++)
{
if (max<a[i])
{
max = a[i];
}
}
return max;
}
int main()
{
printf("%d\n",Max());
system("pause");
return 0;
}
⑥将三个数按从大到小输出
#include<stdio.h>
#include<windows.h>
void ThreeData(int x,int y, int z)
{
if(x>y)
{
if(z>x)//z x y
{
printf("%d %d %d\n",z,x,y);
}
else if(z>y)//x z y
{
printf("%d %d %d\n",x,z,y);
}
else//x y z
{
printf("%d %d %d\n",x,y,z);
}
}
else//y>=x
{
if(z>y)//z y x
{
printf("%d %d %d\n",z,y,x);
}
else if(z>x)//y z x
{
printf("%d %d %d\n",y,z,x);
}
else//y x z
{
printf("%d %d %d\n",y,x,z);
}
}
}
int main()
{
ThreeData(1, 2, 3);
system("pause");
return 0;
}
⑦求两个数的最大公约数
方法一
#include<stdio.h>
#include<windows.h>
int FindCommonDivisor(int x, int y)
{
int min = x > y ? x : y;
while (min > 1)
{
if (y % min == 0 && x % min == 0)
{
break;
}
min--;
}
return min;
}
int main()
{
int x = FindCommonDivisor(32, 24);
printf("%d\n", x);
system("pause");
return 0;
}
方法二(辗转相减法)
#include<stdio.h>
#include<windows.h>
int FindCommonDivisor(int x, int y)
{
while (1)
{
if (x>y)
{
x=x-y;
}
else if(y>x)
{
y=y-x;
}
else
{
break;
}
}
return x;
}
int main()
{
int x = FindCommonDivisor(32, 24);
printf("%d\n", x);
system("pause");
return 0;
}
方法三(辗转相除法)
#include<stdio.h>
#include<windows.h>
int FindCommonDivisor(int x, int y)
{
while (x*y!=0)
{
if (x>y)
{
x %= y;
}
else if (y>x)
{
y %= x;
}
else
{
return x;
}
}
return x==0?y:x;
}
int main()
{
int x = FindCommonDivisor(32, 24);
printf("%d\n", x);
system("pause");
return 0;
}
⑧将数组A中的内容和数组B中的内容进行交换
#include<stdio.h>
#include<windows.h>
void ShowArray(int a[], int num)
{
int i = 0;
for (; i < num; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int main()
{
int a[] = { 1, 2, 3, 4, 5 };
int b[] = { 5, 4, 3, 2, 1, };
int num = sizeof(a) / sizeof (a[0]);
int i = 0;
ShowArray(a, num);
ShowArray(b, num);
for (; i < num; i++)
{
a[i] ^= b[i];
b[i] ^= a[i];
a[i] ^= b[i];
}
ShowArray(a, num);
ShowArray(b, num);
system("pause");
return 0;
}
⑨ 计算1/1-1/2+1/3-1/4+1/5 ⋯⋯ + 1/99 - 1/100 的值
#include<stdio.h>
#include<windows.h>
double cal(int top)
{
int i = 1;
double result = 0.0;
int flag = 1;
for (; i <= top; i++)
{
result += 1.0/(i*flag);
flag = -flag;
}
return result;
}
int main()
{
double d = cal(100);
printf("result: %f\n",d);
system("pause");
return 0;
}
⑩编写程序数一下 1到 100 的所有整数中出现多少个数字9
#include<stdio.h>
#include<windows.h>
int Count()
{
int i = 1;
int count=0;
for (; i <=100; i++)
{
if (i < 10)
{
if (i == 9)
{
count++;
}
}
else
{
if (i % 10 == 9)
{
count++;
}
if(i / 10 == 9)
{
count++;
}
}
}
return count;
}
int main()
{
int r= Count();
printf("result: %d\n",r);
system("pause");
return 0;
}