文档库 最新最全的文档下载
当前位置:文档库 › C语言程序设计教程 清华大学出版社 陈明主编 第4章答案

C语言程序设计教程 清华大学出版社 陈明主编 第4章答案

C语言程序设计教程 清华大学出版社 陈明主编 第4章答案
C语言程序设计教程 清华大学出版社 陈明主编 第4章答案

第4章习题解答

一、选择题

1.在C语言中,函数返回值的类型最终取决于

A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型

解析:函数返回值类型最终取决于定义函数时所定义的函数类型。

答案:A

2.设函数Fun()的定义形式为:

void Fun(char ch, float x){}

则以下对函数Fun()的调用语句中,正确的是。

A)Fun("abc", 3.0); B)t = Fun('D', 16.5);

C)Fun('65', 2.8); D)Fun(32, 32);

解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。只有选项D才是合法的函数调用形式。

答案:D

3.有以下程序:

/* 文件路径名:ex4_1_3\main.c */

#include /* 标准输入/输出头文件*/

int f1(int x, int y) { return x > y ? x : y; }

int f2(int x, int y) { return x > y ? y : x; }

int main(void) /* 主函数main() */

{

int a = 4, b = 3, c = 5, d = 2, e, f, g; /* 定义变量*/

e = f2(f1(a, b), f1(c, d));

f = f1(f2(a, b), f2(c, d));/* 调用函数*/

g = a + b + c + d - e - f; /* 算术运算*/

printf("%d,%d,%d\n", e, f, g); /* 输出e,f,g */

return 0; /* 返回值0, 返回操作系统*/

}

程序运行后的输出结果是。

A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7

解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数。因此有:e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4;

f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3;

g=a+b+c+d-e-f=4+3+5+2-4-3=7。

答案:A

4.若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是。

A)函数的实参和其对应的形参共占同一存储单元

B)形参只是形式上的存在,不会占用具体存储单元

C)同名的实参和形参占同一存储单元

D)函数的形参和实参分别占用不同的存储单元

解析:在C语言中,函数的形参和实参是分别占用不同的存储单元的,因此,选项D是正确的。

答案:D

5.有以下程序:

/* 文件路径名:e4_1_5\main.c */

#include /* 标准输入/输出头文件*/

int a = 1; /* 全局变量*/

int f(int c) /* 定义函数*/

{

static int a = 2; /* 静态变量*/

c++; /* c自加1 */

return (a++) + c; /* 返回函数值*/

}

int main(void) /* 主函数main() */

{

int i, k = 0; /* 定义变量*/

for (i = 0; i < 2; i++)

{ int a = 3; k += f(a); } /* 循环调用f()函数*/

k += a; /* 将全局变量a的值加到k */

printf("%d\n", k); /* 输出k */

return 0; /* 返回值0, 返回操作系统*/

}

程序的运行结果是。

A)14 B)15 C)16 D)17

解析:题中“static int a=2”定义了一个static局部变量,编译程序为其生成永久存储单元,在调用函数f()时,值一直都保存着,在主函数中,for循环进行两次,第一次循环得f(3)=2+3+1=6,从而k+=f(3)=6,第二次循环由于static局部变量a变成了3,从而f(3)=3+3+1= 7,故k+=f(3)=13,最后执行k+=a时,此时a的值为全局变量,其值为1,所以k的值为14,选项A是正确的。

答案:A

6.有以下程序:

/* 文件路径名:e4_1_6\main.c */

#include /* 标准输入/输出头文件*/

int a = 4; /* 全局变量*/

int f(int n) /* 定义函数*/

{

int t = 0; /* 局部变量*/

static int a = 5; /* 静态变量*/

if (n % 2) {int a = 6; t += a++; }

else { int a = 7; t += a++; }

return t + a++; /* 返回函数值*/

}

int main(void) /* 主函数main() */

{

int s = a, i; /* 定义变量*/

for (i = 0; i < 2; i++) s += f(i); /* 循环调用f()函数*/

printf("%d\n", s); /* 输出s */

return 0; /* 返回值0, 返回操作系统*/

}

程序运行后的输出结果是。

A)24 B)28 C)32 D)36

解析:main()函数在开始时,s=a=4,其中的a为全局变量。

第1次循环时,i=0,f(i)=f(0),将0传递给形参n,首先执行if语句中的条件“n%2”;条件为假,则执行else下的复合语句“{ int a = 7; t += a++; }”,可知t=0+7=7,使用return 返回t=7+(a++)=7+5=12,a运算完后自增1,变为6,这里的a为函数f()内,复合语句之外的a,返回主函数后s=4+12=16。

第2次循环时,当i=1时,f(i)=f(1),将1传递给形参n,首先执行if语句中的条件“n%2”;条件为真,则执行if下的得合语句“{ int a = 6; t += a++; }”,可知t=0+6=6,使用return返回t=6+(a++)=6+6=12,这里的a为函数f()内,复合语句之外的a,返回主函数后s=16+12=28。

答案:B

7.有以下程序:

/* 文件路径名:e4_1_7\main.c */

#include /* 标准输入/输出头文件*/

Fun(int x, int y)

{

static int m = 0, i = 2; /* 静态变量*/

i += m + 1; m = i + x + y; /* 对静态变量作赋值运算*/

return m; /* 返回函数值*/

}

int main(void) /* 主函数main() */

{

int j = 1, m = 1, k; /* 定义变量*/

k = Fun(j, m); /* 调用函数Fun() */

printf("%d,", k); /* 输出k */

k = Fun(j, m); /* 调用函数Fun() */

printf("%d\n", k); /* 输出k */

return 0; /* 返回值0, 返回操作系统*/

}

执行后的输出结果是。

A)5,5 B)5,11 C)11,11 D)11,5

解析:在第1次调用Fun()函数时,x=1,y=1,函数Fun()的静态变量i=2+0+1=3,m=3+1+1=5,返回m=5。在第2次调用Fun()函数时,x=1,y=1,函数Fun()的静态变量i=3+5+1=9,m=9+1+1=11,返回m=11。

答案:B

8.在一个C源程序文件中所定义的全局变量,其作用域为。

A)所在文件的全部范围B)所在程序的全部范围

C)所在函数的全部范围D)由具体定义位置和extern说明来决定范围

解析:全局变量的作用域不但从具体定义位置开始,直到文件结束为止,而且还可用extern声明来扩大作用域围,所以此选项D正确。

答案:D

9.在C语言中,函数的隐含存储类别是。

A)auto B)static C)extern D)无存储类别

解析:C语言规定,函数的隐含存储类别为外部类型,即extern类型,允许其他文件中的函数调用。

答案:C

10.有以下程序:

/* 文件路径名:ex4_1_10\main.c */

#include /* 标准输入/输出头文件*/

int Fun(int x)

{

if (x == 0 || x == 1) return 3; /* 递归结束*/

else return x - Fun(x - 2); /* 递归调用*/

}

int main(void) /* 主函数main() */

