C语言复习资料(2013.6)

C语言复习资料(2013.6)
C语言复习资料(2013.6)

一、选择题

(1)概述

1.C程序由函数构成,函数则由函数的首体和()两部分组成。

A) 复合语句B)结构体

C)联合体D)函数体

2.下列叙述正确的是()。

A)函数体的定界符只能用一对花括号“{}”

B)C源程序都是从main( )函数开始执行,所以main( )函数必须位于程序文件最前面

C)C源程序中每一行就是一条语句

D)注释部分只能单独占用一行,不能跟在一行语句的后面

3通常将程序设计语言划分为()。

A)自然语言、流程图和伪代码

B)机器语言、汇编语言和高级语言

C)汇编语言、高级语言和低级语言

D)高级语言、自然语言和伪代码

4.main( )函数的位置()。

A)必须位于程序文件的最前面

B)必须位于C库函数的后面

C)必须位于用户自定义函数的前面

D)可位于用户自定义函数之前,也可位于用户自定义函数之后

5. 下列叙述正确的是()。

A)分号是C语句之间的分隔符,并不表示一条语句的结束。

B)注释部分在C源程序可独占一行,也可跟在一行语句的后面

C)花括号“{}”只能用作复合语句的定界符D)函数是C源程序的基本单位,所有函数名都可以由用户命名

(2)基本计算

6下列不合法的字符常量是()

A)?b? B)?\n? C)?\t? D)”b”

7.下列合法的长整型常量是()。

A)Long32768

B)32768L

C)32768+Long D)328Long

8. 下列不合法的用户标示符是()。

A)pro B)_count C)?a D_6b

9. 下列合法的常量是()。

A)?\n? B)?3a? C)E13 D)?a?+3

10. 下列不属于C语言数据类型的是()。

A)长复数类型B)整型

C)单精度型D)枚举类型11. 若已定义:int a=2; 则()是正确

的赋值表达式。

A) a*3=4 B)a+3=a

C) a-=(a*3) D) a=double(a/3)

12. 若已定义:int a=2; double x=5.5; 下列不正确的表达式是()。

A)(int)x%a B)(int)x/a

C) (int)(x%a) D)(int)(x/a)

13. 若已定义:int i=3,a; 语句a=(i--)+(i--); 执行后a的值是()。

A)4 B)7 C)5 D)6

14.若已定义:int a=5, b=7, x; 语句x=(++a)+(++b);执行后x,a的值分别是()。

A)12,6 B)14,6

C)12,5 D)14,5

15.若已定义:int x=2, y=4; 则表达式(double) x/(y+1)的值是()。

A)0.5 B) 0 C)0.4 D)1

16.若已定义:int x=2, y=3; 下列表达式值为1的是()。

A) x&&(!y) B) (!x)&&y

C) x==(y!=x) D)x||!y

17. 若已定义:int a=7; float x=2.5, y=5; 则表达式x+(a/3*(int)(x+y))%4的值是

( )。

A)3.5 B)5.5 C)2.5 D)4.5

18. 逗号表达式a=12, b=8, a+b 的值是( )。 A)4 B)8 C)12 D)20

19. 若已定义: int a=1, b=2, c=3; 则表达式!(a+b)+c-1的值是( )。 A)5 B)6 C)2 D)3

20. 若已定义: int a=5; float x=5.3; 则表达式a%3/2+x 的值为( )。

A)6 B)5.3 C) 0 D)6.3

21. 若已定义: int a=4, b=3, c=2; 下列表达式为0 的是( )。

A)b+c

C)(b-a)&&(b-c) D) c%b&&b/a

22.若已定义: int a=1, b=2, x=3, y=4; 则表达式 a>b? a:x

23.若已定义: int a=2; 语句a*=a-=a+=3;执行后,a 的值是( )。

A)0 B)9 C)3 D)5

24. 若已定义: float x,y, z; 则表达式( )与右侧所示代数式计算结果不相符。

)

1(3z y

x ++

A)1/3*(x+y)/(1+z) B)(x+y)/(3*(1+z)) C)(x+y)/3/(1+z) D)(x+y)/(1+z)/3

25. C 语言要求运算对象必须是整型的算术运算符是( )。

A)% B)+ C)/ D)-

26. 若已定义: int x; char c; 则表达式c+10*x 的结果类型是( )。

A)double B)int C)char D)float

27. 逻辑表达式( )能正确判断变量a 和b 的值同时为正或同时为负。 A) (a+b>0)&&(a*b<0) B) (a>0||b>0)&&(a<0||b<0) C) (a>0&&b>0)||(a<0&&b<0) D) (a>0&&b>0)&&(a<0&&b<0)

28. 若已定义:char ca; 判断变量ca 值为大写字母的逻辑表达式是( )。 A) …A?<=ca<=?Z? B) (ca>=?A?)&&(ca<=?Z?) C)(…A?>=ca)&&(…Z?<=ca) D)(ca>=A)&&(ca<=Z)

29. 若已定义:char c; 则( )是正确的赋值表达式。

A) c=”e”+10.78 B) c=”101”+10.78 C) c=101 D) c=?101?

30. 下列四个运算符,按优先级别由高到低排列的是( )。

A) !、*、+、= B )*、!、+、= C )!、=、*、+ D )!、*、=、+

31.若已定义:char ca; 要从键盘输入字符?B?给变量ca, 应使用的语句是( )。 A)putchar(ca) B)scanf(“%c”, ca); C)getchar(ca); D)ca=getchar( );

32. 以下程序运行后,要使运行结果为: 3 6, 正确的数据输入形式是( )。 void main( ) {int a, b;

scanf(“%d, %d”, &a, &b); printf(“%d %d \n”, a,b); }

A)36 B)a=3, b=6 C)3,6 D)6,3

33. 要使下列程序的运行结果为123,123,12 则( )是正确的数据输入方式。 void main( ) { int a, b, c;

scanf(“%d -%d-%d”, &a, &b, &c); printf(“%d, %d,%d \n”, a,b,c);

}

A)123,12312 B)123, 123,12 C)123-123-12 D)12312312

34.若已定义: int x=3, y=2; 语句( )可以实现输出结果为:3*2=6.

A) printf(“x*y=%d”, x*y); B) printf(“%d*%d=x*y”, x, y); C) printf(“%d*%d=%d”, x, y, x*y); D) printf(“x,y= x*y”);

35. 若已定义:int x, y; 则( )表达式无法正确表示数学关系式3>-y x

A)(x-y)<-3&&(x-y)>3 B)abs(x-y)>3

C)(x-y)>3||(x-y)<-3 D)(x-y)*(x-y)>9

(3)选择、循环结构

36. 若已定义 int k, a, b, c; 则语句( )与k=a>b?(b>c?1:0):0 语句的功能等价。 A) if(a<=b)

k=0;

else if(b<=c) k=1; else k=0; B) if(a>b)

k=1;

else if(b>c) k=1;

C) if(a>b&&b>c)

k=1; else k=0;

D) if(a>b||b>c)

k=1;

37. 下列( )不能构成一条if 语句。 A) if(x>0) a=1; else a=2; B) if(x>0) ;

C) if(x==0) a=1:b=2; D) if(x==0) ; else a=2;

38. 以下程序的运行结果是( )。 void main( ) { int k=1;

switch(++k) { default :

printf(“%d”, k); case 1:

printf(“%d”, k); break; case 2:

printf(“%d”, 2*k); case 3:

printf(“%d”, 3*k); break; } }

A)4 B)11 C)1 D)46

39. 以下程序的运行结果是( )。 int fun(int k) { switch(k)

{ case 2: k++;

case 3:

case 4: k++; default: k++; }

return k; }

void main( )

{ printf(“%d \n”, fun(2)); }

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

40. 下列程序的运行结果是( )。 void main( ) { int a=23; switch(a%3) { default :

printf (”DD ”); case 1:

printf(“AA ”); break ; case 2:

printf(“BB ”);

case 3:

printf(“CC”):

}

}

A)BBCC B)DDAA

C)CC D)AA

41. 以下程序的运行结果的是()。

void main( )

for(i=7; i>3; i--, i--)

printf(“A”);

}

A)AAA B)A C)AAAA D)AA

42. 下列程序段运行后count 的值为()。

int i=8, count=0;

