当前位置:首页 » 编程语言 » c语言期末考试试卷

c语言期末考试试卷

发布时间: 2022-06-12 20:00:39

⑴ 急需数据结构c语言版(清华大学出版社)的期末考试试题及答案

《数据结构》期末考试试卷( A )

一、 选择题(每小题2分,共24分)
1.计算机识别、存储和加工处理的对象被统称为( A )
A.数据 B.数据元素
C.数据结构 D.数据类型
2.栈和队列都是( A )
A.限制存取位置的线性结构 B.顺序存储的线性结构
C.链式存储的线性结构 D.限制存取位置的非线性结构
3.链栈与顺序栈相比,比较明显的优点是( D )
A.插入操作更加方便 B.删除操作更加方便
C.不会出现下溢的情况 D.不会出现上溢的情况
4.采用两类不同存储结构的字符串可分别简称为( B )
A.主串和子串 B.顺序串和链串
C.目标串和模式串 D.变量串和常量串
5. 一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是:B
A. 110 B .108
C. 100 D. 120
6.串是一种特殊的线性表,其特殊性体现在:B
A.可以顺序存储 B .数据元素是一个字符
C. 可以链接存储 D. 数据元素可以是多个字符
7.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为: C
A. 2h B .2h-1
C. 2h+1 D. h+1
软件开发网
8.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里,我们把 由树转化得到的二叉树叫做这棵树对应的二叉树。下列结论哪个正确? A
A. 树的先根遍历序列与其对应的二叉树的先序遍历序列相同
B .树的后根遍历序列与其对应的二叉树的后序遍历序列相同
C. 树的先根遍历序列与其对应的二叉树的中序遍历序列相同
D. 以上都不对
9.一个有n个顶点的无向图最多有多少边?C
A. n B .n(n-1)
C. n(n-1)/2 D. 2n
10.在一个图中,所有顶点的度数之和等于所有边数的多少倍?C
A. 1/2 B .1
C. 2 D. 4
11.当在二叉排序树中插入一个新结点时,若树中不存在与待插入结点的关键字相同的结点,且新结点的关键字小于根结点的关键字,则新结点将成为( A )
A.左子树的叶子结点 B.左子树的分支结点
C.右子树的叶子结点 D.右子树的分支结点
软件开发网
12.对于哈希函数H(key)=key%13,被称为同义词的关键字是( D )
A.35和41 B.23和39
C.15和44 D.25和51
二、已知某棵二叉树的前序遍历结果为A,B,D,E,G,C,F,H,I,J,其中中序遍历的结果为D,B,G,E,A,H,F,I,J,C。请画出二叉的具体结构。(注意要写出具体步骤)(10分)
原理见课本128页

三、有图如下,请写出从顶点c0出发的深度优先及宽度优先遍历的结果。(10分)
深度优先;C0-C1-C3-C4-C5-C2
宽度优先:C0-C1-C2-C3-C4-C5
四、有图如下,按Kruskal算法求出其最小生成树。要求写出完整的步骤。(10分)
原理见课本250页

五、给定线性表(12,23,45,66,76,88,93,103,166),试写出在其上进行二分查找关键字值12,93,166的过程。并写出二分查找的算法。(20分)
0 1 2 3 4 5 6 7 8
12 23 45 66 76 88 93 103 166
过程:
mid=(0+8)/2=4
high=3,low=0 mid=1
high=0,low=0 mid=0(找到12)
high=8,low=5,mid=6(找到93)
high=8,low=7,mid=7
high=8 low=8 mid=8
算法:见课本84页上

六、知单链表的结点结构为
Data next
下列算法对带头结点的单链表L进行简单选择排序,使得L中的元素按值从小到大排列。
请在空缺处填入合适的内容,使其成为完整的算法。 (可用文字说明该算法的基本思想及执行的过程,10分)
void SelectSort(LinkedList L)
{
LinkedList p,q,min;
DataType rcd;
p= (1) ;
while(p!=NULL) {
min=p;
q=p->next;
while(q!=NULL){
if( (2) )min=q;
q=q->next;
}
if( (3) ){
rcd=p->data;
p->data=min->data;
min->data=rcd;
}
(4) ;
}
}
本题不会。嘿嘿。。。。
七、一个完整的算法应该具有哪几个基本性质?分别简要说明每一性质的含意。(5分)
输入:
四个基本性质:1.输入:有零个或多个有外部提供的量作为算法的输入
2:输出:算法产生至少一个量作为输出
3.:确定性:组成算法的每条指令是清晰的,无歧异的。
4.:有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的

八、何谓队列的"假溢"现象?如何解决?(5分)
队列的假溢现象是指数组实现的顺序队列中,队尾指针已到达数组的下表上界产生上溢而队头指针之前还有若干 空间闲置的现象。解决的办法之一是利用循环队列技术使数组空间的首尾相连。