{

printf("%d\n", Fun(7)); /* 输了Fun(7) */

return 0; /* 返回值0, 返回操作系统*/

}

执行后的输出结果是。

A)7 B)3 C)2 D)0

解析:x=7,通过递归调用Fun()函数后得到Fun(7)= 7-Fun(5)= 7-(5-Fun(3)) =2+3-Fun(1)=2。

答案:C

*11.下面选项中不属于面向对象程序设计特征的是。

A)继承性B)多态性C)类比性D)封装性

解析:面向对象技术有三个重要特性:封装性、继承性和多态性;而类比性不属于面向对象的特征。

答案:C

12.对于一个正常运行的C程序,以下叙述中正确的是。

A)程序的执行总是从main函数开始,在main函数结束

B)程序的执行总是从程序的第一个函数开始,在main函数结束

C)程序的执行总是从main函数开始,在程序的最后一个函数中结束

D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束

解析:C程序的执行总是从main函数开始,完成对其他函数的调用后返回到main函数,最后由main函数结束整个程序。一个C源程序有且公有一个main函数。

答案:A

二、填空题

1.以下程序中,函数Fun()的功能是计算x2-2x+6,主函数中将调用Fun()函数计算:y1 = (x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

/* 文件路径名:e4_2_1\main.c */

#include /* 标准输入/输出头文件*/

#include /* 数学函数首部文件*/

double Fun(double x) { return x*x - 2 * x + 6; }

int main(void) /* 主函数main() */

{

double x, y1, y2; /* 定义变量*/

printf("输入x:"); /* 输入提示*/

scanf("%lf", &x); /* 输入x */

y1 = Fun( 【1】); /* 调用函数Fun() */

y2 = Fun( 【2】); /* 调用函数Fun() */

printf("y1=%lf, y2=%lf\n", y1, y2); /* 输出y1,y2 */

return 0; /* 返回值0, 返回操作系统*/

}

解析:函数的一般调用形式为:函数名(实在参数表),在调用时将实参的值赋给形参,实参可以是常量、变量或表达式。

答案:【1】x + 8 【2】sin(x)

2.有以下程序:

/* 文件路径名:e4_2_2\main.c */

#include /* 标准输入/输出头文件*/

int sub(int n){ return n / 10 + n % 10; }

int main(void) /* 主函数main() */

{

int x, y; /* 定义变量*/

scanf("%d", &x); /* 输入x */

y = sub(sub(sub(x))); /* 调用函数*/

printf("%d\n", y); /* 输出y */

return 0; /* 返回值0, 返回操作系统*/

}

若运行时输入:1234<回车>,程序的输出结果是。

解析:1234作为实参传递给形参n, sub(x)值为1234/10+1234%10=123+4=127,sub(sub(x)=sub(127)=127%10+127%10=12+7=19,sub(sub(sub(x)))=sub(19)=9/10+19%10=10,所以将输出10。

答案:10

3.以下程序运行后的输出结果是。

/* 文件路径名:e4_2_3\main.c */

#include /* 标准输入/输出头文件*/

void swap(int x, int y)

{

int t = x; x = y; y = t; /* 交换x,y */

printf("%d %d ", x, y); /* 输出x,y */

}

int main(void) /* 主函数main() */

{

int a = 3, b = 4; /* 定义变量*/

swap(a, b); /* 调用函数*/

printf("%d %d\n", a, b); /* 输出a,b */

return 0; /* 返回值0, 返回操作系统*/

}

解析:C函数的参数传递都是传值的,因此swap(a,b)调用将a和b的值3和4传递给swap 的形参x和y,x和y通过t交换值,printf输出x和y结果是“4 3“。swap函数调用结束后,a和b的值并没有交换,printf输出a和b结果是“3 4”。

答案:4 3 3 4

4.以下程序运行后的输出结果是。

/* 文件路径名:e4_1\main.c */

#include /* 标准输入/输出头文件*/

Fun(int a)

{

int b = 0; /* 局部变量*/

static int c = 3; /* 静态变量*/

b++; c++; /* b,c自加1 */

return a + b + c; /* 返回函数值*/

}

int main(void) /* 主函数main(void) */

{

int i, a = 5; /* 定义变量*/

for (i = 0; i < 3; i++)

printf("%d %d ", i, Fun(a)); /* 输出i,Fun(a) */

printf("\n"); /* 换行*/

return 0; /* 返回值0, 返回操作系统*/

}

解析:第1次调用Fun()函数时,a=5,“b++; c++;”执行后,b=1,c=4,返回5+1+4=10;

第2次调用Fun()函数时,a=5,“b++; c++;”执行后,b=1,c=5,返回5+1+5=11;

第3次调用Fun()函数时,a=5,“b++; c++;”执行后,b=1,c=6,返回5+1+6=12。

答案:0 10 1 11 2 12

5.以下程序运行后的输出结果是。

/* 文件路径名:ex4_2_5\main.c */

#include /* 标准输入/输出头文件*/

int f(int a[], int n)

{

if (n >= 1) return f(a, n - 1) + a[n - 1]; /* 递归调用*/

else return 0; /* 递归结束*/

}

int main(void) /* 主函数main() */

{

int a[] = {1, 2, 3, 4, 5}, s; /* 定义数组与变量*/

s = f(a, 5); /* 调用函数f() */

printf("%d\n", s); /* 输出s */

return 0; /* 返回值0, 返回操作系统*/

}

解析:通过递归调用f函数实现了数组各元素之和,即a[0]+a[1]+a[2]+a[3]+a[4]=15。

答案:15

*6.在面向对象方法中,类的实例称为。

解析:将属性、操作相似的对象归为类,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,而一个对象则是其对应类的一个实例。

答案:对象

三、编程题

1.编写一个函数,其功能是判断输入的三个边是否能组成三角形,要求编写测试程序。

参考程序:

/* 文件路径名:ex4_3_1\main.c */

#include /* 包含库函数printf()所需要的信息*/

#include /* 包含库函数system()所需要的信息*/

int IsTriangle(float a, float b, float c) /* a,b,c能组成三角形,返回1,否则返回0 */

{

if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a)

{ /* 能组成三角形*/

return 1; /* 返回1 */

}

else

{ /* 不能组成三角形*/

return 0; /* 返回0 */

}

}

int main(void) /* 主函数main() */

{

float a, b, c; /* 定义变量*/

printf("输入三边长:"); /* 输入提示*/

scanf("%f%f%f", &a, &b, &c); /* 输入a,b,c */

if (IsTriangle(a, b, c))

{ /* 能组成三错角形*/

printf("%f, %f, %f能组成三角形\n", a, b, c);

}

else

{ /* 不能组成三错角形*/

printf("%f, %f, %f不能组成三角形\n", a, b, c);

}

system("PAUSE"); /* 调用库函数system( ),输出系统提示信息*/

return 0; /* 返回值0, 返回操作系统*/

}

2.编写一个函数,其功能是输入n个数,返回这些数的最大值,要求编写测试程序。参考程序:

/* 文件路径名:ex4_3_2\main.c */

#include /* 包含库函数printf()所需要的信息*/

#include /* 包含库函数system()所需要的信息*/

int Max(int n) /* 求输入的n个数的最大值*/

{

int m, i, tem; /* 定义变量*/

printf("输入%d个数:", n); /* 输入提示*/

scanf("%d", &m); /* 先假设输入的第1个数就是最大值*/

for(i = 1; i < n; i++)

{ /* 依次输入其它各数,比较求最大值*/

scanf("%d", &tem); /* 输入输入其它各数*/

if (tem > m) m = tem; /* 比较求最大值*/

}

return m; /* 返回最大值*/

}

int main(void) /* 主函数main() */

{

int n, m; /* 定义变量*/

printf("输入个数n::"); /* 输入提示*/

scanf("%d", &n); /* 输入n */

m = Max(n); /* 求输入的n个数的最大值*/

printf("输入的%d个数的最大值为%d\n", n, m); /* 输出结果*/

system("PAUSE"); /* 调用库函数system( ),输出系统提示信息*/

return 0; /* 返回值0, 返回操作系统*/

}

3.编写一个函数,其功能是输入n个数,返回这些数的最小值,要求编写测试程序。参考程序:

/* 文件路径名:ex4_3_3\main.c */

#include /* 包含库函数printf()所需要的信息*/

#include /* 包含库函数system()所需要的信息*/

int Min(int n) /* 求输入的n个数的最小值*/

{

int m, i, tem; /* 定义变量*/

printf("输入%d个数:", n); /* 输入提示*/

scanf("%d", &m); /* 先假设输入的第1个数就是最小值*/

for(i = 1; i < n; i++)

{ /* 依次输入其它各数,比较求最小值*/

scanf("%d", &tem); /* 输入输入其它各数*/

if (tem < m) m = tem; /* 比较求最小值*/

}

return m; /* 返回最大值*/

}

int main(void) /* 主函数main() */

{

int n, m; /* 定义变量*/

printf("输入个数n::"); /* 输入提示*/

scanf("%d", &n); /* 输入n */

m = Min(n); /* 求输入的n个数的最小值*/

printf("输入的%d个数的最小值为%d\n", n, m); /* 输出结果*/

system("PAUSE"); /* 调用库函数system( ),输出系统提示信息*/

return 0; /* 返回值0, 返回操作系统*/

}

4.编写一个判断素数的函数,在主函数中输入一个整数,输出是否为素数的信息。参考程序:

/* 文件路径名:ex4_3_4\main.c */

#include /* 包含库函数printf()所需要的信息*/

#include /* 包含库函数system()所需要的信息*/

int IsPrime(int n) /* 如果n是素数,返回1,否则返回0 */

{

int i; /* 定义变量*/

for (i = 2; i < n; i++)

if (n % i == 0) break; /* 如n能被i整除,则n不是素数,退出循环*/

if (n == 1 || i < n) return 0; /* 不是素数*/

else return 1; /* 是素数*/

}

int main(void) /* 主函数main() */

{

int n; /* 定义整数变量*/

printf("输入正整数n:"); /* 输入提示*/

scanf("%d", &n); /* 输入n */

if (IsPrime(n)) printf("%d是素数\n", n);

else printf("%d不是素数\n", n);

system("PAUSE"); /* 调用库函数system( ),输出系统提示信息*/

return 0; /* 返回值0, 返回操作系统*/

}

5.编写函数判断给定的年份是否为闰年,要求编写测试程序。

参考程序:

/* 文件路径名:ex4_3_5\main.c */

#include /* 包含库函数printf()所需要的信息*/

#include /* 包含库函数system()所需要的信息*/

int IsLeapYear(int year) /* 如果year是闰年,返回1,否则返回0 */

{

if (year % 4 == 0 && year % 100 != 0 /* 如果年份能被4整除但不能被100整除*/

|| year % 400 == 0) return 1; /* 或年份能被400整除,则为闰年*/

else return 0; /* 否则为平年*/

}

int main(void) /* 主函数main() */

{

int year; /* 年份*/

printf("输入年份:"); /* 输入提示*/

scanf("%d", &year); /* 输入year */

if (IsLeapYear(year)) printf("%d是闰年\n", year);

else printf("%d不是闰年\n", year);

system("PAUSE"); /* 调用库函数system( ),输出系统提示信息*/

return 0; /* 返回值0, 返回操作系统*/

}

*6.编写一个函数,其功能是给出年、月和日,计算出该日是该年的第几天,要求编写测试程序。

参考程序:

/* 文件路径名:ex4_3_6\main.c */

#include /* 包含库函数printf()所需要的信息*/

#include /* 包含库函数system()所需要的信息*/

int IsLeapYear(int year) /* 如果year是闰年,返回1,否则返回0 */ {

if (year % 4 == 0 && year % 100 != 0 /* 如果年份能被4整除但不能被100整除*/ || year % 400 == 0) return 1; /* 或年份能被400整除,则为闰年*/ else return 0; /* 否则为平年*/

}

int Nums(int year, int month, int day) /* 已知日期,返回该日是该年的第几天*/ {

switch (month)

{

case 1: /* 1月份*/

return day;

break;

case 2: /* 2月份*/

return 31 + day;

break;

case 3: /* 3月份*/

if (IsLeapYear(year))

{ /* 闰年*/

return 31 + 29 + day;

}

else

{ /* 平年*/

return 31 + 28 + day;

}

break;

case 4: /* 4月份*/

if (IsLeapYear(year))

{ /* 闰年*/

return 31 + 29 + 31 + day;

}

else

{ /* 平年*/

return 31 + 28 + 31 + day;

}

break;

case 5: /* 5月份*/

if (IsLeapYear(year))

{ /* 闰年*/

return 31 + 29 + 31 + 30 + day;

}

else

{ /* 平年*/

return 31 + 28 + 31 + 30 + day;

}

break;

case 6: /* 6月份*/

if (IsLeapYear(year))

{ /* 闰年*/

return 31 + 29 + 31 + 30 + 31 + day;

}

else

{ /* 平年*/

return 31 + 28 + 31 + 30 + 31 + day;

}

break;

case 7: /* 7月份*/

if (IsLeapYear(year))

{ /* 闰年*/

return 31 + 29 + 31 + 30 + 31 + 30 + day;

}

else

{ /* 平年*/

return 31 + 28 + 31 + 30 + 31 + 30 + day;

}

break;

case 8: /* 8月份*/

if (IsLeapYear(year))

{ /* 闰年*/

return 31 + 29 + 31 + 30 + 31 + 30 + 31 + day;

}

else

{ /* 平年*/

return 31 + 28 + 31 + 30 + 31 + 30 + 31 + day;

}

break;

case 9: /* 9月份*/

if (IsLeapYear(year))

{ /* 闰年*/

return 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + day;

}

else

{ /* 平年*/

return 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + day;

}

break;

case 10: /* 10月份*/

if (IsLeapYear(year))

{ /* 闰年*/

return 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;

}

else

{ /* 平年*/

return 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;

}

break;

case 11: /* 11月份*/

if (IsLeapYear(year))

{ /* 闰年*/

return 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day; } else { /* 平年 */ return 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;

} break; case 12: /* 12月份 */ if (IsLeapYear(year)) { /* 闰年 */ return 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day; } else { /* 平年 */ return 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;

}

break;

default: /* 其它情况 */

return -1; /* 返回-1,表示月份错 */

break;

}

}

int main(void) /* 主函数main() */

{

int year, month, day; /* 年, 月, 日 */

printf("输入年,月,日:"); /* 输入提示 */

scanf("%d,%d,%d", &year, &month, &day); /* 输入year,month,day */

printf("%d 年%d 月%d 日是该年的第%d 天\n", year, month, day, Nums(year, month, day));

/* 输出结果 */

system("PAUSE"); /* 调用库函数system( ),输出系统提示信息 */

return 0; /* 返回值0, 返回操作系统 */

}

7.编写一个计算斐波纳契(Fibonacci )数列的递归函数,斐波纳契数列的定义如下:

??

???>-+-===时当时当时当0)2()1(1101)(n n F n F n n n F

要求编写测试程序。

*8.编写递归函数,求输入的n 整数的最大值,并写出测试程序。

参考程序:

/* 文件路径名:ex4_3_7\main.c */

#include

/* 包含库函数printf()所需要的信息 */ #include /* 包含库函数system()所需要的信息 */

unsigned int Fibonacci(unsigned int n) /* 返回斐波纳契数*/

{

if (n == 0) return 1; /* n=0 */

else if (n == 1) return 1; /* n=1 */

else return Fibonacci(n - 1) + Fibonacci(n - 2); /* n>0 */

}

int main(void) /* 主函数main() */

{

unsigned int n; /* 定义变量*/

for (n = 0; n < 20; n++) printf("%d ", Fibonacci(n)); /* 输出斐波纳契数*/

printf("\n"); /* 换行*/

system("PAUSE"); /* 调用库函数system( ),输出系统提示信息*/

return 0; /* 返回值0, 返回操作系统*/

}

(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,

供参考,感谢您的配合和支持)

C语言程序设计教程 教学大纲

附件一 C语言程序设计 教学大纲

C语言程序设计 一、本大纲适用专业、层次、总课时 1.适用专业:计算机类 2.层次:大专 3.总课时:64学时 二、课程性质和任务 《C语言程序设计》是计算机应用专业的专业必修课程,主要任务是介绍C语言中的数据类型,运算,语句结构及其程序设计的基本方法。目的是使学生掌握一门高级程序设计语言,学会利用C语言解决一般应用问题,并为后续的专业课程奠定程序设计基础。《C语言程序设计》是一门实践性很强的课程,必须通过上机操作才能掌握所学的知识,所以要特别强调讲授与上机操作相结合,要保证学生有充分的上机条件。 三、课程的基本要求与目标 根据市场对高职网络人才培养规格的需求特点,本课程的总目标是:“以学生为主体,以学生的学习为中心”,通过课程的实施,帮助学生学会学习。使学生的知识、情感、技能得到全面发展,既为今后的专业课程学习打下良好的知识与技能基础,又培养良好的态度,为其将来从事专业活动和未来的职业生涯打下基础。课程内容以“学其所用,用其所学”突出高职教育特点,确保人才培养目标的实现。课程目标如下: (1)知识目标:要求学生掌握基本的程序编写技能。学会利用常见的C程序开发工具的使用,掌握开发环境的配置,掌握常见菜单命令的使用以及整个窗口的布局设置。掌握结构化或模块化程序设计技能,学会数组、函数、三大控制结构、结构体和共用体以及指针的使用。为软件后期维护和管理提供必要的技术支持。 (2)能力目标: C语言程序设计的课程开设是从学生的角度出发,注重培养学生良好的动手实践习惯,注重培养学生严谨的行事风格,尤其注重挖掘学生的潜质,注重培养与社会接轨,培养学生具有踏实工作作风,良好的观察和思考能力强以及团队合作能力。 (3)情感目标:学生提高自己的独立思考和判断能力,通过这种方式能够对工作任务进行有效分析和寻求解决方案;加强自身的程序设计实践能力;培养从事软件研发的职业素养。在学习过程中使学生学会利用网络资源与他人进行交流与

第5章-C语言程序设计(第2版)教材习题答案

【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。2011年10月第二版。ISBN:978-7-302-26972-4。售价:35元。 【答案版本】本习题答案为2012年2月修订版本。 一、选择题 1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句执行一次 D. 循环体语句一次也不执行 2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。 A. 运行程序段后输出1 B. 程序段执行无限次 C. 运行程序段后输出0 D. 程序段中的控制表达式是非法的 3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。 A. int a=1,b=2; while(b--); B. int a=1,b=2; do a++; while(a==b); C. int a=1,b=2; while(a=3); D. int a=1,b=2; do b-- while(b==0); 4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。 do{ printf(“%d\n”,i--); } while(i!=0); A. 0 B. 1 C. 5 D. 无限 5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。 A. 0 B. 5 C. 10 D. 无限 6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。 A. break语句用于循环体内,它将结束该循环 B. break语句用于开关语句,它结束该开关语句 C. break语句用于if语句的内嵌语句内,它结束该if语句 D. break语句在一个循环体内可使用多次 7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。 A. 循环体内可以包含有循环语句 B. 循环体内必须同时出现break语句和continue语句 C. 循环体内可以出现选择语句 D. 循环体可以是空语句 8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。 A. for(; ; x+=i); B. while(1) { x++; } C. for( i=10; ; i--) sum+=i; D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c); 9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。 A.2 B. 3 C. 4 D. 5 10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。 A. 无限循环 B. 循环次数不定 C. 循环4次 D. 循环3次

