当前位置:文档之家› C语言实训指导习题(全)

C语言实训指导习题(全)

C语言实训指导习题(全)
C语言实训指导习题(全)

第1章习题

1. C语言程序的基本结构是【】。

A) 函数B) 语句C) 字符D) 程序行

2. 下列四个叙述中,正确的是【】

A)在C程序中,主函数必须位于其他函数的最前面

B)在C程序中,一行只能写一条语句

C)C程序的基本结构是程序行

D)C语句是完成程序功能的最小单位

3. C语言规定,在一个C程序中,main()函数的位置是【】

A)必须在开始B) 必须在最后

C) 可以任意D) 必须在系统调用的库函数之后

4. 以下叙述中,正确的是【】。

A) C语言程序总是从第一个定义的函数开始执行 .

B) C语言程序中,要调用的函数必须在main()函数中定义

C) C语言程序总是从main()函数开始执行

D) C语言程序中的main()函数必须放在程序的开始部分

5. 在C语言提供的合法的关键字是【】

A)switch B)cher C)Case D)FLOAT

6. 以下用户标识符,其中合法的是【】

A) For B) 4d C) f2.G3 D) _f#

第2章习题

C语言所提供的五种基本数据类型包括:字符型、整型、双精度型、浮点型和【D】。

A) 指针型B)结构型C)数组型D)无值类型

2. 列四组数据类型中,C语言允许的一组是【B 】

A) 整型、实型、逻辑型,双精度型

B) 整型、实型、字符型,无值类型

C) 整型、双精度型、布尔型,无值类型

D) 整型、实型、复型、字符型

3. 下面均是合法整型常量的是【A 】。

A) 160 B) -0xcdf C) -01 D) -0x48a

-0xffff 01a 986.12 2e5

012 0xe 0668 0x

4. 在C语言中,合法的字符常量是【B 】

A)'\084' B)'\x43' C)'ab' D)"\0"

5. 下面错误的转义字符是【A】

A) '\091' B) '\\' C) '\0' D) '\''

6.下面不正确的字符串常量是【A 】。

A) …abc? B) “12?12” C) “0” D) “ ”

7. C语言中,int、char、和short三种类型数据占用的字节数是【D 】。

A) 用户自定义B) 均为2个字节C) 任意的D) 由机器字长决定

8. 在C语言中,合法的长整型常数是【A】

A) 0L B) 49627 C) 324562& D) 216D

9. 表达式5/2的值是【C 】。

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

10. 要求运算数必须是整型的运算符是【C 】。

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

11. 若希望当整型变量A的值为5时, 表达式的值为1, 则下面不能满足要求的表达式是【C 】。

A) A/2-1 B) A%2 C)(A-2)/2 D) (A+3)%2

12. 以下能正确定义变量a, b和c并为它们赋值的语句是【D 】

A) int a=5; b=5; c=5;

B) int a,b,c=5;

C) a=5,b=5,c=5;

D) int a=5, b=5, c=5;

13. int x=43, y=0; char ch=‘A’; 则表达式x*y+ch-‘B’的值是【D 】。

A) 43 B) 65 C) 1 D) -1

14. 设int a=1, d=4; float b=2.0, c=3.0, 则表达式a+b*c-d%2 的值是【D 】。

A) 5 B) 6 C) 5.0 D) 6.0

15. 若给定表达式2.5+3/2-7%2,则该表达式的值是【C】。

A) 2 B) 1 C) 2.5 D) 2.0

16. 下列运算符中,优先级最高的是【B 】。

A) * B) ++ C) + D) /=

17. 下列运算符中,运算优先级最低的是【D 】。

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

18. 若有以下定义:

int x=3, y=2;

float a=2.5, b=3.5; 则表达式(x+y)%2+(int)a/(int)b 的值是【D 】。

A) 0 B) 2 C) 1.5 D) 1

19. 若有定义int b=7;float a=2.5,c=4.7 则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为【A】。

A) 5.5 B) 5 C) 6.5 D) 6

20. a、b均为整数, 且b≠0, 则表达式a/b*b+a%b的值是【A 】。

A) a B) b C) a被b除的余数部分D) a被b除商的整数部分

21. 以下合法的赋值语句是【A】

A) x=y=100 B) d=9+e+f=d+9; C) x+y; D) c=int(a+b);

22. 设int a,b;则表达式a=2,b=++a*2的值为【A 】。

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

23. 若已定义int a; 则表达式a=10, a+10, a++的值是【B 】。

A) 20 B) 10 C) 21 D) 11

24. 有定义int a=2,b=3,c=10;则计算表达式a+=b+2,c-=a+1 后c的值是【B 】。

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

25. 设int a,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a, b和c的值分别是【B】

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

26. 假定x和y为double型,则表达式x=2,y=x+3/2的值是【D】

A) 3.500000 B) 3 C) 2.000000 D) 3.000000

27. 设变量a为整型,f为实型,i为双精度型则表达式10+a+i*f值的数据类型是【C 】。

A)int B) float C) double D) 不确定

第3章习题

一、选择题

1. 结构化程序设计中使用的基本程序控制结构是【A】。

A) 选择结构、顺序结构、循环结构

B) 条件结构、嵌套结构、顺序结构

C) 嵌套结构、转移结构、递归结构

D) 模块结构、递归结构、循环结构

2. 设a为整型变量,则下列不能正确表达数学关系1

A)a>1&&a<5 B)a==2||a==3||a==4C)1=5)

3. 若希望当A的值为奇数时, 表达式的值为真, A的值为偶数时, 表达式的值为假,则下面满足要求

的表达式是【A】。

A)A%2==1 B)(A%2==0)C)!(A%2) D)(A%2=0)

4. 以下四条语句中,有语法错误的是【C】。

A)if(a>b) m=a; B)if(a=0) m=a; D)if((a=b)>=0) m=a;

5. 以下两条条件语句语义等价的是【B 】。

A)if(a=2) printf("%d\n", a); B)if(a-2) printf("%d\n", a);

if(a==2) printf("%d\n", a); if(a!=2) printf("%d\n", a);

C)if(a)printf("%d\n", a); D)if(a-2) printf("%d\n", a);

if(a==0) printf("%d\n", a); if(a==2) printf("%d\n", a);

6. 下面程序运行的结果是【B】

main()

{ int i=-1;

if(i>=0) printf("****\n");

else printf(“####\n”);

}

A) **** B) #### C) ####\n D)

****####

7. 运行下面程序段的输出结果是【A 】。

int a=4,b=5,t;

if(a

t=a, a=b, b=t;

printf("%d,%d\n",a,b);

A)5,4 B)4,5

C)5,0 D)语法错误

8. 有程序如下:

main( )

{ int a ; float b , c ;

scanf (“%2d %3f %4f”, &a,&b,&c);

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

}

若运行以上程序时从键盘输入9876543210 ,则输出结果为【C】

A)a=98 , b=765 , c=4321

B)a=10 , b=432 , c=8765

C)a=98 , b=765.000000 , c=4321.000000

D)a=98 , b=765.0 , c=4321.0

9. 下面的程序运行时,若从键盘输入1和2,则输出结果是【B】。

main( )

{ int a,b,s;

scanf("%d%d",&a,&b);

s=a;

if(s

s=s*s;

printf("%d\n",s);

}

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

10. 设int i=2; 则表达式i==2 ? i:i-1的值为【B 】。

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

11. 已有定义:int a=1,b=2,c=3,d=4,z; 则表达式(a>b)?(z=c):(z=d) 的值为【A】。

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

12. 已有定义:char ch=?A?; 则表达式ch = (ch>=?A?&&ch<=?Z?)?(ch+32):ch 的值为【B】。

A)A B)a C)Z D)z

