自学C语言

编程入门 行业动态 更新时间:2024-10-25 16:18:47

目录

  • 一、基础知识掌握
    • 1、运算符的优先级
    • 二、if语句
      • 1、if(条件)
      • 2、if-else语句
      • 3、多路分支Switch-case语句
    • 三、while循环
      • 1、do-while
      • 循环计算
        • 例:求log2x
        • 随机数rand()
          • 猜数游戏
          • 求算术平均数
          • 整数逆序
      • 2、for循环

一、基础知识掌握

1、运算符的优先级


例如:求平均数

#include <stdio.h>
int main()
{
	int a,b;
	scanf("%d %d",&a,&b);
	double c=(a+b)/2.0;
	printf("%d和%d的平均数为:%f",a,b,c);
	return 0;
}

这里先进行加法运算,再进行除法



最好不要写的那么复杂,把它拆分表示更为明了和清晰

二、if语句

1、if(条件)

	int hour1,min1;
	int hour2,min2;
	scanf("%d %d",&hour1,&min1);
	scanf("%d %d",&hour2,&min2);
	int im,ih;
	ih=hour2-hour1;
	im=min2-min1;
	if(im<0){ 
		im = im + 60;
		ih --;
	} 
	printf("时间差%d小时%d分钟。\n",ih,im);

有一个条件时可以不加{},但是为了防止出错误,还是最好每个if后面都加{}

2、if-else语句

	int x;
	scanf("%d",&x);
	int f=0;
	if (x==0){
		f=0;
	}else if (x>0){
		f=2*x;
	}else if (x<0){
		f=1;
	}
	printf("%d\n",f);

else紧跟离他最近的if

3、多路分支Switch-case语句

	int type;
	scanf("%d",&type);
	switch(type){
		case 1:
			printf("早上好!");
			break;
		case 2:
			printf("中午好!");
			break;
		case 3:
			printf("晚上好!");
			break;
		default:
			printf("大家好!");
			break; 

这里定义了一个整型变量type,当type=1,输出早上好
但是,如果后面没加break,那就完了,每一个后面都没加
那就会输出全部的内容。break相当于打破这个进程。

	int grade;
	scanf("%d",&grade);
	grade /= 10;
	switch(grade){
		case 10:
		case 9:
			printf("A\n");
			break;

例如这里:case 10运行到这里什么都没有直接到了case 9
那么输出A,意思就是说成绩在90-100的等级都为A
没有break那么就会出现如下情景:

正确的应该是每一个printf分号后面都加上break;
才能保证区间。

三、while循环

1、do-while

循环体内一定要有改变条件的机会
否则,无限循环

do-while和while的区别在于,do-while循环是在进入循环后才去判断条件是否满足,而while循环是先判断条件是否满足才进入循环。
一定要注意的是while(); while后面有分号!!!

	int x;
	scanf("%d",&x);
	int n=0;
	do{
		n++;
		x /=10;
	}while(x>0);
	printf("%d",n);

与while循环对比看看:

	int x;
	int n=0;
	scanf("%d",&x); 
	while(x>0){
		n++;
		x /= 10;
	}
	printf("位数:%d",n);

循环计算

如果要模拟运行一个很大次数的循环,可以模拟次数较小的循环次数,然后做出推断

	int a;
	a=3;
	while (a>1){
		a--;
		printf("%d",a);//倒计时从?-1

循环执行了4次,不会输出0,因为条件是a>1

例:求log2x

	int a;
	//scanf("%d",&a);
	int ret=0;//或者int ret=-1;
	a=128;
	int t=a;//让初始值在后面可以表示出来(交换变量)
	while(a>1){ //然后while(a>0)
		a /= 2;
		ret ++;
	}
	printf("log2 of %d is %d.",t,ret); 

重点是循环的条件
实际写程序之前,我们可以用文字来描述程序的思路

随机数rand()

%100 这样就可以每次得到100以内的数
x%n的结果是【0,n-1】的一个整数

猜数游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
	srand(time(0));
	int number = rand()%100+1;
	int count = 0;
	int a = 0;
	printf("我已经想好了一个1-100之间的数。");
	do{
		printf("请猜这个1-100之间的数:");
		scanf("%d",&a);
		count ++;
		if(a>number){
			printf("你猜的数大了。");
		} else if(a<number){
			printf("你猜的数小了。");
		}
	} while(a != number);
	printf("太好了,你用了%d次就猜到了答案。\n",count);
	return 0;
}

根据(你猜的数字小或者大)靠近那个随机数

求算术平均数
	int number;
	int sum=0;
	int count=0;
	scanf("%d",&number);
	while(number!=0){
		sum += number;
		count ++;
		scanf("%d",&number);
	}printf("%f\n",1.0*sum/count);
整数逆序


运用到怎样求数的逆序

2、for循环

for(1.初始条件2.循环继续的条件3.循环每轮要做的动作
for循环:对于一开始 的①,当②时,重复做循环,每一轮循环做完后使得③

例:求n的阶乘
可反向思维

	int n;
	scanf("%d",&n);
	int fact = n; //正序相乘是这样 fact=1;
	int i=n-1;//i=1
	for (i=n-1; i>0; i--){ //for(i=1;i<=n;i++) 
		fact *= i;//fact*=i; 
	}printf("%d!=%d\n",n,fact);

等价于while循环

	int i=1;
	while(i<=n){
		fact *= i;
		i++
	}


看自己做循环有怎样的选择

更多推荐

自学C语言

本文发布于:2023-06-10 19:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/651970.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!