#include // 包含另一个文件,C编译器软件包的标准部分,提供键盘输入和屏幕输出的支持。
/**#include 指令和头文件
* 是一条C预处理器指令(preprocessor directive),C编译器在编译前会对源代码做一些准备,即预处理(preprocessing)。
*
* stdio.h 文件的含义是标准输入/输出头文件。通常,在C程序顶部的信息集合被称为头文件(header)。
*/
int main(void) /*一个简单的C程序*/
/** main()函数
* C程序一定要从main()函数开始执行,除了main()函数,可以任意命名其他函数。圆括号是用于识别main()是一个函数。
*/
{
/** 花括号、函数体和块
* {
* ...
* }
*
* 所有的C函数都使用花括号标记函数体的开始和结束。
* 不能省略
*/
int num;
/**声明一个名为num的变量,int是C语言的一个关键字(keyword),表示一种基本的C语言数据类型,
* num是一个标识符(identifier),也就是一个变量、函数或其他实体的名称。
*
*/
num = 7; /*为num赋一个值*/
printf("I'm a simple "); /*使用printf()函数*/
printf("Computer .\n");
printf("My favorite number is %d . \n",num); /*换行符是一个转义序列,转义序列用于代码难以表示或无法输入的字符,如 \t 代表 Tab键*/
return 0;
} //结束
程序由一个或多个函数组成,必须有
main()
函数。函数由
函数头
和函数体
组成。
- 函数头包含
函数名、传入函数的信息类型和函数的返回类型
。- 函数体被
花括号
括起来,由一系列语句、声明
组成。
分行易读,配合分号,可以更好确定语句开始和结束。
Bug:程序的错误
调试(Debug):找出并修正程序错误的过程。
不遵循C语言的规则,把有效的C符号放在正确的位置。
一般使用 编译器(gcc)
时会报错,一般情况下,报错的位置比实际错误位置要滞后一行。
编译器检测不到语义错误,因为这类错误未违反C语言的规则。
遵循C规则,但结果不正确的错误属于语义错误。
程序状态:在程序的执行过程中,某给定点上所有变量值的集合。
跟踪程序状态的3个方法
小部分程序实用,大型程序不适合。
printf() 语句
,以监视制定变量值的变化。调试器
Linux环境中,C和C++一般使用
GDB调试器
。
如果使用关键字不当(如,关键字用作变量名),编译器会将其视为语法错误。
保留标识符包括以下划线字符开头的标识符和标准库函数名,如printf() 。
1.C语言的基本模块是什么?
基本模块和用户自定义模块的都称为函数。
2.什么是语法错误和语义错误?
语法错误:违反组成语句或程序的语法规则。例:printf "hello world"
;
语义错误:含义错误。例:n3 = n2*n
#include stdio.h
int main(void)
(
int s
s:=56;
printf(There are s weeks in a year.);
return 0;
程序错误是无法正常运行的。正确的修改如下:
#include
int main(void)
{
int s;
s = 56; // 变量赋值方式不正确
printf("There are %d weeks int a year.",s);
return 0;
}
a. printf("Baa Baa Black Sheep."); /*输出结果为:Baa Baa Black Sheep.Have you any wool?*/
printf("Have you any wool?\n");
b. printf("Begone!\nO creature of lard!\n"); /*输出结果为:Begone!此处换行 O creature of lard!*/
c. printf("What?\nNo/nfish?\n"); /*输出结果为:What? 此处换行 No/nfish?*/
d. int num;
num = 2;
printf("%d + %d = %d",num,num,num+num); /*输出结果为:2 + 2 = 4*/
main、int、function、char、=
中,哪些是C语言的关键字?关键字为:main、int char。
#include
int main(void)
{
int words,lines;
words = 3020;
lines = 350;
printf("There were %d words and %d lines\n",words,lines);
return 0;
}
#include
int main(void)
{
int a,b;
a = 5;
b = 2; /*第 7 行*/
b = a; /*第 8 行*/
a = b; /*第 9 行*/
printf("%d %d \n",b,a);
return 0;
}
请问,在执行完第7、第8、第9行后,程序的状态分别是什么?
#include
int main(void)
{
int x,y;
x = 10;
y = 5; /*第 7 行*/
y = x + y; /*第 8 行*/
x = x * y; /*第 9 行*/
printf("%d %d \n",x,y);
return 0;
}
请问,在执行完第7、第8、第9行后,程序的状态分别是什么?
编写一个程序,调用一次printf()函数,把你的姓名打印在一行,再调用一次printf()函数,把你的姓名打印在两行。然后,再调用两次printf()函数,把你的姓名打印在一行。打印形式如下:
Soler HO 第一次的内容
Soler 第二次打印
HO 第三次打印
Soler HO 第三次 和第四次 打印
#include
int main(void)
{
printf("my name is : Soler HO\n");/*第一次打印内容*/
printf("my first name is : Soler \n");/*第二次打印 ---- 名字*/
printf("my last name is : HO \n"); /*第三次打印 ---- 姓*/
printf("total name is : Soler HO \n"); /*第三次和第四次打印*/
return 0;
}
#include
int main(void)
{
char name[] = "Soler HO";
char address[] = "Shanghai";
printf("my name is %s , Address is %s .\n",name,address);
return 0;
}
/*编写一个程序,把你的年龄转换成天数,并显示这两个值,不用考虑闰年的问题*/
#include
int main(void)
{
int age,days;
int oneYear = 365; /*此处默认一年为365天*/
printf("please input your age : \n");
scanf("%d",&age);
days = age * oneYear;
printf("you live %d days\n",days);
return 0;
}
For he's a jolly good fellow!
For he's a jolly good fellow!
For he's a jolly good fellow!
Which nobody can deny!
除了main()函数以外,该程序还要调用两个自定义函数:一个名为jolly(),用于打印前3条消息,调用一次打印一条:另一个函数名为deny(),打印最后一条消息。
#include
void jolly(void);
void deny(void);
int main(void)
{
for(int i=1;i<=3;i++)
jolly();
deny();
}
void jolly(void)
{
printf("For He's a jolly good fellow!\n");
}
void deny(void)
{
printf("which nobody can deny!\n");
}
Brazil, Russia, India, China
India, China,
Brazil, Russia
除了main()以外,该程序还要调用两个自定义函数:一个名为br(),调用一次打印一次"Brazil,Russia";另一个名为ic(),调用一次打印一次"India,China"。其他内容在main()函数中完成。
/*编程练习题05*/
#include
void br(void);
void ic(void);
int main(void)
{
br();
printf(",");
ic();
printf("\n");
ic();
printf(",\n");
br();
printf("\n");
return 0;
}
void br(void)
{
printf("Brazil,Russia");
}
void ic(void)
{
printf("India,China");
}
#include
int main(void)
{
int toes = 10;
int twotimes = 2 * toes;
int square = toes * toes;
printf("origin toes is %d \n",toes);
printf("double toes is %d \n",twotimes);
printf("square toes is %d \n",square);
return 0;
}
Smile!Smile!Smile!
Smile!Smile!
Smile!
该程序要定义一个函数,该函数要被调用一次打印一次“Smile!”,根据程序的需要使用该函数。
#include
void smile(void);
int main(void)
{
/*具体优化后续重新优化*/
for(int i = 3;i>=1;i--)
smile();
printf("\n");
for(int i = 1;i<3;i++)
smile();
printf("\n");
smile();
printf("\n");
return 0;
}
void smile(void)
{
printf("Smile!");
}
starting now:
one
two
three
done!
#include
void one_three(void);
void two(void);
int main(void)
{
printf("starting Now : \n");
one_three(); /*函数嵌套*/
printf("Done!\n");
return 0;
}
void one_three(void)
{
printf("one \n");
two();
}
void two(void)
{
printf("two\n");
printf("three\n");
}