13. 以下程序段在执行时,若从键盘输入3,则输出为【D】。

int x;

scanf("%d",&x);

switch (x)

{ case 5: printf("Excellent");

default: printf("Poor");

case 4: printf("Good");

case 3: printf("Pass");

case 2: printf("Fail");

}

A)Pass B)Passpoor C)PoorPassFail D)PassFail

14. 如果定义double x=2.5; int a=2,b=100;,则下面四组答案中正确的是【D 】。

A) switch(a+b);

{ case 1: printf("10");

case 2: printf("100");

}

B) switch(x)

{ case 1: printf("10");

case 2: printf("100");

}

C) switch(x);

{ case 1.0: printf("10");

case 2.5: printf("100");

}

D) switch(a+b)

{ case 10+1: printf("10");

case 100+2: printf("100");

}

15. 若定义int d, c=1;则执行下面的语句后,d的值为【C 】。

switch(c)

{ case 0:d=0;break;

case 1:

case 2:d=1;

case 3:

case 4:d=2;break;

default:d=3;

}

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

16. 若变量已正确定义,则以下程序段的运行结果是【A 】。

int a=2,b=7;

switch(a>b)

{ case 0: printf("@"); break;

case 1: printf("!"); break;

case 2: printf("*"); break;

default: printf("#");

}

A)@ B)!C)* D)#

17. 语句while(!E);中的表达式!E等价于【A 】。

A)E==0 B)E!=1C)E!=0 D)E==1

18. 下列程序段的输出结果是【C】。

char m='a';

while (!m)

printf("%c",m);

A)a B)aaa... C)不输出任何信息D)'a'

19. 运行下列程序,输出结果是【A】。

main()

{ char m='a';

do { printf("%c",m);

} while(!m);

}

A) a B) aaa... C) 'a' D) 不输出任何值

20. 下列程序段执行后,s的值为【D 】。

int k,s=0;

for(k=1;k<=10;)

s=s+k;

k++;

A)1+2+3+...+10 B)10C)11 D)死循环

21. 下列程序段执行后,s的值为【C】。

int k,s=0;

for(k=1;k<=10;++k);

s=s+k;

A)55 B)0 C)11 D)10

22. 下列程序段执行后,s的值为【A 】。

int k,s=1;

for(k=1;k<=10;++k)

s=s*k;

A)1*2*3*...*10 B)0C)11 D)10

23. 下列各程序段中,可以实现1×2×3×4×5×6×7×8×9×10的是【D 】。

A) long k=1,M=0; for (;k<11;++k) M*=k;

B) long k=1,M=1; while (k<10); M*=k,k++;

C) long k=1,M=1; for (;;++k); M*=k;

D) long k=1,M=1; while (k<=10) {M*=k;k++;}

24. 下面程序段运行的结果是【C】。

int n=0;

while(n++<=1)

printf("%d",n);

A) 1 B) 2 C) 1 D) 123

25. 运行下面程序段的输出结果是(【B 】)。

int n=10;

while(n>7)

{ n--; printf("%d",n); }

A) 876 B) 987 C) 789 D) 78

26. 下列程序段运行后的输出结果是【A】。

int a=4;

do

{ printf("%2d",a-=3);

} while(!(--a));

A) 1 -3 B) 1C) 是无限循环D) 1 -2

27. 下列程序执行时,若从键盘输入12,则输出为【A 】。

main()

{ int num,c;

scanf("%d",&num);

do { c=num%10;

printf("%d",c);

} while ((num/=10)>0);

}

A)21 B)2C)1 D)12 28. 下列程序段的输出结果是【C 】。

int i ;

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

{ if(i%2==0 && i%3==0 && i%7==0)

printf("%d",i);

}

A)14 B)21C)42 D)6 29. 若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是【A 】。

for(i=5;i;i--)

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

{ ...... }

A) 20 B) 24C) 25 D) 30

30. 下面的程序运行后,输出为【D 】。

main()

{ int i=1,j=2,k=3;

do { if(i%j==0 && i%k==0)

{ printf("%d\n",i); break;}

i++;

} while(1);

}

A)12 B)13 C)14 D) 6

1.下面程序运行后输出结果是【】。

main()

{ int f1=2, f2=3, f;

printf("%d %d ",f1,f2);

f1=f1+f2;

f2=f1+f2;

printf(" %d,%d\n", f1, f2 );

}

2.下面程序运行后输出结果是【】。

main()

{ int x=100,a=10,b=20,ok1=5,ok2=1;

if(a

if(b!=15)

if(!ok1)

x=1;

else if (ok2) x=10;

x=-1;

printf("%d\n",x);

}

3.运行下面程序段的输出结果是【】。

Int i, n=3, s=0, p=1;

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

{ p=p*a; s+=p; }

printf("i=%d,p=%d,s=%d\n", i, p,s);

4.下面程序运行后输出结果是【】。

#include

#include

void main()

{ int i,j,k;

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

{ k=sqrt(i);

for(j=2;j<=k;j++)

if(i%j==0) break;

if(j>k)

printf("%3d",i);

}

}

1. 以下程序实现了判断输入的一个整数是否能被5整除,若能整除,则输出"Y",否则输出"N"。在

【】中填入适当的选项。

#include "stdio.h"

void main()

{ int k;

printf("Enter a int number:");

scanf("%d",&k);

if(【______】)

printf("Y\n");

else

printf("N\n");

}

2. 下面的程序是求s=1-1/3+1/5-1/7+…,直到最后一项的绝对值小于0.00001为止。程序【】处应

填。

#include

#include

void main()

{ int m=1;

float n=1.0, t=1.0, s=0.0;

while((fabs(t))>=1e-5)

{ 【____________】;

n=n+2;

m=-m;

t=m/n;

}

printf("s=%f\n",s);

}

3. 下面的程序是求Fibonacci数列1,1,2,3,5,8,13……的前40个数(数列中的每一个数都

是它的前两个数之和)。请将程序填完整。

void main()

{ long int f1=1,f2=1;

int i;

for(i=1;i<=【_______】;i++)

{ printf("%12ld %12ld\n ", f1, f2 );

f1=【__________】;

f2=【_____________ 】;

}

}

第4章习题

一、选择题

1. 下面关于一维数组的定义中,正确的是【】。

A)int n=10;

float a[n]={1.0,2.1,3.2};

B)#define N 10

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

C)int n;

scanf("%d", &n);

int a[n];

D)#define N 10;

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

2. 下列一维数组定义中,不正确的是【】。

A)float a[5+6];

B)int n=10, a[n];

C)#define M 10

int a[M+5] ;

D)float a[10], b[9] ;

3. 若有说明int a[5][4]; 则对其数组元素的正确引用是【】。

A)a[3+1][2] B)a(2)(3) C)a[0,2]D)a[3][5]

4. 在C语言中,引用数组元素时,其数组下标的数据类型允许是【】。

A)整型常量B)整型表达式

C)整型常量或整型表达式D)任何类型的表达式

5. 若有一维数组初始化语句int b[5]={1,2,3,4,5}; 且数组的起始地址为8050H(H表示十六进制),则

8058H是数组元素【】的起始地址(假设一个int型变量在内存占2个字节存储空间)。

A)b[1] B)b[4] C)b[0] D)b[2]