九、说明并比较文件的各种物理结构。(6分)

⑵ c语言程序设计期末考试样题

1、答案:A(单引号括起来的都是字符,而且一对单引号最多对应一个字符,\反斜杠是转义字符的开始,\72是ASCII码对应的字母H。也就是把H这个字母存到了变量chara中。就一个字符H。)2、ACDE解析:inta=3,b=4,c=5;,A、a>bB、a<=bC、(a||b)>cD、a<=(b||c)E、!((a<b)&&!c||b)优先级由大到小:()!&&||A选项,3>4错误,逻辑值0。B选项,35,(3||4)"或"逻辑运算符两边只要有一个非0的整个值就是1,1>5错,逻辑值0。D选项,3<=(4||5)错误,逻辑值0。E选项,!((3<4)&&!5||4),先(3<4)逻辑值1,!5逻辑值0,1&&0是0,0||4是1,!1是0,所以逻辑值0。3、AC。解析:A可以,B答案b不能被赋值(自左向右,计算||左侧就已经是1了右边就不用再计算了整个表达式无论右边如何整个逻辑值必定是1,计算机也就不会计算右边了)C可以(因为&&两边都必须计算才能得出最后的逻辑值答案),D不可以a不能被赋值(&&左边就一个a,构不成赋值,可能存放一个随机值,右边可以被赋值)。4、ABCD。外部函数几乎可以被所有函数调用。只要开头#include”"引入。

⑶ 求一份C语言程序设计的期末考试试题!!!谢谢了

