《湖南大学C语言试卷及答案》由会员分享,可在线阅读,更多相关《湖南大学C语言试卷及答案(11页珍藏版)》请在人人文库网上搜索。

1、一、单项选择题: ( 10 分,每题 2 分)1 char *p10;该语句声明了一个:。A) 指向含有10 个元素的一维字符型数组的指针变量pB) 指向长度不超过 10 的字符串的指针变量 pC) 有 10 个元素的指针数组 p,每个元素可以指向一个字符串D) 有 10 个元素的指针数组 p,每个元素存放一个字符串2若 int x;且有下面的程序片断,则输出结果为:。for (x=3; xpt1.xD) rt-pt1.x5若二维数组a 有 m行 n 列,则下面能够正确引用元素aij的为:。A) *(a+j*n+i)B) *(a+i*n+j)C) *(*(a+i)+j)D) *(*a+i)+j。

2、CDDDC二、分析程序并写出运行结果。(25 分,每题5 分)1#include main()int n;static char *monthName=Illegal month, January, February,March, April, May, June, July, August,September, October, November, December; / 11.for (n=1; n#define ARR_SIZE 7void YH(int aARR_SIZE, int n);void PrintYH(int aARR_SIZE, int n);main()int aARR。

3、_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; imain()int i, n;for (i=1; ivoid Func(int n);main() / 11.int i;for (i = 0; i int Func(int i);main()int i;for (i=3; i0; i-)k+;return (k);运行结果是:13 17三、阅读并完成程序, 在标有下划线的空白处填入适当的表达式或语句, 使程序完整并符合题目要求。( 20。

4、 分,每空 2 分)1. 下面程序用于读入 10 个字符串,然后找出最大的字符串并打印。#include #include main()char str1080,maxstring80; / 11.int i;printf(Enter ten strings:n);for (i=0; i0strcpy(maxstring, stri);printf(The max string is:%sn,maxstring);2. 下面这个程序用于交换两个数组的对应元素的值。#include #define ARRAY_SIZE 10void Swap(int *x, int *y);void Excha。

5、nge(int a, int b, int n);void InputArray(int a,int n);void PrintArray(int a,int n);main()int aARRAY_SIZE, bARRAY_SIZE, n;printf(Input array lenth nmain()int year, flag;printf(Enter year:);scanf(%d,&year );if ( year%4=0&year%100!=0|year%400=0 )flag = 1;else / 11.flag = 0;if ( flag )printf(Yes!n);else。

6、printf(No!n);四、在下面给出的 4 个程序中, 共有 15 处错误(包括语法错误和逻辑错误) ,请找出其中的错误,并改正之。 (在错误的代码下边画一根横线,把正确的代码写在旁边;漏掉的代码正确插入合适的位置。 30 分,每找对 1 个错误,加 1 分,每修改正确 1 个错误,再加 1 分。)1编程计算矩阵相乘之积。#include#define ROW 2#define COL 3/ void MultiplyMatrix(int aROWCOL,int bCOLROW, int cROWROW);main()int aROWCOL, bCOLROW, cROWROW, i, j;。

7、printf(Input array a:n);for (i=0; iint FindMax(int num, int n, int *pMaxPos);main()int num10, maxValue, maxPos, minValue, minPos, i/;printf(Input 10 numbers:n );for (i=0; i max)max = numi;*pMaxPos = i; / 11.return max;3韩信点兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1 至 5 报数,最末一个士兵报的数为1;按从 1 至 6 报数,最末一个士兵报的数为5;按从 1。

8、 至 7 报数,最末一个士兵报的数为4;最后再按从1 至 11 报数,最末一个士兵报的数为10。你知道韩信至少有多少兵吗?#include 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 & 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 。

9、i,j;/j=0;for (i=0; si!=0; i+)if (si != c) /csj = si;j+;si=0;/ sj=0;或/ sj=0;五、编程( 15 分)从键盘任意输入某班 10 个学生的成绩, 调用 save 函数把数据存入到以你的学号命名的磁盘文件中, 然后打开该文件读出数据, 对成绩进行由高到低的排序, 并打印成绩不及格的学生人数。最后再次调用 save 函数把数据存入到原磁盘文件中。要求按照如下给出的函数原型进行编程:void save(float score,int n);void Sort(float score,int n);int Fail(float sco。

10、re,int n);要求用一维数组做函数参数编程实现成绩排序和统计成绩不及格的学生人数,然后在主函数中打印这些结果,不能使用全局变量编程。参考程序如下: / 11.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;in;i+)if(fread(&scorei,sizeof(float),1,fp)!=1)if(feof(fp) fclose(fp); return;printf(file read error。

11、n);fclose (fp);void save(float score,int n)/3分FILE *fp;int i;if(fp=fopen(02406101,wb)=NULL)printf(cannot open filen);return;for(i=0;in;i+)if(fwrite(&scorei,sizeof(float),1,fp)!=1)printf(file write errorn);fclose(fp);void sort(float score,int n)/3分int i,j,k;float t;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+。

12、)if(scorejscorek)k=j;t= scorek; scorek= scorei; scorei=t;int Fail(float score,int n)/3分int i,k=0;for(i=0;in;i+)if(scorei60) k+;return k; / 11.void main()/3分 int i;float score10; for(i=0;i10;i+)scanf(%f,&scorei);save(score,10);load(score,10);sort(score,10);printf(The Fail number is %d,Fail(score,10);save(score,10); / 11。

Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