6. 要将20,30,40,50 存入数组b中, 下列正确的程序段是【】。

A)int i,b[4];

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

b[i]=(i+2)*10;

B)int b[4];

b={20,30,40,50};

C)int b[4];

b[1]=20,b[2]=30,b[3]=40,b[4]=50;

D)int b[4];

b[4]={20,30,40,50};

7. 下面的程序运行后输出结果是【】。

void main( )

{ int i, s=90, a[]={3, 5, 7, 9, 11};

for (i=1;i<5;i+=2)

s-=a[i];

printf("%d\n", s);

}

A)74 B)76 C)72 D)68

8. 下列程序运行后,输出值为【】。

void main()

{

int a[6]={1,3,5,7,9},b[]={2,4,6,7,3},c,d;

c=a[1]*b[2];

d=a[5]/b[4];

printf("%d,%d\n",c,D);

}

A)4,3 B)4,0 C)18,0 D)18,不确定值

9. 下面程序的功能是求一维数组中的最大值,请选择合适的答案填空。

#include

#define N 10

void main()

{ int a[N] = {66, 88, 94, 65, 98, 72, 76, 93, 79, 86};

int i,max;

max=a[0];

for(i=1;i

if(max

max=【】;

printf("Max is %d\n", max);

}

A)a[i-1] B)a[i] C)a[i+1] D)i

10. 下面的程序实现了求Fibonacci数列1,1,2,3,5,8,13……的前40个数(数列的前两项数

均是1,从第三项开始的数都是它的前两项数之和)。请选择合适的答案填空。

void main()

{ long int fib[40]={1,1};

int i;

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

fib[i]= fib[i-2]+【】;

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

printf("%12ld %12ld\n ",fib[i],fib[i+1]);

}

A)fib[i-1] B)fib[i-2] C)fib[i] D)fib[i+1]

11. 下列二维数组的定义中,正确的是【】。

A)int n=5; float a[n][5];

B)int a[][9];

C)#define L1 7

#define L2 8

float a[L1][L2];

D)int n, m; scanf ("%d%d",&n,&m); float a[m][n];

12. 若有说明int a[][3]={1,2,3,4,5,6,7}; 则a数组第一维的大小是【】。

A)2 B)3 C)4 D)无确定值13. 下列二维数组初始化语句中正确且与语句float a[]={0,1,2,0,4,0}等价的是【】。

A)float a[6]={0,1,2,0,4}; B)float a[]={0,1,2,0,4};

C)float a[7]={0,1,2,0,4,0}; D)float a[5]={0,1,2,0,4};

14. 若定义了数组int k[][4]={{1},{1,2,3},{5,6}};则数组共有【】元素。

A)6 B)9 C)10 D)12

15. 若int data[5][6];且数组的起始地址为100(十进制), 则元素data[3][2]的地址为【】。

A)120 B)113 C)140 D)126

16. 若有说明double b[7][6]; 对数组元素的非法引用是【】。

A)b[3][5] B)b[7][5] C)b[2*3][4] D)b[0][9-6]

17. 下面程序段的输出结果是【】。

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

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

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

s+=a[i][j];

printf("%d\n",s);

A)11 B)10 C)21 D)不确知数

18. 下面程序段的输出结果是【】。

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

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

printf("%d",x[i][2-i]);

A)1 4 7 B) 3 5 7 C) 3 6 9 D) 1 5 9

19. 下面的程序用来求方阵的主对角线元素之和,请将程序填完整。

#include

void main()

{ int i=0,s=0;

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

while (i<4)

{ s+= 【】;

i++; }

printf("%d\n",s);

}

A)a[3-i][3-j] B)a[i][3-i]

C)a[i][i] D)a[3-i][4]

20. 下面的程序运行后, 输出结果是【】。

void main( )

{ int i, j, a[5][5], s=0;

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

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

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

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

s+=a[i][i];

printf("%d", s); }

A)4 B) 6 C)0 D)不确定值

21. 运行下面的程序段,输出结果是【】。

int i;

char s[3][5]={"123","456","789"};

int sum=0;

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

sum=sum*10+s[i][i]-'0' ;

printf("%d",sum);

A)159 B)456

C)123 D)789

22. 下面的程序用来求二维数组的最大元素及其位置,请选择合适答案填空。

#include

void main()

{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},i,j,max,row,col;

max=a[0][0]; row=0; col=0;

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

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

if(【】)

{ max=a[i][j];

row=i;

col=j;

}

printf("max=%d,row=%d,col=%d\n",max,row,col);

}

A)max>a[i][j] B)max

C)max=a[i][j] D)max==a[i][j]

23. 若有定义char s[ ]="a boy" ;则数组的长度自动定义为【A 】。

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

24. 下面字符数组初始化语句正确,且与语句char c[]="string"; 等价的是【B 】。

A)char c[]={'s','t','r’,'i’,'n','g'};

B)char c[]={'s','t','r’,'i’,'n','g',’\0’};

C)char c[]={'string'};

D)char c[]='string';

25. 若有定义char str[7]; 要将键盘输入的字符串"a book" 赋给str,应使用【A 】。

A)gets(str); B)scanf("%s",str); C)str="a pear"; D)getchar(str);

26. 若已包含标题文件,并已有定义char s1[5],s2[]="abcd";int i;现要将字符串”abcd”赋

给s1,下述语句中错误的是【B 】。

A)strcpy(s1,"abcd");

B)s1=”abcd”;

C)for(i=0;i<5;i++) s1[i]=s2[i];

D)s[0]=?a?,s[1]=?b?,s[2]=?c?,s[3]=?d?;s[4]=?\0?;

27. 若有说明char s1[ ]=”good”, s2[]=”idea”, 则下列输出语句中正确的是【A】。

A)printf("%s%s",&s1[0],&s2[0]);

B)printf("%c%c",s1,s2);

C)putc(s1);putc(s2);

D)puts(s1,s2);

28. 下面程序段的运行结果是【】。

char st[5]={…a?,?b?,?\0?,?c?,?\0?};

puts(st);

A)‘a’’b’B)ab C)ab c D)ab 29. 若已经包含头文件,且已有定义:

char s[]={…a?,?\0?,?c?,?o?,?d?,?e?,?\0?};

int i;

若要输出“a code”,应使用【D 】。

A)puts(s); B)for(i=0;i<6;i++) printf("%s",s[i]);

C)printf("%s",s); D)for(i=0;i<6;i++) putchar(s[i]);

30. 下面程序运行后,输出结果是【】。

#include

void main( )

{ char s[]="abcde";

int i=3;

s[i]=s[5];

printf("%s", s);

}

A)abcde B)abcd C)eabcd D)abc 31. 下面程序段运行后,输出结果是【】。

main()

{ char s[20]="1234\0abcd";

printf("%d,%d\n",strlen(s),sizeof(s));

}

A)4,20 B)5,20 C)9,10 D)10,10 32. printf("%d \n ", strlen ("ATS\n012\1\\" )) ; 程序段的输出结果是【C 】。

A)11 B)10 C)9 D)8 33. 要将字符串str2连接到字符串str1后,应使用的函数是【C 】。

A)strcpy(str1,str2); B)strcat(str2,str1);

C)strcat(str1,str2); D)strcmp(str2,str1);

34. 要将字符串str2复制到字符串str1,应使用的函数是【A 】。

A) strcpy(str1,str2); B)strcat(str2,str1);

C)strcat(str1,str2); D)strcmp(str2,str1);

35. 设已包含标题文件,下面程序段的输出结果是【D】。

