2024/1/20
第一章 写一个简单的程序
#include <stdio.h>
int main()
{
printf("hahahahaha\n555");
return 0;
}
#include <stdio.h>
int main()
{
returrn 0;
}
是c语言的底架架构
第二章 求两数之和
#include <stdio.h>
int main(void)
{
int a,b,sum; //这里定义了3个int型的变量a,b,sum, int是整型的意思
printf("%d,%d,%d\n", a,b,sum); //这里把a,b,sum的值输出,但是因为这三个变量没有初始化,输出的结果是不确定的,是三个垃圾值
a = 2; //把a的值赋值为2,如果对变量进行第一次赋值,我们也称之为初始化
b = 3;
sum = a+b;
printf("sum is %d\n",sum); //输出5
return 0;
}
第三章 求函数之积、和
#include <stdio.h>
int f(int a)
{
return a*a;
}
void g(int a, int b)
{
printf("%d\n", a+b);
return;
}
int main()
{
printf("%d\n",f(3));
g(3,4);
}
第四章 函数
#include <stdio.h>
void f(void); //函数首部 +分号 即函数声明
void g(void);
void h(int); //函数声明的形参可以省略
void f(void)
{
printf("1111\n");
}
void g(void)
{
printf("2222\n"); //各个函数之间是平行的,一个函数的定义不能放在另一个函数的函数体里
}
void h(int a)
{
printf("%d",a);
}
int main (void) //main函数之前的代码是为了main函数的执行提供信息的,他们不一定被执行
{
f();
g();
h(3333);
return 0;
}
2024/1/21
第五章 求两数最大和
#include <stdio.h> //printf和scanf的函数声明都在stdio.h里,printf和scanf函数的定义在库里
int main(void)
{
double a,b; //double是浮点型数据类型 可以理解为小数
printf("请输入2个数:\n");
scanf("%lf%lf", &a,&b); //&取地址符
printf("a is %lf, b is %lf\n",a,b); //%lf是在对一个浮点型数据进行格式输入输出所用到的格式说明符
/* 方法1
if(a >= b) //表达式是数值和运算符的组合
printf("a是最大值,其值为:%lf\n",a);
else
printf("b是最大值,其值为:%lf\n",b);
*/
if(a < b) //方法2
a = b;
printf("最大值为:%lf\n",a);
return 0;
}
第六章 printf和scanf函数的返回值
#include <stdio.h>
int main(void)
{
printf("%d\n",printf("haha\n")); //printf函数的返回值为整型,会把所世俗出的字符个数返回
//输出 haha 5
int a,b;
printf("%d\n",scanf("%d%d",&a,&b)); //scanf函数的返回值会返回其按照正确格式输入如的变量的个数
return 0;
}
第七章 输入求成绩
#include <stdio.h>
int main(void)
{
double a; //double 双精度浮点型
printf("请输入你的成绩:");
scanf("%lf",&a);
/*
if(a<0 || a>100) // ||逻辑或 如果两边的表达式有一个为真,则整个表达式为真;如果两边的表达式都为假,则整个表达式才为假
printf("这个成绩是不可能的");
if(a>=0 && a<60) // &&逻辑与 如果两边的表达式有一个为假,则整个表达式为假;如果两边的表达式都为真,则整个表达式才为真
printf("这个成绩不及格\n");
if(a>=60 && a<=100)
printf("这个成绩及格\n");
*/ //方法1
/*
if(a < 0 || a > 100)
printf("这个成绩是不可能的\n");
else
{
if(a < 60)
printf("这个成绩是不合格的\n");
else
printf("这个成绩合格\n");
}
*/ //方法2
if(a < 0 || a > 100)
printf("这个成绩是不可能的\n");
else if (a < 60)
printf("这个成绩是不合格的\n");
else
printf("这个成绩合格\n"); //方法3
return 0;
}
第八章 if语句的细节问题
#include <stdio.h>
int main(void)
{
printf("%d,%d\n",3 > 2,3 < 2);
if(9) //当表达式的值为0,表达式为假;否则表达式为真
{ //在if语句中,控制语句如果为多句,就需要给他们加上一个花括号
printf("haha\n");
printf("lala\n");
}
if(0)
printf("哈哈\n");
else //当多个if语句使用时,else时属于紧挨着她上面那个if语句的内容
{
printf("啦啦\n");
return 0;
}
}
(1)使用scanf函数输入数据,为什么需要按回车一一回车可以刷新键盘缓冲区的内容。键盘缓冲区会有一个换行字符。
(2)scanf函数遇到错误输入会停止
(3)scanf函数的格式字符串中的字符分类
1)、空白字符(共3种,换行、Tab、空格)
2)、非空白字符--scanf在进行读操作的时候剔除掉与这个非空白字符一样的字符
(4)scanf语句的执行在输入完了变量的值后,只能通过一个错误的输入来结束。
%d-int %lf-double %c-char
2024/1/22
第九章 初等运算符及单目运算符
#include <stdio.h>
int main(void)
{
printf("%d,%d\n",1+2*3,(1+2)*3);
int a = 1,b = 2,c = 3,d = 7;
a = b =c;
printf("%d\n",a);
printf("%d,%d,%d\n",!1,!9,!0); //!!逻辑非与运算符,求该操作数的逻辑反值,如果该操作数值为真,则整个表达式值为假,否则整个表达式的值为真
printf("%d, %lf\n",5/2,5.0/2); //除号运算符的操作数如果都为整型,那么其结果也为整型,如果为浮点型,呢么其结果也为浮点型
printf("%d\n",4*-3);
printf("%d\n",a = 3.98); //输出结果为3,因为把一个浮点型数据赋给整数变量,会丢掉小数点部分
printf("%d\n",3%2); //取余运算符两边的操作数必须为整型 否则编译会报错
printf("%d,%d,%d\n",-13%3,13%3,13%23);
printf("%d\n",d /= 2); //输出d的值为3,因为d /= 2和d = d/2等价,此外,+=、-=、*=、%=等赋值运算符与之相似
return 0;
}
//只有单目运算符和赋值运算符的结合方向时自右往左的;
//初等运算符([]、()、.、_>)的优先等级为1,单目运算符(! - &)优先等级为2;
//双目运算符(+-*/%)
//!!逻辑非与运算符,求该操作数的逻辑反值,如果该操作数值为真,则整个表达式值为假,否则整个表达式的值为真
//逻辑只有真假,0代表假,非0代表为真
//取余运算符两边的操作数必须为整型,否则编译会报错
//除号运算符的操作数如果都为整型,那么其结果也为整型,如果为浮点型,呢么其结果也为浮点型
//因为把一个浮点型数据赋给整数变量,会丢掉小数点部分
//d /= 2和d = d/2等价,此外,+=、-=、*=、%=等赋值运算符与之相似
//逻辑与&&和逻辑或||都先计算左边表达式的值,如果左边表达式的值能够确定整个表达式的值就那么右边的值就不会被计算
第十章 全局变量及宏定义
#include <stdio.h>
#define PI 3.141592 //宏定义
int A;
int B = 3; //全局变量
int main()
{
printf("%lf\n",PI);
printf("PI\n");
printf("%d\n%d\n",A,B);
return 0;
}
头文件中有函数声明,全局变量声明,宏定义。
库文件中有相应的函数定义,全局变量的定义。
#号开头的都是预处理指令,预处理是发生在预编译阶段(编译阶段之前),对源程序文件进行一些简单的文本替换。
全局变量就是在所有函数体之外定义的变量(除了形参变量之外)
第十一章 向屏幕 输出1-100整数
算法的基本概念
(一)一个程序主要包含的 2方面信息:
1.对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式。这
就是数据结构
2.对操作的描述。即要求计算机进行操作的步骤,也就是算法。
(二)沃思提出的一个公式 算法+数据结构 = 程序
(三)计算机算法可分为 2大类别:数值运算算法和非数值运算算法
(四)算法的特性:1有穷性2.确定性3.有零个或多个输入4.有一个或多个输出5有效性
#include <stdio.h>
int main(void)
{/*
int i = 1;
while(i <= 100)
{
printf("%d\n",i);
i = i + 1;
reeutrn 0;
}
*/
for(int i = 1; i<= 100; i++)
{
printf("%d\n", i);
;
}
return 0;
}
在程序中使用的变量名、函数名、宏名等统称为标识符
除库函数的函数名由系统定义外,其余都由用户自定义。C 规定,标识符只能
是字母(A~Z,a~ z)、数字(0 ~ 9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线
注意:
1.标识符不能和 C语言的关键字相同,也不能和用户自定义的函数或 C语言库函数重名。
2.不同的 c语言编译器对标识符的长度规定不同,例如在某版本 C 中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。( c ++ 6.0 中规定标识符最长不允许超过 32个字符)
2024年1月25日
#include <stdio.h>
int main(void)
{
//1.整型常量
printf("%d\n",234);
//2.浮点型常量
printf("%lf,%lf\n",3.24,3e-2); //3e-2 代表3的10的-2次方
//3.字符串常量
printf("%s","%dabc\n"); //字符串使用的是格式说明符%s 输出: %dabc
printf("%%dabc\n"); //在printf中输出一个%需要再增加一个%
//4.字符型常量
//字符也是以整型方式存储在内存中的 '0'--48 'a'--97 'A'--65 ' '--32 '\n'--10 '\0'--0
printf("%c,%d\n",'a','a'); //%c 普通转义字符 输出a,97
//转义字符
printf("%c,%c,%c,%c\n",'\\','\'','\?','\"'); //可显的转义字符 输出:\,',?,"
printf("\a"); //a 输出一个声音
printf("11111\babc\n"); //输出 1111abc \b是退格符,后退一个字符
printf("22222\r33333\n"); //输出33333 \r是回车符 将当前位置提至本行开头
printf("44444\t55555\n"); //输出44444 55555 \t是水平制表符tab
printf("\101\102\103\n"); //输出A B C 将八进制的101 102 103 转成十进制则为65 66 67分别对应了 A B C
printf("\x41\n"); //输出A x开头的值是16进制表示 x41=4*16^1+1*16^0=65
return 0;
}
/*常量分类
(1)字面常量(直接常量):数值常量(分为整型常量和浮点型常量),字符串常量和字符常量
(2)符号常量
(3)常变量
常变量const 定义后不可被修改,必须在定义的时候初始化,初始化之后其值也不可被修改
*/
switch语句
#include <stdio.h>
main (void)
{
printf("请输入所要到达的楼层:");
int a;
scanf("%d",&a);
switch(a)
{
default:
printf("没有这个楼层\n");
break; //结束一个switch语句的执行
case 1: //每个case常量必须互不相同
printf("上一楼\n");
break;
case 2:
printf("上二楼\n");
break;
case 3:
printf("上三楼\n");
break;
}
return 0;
}
输入26个字母,输出大小写
#include <stdio.h>
int main(void)
{
char ch;
while((ch = getchar()) != '\n')
{
/*if(ch >= 'A' && ch <= 'Z')
ch += 32;
*/
if(ch >= 'a' && ch <= 'z')
ch -= 32;
putchar(ch);
}
return 0;
}
习题1
#include <stdio.h>
main (void)
{
printf("请输入一个数:");
int a;
scanf("%d",&a);
switch(a)
{
default:
printf("没有这个数字");
break;
case 1:
printf("abc\n");
break;
case 2:
printf("bc\n");
break;
case 3:
printf("c\n");
break;
}
return 0;
}
习题2
#include <stdio.h>
int main (void)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a > b)
{
int d;
d = a;
a = b;
b = d;
}
if(c < a)
{
int d;
d = a;
a = c;
c = d;
}
if(b > c)
{
int d;
d = b;
b = c;
c = d;
}
printf("%d,%d,%d\n",a,b,c);
printf("%d,%d,%d\n",c,b,a);
return 0;
}