2008年济南大学C语言考试题 (2)

合集下载

2008-2009(2)C语言程序设计试卷参考答案及评分标准

2008-2009(2)C语言程序设计试卷参考答案及评分标准

试卷参考答案及评分标准一、三、程序阅读题(每空3分,共30分)五、编程题参考答案(第1小题8 分,第2小题12分,共 20分)1. #include <stdio.h>#define n 5int MaxMin(int a[], int n){int mini = maxi = 0;int i;for(i=1; i<5; i++){if( a[i] < a[mini] )mini = i;if( a[i] > a[maxi])maxi = i;}printf("最小值是:%3d\n",a[mini]);printf("最大值是:%3d\n",a[maxi]); +3t = a[maxi];a[maxi] = a[mini] ;a[mini] = t;printf("调整后的数为: ");for(i = 0; i < 5; i++)printf("%d ", a[i]);printf("\n");return 0; +3}int main(){int a[n], t, i, maxi, mini;for(i=0; i<n; i++)scanf("%d", &a[i]);MaxMin(a,n); +2return 0;}2. #include <stdio.h>#include <string.h>#include <stdlib.h>#define N 100struct Student{int number;char name[10];int age;}stu[N],temp; +3 int main(){int i,k,j;FILE *fp;for( i =0; i < N; i++){scanf("%s%d",stu[i].name, &stu[i].age); +2 }for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++)if(strcmp(stu[k].name,stu[j].name)>0) k=j;if(k!=i){temp.age=stu[i].age;strcpy(,stu[i].name);stu[i].age=stu[k].age;strcpy(stu[i].name,stu[k].name);stu[k].age = temp.age;strcpy(stu[k].name,); +4 }}if ( (fp = fopen("studentnumber.txt","w")) == NULL){printf("Can not create the output file\n");exit(1); +2 }else{for ( i = 0; i < N; i++)fprintf(fp,"%10d%10s%5d\n",i+1,stu[i].name,stu[i].age);}fclose(fp); +1return 0;}。

全国计算机等级考试二级C语言 2008年4月真题卷参考答案及解析

全国计算机等级考试二级C语言 2008年4月真题卷参考答案及解析

全国计算机等级考试二级C语言 2008年4月真题卷答案及解析一、选择题(1)C解析:程序流程图是人们对解决问题的方法、思路或算法的一种描述。

其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。

带箭头的线段在数据流程图中表示数据流,而在程序流程图中表示控制流。

在所给出的选项中,在图元之间用带有箭头的线段表示图元关系。

在模块之间用带有箭头的线段表示调用关系。

构成程序流程图的基本图符及其含义是:→或↓表示控制流,□表示加工步骤,◇表示逻辑条件。

(2)A解析:结构化程序设计的原则包括:"自顶而下,逐步求精"的设计思想,"独立功能,单出口、单入口"的模块化设计等。

多态性是面向对象程序语言的特征。

(3)B解析:模块划分应遵循的准则包括模块之间的耦合和内聚。

一般来说,要求模块之间的耦合尽可能地低,即模块尽可能独立,要求模块的内聚程度尽可能地高,即高内聚、低耦合的原则。

(4)B解析:需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说明书和需求评审等四方面。

产生的主要文档为软件需求规格说明书,它可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。

(5)A解析:算法具有6个特性。

①有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的。

②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义。

③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。

④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。

⑤输出:一个算法有一个或多个输出。

(6)D解析:在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是n(n-1)/2,堆排序需要比较的次数为nlog2n。

济大c语言试卷二

济大c语言试卷二