char s1[20]="135",s2[15]={"24"};

strcpy(s1,s2);

printf("%d\n",strlen(s1));

A) 5 B) 4 C) 1 D) 2 36. 判断字符串s1是否小于字符串s2, 应该使用【D 】。

A)if (strcmp(s1,s2) >0) B)if (s1

C)if (strcmp(s2,s1) ) D)if (strcmp(s2,s1) >0)

37. 若已定义

char s1[]="go to bed";

s2[]="go on";

假设已经执行预编译命令#include,则函数strcmp(s1,s2) 的值是【】。

A)0 B)-5 C) 5 D)13

38. 运行下面的程序段,输出结果是(【】)。

char s1[10]="abcd", s2[10]="efg", s3[]="hi";

strcat(strcpy(s2,s3),s1);

puts(s2);

A)hiabcd B)higabcd C)abcdhi D)abcdhig 39. 下面的程序用来输出两个字符串中对应相等的字符, 请将程序填完整。

#include

void main( )

{ char s1[]="look", s2[]="for";

int i;

for (i=0; s1[i]!='\0' && s2[i]!='\0'; i++)

if( 【C 】); putchar(s1[i]);

}

A)strcmp(s1,s2) B)strcmp(s1[i],s2[i])

C)s1[i]==s2[i] D)s1[]!=s2[i]

40. 下面程序运行后,输出结果是【】。

#include

void main( )

{ char s[]="after",count=0;

int i;

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

if (s[i]

printf("%d", count);

}

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

41. 下列程序的输出结果是【C 】

#include"stdio.h"

void main()

{ char s[]="father";

int i,j=0;

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

if(s[j]>s[i]) j=i;

s[j]=s[6];

printf("%s",s);

}

A) frther B) father C) f D) fath

42. 设char str[4][5]; 所说明的数组在存储区的起始地址为50(十进制),

则数组元素str[3][3]在存储区中的地址为【】。

A)62 B)86 C)63 D)68

43. 下面程序的结果是【】。

void main( )

{ int i=1,s=0;

char a[ ][5]={"1203","0340","4567","6522"};

while (i<4)

{ s+=a[i][i]-…0?; i++; }

printf("%d\n", s);

}

A)15 B)13 C)12 D)11

二、读程序写结果

1. 阅读下面程序,给出输出结果。

#include

void main()

{ int i,j,m[2]={0};

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

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

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

printf("%d,%d\n", m[0], m[1]);

}

2. 阅读下面程序,给出输出结果。

#include

void main()

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

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

{ if(i>=2) a[i]=a[i-1]+a[i-2];

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

}

printf("\n");

}

3.阅读下面程序,给出输出结果。

#define N 10

#include

void main()

{ int a[N]={5,8,7,3,4,2,6,1,0,9},i,t,j,k;

for(i=0;i

{ k=i;

for(j=i+1;j

if(a[j]

k=j;

if(i!=k)

{ t=a[i]; a[i]=a[k]; a[k]=t; }

}

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

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

}

4.阅读下面程序,给出输出结果。

#include

void main()

{ int a[3][3]={1,2,3,4,5,6,10,8,9},i,s1=0,s2=0;

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

{ s1+=a[i][i];

s2+=a[i][2-i];

}

printf(“s1=%d,s2=%d\n”,s1,s2);

}

5.运行下面程序,从键盘输入以下数据:1、6、9、12、1、4、8、14、6、12、11、10。

给出输出结果。

#include

void main()

{ int a[3][4],i,j,max,row,col;

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

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

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

max=a[0][0]; row=0; col=0;

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

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

if(max

{ max=a[i][j]; row=i; col=j; }

printf("max=%d,row=%d,col=%d \n",max,row,col);

}

6.阅读下面程序,给出输出结果。

#include

#include

void main()

{ int i=0;

char s1[20]= "tc",s2[20]= "program";

strcat(s1,s2);

while(s1[i]!='\0')

{ if((s1[i]>='a')&&(s1[i]<='z'))

s1[i]=s1[i]-32;

i++;

}

puts(s1);

puts(s2);

}

三、填空题

1. 下面程序的功能是打印杨辉三角形的前10行,请将程序填写完整。

#include

void main( )

{ int c[10][10],i,j;

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

{ c[i][0]=1; ___________; }

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

for(j=1;j

____________ ;

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

{ for(j=0;_____________;j++)

printf("%6d", c[i][j]);

printf("\n");

}

printf("\n");

}

2. 下列程序将一个二维数组a的行和列的元素互换,存放到数组b中,并将数组b输出。例如,

1 2 3 1 4

4 5 6 2 5

则a的行列互换后得到a的转置b为: 3 6 。请将程序填写完整。

#include

void main()

{ int i,j;

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

________________;

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

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

______________;

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

for(______________)

printf("%d%c",b[i][j],(j==1)?'\n':' ');

}

3. 下面程序判断字符串是否是回文。所谓回文是指如果字符串正读和反读都一样。请将程序填完整。

#include

#include

void main()

{ char s[100];

int i,len;

printf("输入字符串:\n");

gets(s);

len=__________;

for(i=0;i

if( __________) break;

if(__________) printf("是回文!\n");

else printf("不是回文!\n");

}

4.下面程序应用折半查找法从存有10个整数的升序数组a中对关键字m进行查找,如果找到则输出“OK”,否则输出“NO”,请填空。

#include

void main( )

{ int a[10],m,low=0,high=9,mid;

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

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

scanf("%d",&m);

while (low<=high)

{ mid=(low+high)/2;

if( m

else if (m>a[mid] ) low=_______________;

else break;

}

if (______________) printf("OK\n");

else printf("NO\n");

}

四、编程题

1. 下列的程序用来求数组a各元素的平均值,请将程序补充完整。

#include

void main()

{

int i, a[10]={3,6,2,8,12,4,7,23,6,16};

float avger=0.0;

printf("mean=%f\n" , avger);

}

第5章习题

一、选择题

1. 若定义int i,*p; 使p指向i的赋值语句是【】。

A)p=&i; B)*p=&i; C)*p=i; D)p=*&i;

2. 若定义int b=8,*p=&b; 则下面均表示b的地址的一组选项为【】。

A)*p, *&b B)*p, &*b

C)p, *&b, &*p D)&*p, p, &b

3. 若定义int a=8,b,*p=&b; 则下面对赋值语句p=&a; *p=a; 的正确解释为【】。

A)两个语句都是使p指向a

B)p=&a;是使p指向a,而*p=a是将a的值赋予*p

C)两个语句都是将a的值赋予*p

D)p=&a是将a的值赋予*p,而*p=a是使p指向a

4. 若定义int a,b,*p1=&a,*p2=&b; 使p1指向b的赋值语句是【】。

A)*p1=&b; B) p1=&p2;

C)p1=*&p2; D) p1=*&b;

5. 若有定义int a=7,b=9,*p1,*p2;下列赋值语句中,正确的是【】。

A)p2=&a; p1=&b; *&a=*p1; B)p1=&a; p2=*&p1; a=&*p2;

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

6. 若定义int i=100,*p=&i;设为i分配的内存地址为200~201,则【】。

A)p为201 B)*p为100 C)*p为200 D)p为100

7. 执行下面程序段后,c的值是【】。

int a=2,b=10,c,*p=&a;

c=a+b+*p;

A)12 B)14 C)22 D)24

8. 若定义int b[7],*p=b; 则p+3表示【】。