while(i>=2)

{ ++count;

i-=2;

}

A)4 B)10 C)6 D)8

43. 设有下列程序段

int i=6;

while(i<=6)

i++;

下列叙述正确的是()。

A)循环体语句一次也不执行

B)循环体语句执行2次

C)循环体语句执行3次

D)循环体语句执行1次

44. continue 语句在循环语句中的作用是()。

A)结束本次循环并跳出循环体

B)终止程序运行

C)继续执行continue语句后循环体各语句

D)终止本次循环并执行下一次循环

45.以下程序段运行后a 的值为()。

int i=1, a=0;

while(i++<=6)

{ a+=1;

if(i%2!=0)

break;

a+=2;

}

A)3 B)6 C)4 D)1

(4)数组

46. 若已定义:int a[8]; 对数组a 元素引用正确的是( )。

A) a[5] B)a[-1] C)a(6) D)a[8]

47. 下列程序段的运行结果是()。

int a[10]={0,1,2,3,4,5,6,7,8,9},i=0, t; while(i<=4)

{ t=a[i];

a[i]=a[9-i];

a[9-i]=t;

i++;

}

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

printf(”%d”, a[i]);

A)9876543210 B)2468013579

C)0123456789 D)1357924680

48.以下程序的运行结果是()。

void main( )

{ int a[5]={1}, i;

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

a[i+1]=a[i]+2*(i+1);

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

printf(“%d ”, a[i]);

}

A)1 2 6 15 23

B)1 3 7 13 21

C)1 2 3 4 5

D)1 3 5 7 9

49.下列程序段的运行结果是()。

int a[5]={2,4,3,5,6}, i, s=0;

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

s+=a[i-1];

printf(“%d\n”, s);

A)12 B)14 C)20 D)9

50.对int x[5]={5,3,1}; 语句的功能描述正确的是()。

A)将3个初值依次赋给x[1]至x[3], 且其

他元素值均为0

B)将3个初值依次赋给x[0]至x[2], 且其他元素

值均为0

C)将3个初值依次赋给x[2]至x[4], 且其他元素

值均为0

D)将3个初值依次赋给x[3]至x[5], 且其他元素

值均为0

51. 若已定义:int arr[ ][3]={1,2,3,4,5,6}; 则数组a第一维长度是()。

A)2 B)1 C)6 D)3

52. 能正确初始化二维数组arr的是()。

A)int arr[ ][ ]={{1,2},{3,4,5}};

B)int arr[2][3]={{1,2},{3,4,5}};

C)int arr[2][ ]={1,2,3,4,5};

D)int arr[2][3]={{1,2},{3,4},{5}};

53. C语言中,二维数组元素的存放顺序是()。

A)既可以按行优先,也可以按列优先

B)由用户自己定义

C)按行优先

D)按列优先

54.若已定义:int a[ ][4]={{0}, {1,2},{3,4,5}, {6,7,8,9}}, 则a[2][2]的值为()。

A)9 B)2 C)4 D)5

55.以下程序的运行结果是()。

void main( )

{ int a[3][3]={0}, i, j;

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

a[i][0]=i+1;

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

{ for(j=0;j<3; j++)

printf(“%d “, a[i][j]);

printf(“\n”);

}

}

A) 1 0 0 B)1 2 3

0 2 0 0 0 0

0 0 3 0 0 0

C) 0 0 1 D) 1 0 0

0 2 0 2 0 0

3 0 0 3 0 0 56.下列正确描述字符数组的是()。

A)字符数组只能存放字符串,不能存放单个字符

B)字符串中可以含有…\0?字符

C)C语言没有字符串类型变量,可用字符数组实现字符串操作

D)只能利用赋值语句实现字符数组的整体赋值

57.以下程序段的运行结果是()。char str1[ ]={…Y?,?o?,?u?,?\0?,?a?,?r?,?e?,?\0?,?w?,?e?,?l?};

char

str2[ ]={…w?,?e?,?l?,?c?,?o?,?m?,?e?,?\0?,}; puts(strcat(str1,str2));

A)Youarewelwelcome

B)Youwelcome

C)You are welcome

D)You welcome

58.若已定义char s3[20], s1[10]=”How are”, s2[10]=”you”; 执行语句strcpy(s3, strcat(s1,s2)); s3的值是()。

A)youHow are B) How are

C)How are you D) s1 s2

59.若已定义chat s1[20], s2[20]; 能正确从键盘读入字符串的是()

A)getch(s1,s2); B)scanf(“%s%s”, s1, s2);

C)scanf(“%c%c”, s1[20], s2[20]);

D)gets(s1[20],s2[20]);

60.以下程序段的运行结果是()。char s1[7]=”abcdef”, s2[4]=”12”;

strcpy(s1, s2);

printf(“%s %c”, s1, s1[5]);

A) abcdef12 B)12 f

C)12 e D)12 ef f

(5)函数

61. 若已定义:double x; 函数()可用于求x的绝对值。

A) sqrt(x) B) abs(x)

C) fabs(x) D)log(x)

62.以下程序段中函数调用语句fun((a,b), m); 的实参值是()。

int a=1,b=2, m=3;

fun((a,b),m);

A)3,3 B)(1,2), 3 C)2,3 D)1,3

63.下列叙述正确的是()。

A)函数的形参在被调用前是没有确定值的

B)函数的形参和对应的实参个数应相等,类型

可以不兼容

C)形参是变量名时,实参也只能是变量名,不

可以是表达式

D)函数至少要有一个返回值

64.函数调用中,若实参为数组名,则传递给对应形参的是()。

A)数组中每个元素的值

B)数组首元素的值

C)数组的首地址

D)数组的长度

65.下列程序的运行结果是()。

#include

int fun(int x, int y)

{ int z;

z=x>y?x:y;

return(x+z);

}

main( )

{ int a=6, b=3;

printf(“%d\n”, fun(a, b));

}

A)12 B)9 C)7 D)4

66.下列叙述错误的是()。

A)预处理命令”#define N 3”后不能加“;”

B)宏定义也是C语言的语句,可出现在源程序中任意位置

C) C源程序加入一些预处理命令是为了改进程序设计环境,提高编程效率

D)预处理命令都必须以#开头67下列程序的运行结果是( ).

#define K 3

void main( )

{ int a=2, b=4;

printf(“%d\n”, a*(K+b));

}

A)11 B)6 C)14 D)10

68.以下程序的运行结果是()。

#define M 3

#define N M+5

void main( )

{ printf(“%d\n”, N*2);

}

A)11 B)13 C)16 D)6

69. 下列程序的运行结果是()

#define M 5

#define N M+1

#define NN N*M

void main( )

{ printf(“%d\n”, 2*NN);

}

A)20 B)60 C)52 D)15

70.下列程序中定义的一维数组a的长度是()。

#define M 3+1

void main( )

{ int a[2*M];

……

}

A)6 B)7 C)10 D)8

(6)指针

71.若已定义:int a[5]={1,2,3,4,5}; 执行*p=a; 后能表示a[1]地址的是()。

A)a++ B)p[1] C)p++ D)a[1]

72.若已定义:int a[5]={1,2,3,4,5}, *p=&a[2]; 则不能表示a[0]地址的是()。

A)a B)&a[0] C)p-2 D)*p-2

73.若已定义:int a[5]={1,2,3,4,5}; int *p=&a[2]; 则下列值为3的是()。

A)*p B)p-a[0] C)a[3] D)p-a

74.若已定义:int a[5]={1,2,3,4,5}, *pa=a; 下列叙述正确的是()。

A)pa[0]与a[0]的值相等

B)pa与a[0]的值相等

C)pa+2与a[2]的值相同

D) a++与pa++的作用相同

75. 若已定义:int a[6]={1,2,3,4,5,6},*p; 下列赋值语句不合理的是()。

A) p=a; B) p=&a[0]+1

C)p=&a[0]; D)p=a[0]

76.若已定义:int a=2, *p=&a, b=5, *q=&b; 下列运算无意义的是()。

A)q+p B)*q+*p

C)q-p D)*q-*p

77.若已定义:int a=2, *p1=&a;float b=5, *p2=&b; 下列正确的赋值语句是()。

A)p1=*(a+1); B)p2=b;

C)*p2=*a; D)b=*p1+*p2;