C语言程序设计课程设计题目

1 一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2 成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式

进行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3 迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

C语言程序设计课程设计报告

C语言程序设计课程设 计报告 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

《C语言程序设计》课程设计报告 (2013— 2014学年第 3 学期) 题目: C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号: 1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014 年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 2.1 掷骰子游戏 (5) 2.2 射击游戏 (7) 2.3 计算存款本息之和 (8) 2.4肇事逃逸 (10) 2.5 礼炮 (12) 2.6 汽车加油 (14) 2.7 大优惠 (16) 2.8 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C 语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;

2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式 ③必须上机调试通过 二、方案实现与调试 2.1掷骰子游戏 2.1.1 题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述

(完整版)C语言程序设计教程第五章练习题题目

单选题 1、关于数组的定义与初始化,下列哪一项是错误的() A.int arr[5] = {1,2,3,4,5}; B.int arr[] = {1,2,3,4,5}; C.int arr[5] = {1,2,3}; D.int arr[5] = {1,2,3,4,5,6}; 2、在定义数组int arr[10]后,下列选项中对arr的引用正确的是() A.arr[10] B.arr[6.3] C.arr(6) D.arr[0] 3、在C语言中,引用数组元素时,其数组下标的数据类型允许是() A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 4、若int arr[5] = {1,2,3}; 则arr[2]的值为() A.1 B.2 C.3 D.null 5、在执行int arr[][3] = {1,2,3,4,5,6}:语句后,arr[1][0]的值为() A.4 B.1 C.2 D.5 6、关于二维数组,下列选项能正确定义并赋初值的是() A.int n = 5,b[n][n]; B.int a[1][2] = {{1},{3}}; C.int c[2][] = {{1,2},{3,4}}; D.int a[3][2] = {{1,2},{3,4}}; 7、阅读下列程序段: char s[18] = "a book!"; printf("%.4s\n", s); 其输出结果为() A.a book! B.a book C.a bo D.a 8、阅读下列程序: int a[4][4] = { { 1, 3, 5, }, { 2, 4, 6 }, { 3, 5, 7 } }; printf("%d%d%d%d\n", a[0][0], a[1][1], a[2][2], a[3][3]);