A)元素b[3]的值B)元素b[4]的地址C)元素b[4]的值D)元素b[3]的地址9. 若有定义int a[]={1,2,3,4}, *p=a, i=2;,则*(p+i)的值是【】。

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

10. 有下面的程序段,

int a[]={9,8,7,6,5,4,3,2,1,0},*p=a,i;

其中i=3,则对a中元素引用错误的是【】。

A)a[10] B)p[9]C)*(&a[i]) D)*(&p[i])

11.若定义int a[7],*p1=a,*p2=p1; 则对数组元素a[3]的正确引用是【】。

A)*(p2+3) B)*(p1+4) C)p1+3 D)*(&a[0]+4)

12. 若定义int b[8],*p=b; 则对数组元素b[4]地址的非法引用为【】。

A)p+4 B)&b+4 C)&b[0]+4 D)b+4

13. 下列程序的输出值为【】。

# include

void main()

{ int a[]= {1,3,5,7,9},d=1,*p=a;

c语言实训心得

C语言实践心得体会 在这个星期里,我们在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。 由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。 学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。个人认为课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: 1、加深对课堂讲授内容的理解 课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。 学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。 通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去"掩盖"程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。 2、熟悉程序开发环境、学习计算机系统的操作方法 一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓"环境"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 3、学习上机调试程序

C语言题库及答案

C语言题库及答案

姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

C语言实验指导书

《C语言》实验指导书 2016年10月

实验一C程序得运行环境与运行方法 一、实验目得 1。掌握所用得C语言环境得基本操作方法、 2.掌握编辑、编译、连接与运行C程序。 二、实验内容与要求 1、学习使用Visual C++6.0环境开发C程序。 (1)在磁盘上建立自己得文件夹,用于存放C程序,如“e:\cexam”。 (2)启动Visual C++6。0、执行“开始”-—“所有程序”——“Microsoft Visual Studio 6。0"——“Microsoft Visual Studio 6.0”命令,进入VC++编程环境,如图1 所示。 图1 MicrosoftVisual Studio6、0窗口 (3)新建C 程序文件。 执行“文件”——“新建”命令,单击如图2所示得“文件”选项卡,选中“C++So urceFile”;

图 2 新建文件 在“文件”文本框中输入文件名test1, 则C源程序被命名为test1。cpp,若想指定扩展名为.c,则需在“文件”文本框中输入文件名test1.c;在“目录”下拉列表框选择已经建立得文件夹,如,单击“确定”按钮,就新建了C源程序文件,并显示编辑窗口与信息窗口,如图3所示,然后在编辑窗口中输入程序。 (4)保存程序。 在如图3得界面输入程序代码。由于完全就是Windows 界面,输入及修改可借助鼠标与菜单进行,十分方便。当输入结束后,执行“文件”——“保存”命令,保存源文件。 图3编辑源程序(5)编译程序。信息窗口编辑窗口

执行“组建”--“编译[test1、cpp]”命令,弹出消息框,如图4所示,单击“就是"按钮,开始编译,并在信息窗口中显示编译信息。如果信息窗口中显示“test1.obj-0error(s),0 warning(s)",表示编译正确,没有发现错误与警告,并生成了目标文件test1、obj、 图4产生工作区消息框 如果显示错误信息,说明程序中存在严重得错误,必须改正,双击某行出错信息,程序窗口中会指示对应出错位置,根据信息窗口得提示分别予以纠正;如果显示警告信息,说明这些错误并未影响目标文件得生成,但通常也应该改正。 (6)连接程序。 执行“组建”——“组建[test1.exe]”命令,开始连接,并在信息窗口中显示连接信息、如果信息窗口中出现“test1.exe—0 error(s),0 warning(s)”,表示连接成功, 并生成了可执行文件test1、exe。 (7)运行程序。 执行“组建"——“执行[test1、exe]”命令,自动弹出运行窗口,如图5所示,显示运行结果。其中“Pressany key to continue”提示用户按任意键退出运行窗口,返回到VC++编辑窗口。 图 5 显示运行结果 (8)关闭程序工作区。 当一个程序编译连接后,VC++系统自动产生相应得工作区,以完成程序得运行与调试。若想执行第二个程序时,必须关闭前一个程序得工作区,然后通过新得编译连接,产生第二个程序得工作区。否则得话运行得将一直就是前一个程序。 执行“文件"--“关闭工作区命令",弹出得对话框如图 6所示,单击“就是”按钮,关闭工作区。 图 6 关闭所有文档窗口 (9)打开文件、 如果要再次打开C源文件,可以执行“文件”——“打开”命令,在查找范围中找到

C语言实训作业1

《C语言通识教育》实训指导书 (第一次) (2学时) 何天成 2016年月日

前言 C 语言是现代最流行的通用程序设计语言之一,它既具有高级程序设计语言的优点,又具有低级程序设计语言的特点,既可以用来编写系统程序,又可以用来编写应用程序。因此,C 语言正在被迅速地推广和普及。上机实验是该课程教学的一个重要环节,因此要求学生做一定数量的上机实验。本指导书可增强同学上机实验的针对性。整个教学和实验中,采用VC++6.0 作为实验环境,强调学生切实培养动手实践能力,掌握调试程序的方法,通过调试理解C语言程序运行的过程以及C 语言的语法规则,为后续的课程设计,计算机等级考试及其他应用做好充分的准备。 本实验指导书通过大量的实例,循序渐进地引导学生做好各章的实验。共计约14次实训课,其中每一讲内容分1、2两次上课。每个实验内容结构如下: (1)实验学时 (2)实验目的 (2)预习要求 (4)实验内容 (5)实验注意事项 (6)思考题 其中思考题属于扩展应用部分,学生可以根据自己的学习情况选择完成。 在实验之前,要求学生对实验作好预习工作。在实验中,学生根据实验指导中的内容进行验证与总结,然后再去完成实验内容中安排的任务。一般要求准备好相关代码,实验课中最好以调试和讨论为主。 实验结束后,应及时先以电子版的形式填写实验报告,然后再以A4纸打印。第3次实训课上交前2次实训报告,要求源程序要以标准格式打印实验报告上都必须粘贴上每个程序的运行结果截图,并在每个程序的输出截图中添加上自己的姓名/学号/专业等信息,以表示程序执行结果确是自己调试,而不是copy 别人的运行结果。通报告具体内容可根据实验内容和实验要求进行增删。实验报告一般要求包含:(1)实验题目 (2)设计思路或算法分析 (3)流程图 (4)程序源代码 (5)程序运行结果及分析

C语言实训题目及要求2020

C语言实训题目 第一题、每组从下面的5个题目中选择一个完成。 1、猜数游戏 涉及知识点:循环、随机数操作。 计算机“想”一个数([1,100])请人猜,如果猜对了,提示正确信息;否则告诉所猜的数是大还是小,同时提示下一次猜数的范围,直到猜对结束,最后给出游戏者猜测的次数。要求,程序以菜单方式工作。 2、显示万年历 涉及知识点:循环、格式化输出。 设计一个程序实现万年历的显示,要求: (1)输入一个年份(1900-2040),在屏幕上输出该年的日历。 (2)输出年历时,以月份和星期做表头。 (3)系统以菜单方式工作。 3、显示月历 涉及知识点:循环、格式化输出。 设计一个程序实现月历的显示,要求: (1)输入年月信息,在屏幕上输出该月的日历。 (2)输出日历时,以月份和星期做表头。 (3)系统以菜单方式工作。 4、英文单词统计助手 涉及知识点:循环、字符串数组(二维字符数组)、一维字符数组、数组元素的排序。 设计一个程序实现英文短文单词的统计任务,要求: (1)输入若干行英文,语句之间用逗号,句点分隔,单词之间用空格分隔。 (2)统计并输出单词的总数。 (3)统计各英文字符出现的次数(标点符号及空格不统计),并按出现的次数降序输出。(4)系统以菜单方式工作。 5、简单文本编辑器 涉及知识点:循环、字符串数组(二维字符数组)、一维字符数组、字符串处理函数。 设计一个程序实现英文文本的编辑,要求: (1)输入若干行英文,语句之间用逗号,句点分隔,单词之间用空格分隔。 (2)单词的查找:输入一个单词,查找该单词在短文中出现的次数及所在的行数和列数。(3)单词的替换:输入一个单词,在文中查找该单词,并将其替换为新单词。 (4)大小写转换:将文中的所有单词转换为大写或小写。 (5)系统以菜单方式工作。 第二题、每组从下面的4个题目中选择一个完成。(每个题目最多限选3次) 6、简单数学测验 涉及知识点:循环、文本文件操作、格式化读写文件、随机数、全局变量。

C语言考试题库及答案复习整理

C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是 ________D____. A) true B) 非零值 C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 7、C 语言程序的基本单位是_____C______. A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句

