C语言考试题及答案(8)_第1页
C语言考试题及答案(8)_第2页
C语言考试题及答案(8)_第3页
C语言考试题及答案(8)_第4页
C语言考试题及答案(8)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、单项选择题:(10分,每题2分)1char *p10;该语句声明了一个: 。A) 指向含有10个元素的一维字符型数组的指针变量pB) 指向长度不超过10的字符串的指针变量pC) 有10个元素的指针数组p,每个元素可以指向一个字符串D) 有10个元素的指针数组p,每个元素存放一个字符串2若int x;且有下面的程序片断,则输出结果为: 。for (x=3; x<6; x+) printf(x%2) ? "#%d" : "*%dn", x);A) #3 B) *3 C) *3 D) #3*4*4 #4 #4*5 #5#5 *5 3在while(!x

2、)语句中的!x与下面条件表达式等价的是: 。A) x!=0 B) x=1 C) x!=1 D) x=04已知struct pointint x;int y;struct rectstruct point pt1;struct point pt2;struct rect rt;struct rect *rp = &rt;则下面哪一种引用是不正确的_。A)rt.pt1.x B)(*rp).pt1.x C)rp->pt1.x D)rt->pt1.x5若二维数组a有m行n列,则下面能够正确引用元素aij的为: 。A) *(a+j*n+i) B) *(a+i*n+j) C) *(*(

3、a+i)+j) D) *(*a+i)+jCDDDC二、分析程序并写出运行结果。(25分,每题5分)1#include <stdio.h>main()int n;static char *monthName="Illegal month", "January", "February","March", "April", "May", "June", "July", "August", "Septe

4、mber", "October", "November", "December"for (n=1; n<=12; n+)printf("%sn", monthNamen); 运行结果是:JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember2#include<stdio.h>#define ARR_SIZE 7void YH(int aARR_SIZE, int n);void PrintYH(

5、int aARR_SIZE, int n);main()int aARR_SIZEARR_SIZE; YH(a, ARR_SIZE-1);PrintYH(a, ARR_SIZE-1);void YH(int aARR_SIZE, int n)int i, j;for (i=1; i<=n; i+) for (j=1; j<=i; j+) if (j=1 | i=j)aij = 1; else aij = ai-1j-1 + ai-1j; void PrintYH(int aARR_SIZE, int n)int i , j ; for (i=1; i<=n; i+)for (

6、j=1; j<=i; j+) printf("%4d", aij); printf("n"); 运行结果是:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 13#include <stdio.h>main()int i, n;for (i=1; i<=5; i+)printf("Please enter n:");scanf("%d", &n);if (n <= 0) continue;printf("n = %dn", n);pr

7、intf("Program is over!n");程序运行时输入:1 -2 3 -4 5运行结果是:n = 1Please enter n: Please enter n:n = 3Please enter n: Please enter n:n = 5Program is over!4#include <stdio.h>void Func(int n);main()int i;for (i = 0; i < 2; i+)Func(i);void Func(int n)static int t = 1;printf("t=%dn",

8、t+); 运行结果是:t=1t=25#include <stdio.h>int Func(int i);main()int i;for (i=3; i<5; i+)printf(" %d", Func(i);printf("n");int Func(int i)static int k = 10;for (; i>0; i-)k+;return (k);运行结果是: 13 17三、阅读并完成程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(20分,每空2分)1. 下面程序用于读入10个字符串,然后找出最

9、大的字符串并打印。#include <stdio.h>#include <string.h>main() char str1080,maxstring80; int i;printf("Enter ten strings:n");for (i=0; i<10; i+) scanf("%s", stri );strcpy(maxstring, str0); for (i=1; i<10; i+) if (strcmp(maxstring, stri)<0)或strcmp(stri, maxstring)>0s

10、trcpy(maxstring, stri);printf("The max string is:%sn",maxstring);2. 下面这个程序用于交换两个数组的对应元素的值。#include <stdio.h>#define ARRAY_SIZE 10void Swap(int *x, int *y);void Exchange(int a, int b, int n);void InputArray(int a,int n);void PrintArray(int a,int n);main()int aARRAY_SIZE, bARRAY_SIZE,