一、单项选择题1、以下说法中正确的是()A.C语言程序总是从第一个的函数开始执行B.在C语言程序中,要调用的函数必须在main()函数中定义C.C语言程序总是从main()函数开始执行D.C语言程序中的main()函数必须放在程序的开始部分2、C语言提供的合法的数据类型关键字是()A.Double B.short C.integer D.Char3、C语言程序的基本单位是()A.程序行B.语句C.函数D.字符4、若有以下定义:char a; int b; float c; double d;则表达式a*b+d-c值的类型为()A.double B.int C.char D.float5、在C语言中,要求运算数必须是整型数的运算符是()A.% B./ C.>= D.&&6、若有定义:int a=1,b=2,c=3,d=4;则表达式a>b?a:c<d?c:d的值是()A.4B.3C.2D.17、为避免在嵌套的if-else中产生二义性,C语言规定else子句总是与()A.缩排位置相同的if配对B.第一个if配对C.其之前最近的if配对D.其之前最近且不带else的if配对8、若已定义x和y为double类型且x=1.0,则表达式y=x+3/2的值是()A.1 B.2 C.2.0D.2.59、若数组名作实参而指针变量作形参,函数调用实参传给形参的是()A.数组的长度B.数组第一个元素的地址C.数组所有元素的值D.数组第一个元素的值10、下述对C语言字符数组的描述中错误的是()A.字符数组可以存放字符串B.字符数组中的字符串可以整体输入、输出C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D.不可以用关系运算符对字符数组中的字符串进行比较11、设有数组定义:char a[ ]="China"; 则数组a所占的内存空间为()A.4个字节B.5个字节C.6个字节D.7个字节12、若要局部整型变量x的值可以保留到函数下次调用时,则在定义x时,需要采用下列哪种定义方式()A.auto int x; B.static int x;C.register int x; D.extern int x;13、有以下程序段,char a[3],b[]=”abcde”; a=b; printf(”%s”,a);则()A.运行后输出abcde B.运行后输出ab C.运行后输出abc D.编译出错14、有以下程序段:int k=0; while(k=1) k++; 则循环执行()A.无限次B.有语法错误不能执行C.执行1次D.一次也不执行15、若有定义:int x[5], *p=x;,则不能代表x数组首地址的是()A.x B.&x[0] C.&x D.p16、以下正确的函数声明是()A.int fun(int x,int y) B.int fun(int x, y);C.float fun(int x,int y);D.double fun(int x,int y)17、若有定义:int a[10],*p; 则下列操作不正确的是()A.p=a; B.p=&a[4]; C.a=p;D.p=a+2;18、设有如下定义:struct sk{ int a; float b;}data,*p=&data; 则对data中的a成员的正确引用是()A.(*p).data.a B.(*p).a C.p->data.a D.p.data.a19、以下对C语言中共用体类型数据的叙述正确的是()A.共用体类型定义中不能出现结构体类型的成员B.可以对共用体变量直接赋值C.共用体变量占用的内存空间不确定D.共用体变量中不能同时存放其所有成员20、要打开一个已存在的非空文件"file.dat"用于修改,选择正确的语句()A.fp=fopen("file.dat","r"); B.fp=fopen("file.dat","w");C.fp=fopen("file.dat","r+");D.fp=fopen("file.dat","w+");二、填空题(每空2分,共30分)1、结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构。

济南大学C语言实验答案

济南大学C语言实验答案

printf(“\nThis is a 4 integer!”); printf(“\nThe integer is %d %d %d %d!”, b,c,d,e); printf(“\nThe inverse is %d %d %d %d!”, e,d,c,b);
实验 4 循环结构程序设计
1. 从键盘输入若干整数,以 0 结束,判断并输出其中最大的数。 参考程序: #include "stdio.h" void main() { int n,max; printf(“Please input some integers(ending in ‘0’):”); scanf(“%d”,&n); max=n; while(n!=0) { if(n>=max) max=n;
scanf("%f%d",&base,&year); switch(year) { case 1: rate=0.009;break; case 2: rate=0.01;break; case 3: rate=0.0111;break; default: rate=0.012; } sum=base*pow(1+rate, year); printf("sum is %.2f\n",sum); } 6. 输入一个不多于 5 位的正整数,要求:① 求出它是几位数;② 分别打印出 每一位数字;③ 按逆序打印出各位数字。 要准备以下测试数据: 1 位正整数 2 位正整数 3 位正整数 4 位正整数 5 位正整数 除此之外,程序还应当对不合法的输入作必要的处理,如负数或超过 5 位的正 整数。 参考程序: #include <stdio.h> void main() { int a,b,c,d,e,m; printf(“\nPlease input a integer:”); scanf(“%d”,&m); if(m>=0&&m<=99999) { a=m/10000; b=m/1000-a*10; c=m/100-a*100-b*10; d=m/10-a*1000-b*100-c*10; e=m%10000; if(a!=0) { printf(“\nThis is a 5 integer!”); printf(“\nThe integer is %d %d %d %d %d!”,a,b,c,d,e); printf(“\nThe inverse is %d %d %d %d %d!”,e,d,c,b,a); } else if(b!=0)

