C程序的组成
#define _TEST1_H
#include <stdio.h>
int main(void)
{
printf("baa baa black sheep.");//因为没有换行符,它将与下一行同行显示
printf("have you any wool?\n");
printf("begone!\nO creaturen of lard!\n");//换行符存在时可以这样书写
printf("what?\nNo/nfish?\n");//换行符是\n,而不是/n
int num;//声明原则上可以写在语句中的各个位置,但是写在开头对于阅读和计划都有利
num = 2;
printf("%d + %d = %d", num, num, num + num);//声明后的计算过程可以如此,
//从而节省变量名。
return 0;
}
在这样的一个简单的C程序中,它需要头文件,函数名,一个main(),花括号以及花括号中的声明和语句。
自定义函数
#include <stdio.h>
void jolly(void);
void deny(void);
void jolly(void)
{
printf("For he's a jolly good fellow!\n");
}
void deny(void)
{
printf("Which nobody can deny!\n");
}
int main(void)
{
jolly();
jolly();
jolly();
deny();
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!
#include <stdio.h>
void jolly(void);//提出自定义函数jolly()
void deny(void);//提出自定义函数deny()
void jolly(void)//定义函数jolly()
{
printf("For he's a jolly good fellow!\n");
}
void deny(void)//定义函数deny()
{
printf("Which nobody can deny!\n");
}
int main(void)
{
void jolly();
void jolly();
void jolly();
void deny();
return 0;
}
但是在编写时时,我错误的给main()中的函数带上了void,然后编译并运行了程序,没有发生错误,我很好奇这是为什么于是对void进行了调查
void
中文翻译为“无类型”。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。——百度百科
void是“无类型指针”,可以指向任何类型的数据,用于注释和限制程序
void的优点使得任何类型的指针都可以赋值给void,且不需要强制转换符
但是void赋值给其他指针时则需要强制转换符
如果函数没有返回值,那么应声明为void类型
如果函数无参数,那么应声明其参数为void。
返回值
一个函数的函数名既是该函数的代表,也是一个变量。由于函数名变量通常用来把函数的处理结果数据返回给调用函数,即递归调用,所以一般把函数名变量称为返回值,函数的返回值类型是在定义函数时指定的。
这是调用函数,返回值作为计算结果将会反给它
类型说明符 被调函数名(类型 形参,类型 形参…);
经过以上内容可以明白void将原有的函数标记为“空”,其后的内容将会像注释一样不被运行。
第二章作业答案
第一题
1.编写一个程序,调用一次printf()函数,把你的名和姓打印在一行。再调用一次printf()函数,把你的名和姓分别打印在两行。然后,再调用两次printf()函数,把你的名和姓打印在一行。输出应如下所示(当然要把示例的内容换成你的名字):
Gustav Mahler //第1次打印的内容
Gustav //第2次打印的内容
Mahler //第3次打印的内容
Gustav Mahler //第4次打印的内容
#include <stdio.h>
int main(void)
{ printf("Gustav Mahler\n");
printf("Gustav\nMahler\n");
printf("Gustav ");
printf("Mahler");
return 0;
}
第二题
2.编写一个程序,打印你的姓名和地址
#include<stdio.h>
int main()
{
printf("LiHua\n");
printf("address\n");
return 0;
}
第三题
3.编写一个程序把你的年龄转换成天数,并显示这两个值。这里不用考虑闰年的问题。
#include <stdio.h>
#define AGE 20
int main(void)
{ int day;
day=AGE*365;
printf("I am %d years old, it is equal to %d days\n",AGE,day);
return 0;
}
第四题
4.编写一个程序,生成以下输出:
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 <stdio.h>
void jolly(void);
void deny(void);
int main(void)
{ jolly(); /*调用函数时括号内不用加void*/
jolly();
jolly();
deny();
return 0;
}
void jolly(void)
{
printf("For he's a jolly good fellow!\n");
}
void deny(void)
{
printf("Which nobody can deny!\n");
}
第五题
5.编写一个程序,生成以下输出:
Brazil, Russia, India, China
India, China,
Brazil, Russia
除了main()以外,该程序还要调用两个自定义函数:一个名为br(),调用一次打印一次"Brazil,Russia";另一个名为ic(),调用一次打印一次"India,China"。其他内容在main()函数中完成。
#include <stdio.h>
void br(void);
void ic(void);
int main(void)
{ br();
printf(", ");
ic();
printf("\n");
ic();
printf("\n");
br();
return 0;
}
void br(void)
{
printf("Brazil,Russia");
}
void ic(void)
{
printf("India,China");
}
第六题
6.编写一个程序,创建一个整型变量toes,并将toes设置为10.程序中还要计算toes的两倍和toes的平方。该程序应打印3个值,并分别描述以示区分。
#include <stdio.h>
int main(void)
{ int toes=10;
printf("toes=%d\n",toes);
printf("the twice of toes is %d\n",toes*2);
printf("the square of toes is %d\n",toes*toes);
return 0;
}
第七题
7.许多研究表明,微笑益处多多。编写一个程序,生成以下格式的输出:
Smile!Smile!Smile!
Smile!Smile!
Smile!
该程序要定义一个函数,该函数要被调用一次打印一次“Smile!”,根据程序的需要使用该函数。
//换行输出的另一种形式putchar(’\n’)
#include <stdio.h>
void sm(void);
int main(void)
{ sm(); sm(); sm();
putchar('\n');
sm(); sm();
putchar('\n');
sm();
return 0;
}
void sm(void)
{
printf("Smile!");
}
第八题
8.在C语言中,函数可以调用另一个函数。编写一个程序,调用一个名为one_three()的函数。该函数在一行打印单词"one",再调用第2个函数two(),然后在另一行打印单词“three”。two()函数在一行显示单词“two”。main()函数在调用one_three()函数前要打印短语“starting now:”,并在调用完毕后显示短语“done!”。因此,该程序的输出应如下所示:
starting now:
one
two
three
done!
#include <stdio.h>
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();
printf("three\n");
}
void two(void)
{
printf("two\n");
}