78. 以下程序的运行结果是()。

void main( )

{ int a=3, b=4, c;

int *p1, *p2;

p1=&a;

p2=&b;

p2=p1;

c=*p1+2*(*p2);

printf(“%d\n”, c);

}

A)7 B)11 C)15 D)9

79. 下列程序的运行结果是()。

void main( )

{ int a=1, b=2;

int *pa=&a, *pb=&b;

*pa=*pb;

*pb=*pa;

printf(“%d,%d\n”, a,b); }

A)2,2 B)1,1

C)2,1 D)1,2

80. 下列程序的运行结果是()。void fn(int *p, int n)

{ int j;

for(j=0; j

*(p+j)+=1;

}

void main( )

{ int a[3]={1,2,3};

int i;

fn(a,3);

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

printf(“%d”, *(a+i));

}

A)3 3 4 B)3 4 5

C)1 2 3 D)2 3 4

81. 以下程序的运行结果是()。void fn(int x, int y, int *p)

{ *p=x+y;

}

void main( )

{ int a, b;

fn(1,2, &a);

fn(3, a, &b);

printf(“a=%d, b=%d\n”,a,b);

}

A)a=3, b=6; B)a=1, b=3

C) a=6, b=6 D)a=3, b=3;

82. 以下程序段的输出结果是()。int a[2][2]={1,2,3,4},(*p)[2];

p=a;

printf(“%d\n”, (*p)[2]);

A)2 B)3 C)4 D)1

83. 以下程序的运行结果是()。void main( )

{ int a[2][3]={{1,2,3}, {4,5,6}};

int i, *p;

p=a;

for(p=a; p

printf(“%d ”, *p);

printf(“\n”);

}

A)1 2 3 4 5

B)1 2 3

C)1 2 3 4 5 6

D)1 4 2 5 3

(7)结构体、共用体、其它

84. 若已定义:

struct student

{ int num;

char *name;

float score;

} stu, *p=&stu;

不合法引用结构变量stu中成员的是()。

A)https://www.360docs.net/doc/119810719.html, B)stu.num

C)p->num D)p.score

85. 错误定义与初始化结构类型变量stu1的是()。

A)struct student

{ int num;

float score;

};

struct student stu1={1001,85.0};

B)struct student

{ int num;

float score;

}stu1={1001, 85.0};

C)struct student

{ int num;

float score;

} ;

student stu1={1001,85.0};

D)struct

{ int num;

float score;

} stu1={1001,85.0};

86. 若有以下对结构类型和结构变量的定义:struct date

{ int year;

int month;

int day; };

struct student

{ char name[20];

struct date birthday;

} stu;

下列能对结构变量stu的birthday成员正确赋值的是()

A) date.day=20 B)birthday.day=20

C) stu.birthday.day=20 D)stu.day=20

87. 若已定义:

struct student

{ int num;

char name[20];

}stu[2]={{20,”Yan wei”},{19, “Ma tao”}}; struct student *p=stu;

无法正确引用“Ma tao”的是()。

A)(*(p+1)).name B) (p+1)->name

C) stu[1].name D)https://www.360docs.net/doc/119810719.html,

88. 若已定义:

struct student

{ int num;

char name[20];

} stu1, stu2;

下列错误的语句是()。

A)strcpy(https://www.360docs.net/doc/119810719.html,, https://www.360docs.net/doc/119810719.html,);

B)stu1=stu2;

C)stu1.num=stu2.num;

D)https://www.360docs.net/doc/119810719.html,=https://www.360docs.net/doc/119810719.html,;

89. 若已定义

struct student

{

int num;

float score;

} stu[2]={{101,85.5},{102,90.0}},*p=stu; 下列对结构体数组引用正确的是()。

A)p[1]->num B)stu.num

C)stu[2].num D)p->num

90. 下列程序的运行结果是()。union data

{

char c;

int k;

} data1;

void main( )

{

data1.k=66;

data1.c=?A?;

printf(“%c\n”, data1,k);

}

A)B B)66 C)A D)65

91. 下列对枚举类型的定义正确的是()。

A)enum a={a,b,c};

B)enum a={…a?,?b?,?c?};

C) enum a{“a”,”b”,”c”};

D)enum a{a=-2, b=1, c=3};

92. 下列错误的枚举类型定义是()。

A)enum a{x=2, y=1,z};

B)enum a{a=3, b, c=0};

C)enum a{x=-1, y};

D)enum a{a, 2 , b};

93. .若已定义:

typedef enum week{mon, tue, wed, thu, fri, sat, sun}week_day; 则下列语句错误的是()。

A)enum week_day day;

B)week day;

C)enum week day;

D)week_day day;

94. 若已定义:enum week{mon, tue, wed=5, thu}week_day; 则枚举常量tue和thu的值分别是()。。

A)1和3 B)1和6

C)2和6 D)2和4

95. 下列语句正确的是()。

A) typedef INTEGER int;

B) typedef int INTEGER;

C) typedef INTEGER=int;

D) typedef int= INTEGER;

(8)文件

96. 若已定义:char ch; FILE *fp; 要从fp所指向文件中读入一个字符,正确的语句是()。

A)ch=fgets(fp) B)ch=getc( );

C)ch=getchar( ); D)ch=fgetc(fp);

97. 若已定义:FILP *fp; 则不能向fp所指向的文件写入字符串”hello”的语句是()。

A)fwrite(“hello”, 5, fp);

B)fwrite(“HELLO”, 1, 5, fp);

C) fputs(“”hello”, fp);

D)fprintf(fp,”%s”,”hello”);

98. 若已定义:FILE *fp; 要打开d盘temp 文件夹下的file1.txt文件,打开方式是既能读也能写,正确的语句是()。

A)fp=fopen(“d:\\temp\\file1.txt”,”rw”);

B)fp=fopen(“d:\\temp\\file1.txt”,”w+”);

C)fp=fopen(“d:\\temp\\file1.txt”,”r+”);

D)fp=fopen(“d:\\temp\\file1.txt”,”wr”);

99. 执行以下程序后,文件flie1.dat内容是()。

#include

void main( )

{ FILE *fp; int i=1, j=2;

fp=fopen(“file1.dat”,”w”);

fprintf(fp, “%d”, i);

fclose(fp);

fp=fopen(“file1.dat”,”w”);

fprintf(fp, “%d”, j);

fclose(fp);

}

A)1 2 B)2 C)12 D)1 100. 以下程序运行后,文件的file1.txt

内容是()。

#include

int main( )

{ FILE *fp;

fp=fopen(“file1.txt”,”w+”);

if(fp==NULL)

return 0;

else

{fputs(“one”, fp);

rewind(fp);

fputs(“two”, fp);

fclose(fp);

return 1;

}

}

A)onetwo B)two

C)one D)0

二、改错题

1)修改程序cmody491.c, 计算满足以下条件的整数n的最大值。

1000

)1

(

5

4

4

3

3

2

2

1<

?

-

+

+

?

+

?

+

?

+

?n

n

#include

#include

void main()

{

int n=1, sum=0;

/**/ if(sum<1000) /**/

{

sum+=n*(n+1);

n++;

}

printf("n=%d\n",/**/ n /**/);

getch();

}

2)修改程序cmody492.c,实现从键盘输入一串字符和整数n,若n小于字符串长度则从字符串右侧开始截取n个字符,否则显示无法运行。例如:输入的字符串为”Professor”,n=3,则截取的子串为”sor”。

#include

#include

#include

void main()

{

char str[100],sub[100];

int n,len,i;

printf("Enter string:");

gets(str);

printf("\nEnter n:");

scanf("%d",&n);

len=strlen(str);

if( n>len )

printf("Can't run with %d !\n",n);

else

{ /**/ i=1; /**/

while(i

{

/**/ sub[i]=str[n+i]; /**/

i++;

}

/**/ sub[i]='\n'; /**/

printf("\nsub string is:%s\n",sub);

}

getch();

}

3)修改程序cmody501.c,输出总分最高学生的姓名和总分(8位学生的姓名和两科成绩已存储在结构体数组中)。

#include

#include

struct student

{ char name[10];

float score[2];

};

void main()