济南大学C语言第2-8章答案

济南大学C语言第2-8章答案

第二章习题答案1. 选择题2. 填空1. i=10, j=202. 9003. 3, 45, 64. 123456.1235. a=3_b=7_x=8.5_y=71.82_c1=A_c2=a6. c language第三章习题答案1.选择题2. 填空题1. 5, 3, 42. x>20 && x<30 || x<-1003. (1) 0 (2) 1 (3) 2 (4) 0 (5) 1 (6) 14. 525. 1,for(i=1; i<=10; i++)6. x>=0,x<amin第四章习题答案一、选择题说明:第8题的答案A 应该是□□□□12-30-2099. (即:在12前有4个空格)1、w[i-1] w[i]2、15, 9, 6, 5, 13、a[k]!=y4、s[len]!=‟ \0‟5、tab[i][0] j++6、char 31 7,7、a[i][j]!=a[j][i] 1第五章习题答案错误修定说明:1. 答案B 改为:必须在编译预处理命令(# 命令)之后4. 题目改为,按C语言的规定,以下正确的说法是()二、填空题1、函数2、main函数3、int4、地址5、auto三、读程序题1、k1=3, k2=32、(1)4,1(2)1(3)5,6(4)4,63、2, 284、0235、1,3,26、1010第六章习题答案一、选择题二、填空题1. i pe-- *pe2. n+m-1 *psub=‟\0‟3. *p4. score p[n-1][i]5. n++ *p>‟9‟…0‟6. *s= =*p s++三、读程序题1. 2862. 963. student , 74. 18161412108642第七章习题答案一、选择题说明:16-18题为位运算的题目。

二、填空题1. 结构体2. 相同不相同3. ·->4. 数据域指针域5. 表头结点头指针6. malloc7. 10,Y8. 11,3第八章习题答案一、选择题错误修改说明:第4题题目改为:不能将文件内容全部读人数组x中的语句是()将答案中所有的L去掉第7题将fseek中的参数2改为0第10题将第1个“vfp”改为“fp”二、填空题1. 文本文件二进制文件2. stdin stdout3. NULL4. rb+ 5. EOF6. feof7. !feof(fp) fgetc(fp) n++8. fname ch=getchar() fp9. 该题有错误,题目改正如下(红色为修改的部分)#include<stdio.h>void main( ){ FILE *fp1, *fp2; //增加*char str[80]; //增加变量定义fp1=fopen( );fp2=fopen( );while (!feof(fp1)){ fgets( ); //增加语句fputs( );}fclose(fp1);fclose(fp2);}答案:fp1=fopen( “exam1.c”,”r” ); fp2=fopen( “exam2.c”,”w” );fgets(str,81,fp1); fputs(str,fp2);10. fp=fopen(“num.dat”, “rb”); fscanf( fp,”%d”,&temp); z++三、读程序题1. hello2 . k=123, n=03. postion=0position=1。

大学C语言期末考试试卷2008—2009学年c语言期末卷子

大学C语言期末考试试卷2008—2009学年c语言期末卷子

安徽大学2008 -20 09学年第1学期《C语言程序设计》期末考试试卷(A卷120分钟)年级院系专业姓名学号座位号一. 单项选择题:(每题2分,共40分)下列各题A)、B)、C)、D)四个选项中只有一个是正确的,请将正确选项填在答题卡相应题目的横线上。

