文档库 最新最全的文档下载
当前位置:文档库 › 西交C语言复习资料

西交C语言复习资料

西交C语言复习资料
西交C语言复习资料

程序设计基础(C语言)复习资料

一、选择题

1.下列哪个不是算法的特征(C)

A.有穷性

B.可行性

C.不确定性

D.输入

2.(B)是用来描述对象的属性和行为的。

A.实体

B.类

C.对象

D.现象

3.下列哪些是算法的描述方法(ABCD )

A.自然语言描述法

B.流程图描述法

C.伪代码描述法

D.N-S流程图描述法

4.设x=9;y=++x;则产生的结果是(B )

A.x=9;y=9

B.x=10;y=10

C.x=9;y=10

D.x=10;y=9

5.下列说法不正确的是(B)

A.++、--只能用于变量

B. ++、--比负号运算符的优先级要高

C. ++、--的结合方向是:自右至左

D. ++、--常用于循环变量表达式中

6.下列运算符优先级最高的是(D)

A.&&

B.>

C.++

D.!

7.关于switch语句说法不正确的是(B)

A.case的次序不影响执行结果

B.每个case语句后面的常量可以不同

C.在执行完一个case语句后转到下一个case语句执行

D.每个case语句后面表达式只能是常量

8.下列说法错误的是(B)

A.for语句中,<表达式1>、<表达式2>和<表达式3>都可以缺省

B.<表达式2>缺省,系统会认为此处的值是0

C.for语句的三个表达式可以是任何类型的表达式

D.for语句可以嵌套使用

9.下面关于do-while语句和while语句说法正确的是(C)

A.while语句和do-shile语句肯定都要执行

B.两者运行结果不同

C.do-while在判断条件之前先执行循环体一次

D.while语句至少执行一次

10.关于数组,下列说法正确的是(A)

A.对数组的初始化操作在定义数组的同时进行

B.给数组赋初值时,必须所有数组元素都被赋值

C.给数组元素全部赋初值时,一定要指明数组的大小

D.引用数组元素的时候,可以一次引用数组中的全部元素

11.字符数组char a[]=“How do you do?”;的大小为(D)

A.10

B.11

C.14

D.15

12.有如下的数组static int a[10];则(B)

A.该数组没有被初始化

B.数组的所有元素都被赋值为0

C.数组的第一个元素是a[1]

D.数组共有11个元素

13.以下说法错误的是(B)

A.C程序必须从main( )函数开始执行

B.所有函数在定义上讲都是相互独立的,不存在嵌套定义

C.C语言中有两类函数,系统提供的库函数和用户自定义的函数

D.参数的作用是向函数传递不同的数据

14.关于形式参数,下面说法错误的是(C)

A.对于形参,虽然定义了它,只有当函数被调用时,形参才在内存中开辟空间

B.调用结束后,形参自动从内存中被释放掉

C.在函数定义中,可以不给出形参类型,调用的时候再定义

D.实参与形参的关系是赋值与被赋值的关系

15.关于return语句,下面说法错误是是(C)

A.它的功能是将表达式的值作为函数的返回值返回

B.函数中可以有多个return语句,执行到哪个就从哪一个return语句返回

C.return可以返回多个值

D.return(表达式)语句中的表达式值的类型与定义函数时函数的类型一致

16.关于指针,下列说法错误的是(D )

A.指针变量是用来存放内存地址的

B.&表示取变量地址运算

C.*表示取指针变量所指向的变量内容的运算

D.可以将整数赋给指针变量

17.对于如下的表达式:

int a[3][4], *p;

p=*a;

执行p++操作之后,*p表示取(D )的内容。

A.a[0][0]

B.a[1][0]

C.a[1][1]

D.a[0][1]

18.以下说法错误的是(D)

A.int(*p)();表示p被定义为一个指向返回值为整数的函数的指针

B. 使用指向函数的指针是结构化程序设计的一种效手段

C.char **p相当于char *(*p)

D.指针数组的元素补仅能存放地址,还可以存放其他数组的元素

19.关于链表,下列说法错误的是(B)

A.链表是动态分配的一种结构,它根据需要开辟内存单元

B. 链表有头指针变量head,它是链表的第一个结点

C.如果要在链表中增加新的结点,需要申请存储空间

D.如果不再使用链表,则应释放所占的存储空间

20.以下函数,哪个不属于动态申请空间的标准库函数(D)

A.malloc( )

B.calloc( )

C.free( )

D.strcmp( )

21.关于链表的插入和删除,下列说法错误的是(B)

A.插入位置包括表头、表中和表尾

B.从链表中删除一个结点,就是把它从内存中抹掉

C.要删除链表中的某个结点,需自己定义删除函数

D.删除结点要注意删除的结点是否是头结点

22.已知int j,i=1;执行语句“j=j++;”后,变量i的值是(B)

A.1

B.2

C.-1

D.-2

23.执行下列两个语句后,输出的结果为(D)

char c1=66,c2=98;

printf(“%c,%d”,c1,c2);

A.66,98

B.66,b

C.B,97

D.B,98

24.以下不能定义为用户标识符搞错是(D)

A.scanf

B.V oid

C._3com_

D.int

25.为了判断两个字符串s1和s2是否相等,应当使用(D)