{

/**/ student stu[8] /**/={{"Mary",76,85}, {"John",85,90},{"Tom",81,78},{"Susa",87, 67},{"Wilu",79,98},{"Yili",65,63},{"Sonm u",73,82},{"Lichar",70,71}};

int i=0,p;

float total, max=0;

while(i<8)

{ total=/**/ stu[i].score[1]+stu[i].score[2]; /**/

if(total>max)

{ max=total;

p=i;

}

i++;

}

printf("\n Best is %s, ",stu[p].name); printf("Total=%.1f \n", /**/ total /**/); getch();

}

4)修改程序cmody502.c,使函数find(int a[ ]) 计算数组a各元素的平均值,以及每个元素与该平均值的差,并返回差的绝对值的最大值。

#include

#include

#include

#define N 10

double find(int a[])

{ int i;

double max,/**/ aver=1 /**/;

for(i=0;i

aver+=a[i] ;

/**/ aver=N /**/;

max=fabs(a[0]-aver);

for(i=1; i

if(fabs(a[i]-aver)>max)

max= fabs(a[i]-aver) ;

return(/**/ aver /**/);

}

void main()

{ int arr[N]={11,23,15,27,9,20,18,16,24,22}; printf("Result is %lf.\n",find(arr));

getch();

}

5)修改程序cmody511.c,实现从键盘输入10个100以内互不相同的正整数,输出其中第二大的数

#include

#include

void main()

{

int i,/**/ max1=max2=0 /**/;

int s[10];

printf("Please input 10 numbers:\n");

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

{ scanf("%d",&s[i] );

if(s[i]>max1)

{ /**/max2=s[i];/**/

max1=s[i];

}

else if(s[i]>max2)

{ max2=s[i];

}

}

printf("\n%d\n",/**/ s[i] /**/);

getch();

}

6)修改程序cmody512.c,实现将升序排列数组a与b的元素按升序存入数组c中。#include

#include

void main()

{ int a[5]={3,7,8,15,18};

int b[6]={-3,0,5,9,19,36};

int c[11];

/**/ int i,j; /**/

i=j=k=0;

while(i<5 && j<6)

{ if(a[i]<=b[j])

{ c[k]=a[i] ;

/**/ k--; /**/

i++;

}

else

c[k++]=b[j++];

}

while(i<5)

c[k++]=a[i++];

while(j<6)

c[k++]=/**/ b[j--] /**/;

printf("\nArray a:\n");

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

printf("%3d ",a[i]);

printf("\nArray b:\n");

for(j=0;j<6;j++)

printf("%3d ",b[j]);

printf("\nArray c:\n");

for(k=0;k<11;k++)

printf("%3d ",c[k]);

printf("\n");

getch();

}

7)修改程序cmody521.c,实现从键盘输入一个仅包含‘0’、‘1’的字符串,输出其

中仅含‘0’的最长子串的长度和这种子串第一次出现的起始位置(第几个字符)。

例如:

输入:0011101000010100001

输出:4 8

#include

#include

#include

void main()

{ char c;

int i , len, p, maxlen=0;

i=0;

/**/ len=10; /**/

printf("\nPlease input the string: ");

while((c=getchar())!='\n')

{ i++;

if/**/ (c='1') /**/

len++;

else

{ if(len>maxlen)

{ maxlen=len;

/**/ p=i; /**/

}

len=0;

}

}

printf("\n%d %d",maxlen,p);

getch();

}

8)有1020本挂历,第一天卖一半另加至多两本,半本挂历按四舍五入整为一本,以后每天均按此规则销售。修改程序cmody522.c,使函数days(int n)返回卖完这些挂历所需要的天数。

#include

#include

int days( int n )

{

/**/ int rst,dy=1; /**/

while(n>0)

{ rst=/**/ (n-2)/2 /**/;

n=rst;

dy++;

}

return (/**/ n /**/);

}

void main()

{

printf("days= %d\n", days(1020)); getch();

}

9)修改程序cmody531.c,实现输入一个字符串(长度不超过100个字符),只保留其中字母和数字字符,将其余字符删除后输出。例如:

输入:aS?1%q95R/w0#

输出:aS1q95Rw0

#include

#include

#include

void main()

{ char str[100];

char c;

int i;

i=0;

printf("\nPlease input the string: ");

while((c=getchar())!='\n')

{

if(c>='A'&&c<='Z'||c>='a'&&c<='z'||/**/ c>=0 &&c<=9 /**/)

/**/ str[i]=c; /**/

}

/**/ str[i]='\n'; /**/

puts(str);

getch();

}

10)修改程序cmody532.c,实现如下图形的输出。

1 2 3 4 5

0 1 2 3 4

0 0 1 2 3

0 0 0 1 2

0 0 0 0 1

#include

#include

#define N 5

void main()

{ int /**/ arr(N,N) /**/;

int i,j;

for(i=0;i

{ for(j=0;j

{ if(j

arr[i][j]=/**/ 1 /**/;

else

arr[i][j]=/**/ j-i /**/;

printf("%3d",arr[i][j]);

}

printf("\n");

}

getch();

}

三、填空题

1)程序ccon491.c的功能是:对输入的一个正整数,计算其所含因子3的个数。例如:

输入:54

输出: 3

#include

#include

void main()

{ int i,n,n3;

/**/ /**/

printf("Input a integer:");

scanf("%d", /**/ /**/);

while(n%3==0)

{ n3++;

/**/ /**/

}

printf("\nn3: %d",n3);

getch();

}

2) 程序ccon492.c中的p_factor(int x)函数,实现输出正整数x的所有真因子(除了1和x以外),若无真因子则提示为素数。

例如:

x为13,则输出:13 is a prime number!

x为16,则输出:2 4 8

#include

#include void p_factor(int x)

{ int i, mark;

/**/ /**/;

for(i=2;i<=x/2;i++)

if(/**/ /**/==0)

{

mark=1;

printf("%2d ",i);

}

if(!mark)

printf("%d is a prime number!",x); printf("\n");

}

void main()

{ int a;

printf("Input a number:");

scanf("%d",&a);

p_factor(/**/ /**/);

getch( );

}

3)程序ccon501.c,输出如下图形

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

#include

#include

void main()

{ int i,j;

/**/ /**/

a[0]=1;

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

{ printf("\t");

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

{ if(/**/ /**/)

b[j]=1;

else

b[j]=a[j-1]+a[j];

printf("%3d",/**/ /**/);

}

printf("\n");

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

a[j]=b[j];

}

getch();

}

4)程序ccon502.c中的phalanx(int a[ ][ ], int n)函数,根据参数n(10

2≤

≤n),输出类似如下的方阵(n=6)

1 2 3 4 5 6

2 4 6 8 10 12

3 4 5 6 7 8

4 6 8 10 12 14

5 6 7 8 9 10

6 8 10 12 14 16

#include

#include

#define M 10

void phalanx(int a[][M],int n)

{ int /**/ /**/, j ;

for(i=0;i

for(j=0;j

{

if(i%2==0)

a[i][j]=i+1+j;

else

a[i][j]=/**/ /**/;

}

printf("Array (n=%d) is:\n",n);

for(i=0;i

{

for(j=0;j

printf("%3d ",a[i][j]);

printf("\n");

}

}

void main()

{

int a[M][M];

int n;

printf("Input n(2<=n<=10):");

scanf("%d",&n);

phalanx(/**/ /**/, n);

getch();

}

5) 程序ccon511.c的功能是:以每行5个数的形式输出100到200之间所有个位数为奇数且十位数为偶数或0的整数

#include

#include

void main()

{ int i, gw, sw, count;

/**/ /**/

for(i=100;i<=200;i++)

{

sw=i/10;

/**/ /**/

if( gw%2!=0 && sw%2==0 )

{ if(/**/ /**/)

printf("\n");

printf("%5d",i);

count++;

}

}

getch();

}

6) 将程序ccon512.c填写完整,使函数encrypt(char *s)实现将字符串中所有奇数位置(注:字符串首字符为第1位)上的数字用比其小1的数字替换。如,数字1用0替换,数字2用1替换、数字3用2替换…数字0用9替换(非数字则不替换)。

例如:

输入:ky123456+D009876

输出:ky022446+D908866

#include

#include

#include

void encrypt(char *s)

{ int i=1;

char *p=s;

while(*p)

{ if(i%2!=0)

{

if(/**/ /**/)

*p=*p-1;

else if( *p=='0' )

*p='9';

}

p++;

/**/ /**/;

}

}

void main()

{ char str[100];

printf("Input string: \n");

gets(str);

encrypt(str);

printf("\nNow string is :\n");

puts(str);

getch();

}

7)程序ccon521.c,输出符合以下条件的3位整数的个数:第一位和第三位数字不相同,且各位数的和为15

#include

#include

void main()

{ int i,j,k,count;

/**/ /**/

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

for(j=0; j<=9; j++)

for(k=0; k<=9; k++)

{ if(/**/ /**/)

count++;

}

printf("\ncount=%d",count);

getch();

}

8) 将程序ccon522.c填写完整,使函数r_shift(int a[ ])实现将数组a各元素循环右移1个位置,最后一个元素存到首位。