C语言程序设计教程答案 杨路明 郭浩志

C语言程序设计教程 习题答案 总主编杨路明 主审郭浩志 文件摘自CSDN

习题1 1、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法描述 2、c语言程序的结构如下: 1、c语言程序由函数组成,每个程序必须具有一个main函数作为程序的主控函数。 2、"/*"与"*/"之间的内容构成c语言程序的注释部分。 3、用预处理命令#include可以包含有关文件的信息。 4、大小写字母在c语言中是有区别的。 5、除main函数和标准库函数以外,用户可以自己编写函数,程序一般由多个函数组成,这些函数制定实际所需要做的工作。 例如: void main() { int a,b,c,s; a=8;b=12;c=6; s=a+b*c; printf("s=%d\n",s); } 3、c语言的特点: 1、c语言具有结构语言的特点,程序之间很容易实现段的共享; 2、c语言的主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译成代码,以实现程序的模块化。 3、c语言运算符丰富,运算包含的范围很广; 4、c语言数据类型丰富。 5、c语言允许直接访问物理地址,即可直接对硬件进行操作,实现汇编语言的大部分功能; 6、c语言语法限制不太严格,程序设计自由度大,这样是c语言能够减少对程序员的束缚; 7、用c语言编程,生成的目标代码质量高,程序执行效率高,可移植性好; 4、合法标识符:AB12、leed_3、EF3_3、_762、PAS、XYZ43K2 不合法标识符:a*b2、8stu、D.K.Jon、if、ave#xy、#_DT5、C.D 5、F2:将当前编辑器中文件存盘 F10:调用主菜单 F4:程序运行到光标所在行 Ctrl+F9:当前编辑环境下,进行编译、连接且运行程序; Alt+F5:将窗口切换到DOS下,查看程序运行结果 6、 (1): ******************** welcome you very good ******************** (2): please input three number;5,7,8 max number is:8 7、main 8、User screen、Alt+F5