A.if(s1==s2)

B.if(s1=s2)

C.if(strcpy(s1,s2))

D.if(strcmp(s1,s2)==0)

26.以下程序的输出结果是(A)

main()

{

int a=4,b=5,c=0,d;

d=!al&!b||!c;

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

}

A.1

B.0

C.非0的数

D.-1

27.若指针P已正确定义,要使P指向两个连续的整型动态存储单元,不正确的语句是(A)

A.p=2*(int*)malloc(sizeof(int));

B.p=(int*)malloc(2*sizeof(int));

C.p=(int*)malloc(2*2);

D.p=(int*)calloc(2,sizeof(int));

28.以下程序中,while循环的循环次数是(D )

main()

{ int i=0;

while(i<10)

{ if(i<1)continue;

if(I==5)break;

i++;

}

……

}

A.1

B.10

C.6

D.死循环,不能确定次数

29.若int i=10;执行下列程序后,变量i的正确结果是(C)

switch(i)

{

case 0:i+=1;

case 10:i+=1;

case 11:i+=1;

default:i+=1;

}

A.10

B.11

C.12

D.13

30.有如下程序,该程序的输出的结果是(C)

int addc(int a, int b, int c);

{

c=a+b;

return(c);

}

main()

{

int x=4,y=2,z,r;

z=x+y;

r=addc(addc(x,y,x),addc(y,z,x),z);

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

}

A.36

B.12

C.14

D.6

二、填空题

1.计算机系统是由(硬件系统)、(软件系统)两部分组成。

2.软件系统包括(系统软件)、(应用软件)两部分。

3.一个程序包括两方面内容:(算法)和(数据结构)。

4.程序执行过程中其值保持不变的量称为(常量)。它又可以分为(整型常量)、(实型常量)、(字符型常

量)。

5.五种算术运算符分别是(+)、(-)、(*)、(/)、(%)。

6.由关系运算符连接表达式构成的式子,称为(关系表达式),其值为(0)或(1)。

7.(break)语句的作用是从switch、for、while或do-while语句中跳出来,终止这些语句的执行,把控制

转到被中断的循环语句或switch语句之后去执行。