11、n;printf("Input array lenth n<=10: ");scanf("%d", &n);printf("Input array a:n");InputArray(a, n);printf("Input array b:n");InputArray(b, n); Exchange(a,b,n); printf("After swap:n");printf("Array a:n");PrintArray(a, n);printf("Ar

12、ray b:n");PrintArray(b, n);void Swap(int *x, int *y) int temp; temp=*x ; *x=*y ; *y=temp ;void Exchange(int a, int b, int n) int i;for (i = 0; i < n; i+)Swap( &ai,&bi ); void InputArray(int a, int n)int i;for (i = 0; i < n; i+) scanf("%d ", &ai) ;void PrintArray(int

13、a, int n)int i;for (i = 0;i < n;i+)printf("%d ", ai);printf("n");3. 从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出"Yes",否则输出"No"。已知符合下列条件之一者是闰年:能被4整除,但不能被100整除。能被400整除。#include <stdio.h>main() int year, flag;printf("Enter year:");scanf("%d",&yea

14、r );if ( year%4=0&&year%100!=0|year%400=0 ) flag = 1; else flag = 0; if ( flag ) printf("Yes!n"); else printf("No!n"); 四、在下面给出的4个程序中,共有15处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。(在错误的代码下边画一根横线,把正确的代码写在旁边;漏掉的代码正确插入合适的位置。30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。)1编程计算矩阵相乘之积。 #include<stdio.

15、h>#define ROW 2#define COL 3/ void MultiplyMatrix(int aROWCOL,int bCOLROW, int cROWROW) ;main()int aROWCOL, bCOLROW, cROWROW, i, j; printf("Input array a:n");for (i=0; i<ROW; i+)for (j=0; j<COL; j+)scanf("d", &aij); / %dprintf("Input array b:n");for (i=0; i

16、<COL; i+)for (j=0; j<ROW; j+) scanf("d", &bij);MultiplyMatrix(a, b, c);printf("Results:n");for (i=0; i<ROW; i+)for (j=0; j<ROW; j+) printf("%6d", &cij);/ cijprintf("n");void MultiplyMatrix(int aROWCOL,int bCOLROW, int cROWROW) int i, j, k;f

17、or (i=0; i<ROW; i+)for (j=0; j<ROW; j+)for (k=0; k<COL; k+)/ cij = 0;cij = cij + aik * bjk;/ bkj 2编程输入10个数,找出其中的最大值及其所在的数组下标位置。 #include <stdio.h>int FindMax(int num, int n, int *pMaxPos);main()int num10, maxValue, maxPos, minValue, minPos, i/;printf("Input 10 numbers:n ");f

18、or (i=0; i<10; i+)scanf("%d", numi); /& numi maxValue = FindMax(num, 10, *maxPos); / &maxPosprintf("Max=%d, Position=%dn",maxValue, maxPos);int FindMax(int num, int n, int *pMaxPos) int i, max;max = num0;for (i = 1, i < n, i+)/ i = 1; i < n;if (numi > max)max

19、= numi;*pMaxPos = i;return max;3韩信点兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。你知道韩信至少有多少兵吗?#include <stdio.h>main()int x;/x=0while (1)if (x%5=1 && x%6=5 && x%7=4 && x%11=10)/ x%5=1 && x%6=5 &am

20、p;& x%7=4 && x%11=10break;x+/x+;printf(" x = %dn", x);4下面函数Squeez()的功能是删除字符串s中所出现的与变量c相同的字符。void Squeeze(char s, char c);/ void Squeeze(char s, char c)int i,j;/j=0;for (i=0; si!='0' i+) if (si != 'c') /c sj = si; j+; si='0'/ sj='0'或/ sj='0

21、9;五、编程(15分)从键盘任意输入某班10个学生的成绩,调用save函数把数据存入到以你的学号命名的磁盘文件中,然后打开该文件读出数据,对成绩进行由高到低的排序,并打印成绩不及格的学生人数。最后再次调用save函数把数据存入到原磁盘文件中。要求按照如下给出的函数原型进行编程:void save(float score,int n);void Sort(float score,int n); int Fail(float score,int n);要求用一维数组做函数参数编程实现成绩排序和统计成绩不及格的学生人数,然后在主函数中打印这些结果,不能使用全局变量编程。参考程序如下:void load(float score,int n) /3分 FILE *fp; int i; if(fp=fopen(02406101","rb")=NULL) printf("cannot open infilen"); return; for(i=0;i<n;i+) if(fread(&scorei,sizeof(float),1,fp)!=1) if(feof(fp) fclose(fp); return; printf("file read errorn"); fclose (fp); void save(f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论