C语言程序设计教程第一章练习题题目

单选题 1、下列语言中不属于计算机语言的三大类的是(C)。 A.机器语言 B.汇编语言 C.脚本语言 D.高级语言 2、下列说法中不正确的是(C) A.计算机语言大致可分为三大类,即机器语言、汇编语言和高级语言 B.C语言是一种通用的、过程式的编程语言,具有高效、灵活、可移植等优点 C.C语言属于汇编语言 D.高级语言比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用 3、以下开发工具中不属于主流的开发工具的是(B) A.Visual Studio B.Xcode C.Code::Block D.Eclipse 4、下列选项是对主流开发工具的介绍,其中错误的是(B) A.Visual Studio支持C/C++、C#、F#、VB等多种程序语言的开发和测试 B.Code::Block是一个免费的跨平台IDE,支持C、C++和Fortan程序的开发 C.Eclipse是一种被广泛使用的免费跨平台IDE,最初由IBM公司开发 D.Vim是一款功能非常强大的IDE ( 和其他IDE不同的是,Vim本身并不是一个用于开发计算机程序的IDE,而是一款功能非常强大的文本编辑器,它是UNIX系统上Vi编辑器的升级版。) 5、下列选项中,不属于开发一个C语言应用程序的具体实现步骤的是(A) A.启动开发工具 B.添加源文件 C.编写代码 D.运行程序 6、下列选项中,关于main()函数叙述不正确的是(C) A.一个完整的C语言程序中,有且只能有一个main()函数 B.main()函数是程序的主入口,程序总是从main()函数开始执行 C.如果没有声明main()函数,程序将从第1行开始执行 D.main()函数可以有返回值,也可以没有返回值 7、下面程序中,合法的选项是(D) A.#includeint main() { printf("hello world\n"); return 0; } B.#includeint man() { printf("hello world\n"); return 0; } C.#includeint main() { printf("hello world\n") return 0; } D.#includeint main() { print("hello world\n"); return 0; } 8、下面程序中,运行结果为“1,2”的是(A) A.#includeint main() { int a = 1; int b = 2; printf("%d %d\n",a,b); return 0; } B.#includeint main() { int a = 1; int b = 2; printf("%d,"a); printf("%d\n",b); return 0; } C.#includeint main() { int a = 1, b = 2; printf("%d,,%d\n",a,b); return 0; }

C语言程序设计课程作业

C语言程序设计课程作业_A 一、单选题 1. (4分)设有以下定义int k=7, x=12;,则能使值为3的表达式是() ? A. x%=(k%=5) ? B. x%=(k-k%5) ? C. x%=k ? D. (x%=k)-(k%=5) 答案D 解析C语言程序设计/数据类型与运算/整型算术表达式 2. (4分)以下程序的输出结果是? #include main() { int x=020,y=0x20,z=20; printf('%d,%d,%d ', x,y,z); } ? A. 20,20,20 ? B. 32,16,20 ? C. 16,32,20 ? D. 20,32,20 答案C 解析C语言程序设计/数据类型及运算 3. (4分)C语言中while和do while循环的主要区别是( ) ? A. do-while的循环至少无条件执行一次

? B. while循环控制条件比do-while的循环控制条件严格 ? C. do-while允许从外部转入到循环体内 ? D. do-while的循环体不能是复合语句 答案A 解析C语言程序设计/循环程序设计/while语句与do-while语句 4. (4分)执行语句scanf('%d,%d',&m,&n);使m和n的值分别为1和2,正确输入是( ) ? A. 1 ? B. 1 2 ? C. 1,2 ? D. 12,2 答案C 解析C语言程序设计/顺序程序设计/整型数据的格式输入 5. (4分)sizeof(float)是( ) ? A. 一个双精度型表达式 ? B. 一个整型表达式 ? C. 一种函数调用 ? D. 一个不合法的表达式 答案B 解析C语言程序设计/数据类型与运算/实型变量存储 6.

