/2023年3月4日
准备这个月把郝斌老师的c语言课程迅速刷一遍在把谭浩强老师的书给看一篇
/20233月5日
感觉比较重要的知识点
# include <stdio.h>
int main(void)
{
int x = 47; //100是十进制
printf("%x\n", x); //输出结果是:2f
printf("%X\n", x); //输出结果是:2F
printf("%#X\n", x);//输出结果是:0X2F
printf("%#x\n", x);
return 0;
}
/*
在visual ++6.0中的输出结果为
-------------------------------------
2f
2F
0X2F
0x2f
-------------------------------------
/2023年3月7日
现在已经看到if循环了争取这周看到指针
//20233月8日
任意三个数排序程序实现
//对任意三个数字进行排序算法
# include <stdio.h>z'v
int main(void)
{
int a, b, c;
int t;
printf("请输入三个整数(中间以空格分隔)");
scanf("%d %d %d", &a, &b, &c);
//编写代码完成a是最大值,b是中间值,c是最小值
if (a < b)
{
t = a;
a = b;
b = t;
}
if (a < c)
{
t = a;
a = c;
c = t;
}
if (b < c)
{
t = b;
b = c;
c = t;
}
printf("%d %d %d\n", a, b ,c);
return 0;
}
/2023年3月10日
/*
2023年3月10日郝斌72讲
求1+ 1/2 + 1/3 + 1/4......+1/100
本程序不对, 因为循环中更新的变量不能定义成浮点型
*/
# include <stdio.h>
int main(void)
{
float i;
float sum = 0;
for (i=1.0; i<=100; ++i)
{
sum = sum + 1/i;
}
printf("sum = %f\n", sum); //float必须用%f输出
return 0;
}
//1到100之间的奇数个数
# include <stdio.h>
int main(void)
{
int i;
int sum1 = 0;
int sum2 = 0;
int cnt = 0; //个数一般用途cnt表示 count缩写
float avg = 0; //average 的缩写
for (i=1; i<101;++i)
{
if (i%2 == 1)
{
sum1 += i; //求奇数和
++cnt; //求奇数的个数
}
else
{
sum2 +=i; //求偶数和
}
}
avg = 1.0*sum1 /cnt ; //1.0 默认是double类型 ,求奇数平均值
printf("cnt = %d\n", cnt);
printf("偶数和是 : %d\n",sum2);
printf("奇数和是 : %d\n", sum1);
printf("奇数的平均值是 : %f\n", avg);
return 0;
}
/*
在Visual C++ 6.0中的输出结果是:
--------------------------------
nt = 50
偶数和是 : 2550
奇数和是 : 2500
奇数的平均值是 : 50.000000
--------------------------------
*/
i++和++i的区别
/ 前后向自增的区别
# include <stdio.h>
int main (void)
{
int i;
int j;
int k;
int m;
i = j = 3; //等价于 i = 3; j = 3;
k = i++;
m = ++j;
printf("i = %d, j = %d, k = %d, m = %d\n", i, j, k ,m);
return 0;
}
/*
在Visual C++ 6.0 中的值是
-------------------------
i = 4, j = 4, k = 3, m = 4
------------------------
*/
逗号表达式
# include <stdio.h>
int main(void)
{
int i;
i = (3, 2, 5, 6); //逗号表达式
printf("%d\n", i); //i = 6
return 0;
}
/2023年3月11日
如何看懂一个程序
//如何判断一个数是否是回文数
# include <stdio.h>
int main(void)
{
int val;
int m;
int sum = 0;
printf("请输入你需要判断的数字: ");
scanf("%d",&val);
m = val;
while(m)
{
sum = sum *10 +m%10;
m /= 10;
}
if (sum == val)
printf("Yes!\n");
else
printf("No!\n");
return 0;
}
//
试数步骤,要写的很详细,主要是写整齐
1> m = 1234 成立
sum = 0*10 + 1234%10 = 4
m = m/10 = 123;
2> m = 123 成立
sum = 4*10 +123%10 = 43
m = 123/10=12
3> m = 12 成立
sum = 43*10 +12%10 = 4
m = 12/10 =1
4> m =1
sum = 432*10+1%10=4321
m = 1/10=0
5> m =0 不成立
最终sum = 4321
do.....while程序使用举例之一元二次方程的根的求解
# include <stdio.h>
# include <math.h>
int main(void)
{
double a, b, c;
double delta;
double x1, x2;
char ch;
do
{
printf("请输入一元二次方程的三个系数: \n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
delta = b*b -4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("有两个解, x1 = %lf, x2 = %lf\n", x1, x2);
}
else if (0 == delta)
{
x1 = x2 = (-b + sqrt(delta)) / (2*a);
printf("有唯一解, x1 = x2 = %lf\n", x1, x2);
}
else
{
printf("无实根\n");
}
printf("您想继续么(Y/N): ");
scanf(" %c", &ch); //%c前面必须得加一个空格 原因略 牵扯到空白符的问题,《C Primer Plus》 人民邮电,这里面详细讨论了空白符的问题
} while('y' == ch || 'Y' == ch);
return 0;
}
switch 语句举例(电梯程序)
# include <stdio.h>
int main(void)
{
int val ;
printf("请输入您要进入的楼层:");
scanf("%d", &val);
switch (val)
{
case 1:
printf("1层开!\n");
break;
case 2:
printf("2层开!\n");
break;
case 3:
printf("3层开!\n");
break;
default:
printf("还没盖到这一层!\n");
break;
}
return 0;
}
/2023年3月12日
break 和continue的一些用法
# include <stdio.h>
int main(void)
{
int x = 1, y = 0, a = 0, b = 0;
switch(x) //第一个switch
{
case 1:
switch(y) //第二个switch
{
case 0:
a++;
break; //终止的是第二个switch
case 1:
b++;
break;
}
b = 100; //终止的是第一个switch
break;
case 2:
a++;
b++;
break;
}
printf("a = %d b = %d\n", a, b); //26行
return 0;
}
/*
--------------------------
在Visual C++ 6.0 中的值是
a = 1, b = 100;
--------------------------
*/
for (1: 2: 3)
{
A;
B;
continue; //如果执行该语句,则执行完该语句后,会执行语句3; C和D都会被跳过去,C和D不会被执行
C;
D;
}
while (表达式)
{
A;
B;
continue; 如果执行完该语句后,会执行表达式,C和D不会被执行
C;
D;
}
/2023年3月13日
continue的用法
# include <stdio.h>
int main(void)
{
int i = 0, s = 0;
do
{
if(i%2)
{
i++;
continue; /*考虑执行该语句后流程会转向执行哪个语句。 // 执行while判断语句*/
}
i++;
s+=i; // s = s + i;
}while(i<5);
printf("%d\n", s);
return 0;
}
/*
1> i=0, i%2 = 0, i = 1,s = 1+0 =1;
2> i=1 < 5, i%2=1,i=1+1=2<5, i%2 = 0, i = 3,s = 1+3 = 4;
3> i=3<5,i%2=1,成立,i=3+1=4,4<5,4%2=0,不成立,i= i+1 =5,s = s+5 = 4+5 =9
-----------------------------
在Visual C++ 6.0 中的值是:
9
-----------------------------
*/
/2023年3月14日
二维数组的操作与使用
# include<stdio.h>
int main(void)
{
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
};
int i, j;
//输出数组内容
for (i=0; i<3; ++i)
{
for (j=0; j<4; ++j)
printf("%-5d ", a[i][j]);
printf("\n");
}
return 0;
}