我是靠谱客的博主 优美台灯,最近开发中收集的这篇文章主要介绍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语句练习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部