例如:数组a元素为:1 3 5 7 9 10 8 6 4 2

循环右移后为:2 1 3 5 7 9 10 8 6 4

#include #include

#define N 10

void r_shift(int a[])

{ int i,temp;

temp=a[N-1];

for(i=N-1; /**/ /**/; i--)

a[i]=/**/ /**/;

a[0]=temp;

}

void main()

{ int arr[N]={1,3,5,7,9,10,8,6,4,2},i;

printf("Original array is:\n");

for(i=0;i

printf("%d ",arr[i]);

r_shift(/**/ /**/);

printf("\nNow array is :\n");

for(i=0;i

printf("%d ",arr[i]);

getch();

}

9)程序ccon531.c的功能是:用选择排序法对输入的10个整数按从大到小排序并输出结果:例如:

输入:2 9 3 4 8 4 1 6 5 7

输出:9 8 7 6 5 4 4 3 2 1

#include

#include

void main()

{ int i,j,k;

/**/ /**/

int a[10];

printf("Enter 10 integers:");

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

scanf("%d",&a[i]);

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

{ max=a[i];

k=i;

for(j=i+1; /**/ /**/; j++)

if (a[j]>max)

{ max=a[j];

/**/ /**/

}

if (k!=i)

{ temp=a[i];

a[i]=a[k];

a[k]=temp;

}

}

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

printf("%d ",a[i]);

getch();

}

10) 将程序ccon532.c填写完整,使函数convert( int a[ ][ ])输出数组a表示的N*N矩阵的转置矩阵

例如:5*5矩阵

1 2 3 4 5

1112 13 14 15

2122 23 24 25

3132 33 34 35

4142 43 44 45

转置后:

111 21 31 41

212 22 32 42

313 23 33 43

414 24 34 44

515 25 35 45

#include

#include

#define N 5

void convert(int a[ ][N])

{ int i, /**/ /**/, temp;

for(i=0; /**/ /**/; i++)

for(j=i+1;j

{ temp=a[i][j];

a[i][j]= /**/ /**/ ;

a[j][i]=temp;

}

}

void main()

{ int i,j;

int arr[N][N];

for(i=0;i

for(j=0; j

arr[i][j]=10*i+j+1;

printf("Original array:\n");

for(i=0;i

{ for(j=0; j

printf("%3d ",arr[i][j]);

printf("\n");

}

convert(arr);

printf("Converted array:\n");

for(i=0;i

{ for(j=0; j

printf("%3d ",arr[i][j]);

printf("\n");

}

getch();

}

四、编程题

1) 打开程序cprog491.c,完成其中的函数fun(x),使其计算下式的值。

35

.1

cos

3

+

+

x

e

x x

例如: fun(1.06)=2.217

#include

#include

#include

double fun(double x)

{ /**/

/**/

}

void main()

{ printf("fun(1.06) = %7.3lf\n", fun(1.06)); getch();

}

2)打开程序cprog492.c,完成其中的fun(long *sum, int n) 函数,按下列公式计算前n项的和(n<10):

+

+

+

+

+55555

4444

333

22

1

#include

#include

void fun(long *sum,int n) { /**/

/**/ }

void main() { long sum; int n;

printf("Please enter n:"); scanf("%d",&n); fun(&sum,n);

printf("\n%ld\n",sum); getch(); }

3)打开程序cprog501.c ,完成其中的函数fun(x),使其计算下式的值。

3

3275.3x

e x ++

例如: fun(2.315)=6.330 #include #include #include double fun(double x) { /**/

/**/ }

void main()

{ printf("fun(2.315) = %7.3lf\n", fun(2.315)); getch(); }

4)打开程序cprog502.c. 完成其中的fun(int a[ ], int c[ ]) 函数,将数组a 中不相同元素依次存入数组c 中(元素值>0, 相同元素仅存一次),并在数组c 的最后一个元素后面存入值-1作为结束标记。 例如:数组a 为{5,1,1,2,6,5,2,7}, 则数组c 为{5,1,2,6,7,-1}。 #include #include #define N 8

void fun(int a[],int c[]) { /**/

/**/ }

void main()

{ int arra[N]={5,1,1,2,6,5,2,7}; int arrc[N],i; fun(arra,arrc);

printf("array arra is:"); for(i=0;i

printf("%d ",arra[i]); printf("\nresult arrc is:"); for(i=0;i

printf("%d ",arrc[i]); else break; printf("\n"); getch(); }

5)打开程序cprog511.c ,完成其中的函数fun( ),使其计算:

???

?

???<+=>+=)

0(1)0(0)0(1

.1log )(2

x x x x x x

x fun

例如:输入:0 输出:fun(0.000)=0.000 输入:3.76 输出:fun(3.760)=0.273

输入:-1.2 输出:fun(-1.200)=1.562

#include

#include

#include

double fun(float x)

{ /**/

/**/

}

void main()

{ float x;

printf("Input x :");

scanf("%f",&x);

printf("fun(%.3f)=%.3lf\n",x,fun(x));

getch();

}

6)打开程序cprog512.c,完成其中函数fun(int a[ ], int sun[ ]), 实现将一位数组a中的前i个元素的和存入数组sun的第i个元素中。例如:数组a各元素为:1 3 2 1 2

则得到数组sun的各元素为:1 4 6 7 9

#include

#include

#define N 5

void fun(int a[],int sum[])

{ /**/

/**/

}

void main() { int arra[N] = {1,3,2,1,2};

int sum[N];

int i;

printf("The array a is:\n");

for(i=0; i

printf("%5d", arra[i]);

printf("\n");

fun(arra,sum);

printf("The array sum is:\n");

for(i=0; i

printf("%5d", sum[i]);

printf("\n");

getch();

}

7)打开程序cprog521.c,完成其中的函数fun( ),使其计算:

?

?

?

?

?

-

-

<

-

+

>

+

=

)1

(

1

)2

1

(

86

.1

3

)2

(

)2

(

)

(

x

x

x

x

x

x

x

x

fun

例如:输入:1.69 输出:fun(1.690)=6.930000

输入: 3.2 输出:fun(3.200)=16.640000

输入:-7.8 输出:fun(-7.800)=-8.800000

#include

#include

double fun(float x)

{ /**/

/**/

}

void main()

{ float x;

printf("Input x :");

scanf("%f",&x);

printf("fun(%.3f)=%lf\n",x,fun(x)); getch();

}

8)打开程序cprog522.c ,完成其中的函数fun(int a[ ], int n),实现将长度为n 的数组a 中元素位置循环左移三位。例如:

移动前数组a 为:1 2 3 4 5 6 7 8 9 移动后数组a 为:4 5 6 7 8 9 1 2 3 #include #include void fun(int a[],int n) { /**/ /**/ }

void main()

{ int a[9]={1,2,3,4,5,6,7,8,9},i; printf("Array a is:\n"); for(i=0;i<9;i++)

printf("%d ",a[i]); printf("\n"); fun(a,9);

printf("After moving, array a is:\n"); for(i=0;i<9;i++)

printf("%d ",a[i]); printf("\n"); getch(); }

9)打开程序cprog531.c ,完成其中的函数fun(float x, float k), 使其计算:

?????>-≤-=k x k

x k x x k k x fun ()

(),(22

例如: 输入:3.7, -3.7 输出:fun(3.700,-3.700)=0.000

输入:1.3,-3.7 输出:fun(1.300,-3.700)=3.464 输入:3.7,1.3 输出:fun(3.700,1.300)=2.400 #include #include #include

double fun(float x,float k) { /**/

/**/ }

void main() { float x,k;

printf("Input x,k: "); scanf("%f,%f",&x,&k);

printf("fun(%.3f,%.3f)=%.3lf\n",x,k,fun(x,k ));

getch(); }

10)打开程序cprog532.c ,完成其中的fun(char *str, char c)函数,计算字符参数c 的值在字符串str 中出现的次数。例如: fun(“abcabababcd ”,’b ’)的返回值为4

#include #include int fun(char *str,char c) { /**/

/**/ }