C语言程序设计教程课后习题答案

第1章 1-3 CAB 4 .c .obj .exe 5 /* */ 6 ; 7 算法 8 ①中级语言:C语言具有高级语言的先进思想又能直接对存储器进行操作,能进行位运算,能实现汇编语言的大部分功能,生成目标代码质量高,程序执行效率高。 ②结构化语言:C语言用函数作为程序模块,以实现程序的模块化,语言简洁、紧凑,具有结构化的特点。 ③可移植性好:C语言不包含依赖硬件的输入输出机制,使C语言本身不依赖于硬件系统,可移植性好。 9 #include main( ) { ; } 10 #include “stdio.h” main() { printf(“This is my first C Program!”); } 第2章 1.yes 2.-3 3.2,1 4.1)a!=b||a<=c 2)x>=4||x<=-4 5.x>20&&x<30||x<-100 6.#include main() { int x; printf(“please input an integar:”); scanf("%d",&x); if(x%5==0&&x%7==0) printf("yes\n"); else printf("no\n"); } 7. #include main() { int year,month; printf("please input the year and month:"); scanf("%d%d",&year,&month);

switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:printf("this month have 31 days."); break; case 4: case 6: case 9: case 11:printf("this month have 30 days."); break; case 2:if(year%4==0&&year%100!=0||year%400==0) { printf("this month have 29 days."); break; } else { printf("this month have 28 days."); break; } } } 8. #include main() { float money; int year; printf("\nplease input the money and the year:"); scanf("%f%d",&money,&year); if(year==1) money+=money*0.00315*12*year; if(year==2) money+=money*0.00330*12*year; if(year==3||year==4) money+=money*0.00345*12*year; if(year>=5&&year<=7) money+=money*0.00375*12*year; if(year>=8) money+=money*0.00420*12*year; printf("the money is:%f",money); } 第3章

《C语言程序设计》课程设计

《C语言程序设计》课程设计 刘力斌 一、意义和目的 C语言是光信息科学与技术专业的重要专业基础课。在很多后续课程中,都要使用到C语言。 学生通过对C语言的学习,已经具备了使用C语言编写简单的应用程序的能力。为了加强程序设计基础,开设课程设计课,使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。 课程设计目的: 提高用程序设计解决实际问题的能力。 通过提出算法、指定输入输出来设计一个解决方案。 用C语言合理地开发两个简洁有效的程序代码来实现该设计。 测试程序是否工作且满足设计指标并评价其效率。 二、目标 完成本课程设计的学生应能在以下几方面证明你们的能力: A、分析问题。各种简单的与计算机有关的案例中所需要的输出结果,把大问题分解成小问题,使用自顶向下或类似设计方法给出模块化或计划。 B、提出算法执行特定任务。模块表示为算法,使用自顶向下或伪代码等设计手段将模块细化成更详细的成分,清楚地表明顺序、选择和重复等到控制结构。 C、把一个算法变为用C语言编写的结构化程序。 D、用合适的测试方法检查程序是否符合最初的要求,为不合适数据设计错误陷阱,并提供错误信息来帮助用户。 E、写出清晰的用户文档,确保用户或者通过遵循程序中的指示或者使用程序设计者编写的文档能成功地运行程序。 F、写出技术文档,对程序中主要标示符的含义或作用加以说明,并提供一个完整的程序流程图。 G、调试程序、测试数据过程成功。

三、要求 参加本课程设计的学生,应当认真完成本课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而,反映出理解和运用本课程知识的水平和能力。 完成课程设计应提交如下文档: ①程序的总体设计和算法分析。 ②技术文档 ③用户文档 ④源程序代码清单。 ⑤测试数据和测试过程记录。 ⑥遇到的问题及解决方法分析。 四、选题 每人一个题,具体题目可以参考附录。 第一题:链表操作题(包括建立、插入、删除、打印等)(参考教材); 第二题:文件操作,具体题目最好是自拟。 如果选题确实有困难的同学,可参考后面参考题目来完成本课程设计(成绩要影响)。 五、评价 评价是检测学生理解问题和解决问题能力的一个重要手段,教师将根据学生提交的一套文件中,严格检查以下各项任务完成情况: 1、课程设计文档是否齐全。 2、程序的用户文档 如果在程序执行期间有足够的指导信息显示在屏幕上显示,这些用户文档可以是很简要的,也许只限于解释如何装入并运行程序。 3、问题或任务的陈述(描述问题,而且问题是合理原始的、应当包括输 入、输出及其预期范围。)是否正确。 4、问题的解决方案采取由顶向下设计的形式,在适当的地方使用伪代 码,把整个解决方案划分成若干模块。 5、程序完成后的代码应当加以注解。最少应清楚指出每一个模块。 6、用于检查程序的测试数据,或者对一个控制程序给出测试的例程。测 试应考虑探索通过程序的几条路径,在合适的地方选择打印输出来。 7、程序的技术文档

C语言程序设计教程 清华大学出版社 陈明主编 第4章答案

第4章习题解答 一、选择题 1.在C语言中,函数返回值的类型最终取决于 A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型 解析:函数返回值类型最终取决于定义函数时所定义的函数类型。 答案:A 2.设函数Fun()的定义形式为: void Fun(char ch, float x){} 则以下对函数Fun()的调用语句中,正确的是。 A)Fun("abc", ; B)t = Fun('D', ; C)Fun('65', ; D)Fun(32, 32); 解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。只有选项D才是合法的函数调用形式。 答案:D 3.有以下程序: /* 文件路径名:ex4_1_3\ */ #include <> /* 标准输入/输出头文件*/ int f1(int x, int y) { return x > y x : y; } int f2(int x, int y) { return x > y y : x; } int main(void) /* 主函数main() */ { int a = 4, b = 3, c = 5, d = 2, e, f, g; /* 定义变量*/ e = f2(f1(a, b), f1(c, d)); f = f1(f2(a, b), f2(c, d));/* 调用函数*/ g = a + b + c + d - e - f; /* 算术运算*/ printf("%d,%d,%d\n", e, f, g); /* 输出e,f,g */ return 0; /* 返回值0, 返回操作系统*/ } 程序运行后的输出结果是。 A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7 解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数。因此有:e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4; f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3; g=a+b+c+d-e-f=4+3+5+2-4-3=7。 答案:A

《C语言程序设计》课程设计教学大纲