a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是______A_____. #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a

《C语言》实验指导书

内江职业技术学院 上机实验指导书 科目:C语言程序设计 系别:电商学院 班级:15软件1班 教师:王刚 2015—2016学年第一学期

《计算机基础》课程实验指导书 目录 实验一C语言概述 (1) 实验二基本数据类型 (3) 实验三输入输出和算法 (6) 实验四选择和循环结构 (10) 实验五循环结构和函数 (13) 实验六模块化设计 (14) 实验七一维数组和字符串 (18) 实验八多维数组和指针 (20) 实验九指针 (22) 实验十指针和结构体 (23) 实验十一链表和共同体 (26) 实验十二文件 (27) 教材和参考书 1、教材: 《谭浩强、张基温,《C/C++程序设计教程》,高等教育出版社。 2、参考书: (1)《(美)H.M.Deitel,P.J.Deitel著,薛万鹏译,《C程序设计教程》,机械工业出版社。 (2)杨路明,《C语言程序设计教程》,北京邮电大学出版社。

实验一C语言概述 一、实验目的 1、了解所用的计算机系统。 2、了解在该系统上如何进行编辑、编译、连接和运行一个C程序。 3、通过运行简单的C程序了解C程序的特点。 二、实验内容 1、熟悉C语言集成环境。 2、利用C语言集成环境进行编辑、编译、连接和运行一个C程序。 3、运行一个自己编写的程序,程序的功能是输出两行文字。 三、实验设备及环境 微机若干台,并安装有C语言软件。 四、实验步骤 1、熟悉所用的系统。了解Windows资源管理器的使用方法:文件的查看、复制、运行等方法,C所在目录,文本文件的建立方法。 2、进入C,并新建一个C源程序文件。 3、熟悉C的集成环境,了解各菜单项有哪些子菜单。 4、输入下面的程序,注意区分大小写。 #include void main() { printf("This is a C program.\n"); } 编译并运行程序。 5、关闭工作区,新建一个程序,然后输入并运行一个需要在运行时输入数据的

C语言实训

C语言实训 《C语言程序设计》实训 一. 实训目的: 1.熟悉编程环境; 2.练习输入输出函数; 3.学生成绩管理系统的设计。 二. 实训要求: 1.完成对学生成绩管理系统控制菜单的设计。完成管理菜单的界面; 2.输入:运用输入函数把10个学生的语文、英语、数学、体育、计算机5门课程的成绩放在一个数组,成绩由键盘输入;

3.计算:计算生成5门课程的平均成绩及10个学生的平均成绩,分别放在对应的数组中; 4.查找:查找并输出最高分数所对应的学生及课程; 5.计算:计算生成学生平均分方差; 6.main调用所有函数,实现全部函数功能。 三.实训内容: 1.流程图:

2.程序: #include #include int main() { printf("********************************************\n"); printf("* ==================== *\n"); printf("* 学生成绩统计系统*\n"); printf("* ==================== *\n"); printf("* *\n"); printf("* 1.输入学生成绩*\n"); printf("* 2.计算平均成绩*\n"); printf("* 3.查找最高成绩*\n"); printf("* 4.计算平均分方差*\n"); printf("* 5.退出系统*\n"); printf("* *\n"); printf("********************************************\n"); printf("请输入选项(1--5):\n"); int n; while (scanf("%d",&n)) { int a[10][5],i,j; int num[5]={0}; float subject[5],student[10],s; float sum=0,aver; switch(n) { case 1: //输入学生成绩printf("请输入成绩\n"); for(i=0; i<10; i++) { printf("学生%d\n",i+1); for(j=0;j<5;j++) { printf("科目%d: ",j+1); while(scanf("%d",&a[i][j]) != 1) //误输入判断 {

C语言实验指导书

《C语言程序设计》实验指导书 每次实验(10分)一共100分,最后折合成50分计入最终成绩。 第一次实验(一星期完成) ●内容一:熟悉编译环境和工具 在VS中键入以下的这段程序 1)关键字变色,自动缩近,智能提醒 2)代码风格和注释 3)编译出错,连接出错。修改错误 4)调试,断点,监控变量,进入函数,跳出函数。监控内存,监控堆栈 在linux中键入以下这段程序 1)熟悉VIM程序,gcc编译程序(开两个终端窗口) 2)熟悉GDB调试程序的基本技巧。(list,backstrac; break, watch,delete; next, continue, run; print,set,help) 其中,help命令是一个非常的参考,如果忘记了某条具体的命令,可以随时去参考help命令来得到相关的细节。 3)介绍《鸟歌的私房菜》这本书 ●内容二:登陆https://www.doczj.com/doc/a37949549.html,网站,在线提交。 1)熟悉基本的提交方法和规则 2)现场演示反作弊程序的效果 ●程序: 输入:两个整数,用空格分隔, 输出:两个整数的和,计算两个整数的和的功能,要求用函数实现,同时如果输入有错误,例如(12 abc)程序能够给出“error input”的提示。 参考输入: 12 33 参考输出: 45 参考输入: 12 abc 参考输出:

error input ●思考和扩展(无标准答案) 如果用户输入12 12abc 如何判断并终止程序,输出“error input”的提示 第二次实验(一星期完成) ●内容一:登陆ACM,演示OJ系统 1)介绍这个网站,有兴趣的同学可以去尝试一下() ●内容二:计算工资/小时程序 1)强制类型转换 2)一共有多少位的算法 3)整形数的溢出,以及针对特定问题,如何解决溢出问题 注意:linux编译下应该加上–lm 开关。 ●程序: 输入:工资数,小时数(整数,空格分隔)。 输出:工资/小时数(精确到小数点后2位),并根据四舍五入取整,然后将取整的数平方后计算一共有几位,后三位分别是什么? 参考输入: 2345 2 ←input (separate by space) 参考输出: 1172.50 ←average salary 1173 ← round off to integer 7 ← number of digit 0 2 5 ← the last three digit (separate by space) 第三次实验(两星期完成) ●内容一:介绍linux 下的grep,并给出相应的实例。重点介绍下面要用到的四个符号。 ●内容二:正则表达式 ^ 代表字符串开始 . 代表任意字符 $ 代表字符串末尾

C语言实训报告