void main()

{ char s1[64]="abcabababcd", c='b'; puts(s1);

printf("\n%d\n",fun(s1,c)); getch(); }

参考答案

一、选择题

1~10)D A C D B D B C A A

11~20)C C D B C D D D C D

21~30)D C A A A B C B C A

31~40)D C C C A C C D C A

41~50)D A D D C A A B D B

51~60)D B C D D C B C B B

61~70)C C A C A B C B D B

71~80)C D A A D A D B A D

81~90)A B A D C C D D D C

91~100)D D B B B D A C B B

二、改错题

cmody491.c

/**/ while(sum<1000) /**/

/**/ n-1 /**/

cmody492.c

/**/ i=0; /**/

/**/ sub[i]=str[len-n+i]; /**/

/**/ sub[i]='\0'; /**/

cmody501.c

/**/ struct student stu[8] /**/

/**/ stu[i].score[0]+stu[i].score[1]; /**/ /**/ max /**/

cmody502.c

/**/ aver=0 /**/

/**/ aver/=N /**/;

/**/ max /**/

cmody511.c

/**/ max1=0, max2=0 /**/;

/**/max2=max1;/**/

/**/ max2 /**/

cmody512.c

/**/ int i,j,k; /**/

/**/ k++; /**/

/**/ b[j++] /**/;

cmody521.c

/**/ len=0; /**/

/**/ (c=='0') /**/

/**/ p=i-maxlen; /**/

cmody522.c

/**/ int rst,dy=0; /**/

/**/ (n+1)/2-2 /**/ /**/ dy /**/

cmody531.c

/**/ c>='0' &&c<='9' /**/

/**/ str[i++]=c; /**/

/**/ str[i]='\0'; /**/

cmody532.c

/**/ arr[N][N] /**/

/**/ 0 /**/

/**/ j-i+1 /**/

三、填空题

ccon491.c

/**/ &n /**/

/**/ n3=0 ; /**/

/**/ n=n/3; /**/

ccon492.c

/**/ mark=0 /**/;

/**/x%i /**/

/**/ a /**/

ccon501.c

/**/int a[8],b[8]; /**/

/**/ j==0||j==i /**/

/**/ b[j] /**/

ccon502.c

/**/ i /**/

/**/i+2*j+1 /**/

/**/ a /**/

ccon511.c

/**/count=0; /**/

/**/gw=i%10; /**/

/**/count%5==0 /**/ ccon512.c

/**/*p>='1'&&*p<='9' /**/ /**/i++/**/;

ccon521.c

/**/ count=0; /**/ /**/ i!=k&&i+j+k==15 /**/ ccon522.c

/**/ i>=1 /**/

/**/ a[i-1] /**/

/**/ arr /**/

ccon531.c

/**/ int max,temp; /**/

/**/ j<10 /**/

/**/ k=j; /**/

ccon532.c

C语言试卷及答案