《C语言程序设计》课程设计大纲 课程中文名称:C语言程序设计课程设计 课程英文名称:C language programming curriculum design 课程编号:090010031 适用专业:计算机、网络、信管、软件学时数:2周学分数:2 课程类别:必修应开课学期:第三学期 执笔者:安葳鹏审核人:基础教学部 批准人:高岩定稿日期:2013年5月7日 一、课程的目的和意义 《C语言程序设计》课程设计是在学习《C语言程序设计》课程之后进行的一个实践教学环节,学生运用所学的知识,在教师指导下,独立进行。课程设计的目的和意义是: 1、进一步加深对所学基本理论知识的理解和掌握,完善理论和实践的衔接;进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解; 2、针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。 3、掌握C语言的编程技巧和上机调试程序的方法。 4、掌握程序设计的常用算法,培养学生运用所学知识分析问题,解决问题的能力。 二、课程设计基本要求 1.独立、按时、按质、按量完成本课程设计; 2.充分理解并掌握相关理论,熟悉程序设计的控制结构以及设计流程; 3.完成课程设计后,将设计任务书、设计说明书按要求装订成册。 三、设计内容及任务 原则上,学生从以下题目中任选一题进行课程设计。在课程设计指导老师的指导下,也可以选择其他题目,但要保证工作量,并满足课程设计的相关要求。

1、人机猜数游戏 由计算机“想”一个四位数,请人猜这个四位数是多少。人输入这个四位数后,计算机首先判断这四个数中有几个猜对了,并且在猜对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数为止。请编程实现该游戏,游戏结束时,显示人猜一个数用了几次。 提示:用库函数random()产生一个随机数。 2、编一程序,实现将输入的一个无符号整数转换为二进制、八进制和十六进制表示,分别存入字符数组中并输出。(提示:算法采用模拟人工法。) 说明:计算机模拟人工是编程中常用的方法,这种方法要求编程者首先分析在人工方式下解决问题的过程,从中找出步骤和规律,然后编写程序,按照人工解决问题的步骤和规律进行操作。 3、计算分数的精确值。使用数组精确计算M/N(0

《C语言程序设计》课程标准

《C语言程序设计》课程标准 课程编码: 03012208 课程模块:专业必修课 学时: 90 课程类型: B类(理论+实践) 适用专业:计算机网络专业 1. 概述 C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。 C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复 杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实 现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软 件的开发,也适合于应用软件的开发。 本课程旨在使学生掌握程序设计的基本方法及思维,形成程序设计基本思想,掌握程序 调试的基本方法,使学生初步具备程序设计能力,为学生进一步学习其他专业课程和今后从 事网络技术工作打下坚实的基础。 1.1课程的性质 《C语言程序设计》是一门专业必修课,是学习其它工科课程的基础。掌握程序设计的 前提是掌握程序设计语言,C语言以其灵活性和实用性受到了广大计算机应用人员的喜爱。 一旦掌握了C语言,就可以较为轻松地学习后续的Java程序设计、数据库技术等程序设计 语言。本课程以程序设计思想为主线,介绍C语言的基本概念和程序设计的思想和方法, 培养学生运用C语言解决实际问题的能力。 前导课程:计算机文化基础等。 后继课程:Java程序设计、数据库技术、信息安全技术、网络操作系统等。 1.2课程设计理念 通过对多家IT企业的走访,我们了解到自学能力、动手能力、团队协作能力是现代企 业对人才的共同要求。因而我们也把培养具有这些能力的学生作为我们的课程目标,把对这 些能力的培养融入到平常的授课过程中。对以计算机网络、汽车电子等专业为代表的学生, 主要注重项目分析,流程图设计以及编程技巧和方法的培养,为进一步培养软件项目综合开 发和应用能力作准备。 1、基于工作过程,以职业能力培养为重点,与行业企业合作进行的课程开发与设计。 在课程的讲授过程中,采用任务驱动的模式,以案例教学为主。在学生掌握了相应知识 点后,再提出新的问题,要求学生通过修改已有的代码加以解决。在修改代码的过程中,既 培养了学生的自学能力,又锻炼了学生的动手能力。 另外,我们把企业中的一些要求带到了教学过程中。例如代码必须加注释,标识名必须 用英文单词等。 2、课程设计充分体现了职业性、实践性和开放性的要求。

《C语言程序设计实践教程》答案-完整版

4.2练习题 一、选择题 1.D 2.B 3.A 4.B和D 5.C 6.A 7.B 二、填空题 1.//或/* */ 2.主或main 3.函数首部和函数体4.编译和连接 5.分号 5.2练习题 一、选择题 1.A 2.D 3.B 4.B 5.C 6.C 7.D 8.A 9.B 10.B 11.D 12.B 13.A或B 14.C 15.B

17.D 18.D 19.C 20.D 21.B 22.A 23.D 24.C 25.C 26.B 27.C 28.D 29.A 30.B 二、填空题 1.102,10 2.#define 宏名字符串 3.1 4.n=1 5.-4 6.a=1,b= ,c=2 7.c=A 8.n1=%d\nn2=%d 9.a+b>c&&a+c>b&&b+c>a 10.ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’11.7 12.0 13.11110000 14.8,4 6.2练习题 一、选择题 1.A 2.C 3.D 4.C 5.A

7.A 8.D 9.B 10.C 11.A 12.A 13.C 14.B 15.正确答案为:12345678 二、填空题 1.10 2.y=1 x%i==0 3.屏幕中间输出一个由星号组成的菱形4.1 5.13 6.(cx=getchar())!=-1 front=cx; 7.m%n 8.4 9.*p px=&x py=&y 三、读程序,写结果 1.-1 2.3,1,-1, 3.a=16,y=60 4.x=12,y=4 5.59 7.2练习题 一、选择题 1.B 2.C 3.C 4.A 5.D

新编C语言程序设计教程(机械工业出版社-钱雪忠-吕莹楠)

新编C语言程序设计教程 习题及实验题部分答案 第1章 C 语言概述 1 习题 一、选择题 ADCDB CCBBA 二、简答题 1、什么是语言?语言分几类?各有什么特点? 语言: 语言是思维的载体。人和计算机打交道,必须要解决一个“语言”沟通的问题。如今人与计算机之间有许多种类的“语言”的。 语言分类: 机器二进制语言、汇编语言(低级)和高级语言(第三代、第四代、……) 各自特点: 1)机器二进制语言:用0、1两个数字编写的计算机能直接运行的程序的语言,机器语言执行效率高,但难编写、难懂、难移植。 2)汇编语言(低级):汇编语言的特点是使用一些“助记符号”来替代那些难懂难记的二进制代码,所以汇编语言相对于机器指令便于理解和记忆,但它和机器语言的指令基本上是一一对应,两者都是针对特定的计算机硬件系统的,可移植性差,因此称它们都是“面向机器的低级语言”。 3)高级语言:高级语言类似自然语言(主要是英语),由专门的符号根据词汇规则构成单词,由单词根据句法规则构成语句,每种语句有确切的语义并能由计算机解释。高级语言包含许多英语单词,有“自然化”的特点;高级语言书写计算式子接近于熟知的数学公式的规则。高级语言与机器指令完全分离,具有通用性,一条高级语言语句常常相当于几条或几十条机器指令。 2、汇编语言与高级语言有何区别? 高级语言程序要比汇编语言要易懂、明了、简短得多;高级语言与机器指令完全分离,具有通用性,一条高级语言语句常常相当于几条或几十条机汇编语言指令;高级语言要经过解释或编译来执行的,而汇编语言程序通过汇编程序来生成机器程序来执行的。 3、什么是程序? 完成某一特定任务的一组指令序列,或者说,为实现某一算法的指令序列称为“程序”。不同计算机语言有不同的计算机程序。 4、C语言中为何要加注释语句? 注释部分,起到说明语句或程序的作用。程序中应添加必要的注释,来增强程序的阅读与理解。注释用来向用户提示或解释程序的意义。