答在试卷上不得分。

1.下面程序段执行后,a的值是______。

int a;printf("%d \n", (a=3*5, a*4, a+5) );A)60 B)20 C)15 D)102.下列程序段的输出是______。

int x=023;printf("%d \n", --x );A)19 B)18 C)23 D)223.执行下列语句后,a的值是______。

int a=8;a+=a-=a*a;A)-240 B)64 C)112 D)-1124.执行下列语句后,输出的值是______。

int x=6;printf("%d,%d,%d\n",x,x++,--x);A)5,5,5 B)6,5,5 C)7,6,5 D)5,6,55.指出下列程序段所表示的逻辑关系是______。

if(a<b){if(c==d)x=1;}elsex=2;A)若a<b且c=d,则x=1;若a>=b且c!=d,则x=2。

B)若a<b且c=d,则x=1;若a>=b,则x=2。

C)若a<b且c=d,则x=1;若a<b且c!=d,则x=2。

D)若a<b且c=d,则x=1;若c!=d,则x=2。

6.下列程序段的执行结果是______。

int i,x;for(i=1,x=1;i<=20;i++){if(x>=10) break;if(x%2==1){x+=5;continue;}x-=3;} printf("%d,%d\n",x,i);A)6,4 B)7,5 C)10,6 D)14,77.下列程序的执行结果是______。

2008--2009 C语言笔试真题

2008--2009 C语言笔试真题

2009.9(1)下列数据结构中,属于非线性结构的是(C )。

A)循环队列B)带链队C)二叉树D)带链栈(3)对于循环队列,下列叙述中正确的是(D )。

A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(8)数据库管理系统是(B )。

A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统(11)以下叙述中正确的是( D)。

A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(26)有以下程序# include <stdio.h>main(){ int m=1, n=2, *p=&m, *q=&n, *r;r=p; p=q; q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是(B )。

A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2(28)有以下程序# include <stdio.h># include <string.h>main(){ char str[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);}程序运行后的输出结果是(C )。

A)9,One*World B)9,One*Dream! C)10,One*Dream! D)10,One*World(30)有以下程序# include <stdio.h># include <string.h>main(){ char a[10]="abcd";printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是(B )。

济南大学 C语言 实验题答案

济南大学 C语言 实验题答案