《C语言程序设计》考试试卷(答案) 一、填空题(每小空1分,共10分) 1.C语言程序的三种基本结构是顺序结构、选择结构、循环结构。 2.一个C程序有且仅有一个main( ) 函数。 3.C语言描述“x和y都大于或等于z”的表达式是x>=z && y>=z。 4.C语言可以用来实现循环的结构化语句是while、do while、for。 5.数组名表示数组在内存的首地址。 6.int a=3,*p=&a;*p+2的值是5。 二、单项选择题(每小题2分,共70分) 1.__B___是C语言合法的常量。 (A).45(B)078 (C)25.6e3.4 (D)‘xy’2.一个程序的执行是从 A 。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 (C)本程序的main函数开始,到本程序文件的最后一个函数结束。 (D)本程序文件的第一个函数开始,到main函数结束。 3.以下叙述正确的是 C 。 (A)在C程序中,main函数必须位于程序的最前面。 (B)C程序每行中只能写一条语句。 (C)C语言本是没有输入输出语句。 (D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 4.以下叙述不正确的是 D 。 (A)逗号运算符的运算级最低。 (B)ABC和abc是两个不同的变量。 (C)若a和b类型相同,在执行a=b后,b的自身值不变。 (D)‘a’和“a”是完全等价的常量。 5.int x=3,y=2;则表达式x+=x*=y+8的值为 C 。 (A)28 (B)30 (C)60(D)17 6.设x=2.7,a=8,y=4.9,算术表达式x+a%3*(int)(x+y)%5/3的值为 B 。 (A)2.7 (B)3.7(C)4.7 (D)4.03 7.执行下面两个语句后,输出的结果为__D___。 char c1=98; printf(“%d %c”,c1,c1-32); (A)97 66 (B)98 b (C)b 66 (D)98 B 8.执行下面语句后的结果为 C 。 y=10;x=y++; (A)x=10,y=10 (B)x=11,y=11 (C)x=10,y=11(D)x=11,y=10 9.Char w;int x;float y;double z;则表达式w*x+z-y值的数据类型是A 。 (A)double (B)char (C)int (D)float 10.C语言中要求操作数必须是整数的运算符是 B 。

(完整版)数据结构---C语言描述-(耿国华)-课后习题答案

第一章习题答案 2、××√ 3、(1)包含改变量定义的最小范围 (2)数据抽象、信息隐蔽 (3)数据对象、对象间的关系、一组处理数据的操作 (4)指针类型 (5)集合结构、线性结构、树形结构、图状结构 (6)顺序存储、非顺序存储 (7)一对一、一对多、多对多 (8)一系列的操作 (9)有限性、输入、可行性 4、(1)A(2)C(3)C 5、语句频度为1+(1+2)+(1+2+3)+…+(1+2+3+…+n) 第二章习题答案 1、(1)一半,插入、删除的位置 (2)顺序和链式,显示,隐式 (3)一定,不一定 (4)头指针,头结点的指针域,其前驱的指针域 2、(1)A(2)A:E、A B:H、L、I、E、A C:F、M D:L、J、A、G或J、A、G (3)D(4)D(5)C(6)A、C 3、头指针:指向整个链表首地址的指针,标示着整个单链表的开始。 头结点:为了操作方便,可以在单链表的第一个结点之前附设一个结点,该结点的数据域可以存储一些关于线性表长度的附加信息,也可以什么都不存。 首元素结点:线性表中的第一个结点成为首元素结点。 4、算法如下: int Linser(SeqList *L,int X) { int i=0,k; if(L->last>=MAXSIZE-1) { printf(“表已满无法插入”); return(0); } while(i<=L->last&&L->elem[i]last;k>=I;k--) L->elem[k+1]=L->elem[k]; L->elem[i]=X;

L->last++; return(1); } 5、算法如下: #define OK 1 #define ERROR 0 Int LDel(Seqlist *L,int i,int k) { int j; if(i<1||(i+k)>(L->last+2)) { printf(“输入的i,k值不合法”); return ERROR; } if((i+k)==(L->last+2)) { L->last=i-2; ruturn OK; } else {for(j=i+k-1;j<=L->last;j++) elem[j-k]=elem[j]; L->last=L->last-k; return OK; } } 6、算法如下: #define OK 1 #define ERROR 0 Int Delet(LInkList L,int mink,int maxk) { Node *p,*q; p=L; while(p->next!=NULL) p=p->next; if(minknext->data>=mink)||(p->data<=maxk)) { printf(“参数不合法”); return ERROR; } else { p=L; while(p->next-data<=mink)

《C语言课程设计》实验报告

《C语言课程设计》报告 学院:信息工程学院 专业:信息管理与信息系统设计题目:通讯录程序设计班级:2016级一班 学号:201601510138 姓名:张进步 指导教师:杨菲菲 时间:12.24

学生通讯管理系统 1.1 设计目的 学习如何实现一个复杂的信息管理系统——学生通讯管理系统,能够实现老师对学生基本信息的记录、查询、修改。 通过本次学习,读者能够掌握: (1)如何设计主菜单和子菜单,以及各级菜单的响应与返回操作; (2)如何合理设计不同的结构体对系统中多个实体进行封装; (3)如何合理设计多个结构体数组管理不同实体对应的数据; (4)如何对复杂的函数过程进行拆分,用多个子函数进行封装; (5)进一步熟悉文件读取的相关操作。 1.2需求分析 本章的学生信息管理系统的主要功能面向老师,能够实现对学生信息进行录入、修改、查询。 学生信息方面的功能需求如下。 (1)新增学生信息,包括姓名、籍贯、电话号码(2)、电子邮箱。 (2)修改学生信息,可以选择对某个学生的某个属性值进行修改。 (3)查找学生信息,即输入要查找的学生学号,实现学生信息查询。 (4)显示所有学生信息,并以列表的形式清晰呈现。 1.3总体设计 系统功能结构图如图所示;学生信息管理系统 学生信息管理模块:包括4个子模块,分别是学生信息的录入,学生信息的修改,学生信息的查询,学生信息的浏览。

1.4详细设计与实现 1.4.1 预处理及数据结构 1.头文件 本项目涉及4个头文件,其中#include使用字符串的函数的时候需要添加此头文件,#include #include /*system使用的函数*/ #include /*getchar、getch函数使用的头文件*/ #include /*strcmp比较2个字符串是否一样*/ 2.宏定义 LEN sizeof(struct student)表示struct student的长度。DATA是按格式输出结构体的各项数据,能够方便输出操作,减少代码量。 #define_CRT_SECURE_NO_W ARNINGS #include #include #include #include #define LEN sizeof(struct student) #define FORMAT "%-8d%-15s%-15s%-15d%-15d%-15s\n" #define DATA stu[i].numb,stu[i].name,stu[i].nat,stu[i].num1,stu[i].num2,stu[i].mail 3.结构体 利用一个结构体struct student struct student/*定义学生信息结构体*/ { int numb;/*学号*/ char name[15];/*姓名*/ char nat[16];/*籍贯*/ int num1;/*电话号码1*/ int num2;/*电话号码2*/ char mail[40];/*邮箱*/ }; 4.全局变量 分别利用全局变量结构体数组struct student stu[50];来记录所有学生的基本信息,避免程序运行过程中多次初始化,方便各个式子函数调用。 struct student stu[50];

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

华中科技大学计算机学院C语言课设实验报告

华中科技大学计算机科学与技术学院 《C语言程序设计》课程设计 实验报告 题目:科研项目信息管理系统 专业:计算机 班级: 学号: 姓名: 成绩: 指导教师:李开 完成日期:2009年10 月20 日

科研项目信息管理系统一、系统功能结构模块图 二、数据结构设计及其用法说明 typedef struct lakey{ char name[30];/*团队名称*/ int total;/*自然科学基金的科研项目数*/ float dudu;/*经费数*/ struct lakey *next; }*plakey;/*统计3中用到的数据结构*/ typedef struct emmey{ char name[30];/*团队名称*/ int teacher;/*老师人数*/ int harden;/*项目数*/ float bizhi;/*比值*/ struct emmey *next; }*pemmey;/*统计4中用到的数据结构*/ typedef struct kPro{ char code[15];/*项目编号*/ char sort;/*项目种类*/ int aking1; char time[8];/*项目时间*/ float dudu;/*项目经费*/ int aking2;

char beiler[15];/*负责人*/ int aking3; char keynoName[30];/*所在团队名称*/ struct kPro *next; }harden,*pHarden; typedef struct Komo{ int teacher;/*老师人数*/ char name[20];/*院系名称*/ int student;/*学生人数*/ float bizhi;/*二者比值*/ struct Komo *next; }*pKomo;/*统计1中用到的数据结构,统计结果放在这个数据结构中*/ typedef struct kTea{ char name[30];/*团队名称*/ char beiler[15];/*负责人*/ int stuNum;/*学生人数*/ int aking2; int coco;/*老师人数*/ char colName[20];/*所在院系的名称*/ int aking1; struct kTea *next; pHarden child; }keyno,*pKeyno; typedef struct edward{ char name[20];/*院系名称*/ int totalnum;/*项目总数*/ int num973;/*973项目数*/ int num863;/*863项目数*/ float amount;/*经费数*/ struct edward *next; }*pedward;/*统计2中用到的数据结构*/ typedef struct kCol{ char name[20];/*院系名称*/ int aking; char beiler[15];/*院系负责人*/ struct kCol *next; char call[15];/*负责人电话号码*/ pKeyno child; }kekey,*pKekey;

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

《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主要模块的算法描述 本算法的思路过程:首先要随机产生随机数,然后进行算法输出数值,执行条件判断输入结果,最后比较结果,判断胜利的一方。 程序流程图 图1 掷骰子游戏 2.1.4调试过程及实验结果

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

Java课程设计实验报告及全部源码流程图

课程设计 一、实验目的 1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。 2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。 3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。 二、实验要求 1.问题描述准确、规范。 2.程序结构合理,调试数据准确、有代表性.。 3.界面布局整齐,人机交互方便。 4.输出结果正确。 5.正确撰写实验报告。 三、实验内容 编写一个GUI程序实现日历的功能。一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报

时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。 四、实验步骤 1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。 2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。 3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。 4. 根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。 5.详细的上机实验步骤见任务分工及程序设计进度表。 五、实验结果 经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能齐全、符合操作习惯。 下面是程序运行效果截图: 日历主界面(可以实现每个月的日历,可以按年或按月前后翻动,能够显示当前日期,并能够选择背景图片):

C语言全部题目及答案

C语言全部题目及答案 SANY GROUP system office room 【SANYUA16H-

C语言全部题目及答案 Exercise 1: Programming Environment and Basic Input/Output 1.Write a program that prints “This is my first program!” on the screen. (a)Save this program onto your own disk with the name of e2-1a; (b)Run this program without opening Turbo C; (c)Modify this program to print “This is my second program!”, then save it as e2-1b. Please do not overwrite the first program. 2.Write a program that prints the number 1 to 4 on the same line. Write the program using the following methods: (a)Using four “printf” statements. (b)Using one “printf” statement with no conversion specifier(i.e. no ‘%’). (c)Using one “printf” statement with four conversion specifiers 3.(a) Write a program that calculates and displays the number of minutes in 15 days. (b) Write a program that calculates and displays how many hours 180 minutes equal to. (c) (Optional) How about 174 minutes?

数据结构(C语言版)(第2版)课后习题答案

数据结构(C语言版)(第2版) 课后习题答案 李冬梅 2015.3

目录 第1章绪论 (1) 第2章线性表 (5) 第3章栈和队列 (13) 第4章串、数组和广义表 (26) 第5章树和二叉树 (33) 第6章图 (42) 第7章查找 (54) 第8章排序 (65)

第1章绪论 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案: 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。 逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。 存储结构:数据对象在计算机中的存储表示,也称为物理结构。 抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。 2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 答案: 例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。 这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。 即相同的逻辑结构,可以对应不同的存储结构。 3.简述逻辑结构的四种基本关系并画出它们的关系图。

计算机程序设计(C语言)课程设计报告

计算机程序设计(C语言) 课程设计报告 题目:电子动画时钟 学院:机电工程学院 专业: 班级:090109班 学号: : 指导教师: 设计日期:

一、概述 选题背景:随着社会的进步和科技的发展,电子钟表逐渐成为了人们生活中不可缺少的一部分。设计思路:(一)功能模块设计,1.电子时钟执行主流程2.电子时钟界面显示3.电子时钟按键控制模块4.时钟动画处理模块(二)数据结构设计 1.time结构体 2.全局变量(三)函数功能描述1.keyhandle()2.timeupchange()3.timedownchange()4.digitclock()5.drawcursor()6. clearcursor()7.void clockhandle()8.main()(四)程序实现(五)运行结果。 二、概要设计 2.1、数据结构 此程序中,使用了C语言的time结构体和几个全局变量,1.time结构体struct time { unsigned char ti_min; /*分钟*/ unsigned char ti_hour; /*小时*/ unsigned char ti_hund; /*百分之一秒*/ unsigned char ti_sec; /*秒*/ }; time结构体定义在dos.h文件中,可用来保存系统的当前时间,其中各字段的值的含义如下。 1.unsigned char ti_min:保存分钟值。

2.unsigned char ti_hour:保存小时。 3.unsigned char ti_hund:保存百分之一秒,例如,ti_hund=500,表示1/500秒。 4.unsigned char ti_sec:保存秒数。 2.2、全局变量 下面对程序用到的全局变量及数组进行说明. 1. double h,m,s: 此3个全局变量分别用来保存小时,分钟,秒数。 2. double x,x1,x2,y,y1,y2:保存数字时钟中小时,分,秒在屏幕中显示的坐标值。 3.struct time t[1]:定义一个time结构类型的数组,此数组只有t[0]一个元素。 2.3 模块列表 1.时钟动画处理模块 时钟动画处理模块主要由clockhandle()函数来实现,程序中旧时钟指针的擦除是借助setwritemode(mode)函数设置画线的方式来实现。如果mode=1,则表示画线时用现在特性的线所画之处原有的线性异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变时,进行两次画线操作相当于没有画线,即在当前位置处清除了原来的画线。 2.时钟按键控制模块 在电子时钟中,按键控制模块最主要的工作就是必须能读取用户按键,对按键值进行判断,并调用相应函数来执行相关操作。 3.

c语言试题及答案 ()

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由

主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

VB程序设计课程设计报告完整版

V B程序设计课程设计 报告 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

《VB程序设计》 课程设计报告(2016 — 2017 学年第 1 学期) 题目:排序演示 学院:经济与管理学院 班级:物流管理1502 学号: 姓名: 指导教师:阮冰 时间:起 2017年1月3日止 1月6日

一、课程设计基本信息 课程代码:05190124 课程名称:计算机基础课程设计 课程英文名称: Computer-based Course Design 课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群 课程面向专业:生物科学类、制药工程、制药工程(生物制药)、药物制 剂、物流管理 课程类型:必修课 先修课程:大学计算机基础通识选修课程、Visual Basic程序设计课程学分:1 总学时:16 二、课程设计目标 掌握所学语言程序设计的方法,熟悉所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能: 1.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。 2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。 3.系统设计编程简练,可用,功能全面,并有一定的容错能力。用户界面良好,有较好的输出功能。在完成课题基本要求后,具有创新型设计,具有一定的实用价值。 4.根据个人的设计调试过程,撰写设计报告。 三、课程设计内容 利用已掌握的VB程序设计语言基础,以及面向对象的程序设计方法、事件驱动的编程方式,进行应用程序和系统的开发设计。在强化巩固已有编程知识基础之上,训练新的设计与编程思路,通过综合应用所学知识设计、编制、调试实用的Visual Basic程序。 四、课程设计要求 1.要求每个同学都要认真对待,积极参与。 2.课程设计结束时,提交完成的所有源程序、相关文件和可执行文件。同 时填写并完成《课程设计报告册》。 3.不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设计 中完全未参与的将作不及格处理。 五、考核方式

C语言期末考试题含答案

C语言期末考试题含答 案 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是( ) A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中( ) A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是( ) A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是( ) A )x1=%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:float a=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(21 的计算结果不. 相符的是( ) A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是( ) A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue

7.在while(!x)语句中的!x与下面条件表达式等价的是() A) x!=0 B) x==1 C) x!=1 D) x==0 8、有以下程序: #include <> void main(){ int i=1,j=1,k=2; if( (j++||k++)&&i++ ) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2B)2,2,1C)2,2,2D)2,2,3 9、有以下程序: #include <> void main(){ int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: void fun(int n,double x){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是() A)fun(int y,double m); B)k=fun(10,; C)fun(x,n); D)void fun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