C语言程序设计课程教学大纲

C语言程序设计课程教学大纲 第一部分大纲说明 1. 课程性质、任务与目的 《C语言程序设计》是中央电大计算机科学与技术专业(专科起点本科)的一门专业基础课。主要任务是介绍C语言中的数据类型、数据表示、运算规则、语句定义、函数调用、程序结构、文件使用、编程方法等内容。目的是使学生能够利用一种计算机程序设计语言编写出解决较简单的数值计算和数据处理问题的程序,为学习后续课程奠定程序设计和算法设计的基础。 2. 与其他课程的关系 学习《C语言程序设计》课程需要了解计算机基本组成,并具有对计算机进行基本操作的技能。本课程的后续课程为《数据结构》、《操作系统》、《数据库》等。 3. 课程教学特点 《C语言程序设计》是一门知识性和实践性都很强的课程,必须在学习中掌握C语言的语法规则,并在上机实践中体会和加深理解,通过实际的上机操作训练,还能够学习到书本上学不到的知识和技能,提高自己进行程序设计和开发的实际能力。 4. 教学主要内容 (1) 介绍C语言上机操作环境、程序基本结构,系统函数的使用; (2) 介绍常用输入输出函数的作用; (3) 介绍C语言基本数据类型、常量、变量、运算符、数学函数、表达式等的表示与含义; (4) 介绍各种分支语句、循环语句的流程控制功能及相应的程序设计方法; (5) 介绍一维数组和二维数组的定义与作用,字符串数组的特殊存储格式与作用; (6) 介绍指针的定义和运算,变量存储空间的动态分配,数组名的指针含义;

(7) 介绍用户函数的定义与调用,值参数和指针参数的使用,变量的作用域,递归函数; (8) 介绍结构和联合类型的定义与应用,结构链表的建立和使用; (9) 介绍文件的概念,文件的打开和关闭,字符文件和字节文件的处理操作。 (10) 介绍利用C语言编写解决实际问题的程序设计思路和方法。 5. 教学基本要求 本课程教学内容包括了解、理解和应用三个层次,并且逐步递进,具体含义如下: (1) 了解层次:记忆C语言中的基本概念和语法规则; (2) 理解层次:掌握C语言中的每个语法成分和语句的定义格式、含义及作用; (3) 应用层次:利用C语言,结合实际解决问题的需要,能够分析和编写程序。 第二部分媒体使用和教学过程建议 1.课程学分和学时 本课程为4学分、72学时、第一学期开设。电视、实验和面授辅导学时各为20、27和25学时。课程中各章内容及学时分配如下表所示。 序号内容电视学时实验学时面授学时 一C语言概述 2 2 2 二数据类型与表达式 3 2 3 三流程控制语句 3 4 3 四数组和字符串 2 4 3 五指针 2 4 3 六函数 3 4 4 七结构与联合 3 4 3 八文件 2 3 4

C语言程序设计课程设计大全

C语言课程设计 一、课程设计目的 ◆进一步巩固和复习C 程序设计的基础知识。 ◆培养学生结构化程序、模块化程序设计的方法和能力。 ◆提高学生调试程序的技巧和软件设计的能力。 ◆提高学生分析问题、解决问题以及综合利用C 语言进行程序设计的能力。◆了解软件的编制过程。 ◆树立团队合作精神 二、课程设计内容 设计要求 可自己选定一信息管理方面的题目,最多5人一组。 题目一:职工信息管理系统设计 https://www.wendangku.net/doc/0a5221501.html,/view/76e2ddceda38376baf1fae81.html 职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能: 系统以菜单方式工作 职工信息录入功能(职工信息用文件保存)--输入 职工信息浏览功能--输出 查询和排序功能:(至少一种查询方式)--算法 按工资查询 按学历查询等 职工信息删除、修改功能(任选项) 题目二:图书信息管理系统设计 https://www.wendangku.net/doc/0a5221501.html,/view/6751448ad0d233d4b14e69c2.html 图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能: 系统以菜单方式工作 图书信息录入功能(图书信息用文件保存)--输入 图书信息浏览功能--输出 查询和排序功能:(至少一种查询方式)--算法 按书名查询 按作者名查询 图书信息的删除与修改(可选项) 题目三:学生信息管理系统设计 https://www.wendangku.net/doc/0a5221501.html,/view/1423e5e8e009581b6bd9eb62.html 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: 系统以菜单方式工作 学生信息录入功能(学生信息用文件保存)---输入

C语言程序设计课程总结

本课程总结 姚琳主编(第二版) 第一章C语言程序设计概述 目的:初步了解C语言程序,学会使用C语言环境编辑运行C程序。 要求:掌握程序设计语言、程序、算法的概念,了解算法的特点,熟悉算法的设计步骤,掌握用流程图表达算法的方法。了解C语言程序的结构特点,掌握在Turbo C集成环境下编辑、运行简单C语言程序的方法。 教学重点:C语言程序的结构特点;在VC集成环境下运行C程序 教学难点:算法设计和算法描述。 一.算法: 算法:就是解决问题的方法。 计算机算法可分为两类别: 数值运算算法 —求数值解,用在科学计算。 非数值运算算法 —求非数值解,用在事物处理。 数值运算算法 例如:已知三角形的底a等8,高h等14,求三角形的面积s。 则 数值运算算法为: 1、a=8 a的值等于8 2、h=14 h的值等于14 3、s=a*h/2 计算面积S

非数值运算算法 例如从湛江乘火车去北京开会,其算法为: 1、买火车票 2、按时到车站 3、登上火车 4、到北京站后乘电车到会场 5、参加会议 二.C语言的特点: 1·C语言简洁、紧凑,使用方便、灵活。 5·语法限制不太严格,程序设计自由度大。 6·C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。 3·数据结构类型丰富。 4·具有结构化的控制语句。 7·生成目标代码质量高,程序执行效率高。 8·与汇编语言相比,用C语言写的程序可移植性好。 2·运算符丰富。共有34种。C把括号、赋值、逗号等都作为运算符处理。 三.C语言的基本结构 (1)函数是组成C程序的基本单位,一个C的源程序有且只有一个main函数,但可以有若干个其它的函数。 (2)一个函数由两个部分组成: 函数的首部:函数的第一行,包括函数名、函数类型、函数参数(形参)名、参数类型等。 函数体:由声明和执行两部分组成。 (3)一个C程序总是从main函数开始执行的,不管main函数在整个程序中的位置如何。 (4)C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多

相关文档
相关文档 最新文档