实验一习题2(改正错误):#include <stdio.h>void main 改为void main(){float r, area;scanf(“%d”, &r); aea = 3.14159*r*r 改为scanf(“%f”, &r), area = 3.14159*r*r;printf(“area = %f”, area);}实验二:area = %f\n",!\n");}习题3:#include <stdio.h>加入#include “math.h”void main(){ int x, y; 改为:int x; float y;scanf(“%d”, &x);if(x>0) y = exp(-x);添加elseif(x<0) y = -exp(x);else y = 1;prinft(“y = %f\n”, y); 改为printf(”y=%f\n”, y);添加}Fly with me!实验三:习题1(九九乘法表):#include "stdio.h"void main(){int i, j;for (i = 1; i <= 9; i++){for (j = 1; j <= 9; j++){if (i > j){printf(" ");}else{printf("%-3d", i * j);}}printf("\n");}}习题2(求1—1000的完数):#include "stdio.h"void main(){int i,j;for (i=1;i<=1000;i++){int sum = 1;for (j=2;j<=i/2;j++){if (i%j == 0){sum+=j;}}if (sum == i){printf("%d its factor is: 1,",i);for (j=2;j<=i/2;j++){if (i%j == 0){printf("%d,",j);}}printf("\n");}}}习题3(输出结果):#include "stdio.h"void main(){ int i, j;float s;for (i = 7; i > 4; i--){s = 0.0;for (j = i; j > 3; j--)s = s + i * j;}printf("s = %f\n", s);}Fly with me!实验四习题1(排序改进):(1)冒泡改进:#include "stdio.h"#define N 6void main(){int a[N];int i,j,t;int flag;for (i=0;i<N;i++){scanf("%d",&a[i]);}for (i=0;i<N-1;i++){flag = 0;for(j=0;j<N-1-i;j++){if (a[j] >a[j+1]){flag = 1;t = a[j];a[j] =a[j+1];a[j+1] =t;}}if (flag == 0){break;}}for (i=0;i<N;i++){printf("%3d",a[i]);}}(2)选择改进:#include "stdio.h"#define N 6void main(){int a[N],k;int i,j,t;int flag;for (i=0;i<N;i++){scanf("%d",&a[i]);} for (i=0;i<N-1;i++){for (j=i+1;j<N;j++){k = i;if (a[k] > a[j]){k = j;}if (k!=i){t=a[i];a[i] =a[k];a[k] = t;}}}for (i=0;i<N;i++){printf("%3d",a[i]);}}习题3(改正错误):#include "stdio.h"void main(){int i, max, min, temp, a[10];for (i=0;i<10;i++) scanf("%d", &a[i]);max = min = 0;for (i=1;i<10;i++){if (a[i]>a[max])max = i;if (a[i]<a[min])min = i;}temp = a[0];a[0] = a[min];a[min] = temp;if (max == 0){max = min;}temp = a[9];a[9] = a[max];a[max] = temp;for (i=0;i<10;i++)printf("%-3d", a[i]);}Fly with me!习题1(x的n次幂):#include "stdio.h"double fun1(int x, int n){int i;double sum = x;for (i = 1; i < n; i++){sum = sum * x;}return sum;}void main(){int a, n;double sum;scanf("%d%d", &a,&n);sum = fun1(a, n);printf("sum = %.0f\n",sum);}习题2(两个数的所有公约数):#include "stdio.h"void fun1(int x, int y){int i, temp;temp = x < y ? x : y;printf("%d和%d的所有公约数为:", x, y);for (i = 1; i < temp; i++){if (x % i == 0 &&y % i == 0){printf("%d ",i);}}printf("\n");}void main(){int a, b;scanf("%d%d", &a,&b);fun1(a, b);}习题3(输出结果):#include "stdio.h"int z;int fun1(int x){if (x > 0){return 1;}else if(x < 0){return -1;}else{return 0;}}int fun2(int x){z = z - x;return fun1(x);}void main(){int a1, a2;z = 10;a1 = fun2(10) * fun2(z);printf("%d, %d\n", a1,z);z = 10;a2 = fun2(z) * fun2(10);printf("%d, %d\n", a2,z);}Fly with me!习题1(插入一个数):#include "stdio.h"void insert(int a[], int n, int x){int pos, i;// 初值为最后一个元素pos = n;// 确定要插入的数字的位置for (i = 0; i < n; i++){if (a[i] > x){pos = i;break;}}// 后移数组元素for (i = n; i > pos; i--){a[i] = a[i - 1];}// 插入数字xa[pos] = x;}void main(){int i, m;int a[10] = {3, 7, 9, 12,15};scanf("%d", &m);insert(a, 5, m);for (i = 0; i < 6; i++){printf("%d ", a[i]);}putchar('\n');}习题3(改正错误):#include "stdio.h"#include "string.h"int fun(int score[], int m, int below[]) {int i, k=0;float aver;改为float aver = 0.0;for (i=0;i<m;i++){aver = aver + score[i];aver = aver / m; aver = aver / m;}添加:aver = aver / m;for (i=0;i<m;i++){if (score[i] < aver){below[k] = score[i];k++;return k;}}添加:return k;}void main(){int i, n, below[9];int score[9] = {10, 20, 30, 40, 50, 60, 70, 80, 90};n = fun(score, 9, below[9]) ;改为:n = fun(score, 9, below) ;printf("Below the average score are:");for (i=0;i<n;i++){printf("%d ", below[i]);}printf("\n");}Fly with me!习题1(输出数组中最大及最小元素):#include "stdio.h"void fun(int *s, int *max, int *min){int *p = s;*max = *min = *p;for (;p < s + 6; p++){if (*max < *p){*max = *p;}if (*min > *p){*min = *p;}}}void main(){int a[6];int i, max, min;for (i = 0; i < 6;i++){scanf("%d", &a[i]);}fun(a, &max, &min);printf("max = %d, min = %d\n", max, min); }习题2(数组交换):#include "stdio.h"void swap(int *a, int *b){int temp;temp = *a;*a = *b;*b = temp;}void main(){int a[5] = {1, 3, 5, 7, 9};int b[5] = {2, 4, 6, 8, 10};int i; printf("数组a为:");for (i = 0; i < 5;i++){printf("%d ", a[i]);}printf("\n");printf("数组b为:");for (i = 0; i < 5;i++){printf("%d ", b[i]);}printf("\n");for (i = 0; i < 5;i++){swap(&a[i], &b[i]);}printf("交换后:\n");printf("数组a为:");for (i = 0; i < 5;i++){printf("%d ", a[i]);}printf("\n");printf("数组b为:");for (i = 0; i < 5;i++){printf("%d ", b[i]);}printf("\n");}习题3(改正错误):#include "stdio.h"改为:void fun(char *s, int *a, int *b) {while (*s){ 改为:if (*s >= 'A' && *s <= 'Z') (*a)++;改为:if (*s >= 'a' && *s <= 'z') (*b)++;s++;} }void main(){int upper = 0, lower = 0;char s[100];gets(s);fun(s, &upper, &lower);printf("\n upper = %d, lower = %d\n", upper, lower);}Fly with me!习题1:#include "stdio.h" #define N 10 struct Student { int num;char name[10];float chinese;float math;float english;};void main(){ int i;struct Student students[N];struct Student chi_stu, math_stu, eng_stu;for (i=0;i<N;i++){ scanf("%d%s%f%f%f",&students[i].num, students[i].name, &students[i].chinese , &students[i].math, &students[i].english);}chi_stu = students[0];math_stu = students[0];eng_stu = students[0];for (i=1;i<N;i++){if (students[i].chinese > chi_stu.chinese){chi_stu = students[i];}if (students[i].math > math_stu.math){math_stu = students[i];}if (students[i].english > eng_stu.english){eng_stu = students[i];}}printf("语文最好的学生信息为:\n");printf("%d %s %4.1f %4.1f %4.1f\n", chi_stu.num, chi_, chi_stu.chinese , chi_stu.math, chi_stu.english);printf("数学最好的学生信息为:\n");printf("%d %s %4.1f %4.1f %4.1f\n", math_stu.num, math_, math_stu.chinese , math_stu.math, math_stu.english);printf("英语最好的学生信息为:\n");printf("%d %s %4.1f %4.1f %4.1f\n", eng_stu.num, eng_, eng_stu.chinese , eng_stu.math, eng_stu.english); }Fly with me!习题2:#include "stdio.h"#define N 5struct Student{int num;char name[10];float english;};float average(struct Student stu[]){int i;float sum = 0;for (i=0;i<N;i++){sum += stu[i].english;}sum = sum / N;return sum;}// 选择排序void sort1(struct Student stu[]){int i, j, k;struct Student temp;for (i=0;i<N-1;i++){for (j=i+1;j<N;j++){k = i;if (stu[k].english < stu[j].english){k = j;}if (k != i){temp = stu[i];stu[i] = stu[j];stu[j] = temp;}}}Fly with me!}// 冒泡排序void sort2(struct Student stu[]){int i, j;int flag;struct Student temp;for (i=0;i<N-1;i++){flag = 0;for (j=0;j<N-i-1;j++){if (stu[j].english < stu[j+1].english){flag = 1;temp = stu[j];stu[j] = stu[j+1];stu[j+1] = temp;}}if (flag == 0) break;}}void main(){int i;struct Student students[N];for (i=0;i<N;i++){scanf("%d%s%f", &students[i].num, students[i].name, &students[i].english);}printf("平均值为:%4.1f\n", average(students));sort2(students);printf("成绩清单(从高到低):\n");for (i=0;i<N;i++){printf("%5d%10s%7.1f\n", students[i].num, students[i].name, students[i].english);}}Fly with me!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、选择题(20小题×1分=20分)1.下列有关C语言的说法正确的是_______。