一.
选择题
(共15题,
每题2分,共30分)
1.
定义结构体的关键字是(

A.
union
B.
enum
C.struct
D.typedef
2.
设整型变量a为5,使b不为2的表达式是(

A.
b=a/2
B.
b=6-(--a)
C.
b=a%2
D.
b=a>3?2:1
3.
下面哪一项是不正确的字符串赋值或赋初值的方法(

A.
char
*str;
str=
“china”;
B.
char
str[7]=
{‘c’,
‘h’,
‘i’,
‘n’,
‘a’};
C.
char
str1[]=
“china”,str2[]=“123”;
D.
char
str1[10];
str1=
“china”;
4.
以下对二维数组a进行正确初始化的是(

A.
int
a[2][3]={{1,2},{3,4},{5,6}};
B.
int
a[
][3]={1,2,3,4,5,6};
C.
int
a[2][
]={1,2,3,4,5,6};
D.
int
a[2][
]={{1,2},{3,4}};
5.
选出下列标识符中不是合法的标识符的是(

A.
hot_do
B.
cat1
C.
_pri
D.
2ab
6.
以下说法中正确的是(

A.
C语言程序总是从第一个的函数开始执行
B.
在C语言程序中,要调用的函数必须在main()函数中定义
C.
C语言程序总是从main()函数开始执行
D.
C语言程序中的main()函数必须放在程序的开始部分
7.
若已定义:int
a[9],
*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为(

A.
p+1
B.
a+1
C.
a++
D.
++p
8.
若有说明:
int
i,j=7,
*p=&i;,
则与i=j;
等价的语句是(

A.
i=
*p;
B.
*p=*&j;
C.
i=&j;
D.
i=*
*p;
9.
若变量c为char类型,能正确判断出c为小写字母的表达式是(

A.
‘a’<=c<=
‘z’
B.
(c>=
‘a’)
||
(c<=
‘z’)
C.
(‘a’<=c)
and
(‘z’>=c)
D.
(c>=
‘a’)
&&
(c<=
‘z’)
10.
以下程序的输出结果是(

main()
{
int
a[]={1,2,3,4,5,6,7,8,9},
*p;
p=a;
*(p+3)+=2;
printf(
“%d,%d\n”,*p,*(p+3)
);
}
A.
0,
5
B.
1,
6
C.
1,
5
D.
0,
6
11.
以下程序的输出结果是(

main()
{
int
a=5;
float
x=3.14;
a*=x*(‘E’-
‘A’);
printf(“%f\n”,(float)a);
}
A.
62.000000
B.
62.800000
C.
63.000000
D.
62
12.
以下程序的输出结果是(

#define
f(x)
x*x
main()
{
int
a=6,b=2,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}
A.
9
B.
6
C.
36
D.
18
13.
定义如下变量和数组: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
5
9
B.
1
4
7
C.
3
5
7
D.
3
6
9
14.
下列程序段的输出结果是


void
main(
)
{
int
k;
for
(k=1;k<5;k++)
{
if(k%2!=0)
printf(
“#”
);
else
printf(“*”)
;
}
}
A.
#*#*
B
.
*#*#
C.
##
D.
**
15.
下列程序执行后输出的结果是(

int
d=1;
fun
(int
p)
{
int
d=5;
d
+
=p
+
+;
printf("%d,",d);
}
main(
)
{
int
a=3;
fun(a);
d
+
=
a
+
+;
printf("%d\n",d);
}
A.
8,
4
B.
9,
6
C.
9,
4
D.
8,
5
二.
填空题(共7题,每空2分,共30分)
1.
数组
int
a[3][5];
共定义了_______________个元素。
2.
有float
f=3.1415927;

printf(“%5.4f”,
f
);输出的结果是_______________。
3.
下面程序的功能是:输出
100以内(不包含100)能被
3整除且个位数为
6的所有整数,请填空。
main(
)
{
int
i;
for(i=1;
_______________;
i++)
if
(_______________)
printf("%d",
i);
}
4.
设有“int
x=2,
y”说明,则逗号表达式“y=x+5,x+y”的值是
_______________
5.
以下是使用指针,进行字符串复制的程序,请填空。
main()
{
char
a[]=
“Tsinghua
University”,
b[30],
*p1,*p2;
p1=a;
p2=b;
for(;
*p1!=
‘_______________’;
p1++,
p2++)
_______________=_______________;
*p2=
‘_______________’;
printf(“string
a
is:%s\n”,a);
printf(“string
b
is:%s\n”,b);
}
6.
下面程序用冒泡法对数组a进行降序排序,请填空。
main()
{
int
a[5]={4,7,2,5,1};
int
i,j,m;
for(i=0;i<4;i++)
for(j=0;j<_______________;j++)
if(
_______________<
_______________
)
{
m=a[
j];
a[
j]=a[
j+1];
a[
j+1]=
m;
}
for(i=0;i<5;i++)
printf("%d
",a[i]);
}
7.
函数fun的功能是:使一个字符串按逆序存放,请填空。
void
fun
(char
str[])
{
char
m;
int
i,j;
for(i=0,j=strlen(str);i<_______________;i++,j--)
{
m=str[i];
str[i]=
_______________;
str[j-1]=m;
}
printf("the
rotated
string
is
%s\n",_______________);
}

⑷ 求浙江工商大学计算机学院c语言期末试题!!

C语言期末考试试题 二00吧年0四月一二日 星期六 00:二二 一 选择题(二四分,每小题二分) 一.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是()。 A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针 C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数 二.以下程序的输出结果为( )。 main( ) { int i=0一0,j=一0; printf("%d,%d\n",i++,j--); } A 一一,9 B 9,一0 C 吧,一0 D 9,9 三.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。 a=一二5.5三四; a=二0.0/三; a=(int)一二5.5二一%四; a=5<<二; A 一二5,陆,三一,一 B 一二5,陆,一,二0 C 一二5,陆.陆陆陆陆陆陆,三一,二0 D 一二5.5三四,陆.陆陆陆陆陆陆,二,二0 四.设i和k都是int类型,则for循环语句( )。 for(i=0,k=-一;k=一;i++,k++) printf("****\n"); A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环 5.以下程序的输出结果为( )。 main( ) { char c; int i; for(i=陆5;i<陆吧;i++) { c=i+三二; switch(c) { case 'a': case 'b': case 'c':printf("%c,",c);break; default:printf("end"); } } } A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 陆.函数调用语句:fseek(fp,-一0L,二);的含义是( )。 A 将文件位置指针从文件末尾处向文件头的方向移动一0个字节 B 将文件位置指针从当前位置向文件头的方向移动一0个字节 C 将文件位置指针从当前位置向文件末尾方向移动一0个字节 D 将文件位置指针移到距离文件头一0个字节处 漆.以下程序的输出结果为( )。 main( ) { int i=0,j=0; while(s一[i]!='\0') i++; while(s二[j]!='\0') s一[i++]=s二[j++]; s一[i]=0; printf("%s\n",s一); } A side B country C sidetry D countryside 吧.下列说法不正确的是( )。 A 主函数main中定义的变量在整个文件或程序中有效 B 不同函数中,可以使用相同名字的变量 C 形式参数是局部变量 D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效 9.在下列程序段中,枚举变量 c一的值是( )。 enum color { red,yellow,blue=四,green,white}c一; c一=yellow; c一=white; A 一 B 三 C 5 D 陆 一0.设有说明 int (*ptr)();其中标识符ptr是( )。 A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数 C 是一个函数名 D定义不合法 一一.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。 A int p; B int (*p)[n]; C int *p[n]; D int (*p)( ); 一二.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 二 判断对错,对的划“√”,错的划“×”(二0分,每小题二分) 一.参加位运算的数据可以是任何类型的数据。 ( ) 二.若有定义和语句: int a; char c; float f; scanf("%d,%c,%f",&a,&c,&f); 若通过键盘输入:一0 A 一二 5 则a=一0,c=‘A’,f=一二.5。 ( ) 三.C语言把文件看作是一个字符(字节)的序列。 ( ) 四.若有宏定义: #define S(a,b) t=a;a=b;b=t 由于变量t没定义,所以此宏定义是错误的。 ( ) 5.在Turbo C中,下面的定义和语句是合法的: file *fp; fp=fopen("a.txt","r"); ( ) 陆.若有定义: char s[ ]="china"; 则Turbo C系统为数组s开辟陆个字节的内存单元。 ( ) 漆.若有定义和语句: int a[三][三]={{三,5},{吧,9},{一二,三5}},i,sum=0; for(i=0;i<三;i++) sum+=a[i][二-i]; 则sum=二一。 ( ) 吧.若有定义和语句: struct student { int num; char name[一0]; float score; } s[5]={{一,"lili",9吧.5},{9,"xiaohua",陆陆}},*p=s;printf("%d",*p++); 输出结果是一。 ( ) 9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。 ( ) 一0.在Turbo C中,此定义和语句是合法的: enum aa{ a=5,b,c}bb; bb=(enum aa)5; ( ) 三 写出下列程序的运行结果(三陆分,每小题陆分) 一. main( ) { int i=二9,j=陆,k=二,s; s=i+i/j%k-9; //s=i+(i/j)%k-9 printf(“s=%d\n”,s); } 二. main( ) { int x=三一,y=二,s=0; do { s-=x*y; x+=二;y-=三; } while(x%三==0); //先执行,后判断 printf(“x=%d\ty=%d\ts=%d\n”,x,y,s); } 三. main( ) { int a[陆]={一0,二0,三0,四0,50,陆0},i; invert(a,0,5); for(i=0;i<陆;i++) printf(“%d,”,a[i]); printf(“\n”); } invert(int s[ ],int i,int j) //倒置 { int t; if(i<j) { invert(s,i+一,j-一); //函数自身的嵌套调用,形成循环 t=s[i]; s[i]=s[j]; s[j]=t; } } 四. #include main() { char str[ ]="The C program",c; int i; for(i=二;(c=str[i])!='\0';i++) { switch(c) { case 'g': ++i; break; //由于++i,跳过了g后面的一个字母 case 'o': continue; default: printf(“%c”,c); continue; } printf(“*”); } printf(“\n”); } 5. struct w //结构体 { char low; char high; }; union u //共用体 { struct w byte; short word; }uw; main( ) { int result; uw.word=0x一二三四; printf("word value:%0四x\n",uw.word); printf("high byte:%0二x\n",uw.byte.high); printf("low byte:%0二x\n",uw.byte.low); uw.byte.low=0x漆四; printf("word value:%0四x\n",uw.word); result=uw.word+0x二a三四; printf("the result:%0四x\n",result); } 陆. main() { char *s二="I love China!",**s一=&s二; char *s三,c,*s四="w"; s三=&c; *s三='H'; s二=s二+二; printf("%s\t%c\t%s\t%c\n",s二,*s三,s四,**s一); } 四 阅读下列程序,在 处填入适当内容,使程序完整(二0分,每个空二分) 一.百马百担问题:有一00匹马,驮一00担货,大马驮三担,中马驮二担,两匹小马驮一担,问大、中、小马各中国匹? main( ) { int hb,hm,hl,n=0; for(hb=0;hb<=一00;hb+=(一)) for(hm=0;hm<=一00-hb;hm+=(二)) { hl=一00-hb- (三) ; if(hb/三+hm/二+二*(三)==一00) { n++; printf("hb=%d,hm=%d,hl=%d\n",hb/三,hm/二,二*hl); } } printf("n=%d\n",n); } 二.用“起泡法”对输入的一0个字符排序后按从小到大的次序输出。 #define N 一0 char str[N]; void main() { int i,flag; for(flag=一;flag==一;) { scanf("%s",str); flag=0; printf("\n"); } sort(___(四)___); for(i=0;i<N;i++) { printf("%c",str[i]); } printf("\n"); } sort(char str[N]) //冒泡排序 { int i,j; char t; for(j=一;j<N;j++) for(i=0;istr[i+一]) { t=str[i]; ____(5)____; ____(陆)____; //交换位置 } } 三.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。) 例如,矩阵为: 三 0 0 三 二 5 漆 三 一 0 四 二 则所有靠外侧的各元素值之和为三+0+0+三+二+三+一+0+四+二=一吧。 add(int m,int n,int arr[]) { for(i=0;i<m;i=i+m-一) for(j=0;j<n;j++) sum=sum+____(漆)____; for(j=0;j<n;j=j+n-一) for(i=一;____(吧)____;i++) sum=sum+arr[i*n+j]; return(sum); } 四.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 #define N 一0 main() { void maxmin(int arr[],int *pt一,int *pt二,int n); int array[N]={一0,漆,一9,二9,四,0,漆,三5,-一陆,二一},*p一,*p二,a,b; p一=&a; p二=&b; maxmin(array,p一,p二,N); printf("max=%d,min=%d",a,b); } void maxmin(int arr[],int *pt一,int *pt二,int n) { int i; *pt一=*pt二=arr[0]; for(i=一;i*pt一) ____(9)____ ; if(arr[i]<*pt二) ____(一0)____ ; } } 答案 一 选择题(二四分,每小题二分) 一.( B ) 二.( C ) 三.( B ) 四.( D ) 5.( D ) 陆.( A ) 漆.( D ) 吧.( A ) 9.( D ) 一0.( B ) 一一.( C ) 一二.( D ) 二 判断对错,对的划“√”,错的划“×”(二0分,每小题二分) 一.( × ) 二.( √ ) 三.( √ ) 四.( × ) 5.( × ) 陆.( √ ) 漆.( √ ) 吧.( × ) 9.( √ ) 一0.( √ ) 三 写出下列程序的运行结果(三陆分,每小题陆分) 一.s=二0 二.x=三5 y=-四 s=-二9 三.陆0,50,四0,三0,二0,一0, 四.e C pr*am 5.word value:一二三四 陆.love China! H w l high byte:一二 low byte:三四 word value:一二漆四 the result:三ca吧 四 阅读下列程序,在 处填入适当内容,使程序完整(二0分,每个空二分) 一.(一) 三 (二) 二 (三)hm hl 二.(四) str (5) str[i]=str[i+一] (陆) str[i+一]=t 三.(漆) arr[i*n+j] (吧) i<m-一 四.(9) *ptr一=arr[i] (一0) *ptr二=arr[i

⑸ 期末考试C语言试题!!!!求解答!!!

代码文本:

#include "stdio.h"

int main(int argc,char *argv[]){

int s,i;

s=0,i=1;

do{

s += i*i+i++;

}while(i<101);

printf("1*2+2*3+3*4+...+100*101 = %d ",s);

return 0;

}

⑹ 求大一C语言期末考试题库

我给你了,ok 记得采纳

⑺ 北京工业大学计算机专业近几年c语言期末考试题

北京工业大学实验学院2012―2013学年第 一 学期
《计算机导论》(A)卷课程试卷
适用专业:计算机科学与技术 考试方式:机考 考试时间 :2012 年12 月
班级学号 12570219 姓名: 李志伟 成绩
得分登记(由阅卷教师填写)
题号 一 二 三 四
分数
考生须知:
提交考试结果:
编程题,将程序源代码粘贴到试卷相应题目下端,以学号姓名命名文件。

选择或填空题(每小题2分共20分)
1.完整的计算机系统应包括( B )。
A.主机和外部设备 B.硬件系统和软件系统
C.操作系统和应用软件系统 D.输入设备和输出设备
2.以下叙述正确的是 。
A.do-while语句构成的循环不能用其它语句构成的循环来代替。
B.do-while语句构成的循环只能用break语句退出。
C.用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D.用do-while语句构成的循环,在while后的表达式为零时结束循环。
3. C语言中运算对象必须是整型的运算符是 。
A. %=
B. / C. =
D. *
4.将高级语言编写的程序翻译成机器语言程序,采用的两种翻译方式是
A. 编译和解释 B. 编译和汇编
C. 编译和链接 D. 解释和汇编
5. 微型计算机系统的中央处理器是由 组成的
A. 内存储器和控制器 B. 主存储器和运算器
C. 控制器和运算器 D. 内存储器.控制器和运算器
6.以下符号在C语言中 不能用作用户标识符。
A. _256
B. 3char C.
abc D. ds3
7. 计算机能直接执行的程序设计语言是 。
A. C B. BASIC
C. 机器语言 D.汇编语言
8. 下列能正确表示a≥10或a≤0的关系表达式是_______。
A. a>=10or a<=0 B. a>=10 | a<=0
C. a>=10 || a<=0 D. a>=10 && a<=0

9.C语言中用 1 表示逻辑值“真”,用 0 表示逻辑值“假”。

10. 微机中1个字节表示的二进制位数是 8 位数 。

二. 完成下列各题

1. 下面这个程序用于读入5个整数,当程序读入的数据n为正整数时,则显示该数,请补充程序。(5分)
#include <stdio.h>
void main()
{ int i, n;
for (i=1; i<=5;i++)
{
printf("Pleaseenter n:");
scanf( “%d”,&n );
if (n > 0)printf(“该整数为:%d”,n );
}
printf("Programis over!\n");
}

2. 改写下段程序,实现从控制台输入任意字符如果是大写转换成小写,如果是小写转换成大写,其它字符原样输出。(10分)

#include<stdio.h>
void main()
{ char c1,c2;
c1=’A’;
c2=c1+32;
printf("%c\n",c2);
}

答案代码:
#include <stdio.h>
void main()
{ char c1,c2;
printf("请输入一个字符:");
scanf("%c",&c1);
if (c1<='z' && c1>='a')
{c2=c1-32;
printf("大写字母为:%c\n\n",c2);}
else if (c1<='Z' && c1>='A')
{c2=c1+32;
printf("小写字母为:%c\n\n",c2);
}
else
printf("原字符为:%c\n\n",c1);
}

3. 下列程序有何错误?请改正。(10分)
#include<stdio.h>
void main()
{ short x,y,z;
x=200;
y=300;
z=x*y;
printf("%d\n",z);
}

答案代码:
#include<stdio.h>
void main()
{ int x,y,z;
x=200;
y=300;
z=x*y;
printf("%d\n",z);
}

4. 阅读程序,补充程序的功能。(10分)
从键盘任意输入一个年号(year),判断它是否是闰年。若是闰年,输出“它是闰年”,否则输出“它不是闰年”。已知符合下列条件之一者是闰年:能被4整除,但不能被100整除。能被400整除。
#include <stdio.h>
void main()
{ int year, flag;
printf("Enteryear:");
scanf("%d",&year );
if((year%4=0&&year%100!=0)||year%400=0)

{ flag =1;
}
else
{ flag = 0;
}
if ( flag=1 )
{
printf("它是闰年\n");
}
else
{
printf("它不是闰年\n");
}
}

三、编写程序,并调试程序正确运行。
1. 编写一个程序,从键盘输入某计算机的价格,再输出该价格打7折后的价格。(15分)

答案代码:
#include <stdio.h>
#include <windows.h>
int main()
{
float a,b;
printf("输入一台计算机的价格:");
scanf("%f",&a);
b=0.7*a;
printf("打7折后的价格为:%.1f\n\n",b);
system ("pause");
return 0;
}

2. 从键盘输入一个三位数,求各位数字之和。例如:输入的三位数是385,输出结果为3+8+5=16;(15分)
答案代码:
#include <stdio.h>
#include <windows.h>
#include <string.h>
int main()
{
char a[3];
intb,c,d,e;
printf("请输入一个三位数:");
scanf("%s",a);
b=a[2]-'0';
c=a[1]-'0';
d=a[0]-'0';
e=b+c+d;
printf("各位数字之和为:%d\n\n",e);
system("pause");
return0;
}

3. 日本一位中学生发现一个奇妙的“定理”,请角古教授证明,而角古教授无能为力,于是产生角古猜想,猜想的内容是:任意自然数,若为偶数除以2,若为奇数则乘以3加1,得到一个新的自然数,按照上面的法则继续演算,若干次后结果必然为1,请编程验证。(15分)

答案代码:
#include <stdio.h>
void main()
{ int a;
printf("输入一个自然数:");
scanf("%d",&a);
if(a%2==1)
a=a*3+1;
while(a!=1)
{
a=a/2;
}
printf("所得结果为:%d\n",a);
}

我是实验学院的,这是我们2012大一期末的,希望有帮助,里面的答案是自己写的,可忽略

⑻ 大一期末考C语言试题求解答

第一题:#include<stdio.h>

voidmain()

{

inta[10],b[9],i=0;

for(;i<10;i++)

{

printf("请输入第%d个数",i+1);

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

}

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

b[i-1]=a[i]-a[i-1];

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

{

if(i%3==0)printf(" ");

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

}

}

运行结果:

学习是要用心的,多动脑,多思考学到的东西才是自己的。喔,对了给分哟!!!!!

⑼ C语言期末考试编程题

1输入两个整数a和b,若a和b的平方和大于100,则输出平方和的百位以上的数字,否则输出a和 b的和。
要求: 1)输出结果时说明平方和是大于100还是小于100( >100或<100 )
#include<stdio.h>
int main(){
int a, b, c;
scanf("%d%d", &a, &b);
c = a * a + b * b;
if(c > 100) printf("平方和大于100\n%d\n", c%100);
else printf("平方和小于等于100\n%d\n", a + b);
return 0;
}
2输入一个整数,判断是否是5和7的公倍数,若是则输出:5and7yes,否则再判断是否是3的倍数,若是3的倍数输出:3yes,若都不是则输出:no
#include<stdio.h>
int main(){
int input;
scanf("%d", &input);
if(input % 5 == 0 && input % 7 == 0)printf("5and7yes\n");
else if(input % 3 == 0) printf("3yes\n");
else printf("no\n");
return 0;
}
第三,四题和第二题差不多
5计算公式: [ 2*x x=2
y= [ x*x+1 x<2
[ 2*x*x+3*x+1 x>2
要求: 1)从键盘输入x的值,根据x的值求y的值
2)输出y的值
#include<stdio.h>
int main(){
int x, y;
scanf("%d", &x);
if(x == 2) y = 2*x;
else if(x < 2) y = x*x+1;
else y = 2 * x * x + 3 * x + 1;
printf("%d\n", y);
return 0;
}
8 和7差不多
下面原理都差不多 用if基本都能搞定 判断条件就行了 应该LZ能搞定了 东西有点多 -。- 就写这些吧 其他的就不一一写了^ ^

⑽ C语言期末考试试题(谭浩强版)

C语言期末考试试题
2008年04月12日 星期六 00:22

一 选择题(24分,每小题2分)
1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是()。

A 存放读入数据项的存储区
B 存放读入数据的地址或指向此地址的指针
C 一个指向所读文件的文件指针
D 一个整形变量,代表要读入的数据项总数

2.以下程序的输出结果为( )。
main( )
{
int i=010,j=10;
printf("%d,%d\n",i++,j--);
}

A 11,9
B 9,10
C 8,10
D 9,9

3.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。
a=125.534;
a=20.0/3;
a=(int)125.521%4;
a=5<<2;

A 125,6,31,1
B 125,6,1,20
C 125,6.666666,31,20
D 125.534,6.666666,2,20

4.设i和k都是int类型,则for循环语句( )。
for(i=0,k=-1;k=1;i++,k++)
printf("****\n");

A 循环结束的条件不合法
B 循环体一次也不执行
C 循环体只执行一次
D 是无限循环

5.以下程序的输出结果为( )。
main( )
{
char c;
int i;

for(i=65;i<68;i++)
{
c=i+32;
switch(c)
{
case 'a':
case 'b':
case 'c':printf("%c,",c);break;
default:printf("end");
}
}
}

A a,b,c,end
B a,a,a,end
C a,a,a,
D a,b,c,

6.函数调用语句:fseek(fp,-10L,2);的含义是( )。
A 将文件位置指针从文件末尾处向文件头的方向移动10个字节
B 将文件位置指针从当前位置向文件头的方向移动10个字节
C 将文件位置指针从当前位置向文件末尾方向移动10个字节
D 将文件位置指针移到距离文件头10个字节处

7.以下程序的输出结果为( )。
main( )
{
int i=0,j=0;
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]=0;

printf("%s\n",s1);
}

A side
B country
C sidetry
D countryside

8.下列说法不正确的是( )。

A 主函数main中定义的变量在整个文件或程序中有效
B 不同函数中,可以使用相同名字的变量
C 形式参数是局部变量
D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效

9.在下列程序段中,枚举变量 c1的值是( )。
enum color { red,yellow,blue=4,green,white}c1;
c1=yellow;
c1=white;

A 1
B 3
C 5
D 6

10.设有说明 int (*ptr)();其中标识符ptr是( )。

A 是一个指向整形变量的指针
B 是一个指针,它指向一个函数值是int的函数
C 是一个函数名
D定义不合法

11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。

A int p;
B int (*p)[n];
C int *p[n];
D int (*p)( );

12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。

A p=a;
B *p=a[0];
C p=&a[0];
D p=&a;

二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)

1.参加位运算的数据可以是任何类型的数据。 ( )

2.若有定义和语句:
int a;
char c;
float f;
scanf("%d,%c,%f",&a,&c,&f);

若通过键盘输入:10 A 12 5
则a=10,c=‘A’,f=12.5。 ( )

3.C语言把文件看作是一个字符(字节)的序列。 ( )

4.若有宏定义:
#define S(a,b) t=a;a=b;b=t
由于变量t没定义,所以此宏定义是错误的。 ( )

5.在Turbo C中,下面的定义和语句是合法的:
file *fp;
fp=fopen("a.txt","r"); ( )

6.若有定义:
char s[ ]="china";
则Turbo C系统为数组s开辟6个字节的内存单元。 ( )

7.若有定义和语句:
int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
for(i=0;i<3;i++)
sum+=a[i][2-i];
则sum=21。 ( )

8.若有定义和语句:
struct student
{
int num;
char name[10];
float score;
}
s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);
输出结果是1。 ( )

9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。 ( )

10.在Turbo C中,此定义和语句是合法的:
enum aa{ a=5,b,c}bb;
bb=(enum aa)5; ( )

三 写出下列程序的运行结果(36分,每小题6分)
1.
main( )
{
int i=29,j=6,k=2,s;
s=i+i/j%k-9; //s=i+(i/j)%k-9
printf(“s=%d\n”,s);
}

2.
main( )
{
int x=31,y=2,s=0;
do
{
s-=x*y;
x+=2;y-=3;
}
while(x%3==0); //先执行,后判断
printf(“x=%d\ty=%d\ts=%d\n”,x,y,s);
}

3.
main( )
{
int a[6]={10,20,30,40,50,60},i;
invert(a,0,5);
for(i=0;i<6;i++)
printf(“%d,”,a[i]);
printf(“\n”);
}

invert(int s[ ],int i,int j) //倒置
{
int t;
if(i<j)
{
invert(s,i+1,j-1); //函数自身的嵌套调用,形成循环
t=s[i];
s[i]=s[j];
s[j]=t;
}
}

4.
#include <stdio.h>

main()
{
char str[ ]="The C program",c;
int i;
for(i=2;(c=str[i])!='\0';i++)
{
switch(c)
{
case 'g': ++i; break; //由于++i,跳过了g后面的1个字母
case 'o': continue;
default: printf(“%c”,c); continue;
}
printf(“*”);
}
printf(“\n”);
}

5.
struct w //结构体
{
char low;
char high;
};

union u //共用体
{
struct w byte;
short word;
}uw;

main( )
{
int result;
uw.word=0x1234;

printf("word value:%04x\n",uw.word);
printf("high byte:%02x\n",uw.byte.high);
printf("low byte:%02x\n",uw.byte.low);

uw.byte.low=0x74;

printf("word value:%04x\n",uw.word);
result=uw.word+0x2a34;
printf("the result:%04x\n",result);
}

6.
main()
{
char *s2="I love China!",**s1=&s2;
char *s3,c,*s4="w";
s3=&c;
*s3='H';
s2=s2+2;
printf("%s\t%c\t%s\t%c\n",s2,*s3,s4,**s1);
}

四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

1.百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?
main( )
{
int hb,hm,hl,n=0;
for(hb=0;hb<=100;hb+=(1))
for(hm=0;hm<=100-hb;hm+=(2))
{
hl=100-hb- (3) ;
if(hb/3+hm/2+2*(3)==100)
{
n++;
printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);
}
}
printf("n=%d\n",n);
}

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。
#define N 10

char str[N];

void main()
{
int i,flag;

for(flag=1;flag==1;)
{
scanf("%s",str);
flag=0;
printf("\n");
}

sort(___(4)___);

for(i=0;i<N;i++)
{
printf("%c",str[i]);
}
printf("\n");
}

sort(char str[N]) //冒泡排序
{
int i,j;
char t;

for(j=1;j<N;j++)
for(i=0;i<10-j;i++)
if(str[i]>str[i+1])
{
t=str[i];
____(5)____;
____(6)____; //交换位置
}
}

3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)

例如,矩阵为:
3 0 0 3
2 5 7 3
1 0 4 2
则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

add(int m,int n,int arr[])
{
for(i=0;i<m;i=i+m-1)
for(j=0;j<n;j++)
sum=sum+____(7)____;
for(j=0;j<n;j=j+n-1)
for(i=1;____(8)____;i++)
sum=sum+arr[i*n+j];
return(sum);
}

4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。
#define N 10
main()
{
void maxmin(int arr[],int *pt1,int *pt2,int n);
int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
p1=&a;
p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
}

void maxmin(int arr[],int *pt1,int *pt2,int n)
{
int i;
*pt1=*pt2=arr[0];
for(i=1;i<n;i++)
{
if(arr[i]>*pt1)
____(9)____ ;

if(arr[i]<*pt2)
____(10)____ ;
}
}

答案
一 选择题(24分,每小题2分)
1.( B ) 2.( C ) 3.( B )
4.( D ) 5.( D ) 6.( A )
7.( D ) 8.( A ) 9.( D )
10.( B ) 11.( C ) 12.( D )
二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)
1.( × ) 2.( √ )
3.( √ ) 4.( × )
5.( × ) 6.( √ )
7.( √ ) 8.( × )
9.( √ ) 10.( √ )
三 写出下列程序的运行结果(36分,每小题6分)
1.s=20
2.x=35 y=-4 s=-29
3.60,50,40,30,20,10,
4.e C pr*am
5.word value:1234
6.love China! H w l
high byte:12
low byte:34
word value:1274
the result:3ca8
四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)
1.(1) 3 (2) 2 (3)hm hl
2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t
3.(7) arr[i*n+j] (8) i<m-1
4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]

热点内容
微信什么资料都没怎么找回密码 发布:2024-05-19 05:35:34 浏览:906
填志愿密码是什么 发布:2024-05-19 05:30:23 浏览:317
城堡争霸自动掠夺脚本 发布:2024-05-19 05:22:06 浏览:203
asp编程工具 发布:2024-05-19 05:20:36 浏览:142
insertpython 发布:2024-05-19 05:12:26 浏览:243
androidant编译 发布:2024-05-19 05:04:11 浏览:987
按键脚本优化 发布:2024-05-19 04:59:57 浏览:751
怎么下载压缩包 发布:2024-05-19 04:47:47 浏览:9
二嫂水仙ftp 发布:2024-05-19 04:47:42 浏览:160
云隙服务器下载 发布:2024-05-19 04:33:22 浏览:315