严蔚敏数据结构题集(C语言版)完整

严蔚敏 数据结构C 语言版答案详解 第1章 绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值 Put(&C,k,e) 操作结果:改变复数C 的第k 元的值为e

(完整版)C语言课程设计实验报告

目录 目录 (1) 第1章问题描述 (2) 1.1 题目 (2) 1.2基本要求 (2) 第2章需求分析 (2) 1.1软件的基本功能 (2) 1.2输入/输出形式 (2) 1.3测试数据要求 (3) 第3章概要设计 (3) 1.1主程序 (3) 第4章详细设计 (4) 1.1数据类型 (4) 1.2伪码算法 (4) 1.3 程序流程图 (7) 第5章操作 (8) 1.1 进入足球比赛积分排行榜界面 (8) 1.2进入目录 (8) 1.3输入球队比赛信息 (10) 1.4 显示九轮比赛排行榜 (12) 1.5 保存数据 (15) 1.6 由D 盘查看数据 (16) 第6章参考文献 (16)

第1章问题描述 1.1 题目 足球比赛积分排行榜程序 1.2基本要求 (1)10个足球队进行9轮循环赛,胜一场积3分,平一场积1分,输一场积0分。 (2)如果两个队积分相同,进行净胜球的比较,如果净胜球再相同进行总进球的比较。 (3)编写一程序输入每轮比赛的比分,并可以存储。 (4)最后统计出每轮比赛的积分榜。 第2章需求分析 1.1软件的基本功能 (1)输入10个足球队的9轮比赛进球数。 (2)计算10个球队的积分,净胜球,总进球。 (3)对9轮比赛进行排序。 1.2输入/输出形式 由键盘输入,屏幕输出,并且以TXT形式保存。

1.3测试数据要求 输入九轮比赛10个足球队的进球数,由系统统计积分、净胜球、总进球数,并输出。 第3章概要设计 1.1主程序 头文件: #include 说明:main函数的头文件,控制整个程序。 #include 说明:清屏的头文件。 #include 说明:包括了大量的函数原型,调用现成的库函数。 #include 说明:基于char*的字符串处理函数。 全局变量: void input(); 输入数据函数 void sort(); 排序数据函数 void display(); 显示数据函数 void save(); 保存数据函数

程序设计语言 课程设计题目(补充)

课程设计题目 题目七:销售管理系统 问题描述:设计一个日用商品销售管理系统,以小型超市商品销售为管理对象来设计系统。实现功能:根据销售信息(包含如下内容:商品编号、销售数量、销售单价、销售日期、销售人员;保存为磁盘文件),实现对商品日常信息的管理。 1、日用商品销售信息输入 运用人机对话方式实现商品的商品编号、销售数量、销售单价、销售日期、销售人员的信息录入,以文件的形式保存其信息 2、商品销售信息查询: a) 根据商品编号查询所售商品明细(数量,单价,金额) b) 根据销售日期查询当天所售商品明细(数量,单价,金额) c) 根据销售人员查询某营业员所售商品明细(数量,单价,金额) 3、商品销售信息统计 a) 日销售额统计(按商品编号,销售人员,全部商品)及总销售额统计 b) 月销售额(按商品编号,销售人员,全部商品)及总销售额统计 c) 月度销售排名(按商品编号,销售人员) 知识点:结构体类型变量的应用,文件操作,数据的查询,函数的应用 说明:以十组商品三个营业员构成二十组商品数据 题目八:职工工作量统计系统 问题描述:设计一个以班组职工日常工作量统计为对象的管理系统。 实现功能:根据组内职工日常工作信息(包含如下内容:职工编号,职工姓名,工作内容,完成数量,完成质量,完成日期;保存为磁盘文件),实现对职工日常工作量信息的管理。 1、职工日常工作量信息输入 运用对话方式分别输入职工编号,职工姓名,完成数量,完成质量(优、良、中),完成日期,对就多个完成质量的信息录入,以文件的形式保存其信息 2、职工日常工作量信息统计与输出 a) 以完成工作数量及完成质量进行工作量当日统计排序。名次相同,以完成数量多者优先,再次相同,以职工编号小者优先。 b) 以一个星期为一时间段按上述规则进行排序。 知识点:结构体类型变量的应用,文件操作,数据的查询与排序。 说明:以十人构成一个班组,每天大家都做同一工作来构成数据 题目九:通讯录管理系统 建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。 功能要求 (1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。 (2) 输入功能:可以一次完成若干条信息的输入。 (3) 显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分

相关文档
最新文档