C语言程序设计 实训报告 题目:红外避障机器人 院(系):信息工程系 专业:通信工程 学生姓名:韦嘉宝 学号: 24 指导教师:朱震周斌王旬全刘辉 2016 年10月8 日 目录 摘要 (1) 设计要求 (2) 设计步骤 (3) 代码编写 (4) 心得体会 (5) 参考文献 (6)

许多机器人使用雷达(RADAR)或者声纳(SONAR)来探测物体而不需要同物体接触。本文的方法是使用红外光来照射机器人前进的路线,然后确定何时有光线从被探测目标反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。由于红外遥控技术的发展,现在红外线发射器和接收器已经很普及并且价格很便宜。 随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能小车。 机器人使用红外线二极管LED 作为前灯,如图6-1 所示。红外线二极管发射红外光线,如果机器人前面有障碍物,红外线从物体反射回来,相当于机器人眼睛的红外检测(接收)器,检测到反射回的红外光线,并发出信号来表明检测到从物体反射回红外线。机器人的大脑——单片机A T89S52 基于这个传感器的输入控制伺服电机。红外线(IR)接收/检测器有内置的光滤波器,除了需要检测的980 nm 波长的红外线外,它几乎不允许其他光通过。红外检测器还有一个电子滤波器,它只允许大约38.5 kHz 的电信号通过。换句话说,检测器只寻找每秒闪烁38500 次的红外光。这就防止了普通光源像太阳光和室内光对IR 的干涉。太阳光是直流干涉(0Hz)源,而室内光依赖于所在区域的主电源,闪烁频率接近100 Hz 或120 Hz。由于120 Hz 在电子滤波器的38.5 kHz 通带频率之外,它完全被IR 探测器忽略。 本任务将搭建并测试红外线发射和检测器对。本讲需要用到的新部件如下: 元件清单 (1)红外检测器,2 个。 (2)IR LED(带套筒),2 个。 (3)470? 电阻,2 个。 (4)连接线,若干。 二、设计要求 (1)小车能够完成前进、后退、左转、右转等动作。 (2)机器人能够读出传感器电平变化,并作相应的动作变化。 (3)利用机器人所装配的两个探测器,探测和避开障碍物。 三、设计步骤

C语言实训题目

2011秋季C语言实训题目 1.学生成绩管理系统 功能要求: (1)可以从文件导入或录入多名学生的多门课程的学习成绩; (2)完成按姓名查找学生记录,并显示; (3)排序功能:按学生平均成绩进行排序; (4)插入功能:按平均成绩高低插入一条学生记录; (5)要求使用结构体,录入结果存放到文件; 显示要求: 程序输出菜单,用户按照提示操作,最终得到操作结果。 2.个人通讯录 功能需求: (1)可以对多名人物的信息进行输入; (2)显示所有的记录信息,若无记录,则给出提示信息; (3)可以按姓名查询该记录的有关信息; (4)可以按姓名对任意一种记录信息进行删除; (5)可以任意修改记录信息 (6)通过文件储存所输入的记录; (7)可以通过一个文件读入已有的通信录记录; 显示要求: 程序输出菜单,用户按照提示操作,最终得到操作结果。 3. 火车订票系统 功能要求: (1)列车原始信息从文件导入或从控制台录入,包括车次、票数等; (2)可以按车次进行列车信息查询; (3)客户对某一天订票,订票成功后,当日的票数需要被更改; (4)客户退票; (5)要求使用结构体; 显示要求: 程序输出菜单,用户按照提示操作,最终得到操作结果。 4、万年历系统 功能要求: (1)从2000年开始,用户输入年份与月份,将显示出该年该月份的日历,对应的星期。

(2)注意闰年情况 显示格式要求如下: (1)第一行显示月份(中英文都可以) (2)下一行显示星期,从周日到周六,中英文都可以 (3)下一行开始显示日期从1号开始,并按其是星期几实际情况与上面的星期数垂直对齐(4)程序输出菜单,用户按照提示操作,最终得到计算结果。 5、积分的实现 功能要求: (1)使用复合梯形公式求解函数f=1+x2、f=log(1+x)以及f=1/(1+x2)三个函数的定积分。(2)积分上下限及步长由C语言函数参数传递。 (3)用户输入函数编号,上下限和步长,程序输入结果。 显示要求: 程序输出菜单,用户按照提示操作,最终得到计算结果。 6、矩阵的运算 功能要求: 使用三个C语言函数分别实现两个矩阵的加、减和相乘功能。结果存放在第三个矩阵中。并编写程序验证三个函数功能。 每个函数的参数可选择(1):二位数组名,行数,列数 (2)指针变量名,行数,列数 返回值:用户自定义的运算状态,正常或其他异常情况。 显示要求: 程序输出菜单,用户按照提示操作,最终得到计算结果。 7. 链表的实现 编制一个程序,实现下面的要求 1. 程序启动后显示主菜单,包括下面的选项: 1. 链表查看 2. 插入节点 3. 删除节点 4. 链表存盘 5. 从文件调入 6. 退出 按下相应的数字键后进入各自的子功能 2. 每个子功能执行完毕后,返回并显示主菜单 3. 功能说明: 1. 链表查看:从头结点向后依次显示各结点中保存的数据 2. 插入节点:创建一个结点,输入新结点的数据,以及要插入的位置,将新结点插 入到链表中。 3. 删除节点:输入要删除的数据,从头结点依次查找,找到拥有该数据的结点后,

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言实验指导书

C语言程序设计实验指导书 沈岚岚吕元长编写 桂林电子科技大学信息科技学院 2012.03

前言上机实验的目的和要求 一上机实验的目的 上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。学习程序语言,上机实验的目的如下: 1 加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。 2 了解和熟悉C语言程序开发环境。熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。 3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。 4 在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。多动脑筋思考,将会对你有很大帮助。 二上机实验前的准备工作 1 了解所用的计算机系统的性能和使用方法; 2 复习和掌握与本实验有关的教学内容; 3 准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序; 4 准备好调试和运行时所需的数据。 三上机实验的步骤 1 调出C语言编译系统,进入C语言工作环境; 2 输入自己编制好的程序; 3 检查输入是否有错,及时更正; 4 进行编译和连接; 5 运行程序,分析结果。 四、实验结束,整理实验报告 实验报告应包括以下内容: 1 上机题目; 2 程序清单; 3 运行结果; 4 对结果的分析和本次获得的经验和体会。

C语言实训项目分析及源码

防灾科技学院 实习报告书 防灾科技学院灾害信息工程系 2015年制

项目一C语言实习 一、实习目的 本课程是网络工程专业的一门专业必修课程,是学生学习完C语言程序设计专业基础课程后,进一步学习其他专业课程前必须完成的一项实践教学环节。 本次实习通过1个综合性强、实用性强、趣味性强的应用实例,使学生进一步巩固C语言基本知识,掌握应用程序设计语言描述问题、分析问题和解决问题的方法和思想,为后继的面向对象程序设计、数据结构、Web应用技术、网络工程专业实习、网络工程生产实习、网络工程毕业实习课程等课程打下基础。 通过本课程的学习,使学生进一步明确学习目标、增强学习动力、培养学习兴趣。 二、实习任务概述 任务一:员工工资管理系统的设计与实现 本系统基于C语言,实现了一个小型的信息管理系统,主要包括以下功能: 1.信息的录入: a)首次进入系统,可以添加职工的工号、姓名、基 本工资、津贴、员工奖金等数据录入操作。 b)系统再次登录,可以从文件导入信息,也可以对 文件内容进行修改,保存退出。 2.删除操作:对离职的员工信息要从系统里删除。 3.显示操作:将结构体中职工信息输出到屏幕上。 4.查询与修改操作:分别按职工工号和职工姓名查询,修改职工信息并保存。 5.统计与排序操作:分别统计所有员工的总工资,实现对总工资的排序。 三、实习所用软件简介 VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。 使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用

