前言:
对应鹏哥专升本c语言,49集
内容:
第一题,就是if =5就是赋值,不是判断,然后会循环打印5
#include <stdio.h>
int main()
{int i = 0;for (i=0; i<10; i++){if(i=5)printf("%d", i);}}
第二题
if语句,只要接大括号就可以执行多条语句了
if语句是,0假,非0真
第三题
switch语句中的default可以放在任意位置是对的,可以放前面,也可以放后面,但是不能乱放
就不能放在switch语句外边
c语言代码没有规定严格的顺序结构,只是理解,美观
char - 也是整型家族的,因为字符存储的时候,存储的是ascii值
这里可以就是3、4、5合在一起写,然后就是打印的是相同的,就不用重复写了
int main()
{int n = 0;scanf("%d", &n);switch(n){default:printf("hehe");break;case 1:printf("buhehe");break;case 2:case 3:case 4:printf("buxixi");break;}return 0;}
第4题,也是switch语句
讲的是switcch语句,然后就是如果没有break的话,就会一直往下循环,
就算遇到default语句,他也会进去执行相应结果
第5题,switch语句
switch(n),就是讲的是switch接收的参数类型为int类型,就必须是整型
第6题,switch语句
就算是switch循环嵌套了一个switch循环,里面循环结束了,也会执行后面的case语句,看题就明白了,就是这个,细品
int main()
{int x =3;int y =3;switch(x % 2){case 1:switch(y){case 1:printf("hehe");case 2:printf("buxixi");case 3:printf("hello");}case 2:printf("third");}return 0;}
第7题,写一个数,这个好像比上课的难低,但是忘记上课怎么写了
不用函数的方式
int main()
{int a = 0;int b = 0;int c = 0;//输入scanf("%d %d %d", &a, &b, &c);int tmp = 0;if(a < b){tmp = a;a = b;b = tmp;}if(a < c){tmp = a;a = c;c = tmp;}if(b < c){tmp = b;b = c;c = tmp;}//输出printf("%d %d %d", a, b, c);return 0;}
用函数的形式写,直接定义一个swap交换函数,不需要返回值,因为没有创建什么临时变量,是直接更改参数的值的,从上往下执行的,用void无返回值就可以了
void Swap(int *px, int *py)
{int temp = *px;*px = *py;*py = temp;
}
int main()
{int a = 0;int b = 0;int c = 0;//输入scanf("%d %d %d", &a, &b, &c);int tmp = 0;if(a < b){Swap(&a,&b);}if(a < c){Swap(&a,&c);}if(b < c){ Swap(&b,&c);}//输出printf("%d %d %d", a, b, c);return 0;}
第8题
求倍数, 嗯,ctrl+/,这个可以快速消失这个//
//求3的倍数
//int main()
//{
// int i = 0;
// while(i <= 100)
// {
// if(i % 3 == 0)
// {
// printf("%d ", i);
// }
// i++;
// }// for(i = 3; i <= 100; i+=3)
// {
// printf("%d ", i);
// }
// return 0;
//}
第9题,求a,b的最大公约数
错误实例
//给定两个数,求这两个数的最大公约数
//这里写错了
int main()
{int m = 0;int n = 0;scanf("%d %d", &m, &n);while(m%n){if(m % n !=0) //假设m 16 n 24{int temp = 0; temp = m; //这里就算赋值了,但是这里也不对,因为这里么有新的值出现m = n; //这里还是24n = temp; //n还是16,只不过换了位置,a和b}}printf("%d", n);return 0;}
暴力求解的实例
//暴力求解
int main()
{int m = 0;int n = 0;scanf("%d %d", &m, &n);//第一步,算出两则的最小值 int min = (m < n) ? m : n;//循环为真 while(1){//第二步,用最小值分别除以两个数,摸为0就表示找到了,退出循环 if(m % min == 0 && n %min ==0){break;//跳出while循环 }elsemin--; //如果不能整除,就让最小值减一,然后再除,直到找到为止 }printf("%d", min);return 0;
}
辗转相除法
//辗转相除法求解公约数
int main()
{int a = 0;int b = 0;//输入scanf("%d %d", &a, &b);//求最大公约数while(a%b) //如果被整除,说明b就是最大公约数,0为假,就退出循环了 {int c = a%b; //求ab两个的余数 a = b; //然后b赋值给a b = c; //最小值赋值给b }printf("%d", b);return 0;}
第二套题目
1、while循环的条件表达式的执行次数总是会比循环体的执行次数多一次
因为当判断为假,就不进入循环
那么就执行了条件表达式,并没有执行循环体的语句
2、程序结果为,a=8
a = 7的时候,b=22,但是还没判断
当a等于8的时候,才进入循环判断,然后break,跳出循环
int main()
{int a = 0, b= 0;for(a = 1, b = 1; a<=100; a++){if (b >= 20) break;if(b%3 == 1){b = b+3;continue;}b = b-5;}printf("%d", a);return 0;}
3、编写一个程序,计算1~100的所有数字出现多少个数字9
//编写程序数一下 1 到 100 的所有数字出现多少个数字9
//
//9 19 29 39 49 59 69 79 89 99
//90 91 92 93 94 95 96 97 98 99int main()
{int i = 0; //遍历1 ~ 100到数字int count = 0; //计数 for(i = 1; i <= 100; i++){//判断个位是不是9 if(i % 10 == 9)count++;//判断十位是不是9 if(i / 10 == 9) //因为这个除的话是取整的 count++; }//打印printf("%d", count); return 0;}
4、计算1/1-1/2+1/3-1/4+1/5.......+1/99-1/100
分子总是1
分母是1~100
//4、计算1/1-1/2+1/3-1/4+1/5.......+1/99-1/100
//分子总是1
//分母是1~100int main()
{int i = 0; //循环100次 double sum = 0; //求和 int flag = 1; //循环正负 for(i = 1; i <=100; i++){sum = sum + flag*(1.0 /i); //这个除号默认是取整,要是想去小数,需要加上.0 flag = -flag; //因为是隔一次出现一个符号的,可以这样写 } printf("%lf", sum); //lf是double类型的输出标准符号 return 0;
}