A. 语句是C语言的基本单位B. 一个函数必须包含变量定义部分C. C语言本身不提供输入输出语句D. 一条语句不能写在多行上2.C程序运行过程中,产生目标程序(即.OBJ文件)的阶段是_______。

A. 编译B. 编辑C. 链接D. 运行3.下列表达式不能使整型变量i的值增1的是_______。

A. i+=1B. ++iC. i++D. i=+14.要求操作数必须是整型数据的运算符是_______。

A. %B. /C. &&D. ++5.输入长整型数据时可以使用下列哪种格式控制符_______。

A. %fB. %lfC. %dD. %ld6.用scanf函数输入_______时不需要加“&”符号。

A. 整型数据B. 实型数据C. 字符型数据D. 字符串7.若有定义:int a,b,c; 则执行语句“scanf("%d%d%d",&a,&b,&c);”时,下列选项中,_______输入数据的格式不正确。

A. 1 2 3B. 1<Tab>2<Tab>3C. 1,2,3D. 1<Enter>2<Enter>38.下列关于几种循环语句的说法中正确的是_______。

A. while语句不能转换为do-while语句B. for语句中的表达式1有时会被执行2次C. for语句的循环体可以是一个空语句D. for语句中的三个表达式之间必须用逗号分隔9.下列关于函数的说法中正确的是_______。