8.若有语句:if(x

z=x;

else z=y;

则可以用条件表达式来表示:(z=(x

9.putchar()函数的函数功能是(将给定的一个字符常量或字符变量的内容输出到显示器屏幕上)

10.对于数组int a[5][6]的数组元素的引用最多到(a[4][5])。

11.标准字符串处理函数的头文件是(

12.Static char a[15]={…H? …,? …a? …,? …p? …,? …p? …,? …y? …,? ….?};这个初始化语句中有9个数组元素没有给出初值,系

统会自动对它们赋值为(0)或(‘\0’)

13.有如下的表达式:

int a[20],*p;

p=a;

那么p+3表示的是(a[3])的地址。

14.在C语言中,字符串实际上是指字符串第一个字符的(指针),所以字符串数组中的每一个元素实际上

是每一个字符串的(首地址)。

15.由于指针变量直接指向变量,所以称为(单级间址)。而如果通过指向指针的指针变量来访问变量则构

成(二级间址)。

三、程序填空题

1.求1+2!+3+…+20!的和。

#include

void main()

{

float n,s=0,t=1;

for(①n=1;n<=20;n++)

{

②t*=n;

③s+=t;

}

printf(“1+2!+3+…+20!=%e\n”,s);

getch();

}

2.下面程序求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222…。

#include

void main()

{

int a, n, count=1;

long int sn=0,tn=0;

printf(“please input a and n\n”);

scanf(①“%d,%d”,&a,&n );

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

while(②count

{

tn=tn+a;

③sn=sn+tn;

a=a*10;

④++count;

}

printf(“a+aa+…=%ld\n”,sn);

getch();

}

3.下面程序用条件运算符的嵌套完成的:学习成绩90分以上的同学用A表示,60~89分之间的用B表示,

60分以下的用C表示。

#include

main()

{

int score;

char grade;

printf(“please input a score \n”);

scanf(①“%d”,&score);

②grade=score>=90??A? score>=60??B?:?C?);

printf(“%d belongs to %c”,score,grade);

getch();

}

四、程序设计题

1.编写一个程序,要求能够将输入的任意一个三位数颠倒过来。

解:#include

void main()

{

int units,tens,hundreds,n;

printf("Please input a number(100~999):");

scanf("%d",&a);

units=n%10;

tens=(n%100)/10;

hundreds=n/100;

printf("The reverse of %3d is :%ld %ld %ld\n”,n,units,tens,hundreds);

}

2.将三个整数输入计算机,编写程序,将居中的值显示出来。

解:#include

void main()

{

int a ,b,c;

printf(“Please input three number:”);

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

if(a>b) if(b>c) printf("mid=%d\n",b);

else if(a>c) printf("mid=%d\n",c);

else printf("mid=%d\n",a);

else if(a>c) printf("mid=%d\n",a);

else if(b>c) printf("mid=%d\n",c);

else printf("mid=%d\n",b);

}

3.编写一个求一元二次方程ax2+bx+c=0的根的程序。

解:#include

#include

void main()

{

int a,b,c;

float p,q,disc,x1,x2;

printf(“Please input three number:”);

scanf(“%d%d%d”,&a,&b,&c);

disc=b*b-4*a*c;

p=-b/(2*a);

q=sqrt(disc)/(2*a);

x1=p+q; x2=p-q;

printf(“x1=%5.2f\t x2=%5.2f\n”,x1,x2);

}

4.用选择法对任意输入的一个10元整数数组排序(从小到大)。解:#include

void main()

{

int a[10];

int i,min,k,temp;

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

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

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

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

{

min=i;

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

{

if(a[k]<=a[min]) min=k;

}

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

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

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

}

5.利用冒泡法将10个数组元素按从小到大顺序排列。

解:#include

void main()

{

int a[10],i,j,temp;

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

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

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

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

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

if(a[j]>a[j+1])

{

temp=a[j];

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

a[j+1]=temp;

}

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

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

}

6.求一个3x3矩陈对角线元素之和。

解:#include

void main()

{

int a[3][3],sum=0;

int i,j;

printf("enter data:\n");

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

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

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

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

sum=sum+a[i][i];

printf("sum=%6d\n",sum);

}

7.用指针设计一个可以计算字符串长度的程序

解:int strlen(s)

char *s;

{

char *p=s;

while(*p!='\0')

p++;

return(p-s);

}

8.编写一个可以实际交换两个变量数值的函数。

解:#include

swap(int *p,int *q)

{

int temp;

temp=*p;

*p=*q;

*q=temp;

}

void main()

{

int a , b, *pa,*pb;

printf("Please input 2 integer numbers:");

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

pa=&a;

pb=&b;

swap(pa,pb);

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

}

9. 写一个程序,求一个字符串的长度,在main 函数中输入字符串,并输出其长度。

解:#include

int len(char *p)

{

int n=0 ;

while(*p!='\0')

{

n++;

p++;

}

return(n);

}

void main()

{

int length;

char *str[20];

printf("Please input a string :\n");

scanf("%s",str);

length=len(str);

printf("the length of the string is %d",length);

}

10. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。例

如:153是一个“水仙花数”,因为153=13+53+33。

解:#include "stdio.h"

main()

{

int i,j,k,n;

printf("water flower's number is:\n");

for(n=100;n<1000;n++)

{

i=n/100;//分解出百位

j=n/10%10;//分解出十位

k=n%10;//分解出个位

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf("%-5d",n);

}

}

printf("\n");

}

11. 用公式π4 ≈1+13 -15 +……求π的近似值,直到最后一项的绝对值小于10-6为止,请编程实现。 解: #include "stdio.h"

#include "math.h"

main()

{

int s;

float n,t,pi;

t=1.0; pi=0; n=1.0; s=1;

while((fabs(t))>1E-6)

{

pi=pi+t;

n=n+2;

s=-s;

t=s/n;

}

pi=pi*4;

printf("pi=%10.6f\n",pi);

}

12.从键盘输入20名学生久成绩,要求用“选择法”对20名学生的成绩由高到低排序。

解:#include "stdio.h"

sort(int **p,int n)

{

int i,j,*tp;

for(i=0;i

{

for(j=i+1;j

if(**(p+i)>**(p+j))

{

tp=*(p+i);

*(p+i)=*(p+j);

*(p+j)=tp;

}

}

}

main()

{

int i,n,da[20],**p,*pu[20];

scanf("%d",&n);

for(i=0;i

pu[i]=&da[i];

for(i=0;i

scanf("%d",pu[i]);

p=pu;

sort(p,n);

for(i=0;i

printf("%d 12",*pu[i]);

printf("\n");

getch();

}

C语言期末考试题(含答案)

《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=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() 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!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=1,j=1,k=2; if((j++||k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 9、有以下程序: #include voidmain(){ inti,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、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

C语言大作业报告

目录 一、设计题目 二、目标和需求分析 三、开发工具 四、应用平台 五、程序模块 1、游戏盒子 2、2048 3、扫雷 4、贪吃蛇 六、开发日志 七、程序调试及运行 八、程序开发总结 总结:虽然做出来的东西真的没什么技术水平,但是我们尽量把这个东西的每个方方面面做完整。

目标和需求分析一个小的游戏盒子,可以用来启动其它游戏,当然,其它游戏也是我们大作业的编写内容,平时可以玩玩用来打发时间 用到的工具VS2005 Easyx图形库 Pthread线程库 Hge 分工 秦贤康 组织大家,编写主程序,及构思计划,技术指导 王尧 所有的文件处理,数据算法方面优化 王懿晨 合作2048模块 杨梓晗 图片资源加工,音乐裁剪,按钮制作 程维驰 合作扫雷模块 应用平台:WINDOWS X64

程序功能模块: 一、 安装包:(写入开始菜单快捷方式,桌面快捷方式,开机启动等)//pascal 脚本编写 #define MyAppName "C 大作业" #define MyAppVersion "2.0" #define MyAppPublisher "五人小组" #define MyAppExeName "1.exe" [Setup] AppId={{49DB1DB4-FAE9-4ACB-A4B9-E5C420C5F10B} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} DefaultDirName={pf}\{#MyAppName} DisableDirPage=yes DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes (剩余代码未全部给出) 安装包 内嵌:C 语言报告 游戏盒子 开机启动,桌面快捷方式等 进入动画,左侧动画 启动模块 通知,和显示游戏信息 2048 扫雷 贪吃蛇 主界面信息显示 通知栏信息显示 意见箱

C语言期末考试题(含答案)

《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=26.8%3; B )1+2=x2; C )x3=0x12; D ) x4=1+2=3; 5、设有定义: float a=2,b=4,h=3;以下 C 语言表达式中与代数式 1 (a b) * h 的计 2 算结果不 相符的是( ) . 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,2 B ) 2,2,1 C )2,2,2 D )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);} 程序执行后的输出结果是( )

西北工业大学C语言大作业实验报告

学院*****************

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (4) 2 详细设计 (4) 2.1程序结构 (4) 2.2主要功能 (10) 2.3函数实现 (13) 2.4开发日志 (18) 3 程序调试及运行 (20) 3.1程序运行结果 (20) 3.2程序使用说明 (22) 3.3程序开发总结 (22) 4 附件(源程序) (22)

1 摘要 1.1 设计题目 折半法查找演示程序 1.2 设计内容 本程序是一个演示折半查找算法的演示程序。由用户输入查找的数据表列和查找的数据,系统在将数表排序后可以在屏幕上演示在排序后的表列中按折半查找法查找该数据的具体过程(通过每次查找的中间数据、下次查找表列等,具体效果见下图),支持多次演示、错误提醒,程序暂停演示功能。 1.3 开发工具 Visual C++ 6.0和Win32。

1.4 应用平台 Windows 2000/XP/Vista 32位 2 详细设计 2.1 程序结构 程序功能模块: 本程序主要由五大模块组成:程序说明模块、输入模块、排序模块、折半法查找及显示模块、进程选择模块。各模块的主要功能如下: 程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。 此部分模块主函数源代码如下: int a[N]; /*存储要查找的数表,用户输入*/ int i,n,num,count; /*count为折半次数计数器,n为数表数据个数,num存储所查数据*/ int top,bottom,mid; char c; /*存储选择函数中的输入的字符y或n*/ int flag=1; /*折半法循环标志变量*/ int loc=-1; /*存储所查找数据位置*/ double k=0; p_s(76);puts("\n"); /*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文) printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n"); puts("\n"); /*程序欢迎语*/ p_s(13); printf("制作者:***************** "); /*作者信息*/ p_s(4); printf("Email:************************ "); /*电子邮件*/

C语言期末上机考试题及答案

C语言上机考试题—01 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include main() { int k,m,s=0,i,b=0; for(k=10000;k<=20000;k++ ) { if(k%10==7) { for(i=2,b=0;i main() { int a; printf("请输入一个需要判 断的年份:\n"); scanf("%d",&a); if(a%4==0&&a%100!=0) printf("是闰年\n"); else if(a%400==0) printf("是闰年 \n"); else printf("不是闰 年\n"); } C语言上机考试题—02 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include fun(int n) { int i,j=0; for(i=2;i #include main() { char str[81]; int i,j=0,w=1,s=0; printf("请输入一串字符: \n"); gets(str); for(i=0;i

C语言程序大作业.doc

大连理工大学C程序设计(大作业)总结报告学生成绩录入处理系统 学生姓名:罗 专业班级: 学号: 联系电话: Email : 完成日期:2015年 5 月29日

一、设计任务 我的程序设计是一个学生成绩录入及处理的程序,该程序包括多种功能,能够满足大多数的学生成绩管理处理。主要能够实现的目的主要有: 第一.学生姓名学号既包括三门成绩等信息的录入,并保存到文件d://score.txt。 第二.对每个学生的成绩进行求平均分及按平均分排序的数字处理。 第三.对输入错误的学生信息加以修改重新排序保存。 第四.增加学生信息,重新排序,加以保存。 第五.按每个学生的平均分进行表格化和图形化处理。 第六.实现某位同学的信息查找,包括姓名,学号,每科成绩及平均分。 以上功能全都可以实现,但是注意录入信息的要求,下面会有注释。 二、程序设计与实现 1.结构框图 下图描述预期实现题目的设计方案或功能设计的组成结构。绘制成框图,如图所示是我设计的成绩信息管理程序设计的结构图示:

2.功能模块设计及其流程图 (1) 数据描述与存储 该学生信息统计系统设计一个全局结构体变量,将学生的姓名,学号,各科成绩及平均分保存在结构体,然后供设计各种程序调用,以完成修改,增加,排序和数据显示的功能。学生成绩数据以二进制存储在d://score.txt文件,可以利用程序随时进行增加和修改,同时它会自动排序。的描述题目所使用的核心数据,如;结构体类型定义及结构体成员含义说明。并说明所使用的数据存储方法,指定文件的路径和文件名,保存数据的格式和读数据的目的。 (2) 结构体定义及介绍 typedef struct rec /*定义一个结构体类型*/ { char name[20]; /*第一个元素为学生姓名,20个字节*/ short number; /*第一个元素为学生学号,2个字节(输入注意不要超出)*/ short score[M]; /*(M为全局3)依次定义三门科目分数:数,英,机*/ float average; /*定义浮点型平均数,保留2位小数,有函数计算赋值*/ }score; score stu[N]; /*(N为全局100)定义全局总数100个学生信息以录入*/ (3)对于该程序的一点说明 1.学号在0~32768之间,请录入前对学号做好数据处理。 2.该系统的成绩满分为一百分制,如有某科成绩不符合应提前处理。 3.录入退出后,同样的数据不需两次输入,可直接运行程序处理及查看。 4.保存退出后请勿删除文件,数据会丢失。 5.柱状图的分辨率在十位数。 (4) 主要函数功能基变量说明

西工大C语言上机考试题库

1:2:3 #include #include int main() { int i=0,j=0,k=0,a=0,b=0,c=0,l=0,m=0,n=0,d=0,p=0,q=0; for(i=1;i<=3;i++) { for(j=1;j<=9;j++) { if(i!=j) { for(k=1;k<=9;k++) { if(k!=j&&i!=k) { a=i*100+j*10+k; b=a*2; c=a*3; l=b%10,d=c%10; m=(b%100)/10,p=(c%100)/10; n=b/100,q=c/100; if(l!=0&&m!=0&&n!=0&&d!=0&&p!=0&&q!=0) if(i!=l&&i!=m&&i!=n&&j!=l&&j!=m&&j!=n&&k!=l&&k!=m&&k!=n) if(i!=d&&i!=p&&i!=q&&j!=d&&j!=p&&j!=q&&k!=d&&k!=p&&k!=q) if(l!=d&&l!=p&&l!=q&&m!=d&&m!=p&&m!=q&&n!=d&&n!=p&&n!=q) printf("%d %d %d\n",a,b,c); } }

} } } return 0; } 8 #include"stdio.h" int main() { int a,b[10],m=0,n=0,p; int i,j,k; scanf("%d",&a); for(i=1;i<=a;i++) { m=0; n=0; p=i; for(j=0;p!=0;j++) { b[j]=p%10; p=p/10; } for(k=0;k

C语言大作业报告范文

学院XX学院

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (3) 2.3函数实现 (3) 2.4开发日志 (4) 3 程序调试及运行 (4) 3.1程序运行结果 (4) 3.2程序使用说明 (4) 3.3程序开发总结 (4) 4 附件(源程序) (4)

1 摘要 1.1 设计题目 (A)求最大数;(B)高次方数的尾数 1.2 设计容 (A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数1.3 开发工具 Visual C++ 6.0和Win32。 1.4 应用平台 Windows XP 32位 2 详细设计 2.1 程序结构 (A)求最大数

定义变量a、b、c,a从100至999递增,b为555555,用b除以a,判断是否可以整除,若可以,则把a的值赋给c,a自加1;若不可,a自加1。重复以上步骤,直到a>999,输出c。循环语句采用for 循环。 (B)高次方数的尾数

定义变量i、j,i从1至13递增,j初值为1。用j乘以13,用得到的乘积除以1000并取其余数,赋给j,i自加1。重复以上步骤,直到i>13,输出j。循环语句采用for循环。

2.2 主要功能 程序功能:(A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数。 原理和方法: (A)题目的原理和方法:因为要求的是三位数,就用555555从小到大依次除以100到999的所有数,并判断能否整除,最后一个可以整除555555的数即为所求。循环语句采用for循环。 (B)题目的原理和方法:乘积的最后三位数只与乘数和被乘数的后三位数有关,因此用1乘以13,再除以1000并取余数,用余数乘以13,再除以1000并取余数,依次进行下去,累乘13个13后除以1000取得的余数即为所求。循环语句采用for循环。 2.3 函数实现 (A)求最大数 int a,b=555555,c; /*定义变量,赋初值*/ for(a=100;a<=999;a++) /*FOR循环*/ { if(b%a==0) /*利用IF语句判断b是否可以被a整除*/ c=a; /*将555555的约数赋给c*/ } printf("%d\n",c); /*输出c*/ (B)高次方数的尾数 int i,j=1; /*定义变量,赋初值*/ for(i=1;i<=13;i++) /*FOR循环*/ { j=j*13%1000; /*将j乘以13的乘积的后三位数赋给j*/ } printf("%d\n",j); /*输出j*/ 2.4 开发日志 (A)选定这个题目后,我先分析此题用何种算法完成,确定了使用FOR循环并限定除数围,然后画出程序框图,再一步步编写源代码。调试过程很顺利,只有一个地方忘加了“;”。运行程序后,结果非常满意。 (B)这个题目不难,但是也不简便,我想到只取三位数的方法,并使用FOR循环,然后画出程序框图,再一步步编写源代码。调试过程发现对其中一个变量的初值是1还是13有待解决,分析程序后发现应该用1,然后进一步调试,运行,直至结果正确。

C语言程序设计期末考试试题及答案

C 语言程序设计 试 题 (2008 /2009 学年 第 二 学期) 一. 选择题(满分30分,每题2分) 1.若a 、b 、c 都定义为int 类型且初值为0,则以下不正确的赋值语句是 D 。 A. a=b=c+8; B. a+=y+3; C. c++; D. a+b+c 2. 已知int j ,i=1;执行语句“j=i++;”后,变量i 的值是 B 。 A. 1 B. 2 C. –1 D. -2 3.执行下面程序: #include "stdio.h" void main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(“%d,%d,%d ”,a,b,c); } 则输出结果是: A 。 A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5 4.若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为 D 。 A. a< >0 B. !a C. a=0 D. a 5. for (j=0;j<11;j++);循环结束后,j 的值是 B 。 A. 12 B. 11 C. 10 D. 9 6. C 语言中函数返回值的类型由 D 决定的。 A. return 语句中的表达式类型 B. 调用该函数的主调函数的类型 C. 调用函数时临时决定 D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。 A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。 C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。 8. 若int i=10;执行下列程序后,变量i 的正确结果是 D 。 switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 9. 下列语句中不正确的字符串赋值或初始化的是 C 。 A . char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序: #include void main() { int a=1,b=0,c=0; if (a

西工大c语言实验100题06

第六次CH1005 #include int main() { int i,a[500]={0},n,*p,j=0,k=0; scanf("%d",&n); for(i=0;i

{ int n; char a[500],b[500]={'\0'},*p1,*p2; gets(a); scanf("%d",&n); p1=a;p2=b; for(p1=p1+n;*p1!='\0';p1++,p2++) *p2=*p1; puts(b); return 0; } #include #include int main() { char str1[50],str2[20]; int m,length; gets(str1); scanf("%d",&m); if((strlen(str1)-m+1)>=20) { printf("ERROR\n"); }else { for(int i=m;str1[i]!='\0';i++) { str2[i-m]=str1[i]; } str2[i-m]='\0'; printf("%s\n",str2); } return 0; } CH1011 #include

C语言程序设计期末考试题及答案

装订线

装订线

装订线

订 线

庄子云:“人生天地之间,若白驹过隙,忽然而已。”是呀,春秋置换,日月交替,这从指尖悄然划过的时光,没有一点声响,没有一刻停留,仿佛眨眼的功夫,半生已过。 人活在世上,就像暂时寄宿于尘世,当生命的列车驶到终点,情愿也罢,不情愿也罢,微笑也罢,苦笑也罢,都不得不向生命挥手作别。 我们无法挽住时光的脚步,无法改变人生的宿命。但我们可以拿起生活的画笔,把自己的人生涂抹成色彩靓丽的颜色。 生命如此短暂,岂容随意挥霍!只有在该辛勤耕耘的时候播洒汗水,一程风雨后,人生的筐篓里才能装满硕果。 就算是烟花划过天空,也要留下短暂的绚烂。只有让这仅有一次的生命丰盈充实,才不枉来尘世走一遭。雁过留声,人过留名,这一趟人生旅程,总该留下点儿什么! 生活是柴米油盐的平淡,也是行色匆匆的奔波。一粥一饭来之不易,一丝一缕物力维艰。 前行的路上,有风也有雨。有时候,风雨扑面而来,打在脸上,很疼,可是,我们不能向生活低头认输,咬牙抹去脸上的雨水,还有泪水,甩开脚步,接着向前。 我们需要呈现最好的自己给世界,需要许诺最好的生活给家人。所以,生活再累,不能后退。即使生活赐予我们一杯不加糖的苦咖啡,皱一皱眉头,也要饮下。 人生是一场跋涉,也是一场选择。我们能抵达哪里,能看到什么样的风景,能成为什么样的人,都在于我们的选择。 如果我们选择面朝大海,朝着阳光的方向挥手微笑,我们的世界必会收获一片春暖花开。如果我们选择小桥流水,在不动声色的日子里种篱修菊,我们的世界必会收获一隅静谧恬淡。 选择临风起舞,我们就是岁月的勇者;选择临阵脱逃,我们就是生活的懦夫。 没有淌不过去的河,就看我们如何摆渡。没有爬不过去的山,就看我们何时启程。 德国哲学家尼采说:“每一个不曾起舞的日子,都是对生命的辜负。”让我们打开朝着晨光的那扇窗,迎阳光进来,在每一个日出东海的日子,无论是鲜衣怒马少年时,还是宠辱不惊中年时,都活出自己的明媚和精彩。 时间会带来惊喜,只要我们不忘记为什么出发,不忘记以梦为马,岁月一定会对我们和颜悦色,前方也一定会有意想不到的惊喜。 人生忽如寄,生活多苦辛。 短暂的生命旅程, 别辜负时光,别辜负自己。 愿我们每一个人自律、阳光、勤奋,

C语言大作业(图书管理)

c语言图书管理系统 主要功能: 1. 新进图书基本信息的输入。 2. 显示全部记录 3. 按图书名称查询图书基本信息。 4. 根据图书名称对撤消的图书信息进行删除。 5. 按图书名称从小到大排序。 6. 统计某价格以上的图书数量。 7. 列出所有未借出去的图书信息。 基本信息:图书编号、图书名称、单价、作者、存在状态、借书人姓名、性别、学号等 #include #include #include #include typedef int BOOL; typedef struct bookinfo { char number[15];/*产品编号*/ char name[30];/*产品名称*/ float price;/*单价*/ char auther[20];/*作者*/ BOOL isExit;/*存在状态*/ char lendername[20];/*借书人姓名*/ char lendersex[2];/*借书人性别*/ char lendernum[15];/*借书人学号*/ }BOOKINFO; void menu() { printf("\n\n\n\n\n\n\n"); printf("\t\t\t图书管理系统\n"); printf("\t\t\t1:新进图书基本信息的输入\n"); printf("\t\t\t2:显示全部记录\n");

printf("\t\t\t3:根据图书名称查询图书基本信息\n"); printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n"); printf("\t\t\t5:按照图书名称从小大到排序\n"); printf("\t\t\t6:统计某价格以上的图书数量\n"); printf("\t\t\t7:列出所有未借出去的图书信息\n"); printf("\t\t\t8:退出\n"); } void choice_1_input_new()/*输入新进的图书信息*/ { char choice; FILE *p; BOOKINFO newbook; system("cls"); while(1) { printf("输入图书编号:"); gets(newbook.number); printf("输入图书名称:"); gets(https://www.wendangku.net/doc/cb12191633.html,); printf("输入图书单价:"); scanf("%f",&newbook.price); while(getchar()!='\n'); printf("输入图书的作者:"); gets(newbook.auther); printf("输入借书人姓名:"); gets(newbook.lendername); printf("输入借书人性别:"); gets(newbook.lendersex); printf("输入借书人学号:"); gets(newbook.lendernum);

西工大C语言POJ作业

T051.合并字符串 #include #include #include int main() { char a[200],b[100]; gets(a); gets(b); strcat(a,b); puts(a); return 0; } T052.字符串排序

#include #include void sort(char s[10][11]) { int i,j; char t[11]; for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(strcmp(s[j],s[j+1])>0) { strcpy(t,s[j+1]); strcpy(s[j+1],s[j]); strcpy(s[j],t); } } int main() { char a[10][11],i; for(i=0;i<10;i++) scanf("%s",a[i]); sort(a); for(i=0;i<10;i++) printf("%s ",a[i]);

printf("\n"); return 0; } T053.特殊要求字符串 #include #include int main() { char s[100],a[100],t; int len,l,i,j; gets(s); len=strlen(s); l=len/2; for(i=0;i

C语言大作业

学院

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (10) 2.3函数实现 (10) 2.4开发日志 (17) 3 程序调试及运行 (18) 3.1程序运行结果 (18) 3.2程序使用说明 (19) 3.3程序开发总结 (20) 4 附件(源程序) (20)

1 摘要 1.1 设计题目 A题算法型:折半查找算法演示程序 B题空间桁架结构节点位移求解 1.2 设计内容 A题: 本程序是一个演示折半查找算法的演示程序。当用户输入查找数据表列和要查找的数据时,程序会演示折半法查找该数的详细过程,并且支持多次查找、错误提示等功能。 B题: 空间桁架结构节点位移求解 1.3 开发工具 Code Blocks 12.11(内置MinGW) 1.4 应用平台 Windows 7 64位 2 详细设计 2.1 程序结构 A题: 程序功能模块: 本程序主要包含六大模块:程序说明模块、输入模块、排序模块、折半法查找模块、选择模块和程序

退出模块。 工程文件结构: 本程序的工程含有6个文件,其中main.cpp、print_stars.cpp、judge.cpp、sort.cpp、putout.cpp5个cpp 文件和include.h1个头文件(参见下图),两者共同存在于工程“折半法查找演示程序”中。其中main.cpp 文件包含了程序的主体部分,程序说明模块、输入、排序、折半查找、选择、程序退出模块按线性排列。其中输入、排序模块执行一次,这般查找、选择模块可多次执行,直到程序退出模块执行。 六大模块说明: (1) 程序说明模块: 给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。此部分模块主函数源代码如下: int a[N]; /*存储要查找的数表,用户输入*/ int i,n,num,count; /*count为折半次数计数器,n为数表数据个数,num存储所查数据*/ int top,bottom,mid; char c; /*存储选择函数中的输入的字符y或n*/ int flag=1; /*折半法循环标志变量*/ int loc=-1; /*存储所查找数据位置*/ double k=0; p_s(76);puts("\n"); /*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)

2015年西工大C语言上机考试题库 全

1.1:2:3 2.一堆8 3.8的次数 4.A*B 5.N边形面积 6.参加竞赛 7.草坪喷水 8.插入排序 9.查找 10.车牌号 11.成绩转化 12.大数>> (见NOJ) 13.大写变小写 14.到底星期几 15.等比数列 16.找到正整数符合要求 17、韩信点兵 18.回文字符串 鸡的体重 计算数据整数部分 加密 阶乘 恐怖水母 卡片 快速排序 两人三足 逆序输出 偶数和 三角形面积 士兵移动 输出位数

数列 数字加密 数组元素和 水仙花数 提取字符串 添加行号 舞伴配对 相乘后位数相加 销售记录 星期几 星座 幸运数 学号 循环移位 月份天数 月份转换英语 运费 字符串替换 字符输出 总分最高 最大公约数 最大值最小值 最小公倍数 左下角

#include #include int main() { int i=0,j=0,k=0,a=0,b=0,c=0,l=0,m=0,n=0,d=0,p=0,q=0; for(i=1;i<=3;i++) { for(j=1;j<=9;j++) { if(i!=j) { for(k=1;k<=9;k++) { if(k!=j&&i!=k) { a=i*100+j*10+k; b=a*2; c=a*3; l=b%10,d=c%10; m=(b%100)/10,p=(c%100)/10; n=b/100,q=c/100; if(l!=0&&m!=0&&n!=0&&d!=0&&p!=0&&q!=0) if(i!=l&&i!=m&&i!=n&&j!=l&&j!=m&&j!=n&&k!=l&&k!=m&&k!=n) if(i!=d&&i!=p&&i!=q&&j!=d&&j!=p&&j!=q&&k!=d&&k!=p&&k!=q) if(l!=d&&l!=p&&l!=q&&m!=d&&m!=p&&m!=q&&n!=d&&n!=p&&n!=q) printf("%d %d %d\n",a,b,c); } } } } } return 0; }

西北工业大学 程序设计大作业

学院××××学院班级××××××××学号××××××××姓名×××

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (4) 2.3函数实现 (5) 2.4开发日志 (7) 3 程序调试及运行 (7) 3.1程序运行结果 (7) 3.2程序使用说明 (12) 3.3程序开发总结 (12) 4 附件(源程序) (12)

1 摘要 1.1 设计题目 算法型大作业题目:编写七种排序算法的演示程序。 1.2 设计内容 编写快速排序、插入排序、选择排序、冒泡排序、堆排序、归并排序、基数排序函数,通过主函数调用以实现七种排序算法的演示。 1.3 开发工具 Visual C++ 6.0 1.4 应用平台 Windows 2000/XP/Vista 32位 2 详细设计 2.1 程序结构 程序的整体结构与流程见下图所示。 程序运行时在主菜单中输入序号选择排序方法或选择结束程序,当进行某种排序方法后,在主函数中输入待排数据个数和待排数据,通过调用对应的排序函数实现排序并输出。该排序结束后再次进入主函数,通过循环重复上述操作。其中,主函数中将数组地址和待排序数据个数传递给排序函数,在排序函数中实现排序功能。

2.2 主要功能 函数的功能为对快速排序、插入排序、选择排序、冒泡排序、堆排序、归并排序、基数排序算法的演示。 主函数:程序运行时,可使运行者根据提醒输入相关操作,从而进入不同的排序方法或者退出。 快速排序函数:根据快速排序的算法,最后输出 插入排序函数:根据插入排序的算法,最后输出 选择排序函数:根据选择排序的算法,最后输出 冒泡排序函数:根据冒泡排序的算法,最后输出 堆排序函数:根据堆排序的算法,最后输出 归并排序函数:根据归并排序的算法,最后输出 基数排序函数:根据基数排序的算法,最后输出

c语言期末考试试题及答案

1. 一个C程序的组成部分可以是()。 A)一个主函数和一至若干个其他函数B)一至若干个主函数 C)一个主程序和一至若干个其他函数D)一个主程序和一至若干个子程序 2. 一个C程序的执行是从()。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 (C)本程序的main函数开始,到本程序文件的最后一个函数结束 (D)本程序文件的第一个函数开始,到本程序main函数结束 3. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()。 A)必须为字母B)必须为下划线C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 4. 设有定义:int m=1,n=-1;则执行语句printf("%d\n",(m--&++n);后的输出结果是()。 A)–1 B)0 C) 1 D) 2 5. 表达式11&10的结果用二进制表示为()。 A)11B)3C)1D)10 6. 设有语句int a=3;则执行语句a+=a-=a*a后,变量a的值是()。 (A)3(B)0(C)9(D)-12 7. 在下列选项中,不的赋值语句是()。 A)t/=5;B)n1=(n2=(n3=0));C)k=i==j;D)a=b+c=1; 8. 下列( )表达式不满足:当x的值为偶数时值为"真",为奇数时值"假"。 A)X%2==0B)!x%2!=0 C)(x/2*2-x)==0D)!(x%2) 9. 若有定义:int a=8,b= 5,c;执行语句c=a/b+0.4 后c的值为() A)1.4 B)1 C)2.0 D)2 10. 假设a=3,b=4,c=5,则逻辑表达式: !(a+b)+c-1&&b+c/2的值是()。 A)true B)false C)0D) 1 11. 若int a=3,b=4;则执行c=a++>2||b-->=4之后,b变量的值为()。 A)3B)0C)4D)2 12. 以下哪个表达式的值为4()

西工大C语言程序作业

第2季:循环第1题 1.完全数 #include int main() {int m,i,j,s;

for(m=6;m<1000;m++) {s=1; for(i=2;i

2.迭代求根 #include #include int main() { float x0,x1,a; scanf("%f",&a); x1=a/2; do { x0=x1;x1=(x0+a/x0)/2; } while(fabs(x0-x1)>=0.00001); printf("%.5f\n",x1); return 0; } 第3题

Time 1000MS Limit 10000KB Memory Limit Descripti 请编写程序,用二分法求下面方程在(-10,10)之间的根:on Input输入区间数据为实型、用空格隔开输出均。 Output输出根为实型,保留两位小数。 -10 10 Sample Input Sample 2.00 Output 3.二分求根 #include #include int main() { float x0,x1,x2,f0,f1,f2; printf("请输入x1,x2的值:"); scanf("%f%f",&x1,&x2); f1=2*x1*x1*x1-4*x1*x1+3*x1-6; f2=2*x2*x2*x2-4*x2*x2+3*x2-6; do

相关文档