C语言实验指导书

实验1 C语言初步与编程环境介绍(2学时) 1.目的要求 1)熟悉C语言基本结构, 2)熟悉VC控制台应用程序设计的使用方法。 2.实验内容 (1)创建项目,分别将教材P13和P14程序输入并编译。 (2)下列程序能正确运行吗?如果能,写出运行结果;如果不能,指出错误原因并改正。 Main() { printf("hello\n"); } 附:VC 6.0 环境的使用方法介绍 Microsoft Visual C++ (简称VC)是微软公司生产的基于其Windows系统的软件开发工具。它具有使用灵活,并与32位Windows内核(使用于Windows 95/98/NT/2000)高度兼容的特点,从而被Windows程序员们广泛使用。同时,VC同样可以加工处理C语言程序,与标准的ANSI C语言兼容。VC提供了一种控制台操作方式,本实验课程主要在控制台方式下进行设计运行。 一、什么是控制台程序? Win32控制台程序(Win32 Console Application)是一类Windows程序,它不使用复杂的图形用户界面,程序与用户交互时通过一个标准的文本窗口,通过标准的输入输出流(I/O Streams)进行。 一个最简单的控制台程序如下: #include // 包含使用标准输入输出库的头文件声明 main() { printf(”Hello World!”); //输出一个字符串 } 二、如何使用MSVC编写控制台程序?

控制台程序按照下面几个步骤进行。 1、打开VC集成开发环境。 双击桌面图标“Microsoft Visual C++ 6.0”,或者从系统菜单“开始”/“程序”/“Microsoft Visual Studio 6.0”/“Microsoft Visual C++ 6.0”(如图1),打开VC 开发环境(如图2)。 图 1 从开始菜单中打开VC开发环境 图 2 VC开发环境界面

C语言专业技能实训专题报告

实训专题报告 题目:贪吃蛇游戏控制台应用及proteus 仿真的实现 实训名称:专业技能实训 班级: 学号: 学生姓名: 指导教师: 哈尔滨工程大学 2016年02月10日

哈尔滨工程大学本科生专业技能实训专题报告 摘要 随着计算机及通讯技术的迅猛发展,人们对小游戏的追求也越来越频繁,所以就有了本文的产生:编写C语言程序实现贪吃蛇游戏。 贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。 作为一个完整的程序,必须考虑人机交流与用户体验。游戏的界面不能太丑,更不能连个简单的界面都没有。游戏应该有个比较漂亮的界面,在有必要硬件支持和软件的支持下,游戏开发者必须最大限度的使游戏美观。游戏的美观是一方面,游戏的内在素质是另一方面。一个游戏的优劣,最终由玩家决定。在游戏与玩家见面之前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进行。 在实现C语言部分的设计后,我们也完成了在proteus的环境中实现仿真,将程序进行迁移扩展,来达到通过仿真也能实现在单片机模拟环境中进行游戏。使得游戏更具有趣味性和新鲜感。 关键词:贪吃蛇;C语言;proteus仿真

哈尔滨工程大学本科生专业技能实训专题报告 1系统设计与算法分析 1.1需求分析与系统总体设计 根据课题所在项目的要求,需要开发出一款贪吃蛇小游戏,既能实现在控制台进行操作,同时也能将代码迁移到指定环境(protues仿真)中并实现相应的功能。这个游戏是人们生活中不可或缺的,从小到大,真正伴随我们成长的东西,游戏占有着很重要的地位.不论是一个玩具,还是一个能和伙伴一起开心的小游戏,都是能给我们留下很多美好的回忆.所以不论是什么样的游戏,只要它能迎合人们内心的某种需求,它的市场总会是好的,而贪吃蛇就是这样一个深受人们喜爱的游戏。一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键上的四个光标键控制向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇身体长一节,同时计10分,接着又会随机的出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体则游戏结束。结合以上分析,我们可以得到整个游戏的系统流程图,如图1.1。 1

大学C语言考试题库及答案

精选考试类应用文档,如果您需要使用本文档,请点击下载,另外祝您生活愉快,工作顺利,万事如意! 大学C语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题库吧。加油! 一单项选择题库 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

《C语言》实验指导书

《C语言程序设计》 实 验 指 导 书 华中师范大学信息技术系 二00九年三月

项目一:熟悉C语言的运行环境及简单程序设计 (11) 实验一熟悉C语言的运行环境 实验二c程序初步 (3) 实验三数据类型及输入输出 (5) 实验四运算符与表达式 (8) 项目二:流程控制、指针、数组、模块化程序设计 实验五分支程序设计 (9) 项目六循环程序设计 (11) 项目七函数 (12) 项目八数组 (13) 项目九指针 (15) 项目三:综合程序设计——竞赛编排及优胜排序 (注:每个项目应包含实验学习目标、实验内容、实验原理、实验设备、实验步骤、实验注意事项或实验思考等内容。 基本型实验应有明确的实验学习目标、详细的过程和具体的结果;综合设计型实验应有明确的实验学习目标、可参考的过程和实验结果评价标准)

实验基本要求 1、每次实验前,学生必须预习实验内容,实验程序必须自行编制、自行调试。 2、每次实验,学生都必须提交实验报告,内容包括实验目的、实验内容、实验程序、实验过程(软件的使用、程序的调试)等,见下面的实验报告模版。 3、学生第一次上机时,应在教师机指定文件夹下建立以自己学号+姓名的子文件夹,例如学号为2005683001的学生张三,应在教师机指定文件夹下建立“2005683001张三”的子文件夹,此文件夹就是学生张三存放本课程实验全部文档的文件夹,也是教师评价学生饰演成绩的主要依据。 4、学生每次实验完毕后,都应将实验报告、实验程序等文档上传到教师机自己建立的子文件夹中。 5、学生每次实验,都应该在考勤表上签到。 附 华中师范大学信息技术系c语言程序设计实验报告 实验目的: 实验设备(包括软件): 实验内容: 实验过程: 实验程序及实验结果: 实验体会:

C语言实训总结

(表D.0.2)---绿化(子单位)工程质量竣工验收报告表29804 实训总结报告 为期两周的项目工作就这样轻轻的落下了帷幕,在为期两周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,回想起这之间的点点滴滴,我感触良多。 在这次实训中,我对对C语言有了一个更深的了解认识,也对以前大一学的知识得到巩固。尝试运行编程中,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对C语言的学习产生浓厚的兴趣。 这次实训,最令人激动的就是合作做项目,虽然那只是一个很小的项目。每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。实训中深切体会到了千哥认真负责的伟大精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学方式让我们自己学会了自学,学会了去看懂别人的代码。更多是老师给的感动,每天在我们来之前就到了教室,在讲课中还给我们分享他在公司上班的一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。 通过这次实训,也使我们发现了许多问题。我认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的态度,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。还有就是对于未来,我觉得我还有许多方面需要提高。首先我要继续学习好C语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。 总之,这一切都成为我记忆里面的一个篇章,更是在学习C语言编程上的一个里程碑。世上没有一件工作不辛苦,没有一处人事不复杂。不要随意发脾气,谁都不欠你的 c1

相关主题
文本预览
相关文档 最新文档