A. 使用系统提供的库函数时需要包含对应的头文件B. 一个函数必须有参数C. 一个函数必须有返回值D. 返回计算结果可以不通过ruturn语句10.若有函数原型:double min(double x,double y); 则下列函数调用语句不正确的是_______。

(假定m已定义:double m;)A. min(2,3);B. m=min(2+3,7*4);C. m=min(min(x,y),z);D. min(x,y)=23.56;11.若要某个整型变量x的值可以保留到函数下次调用时,则在定义x时,需要采用下列哪种定义方式_______。

A. auto int x;B. int x;C. static int x;D. extern int x;12.若有变量定义:int x,*p; float *pp; 则下列选项中可以正确执行的是_______。

A. p=x;B. *p=x;C. pp=p;D. p=&x;13.若有定义:static int a[ ][3]={1,2,3,4}; 则下列说法中正确的是_______。

A. 数组a有4个元素B. 数组a的行数为2C. 数组最后一个元素的值为4D. 有语法错误,编译出错14.若有定义:int a[10],*p; 则下列操作不正确的是_______。

A. p=a;B. p=&a[4];C. a=p;D. p=a+2;15.下列操作中,不能把字符串"China"存放到字符数组str中的是_______。

A. char str[ ]="China";B. char str[ ]={"China"};C. char str[ ]={'C', 'h', 'i', 'n', 'a'};D. char str[10]="China";16.下列选项中,函数返回值大于零的是_______。

A. strcmp("China","American")B.strcmp("China","China")C. strcmp("35+78","42")D. strcmp("compare","computer")17.若有以下定义:struct book{ int num;char name[20];float price;};struct book bk[10];则数组bk占有的内存字节数为_______。

A. 24B. 26C. 240D. 26018.一个共用体变量所占有的内存单元数为_______。

A. 各成员所需内存单元之和B.第一个成员所需内存单元数C. 占有内存单元最多的成员所需内存量D. 最后一个成员所需内存单元数19.以下对枚举类型BOOL定义正确的是_______。

A. enum BOOL{FALSE,TRUE};B. enum BOOL{"FALSE","TRUE"};C. enum BOOL={FALSE,TRUE};D. enum BOOL={"FALSE","TRUE"};20.用fopen函数打开一个文件时,若打开成功,则返回_______。

