我是靠谱客的博主 优美台灯,最近开发中收集的这篇文章主要介绍C语言03if,for,switch语句一、 if语句二、for语句三、switch语句练习,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一、 if语句
1.格式
(1)if(表达式)语句一
(2)
if (表达式1)
{
语句一
}
else
{
语句二
}
(3)
if(表达式1)
{
语句一
}
else if(表达式2)
{
语句二
}
else
{
语句三
}
(3)注意
if :不管有多少次比较,都会一一进行比较
2. 例题
(1)(比较两个数的大小)
#include<stdio.h>
int Max2(int a,int b)//判断两个数大小
{
if(a > b)
{
printf("a > bn");
}
else
{
printf("a < bn");
}
return 0;//return a>b?a:b用这句可以代替两个数的大小比较 ;
}
int main()
{
int max=Max2(10,20);
return 0;
}
结果
(2)比较三个数的大小
#include<stdio.h>
int Max2(int a,int b)//判断两个数大小
{
if(a > b)
{
printf("a > bn");
}
else
{
printf("a < bn");
}
return a>b?a:b;
}
int Max_3(int a,int b,int c)//判断三个数的大小
{
return Max2(Max2(a,b),c);
}
int main()
{
int max3=Max_3(10,30,20);
return 0;
}
3.注意事项
二、for语句
1. 格式
for(循环变量赋初值;循环条件;循环变量增值)
{
语句
}
例如
for(i=1;i++;i<=100;i++)
{
sum=sum+i
}
2.例题
(1)(判断一个数字是否为素数)
#include<stdio.h>
#include<assert.h>
bool IsPrime(int n)//判断一个数是否为素数
{
assert(n!=1);//断言,在debug模式下使用,针对程序员的。切记assert是宏,要引入assert.h的头文件 DEBUG会加入调试信息。
for (int i=2;i<n;i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
int main()
{
bool flg = IsPrime(1);//assert 中若值为1,则报错。
printf("%dn",flg);
return 0;
}
(2)求1–100所有整数的和,1-100奇数的和 1-100偶数和
#include<stdio.h>
void Sum(int n)
{
int i;
int sum=0;//一到一百的和
int sumOdd=0;//奇数的和
int sumEve=0;//偶数的和
for(i=1;i<=n; i++)
{
sum+=i;
}
for(i=1;i<=n; i +=1)
{
sumOdd+=i;
}
for(i=2;i<n; i +=2)
{
sumEve+=i;
}
printf("sum是%dn",sum);
printf("sumOdd是%dn",sumOdd);
printf("sumEve是%dn",sumEve);
}
int main()
{
Sum (100);//给Sum函数赋初值
return 0;
}
(3)求一元二次方程的根
#include<stdio.h>
#include<assert.h>
#include<math.h>
void ExtractARoot(int a,int b,int c)//求解一元二次方程的根
{
float x1;
float x2;
int d =b*b-4*a*c;
if (a == 0)
{
x1=x2=-c/(float)b;
printf ("x1=x2=-c/b%f,%fn",x1,x2);
}
else if (d<0)
{
printf("这个方程无解n");
}
else if (d == 0)
{
x1= x2 =-(float)b/2*a;
printf ("这个方程只有一个根%f,%fn",x1,x2);
}
else
{
x1= (-b+sqrt((float)d))/(2*a);//sqrt是求平方根的函数,使用时要用math.h库函数
x1= (-b-sqrt((float)d))/(2*a);
printf("d>0,这个方程有两个根%f,%fn",x1,x2);
}
}
int main()
{
ExtractARoot(0,5,2);
ExtractARoot(4,4,1);
ExtractARoot(4,5,3);
return 0;
}
(4)判断一个字符为数字还是字母
#include<stdio.h>
#include<math.h>
int fun1(char ch,char ch2)//判断一个字符是否为数字或字母
{
if(isalpha(ch))//判断一个字符是否为字母,返回非0的值,要加入<ctype.h>头文件
{
printf("truen");
}
else
{
printf("falsen");
}
if(isdigit(ch2))//判断一个字符是否为数字,返回非0的值
{
printf("isdigitn");
}
else
{
printf("falsen");
}
return 0;
}
int main()
{
int fun=fun1('g','2');
getchar ();
return 0;
}
三、switch语句
1.格式
switch(表达式)
{ case 常量1:
语句一;
break;
case 常量1:
语句二;
break;
case 常量n:
语句n;
break;
default:语句n+1 ;
break;
}
2.例题
#include<stdio.h>
void Fun(char ch)//输入等级,判断成绩的多少ch为A-D,或者其他。
{
switch(ch)
{
case 'A':
printf("90-100n");
break;
case 'B':
printf("70-80n");
break;
case 'C':
printf("60-70n");
break;
case 'D':
printf("60以下n");
break;
default:
printf("没救了n");
break;
}
}
int main ()
{
char ch='A';
Fun('A');
return 0;
}
3.注意:
①不能做switch的参数类型:float double 整型
②if :不管有多少次比较,都会一一进行比较
③switch() :>=4 被优化为一次比较:===》跳转表 cmp 3
练习
1、求一个数字的二进制数中1的个数 2 0000 0010 1
#include <stdio.h>
#include<math.h>
int NumOfOne(int n)//求一个数字的二进制数中1的个数 2 0000 0010 1n & (n-1) n===>0
{
int count = 0;
while(n != 0)
{
count++;
n = n & (n-1) ;
}
return count;
}int main ()
{
int n = NumOf1(1);
printf("%dn",n);
printf("%dn",NumOf1(1));
printf("%dn",NumOf1(2));
printf("%dn",NumOf1(0));
printf("%dn",NumOfOne(-1));
return 0;
}
(可以输入负数)
2、给定一个数字,求这个数字是几位数?
#include <stdio.h>
#include<math.h>
int NumCount(int n)//打印是几位数
{
int count = 0;
while(n != 0)
{
count++;//1 2 3
n /= 10;//123/10 =12 12/10 1 1/10 == 0
}
return count;
}
int main ()
{
printf("%dn",NumCount(12346));
return 0;
}
顺序打印每一位数字 逆序打印每一位数字
12345 5 1 2 3 4 5 5 4 3 2 1
#include <stdio.h>
#include<math.h>
void PrintOrder(int n)
{
if(n == 0)
{
printf("0n");
return;
}
if(n < 0)
{
printf("- ");
n = -n;
}
int figures = NumCount(n);//123 == >3
int power = (int)pow((float)10,(float)(figures-1)); //100 10^2 figures-1
int tmp = 0;//存储每一位数字
//n == 123 power 100
while(power != 0)
{
tmp = n/power;//123/100 1 23/10 2 3
printf("%d ",tmp);//1 2 3
n = n % power;//23 23 % 10 3 3 % 1 == 0
power /= 10;//10 1 1/10 == 0
}
printf("n");
}
//逆序
//123 3 2 1
//123 % 10 3 12 % 10 2 1 %10 1
//123/10 12 12/10 1
void PrintRever(int n)
{
if(n == 0)
{
printf("0n");
return;
}
if(n < 0)
{
printf("- ");
n = -n;
}
int tmp = 0;
while(n != 0)
{
tmp = n % 10;//123 % 10 == 3
printf("%d ",tmp);
n /= 10;//123 /10 = 12
}
printf("n");
}
int main ()
{
PrintOrder(123);
PrintRever(-123);
PrintRever(0);
return 0;
}
3、求斐波那契数列的第40项为多少?
#include <stdio.h>
#include<math.h>
int Fabonacci(int n)
{
int f1 = 1;
int f2 =1;
int f3 = 1;
int i;
for(i = 3;i <= n;i++)
{
f3 = f1+f2;
f1 = f2;
f2 = f3;
}
return f3;
}
int main ()
{
printf("%dn",Fabonacci(40));
return 0;
}
4、输出 100-200 之间的不能被 3 整除的数
#include <stdio.h>
#include<math.h>
bool Fun1(int n)//100-200
{
if(n % 3 != 0)
{
return true;
}
return false;
}
int main()
{
for(int i = 100;i <= 200;i++)
{
if(Fun1(i))
{
printf("%d ",i);
}
}
printf("n");
return 0;
}
5、求 100-200 之间的全部素数?
#include <stdio.h>
#include<math.h>
bool IsPrime(int n)//判断一个数是否为素数
{
assert(n!=1);//断言,在debug模式下使用,针对程序员的。切记assert是宏,要引入assert.h的头文件 DEBUG会加入调试信息。
for (int i=2;i<n;i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
int fun1 (int n)//新定义一个函数求素数
{
bool flg = 0;
for (int i=100;i<=n;i++)
{
flg = IsPrime(i);//调用判断素数的函数
if(flg==true)
{
printf("%dn",i);//打印素数的值
}
}
return 0;
}
int main()
{
fun1 (200);//5.输出结果
return 0;
}
最后
以上就是优美台灯为你收集整理的C语言03if,for,switch语句一、 if语句二、for语句三、switch语句练习的全部内容,希望文章能够帮你解决C语言03if,for,switch语句一、 if语句二、for语句三、switch语句练习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复