A. NULLB. 0C. -1D. 不为NULL的指针二、填空题(15空×2分=30分)1.C源程序的扩展名是__________。

2.请写出定义符号PI代表3.1416的预处理命令。

______________________3.求一个变量或一种数据类型占有的内存字节数使用的运算符是__________。

4.表示八进制整型常量时需要以__________开头。

5.执行语句“printf("%.2e\n", 35.68);”后的输出结果为__________。

6.请根据描述写出C表达式:将x+2.3的平方根赋值给变量y。

______________________7.定义函数时,如果函数名前不写数据类型,则函数的返回值为__________型数据。

8.若有定义:int i,*p; 如果需要指针变量p指向变量i,则需要执行的操作是__________。

9.字符串的结束标志是__________。

10.若有定义:int a[2][3]; 则数组a的最后一个元素是__________。

11.一维数组中,元素下标的起始值为__________。

12.表达式strlen("123\0ab")的值为__________。

13.若有定义:char *p="China"; 则*(p+3)的值为__________。

14.定义共用体类型的关键字为__________。

15.访问文件的指针变量需要定义为__________类型。

三、程序填空题(5小题×4分=20分)1. 下面程序的功能是,输入x值,根据下面的分段函数计算并输出y值。

请完成程序。

()()()1010115312≥<≤<⎪⎩⎪⎨⎧+-=x x x x x x y #includee <stdio.h>void main( ){double x,y;printf("\nInput x: ");scanf("%lf",&x);if (x<1)y=x;_①________ (x>=1&&x<10)y=2*x-1;else__②___________;printf("%.2lf\n",y);}2. 下列函数的功能是计算并返回n sum ++++++++++= 21132112111。

请完成程序。

double computeSum(____①______){double s=0,sum=0;int i;for (i=1;i<=n;i++){ ② ;sum+=1/s;}return(sum);}3. 下面程序的功能是,将从键盘输入的字符串中的所有大写字母转换为小写字母,其他字符保持不变,并将转换后的字符串输出。

请完成程序。

#include <stdio.h>void main( ){int i;char str[50];___①_______;for (i=0; str[i]!='\0'; i++)if (str[i]>='A'&&str[i]<='Z')___②___________;puts(str);}4. 以下程序用“选择法”对输入的10个整数按从小到大的顺序排序并输出,请完成程序。

#include <stdio.h>void main( ){ int a[10], i, j, t, m;for ( i=0 ; i<10 ; i++)scanf("%d", &a[i]);for ( i=0; i<9; i++){ ①for ( j=t+1 ; j< ②; j++)if (a[t]>a[j])t=j;m=a[i]; a[i]=a[t]; a[t]=m;}for (i=0; i<10; i++)printf("%4d", a[i]);}5. 以下程序的功能是,从键盘输入两个整数a、b,调用函数swap交换a、b的值,最后输出交换后的结果。

请完成程序。

void swap(int *p1, int *p2){int t;t=*p1; ①; *p2=t;}void main( ){int a,b;scanf("%d%d",&a,&b);swap( ②);printf("a=%d,b=%d\n",a,b);}四、程序设计题(3小题×10分=30分)1. 编写程序,计算并输出1!+2!+…+20!。

#include <stdio.h>void main( ){int i;double fact, sum;fact=1; sum=0;for (i=1; i<=20; i++){ fact*=i;sum+=fact;}printf("%.0lf\n", sum);}2. 编写自定义函数fun,用于求出形参字符串中ASCII码最大的字符,并将该字符返回。

(假设该函数的定义出现在主函数的上方)。

其中主函数已给出,如下:#include <stdio.h>#include <string.h>……void main( ){char str[80],ch;gets(str);ch=fun(str);printf("The max character is: %c\n", ch);}3. 一个一维数组,含10个元素,从键盘上输入该数组的值,编写程序将其中的值逆序存放(即第一个元素和最后一个元素交换位置,第二个元素和倒数第二个元素交换位置,……),并输出逆序后的结果。

相关文档
最新文档