| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 来自大学里计算机专业的C语言期末考试题(1)(约300道)——持续更新 -> 正文阅读 |
|
[C++知识库]来自大学里计算机专业的C语言期末考试题(1)(约300道)——持续更新 |
题型分为程序改错,程序设计,程序填空等等。 和以后的题目会有重复,这是题库中随机生成的十套试卷 话不多说,直接整,附答案 一、填空???共5题 (共计20分) 第1题 (4.0分) ???????题号:1879 ???????难度:易 ???????第22章 以下程序运行后,输出的a值是【1】,b值是【2】,x的值是【3】,y的值是【4】。 # include <stdio.h> void ex(int, int); int main( ) { ????????int a = 5, b = 6; ????????ex(a, b); ????????printf("a = %d, b = %d\n", a, b); ????????return 0; } void ex(int x, int y) { ????????x++; ????????++y; ????????printf("x = %d, y = %d\n", x, y); } =======(答案1)======= 5 =========或========= a=5 =======(答案2)======= 6 =========或========= b=6 =======(答案3)======= 6 =========或========= x=6 =======(答案4)======= 7 =========或========= y=7 第2题 (4.0分) ???????题号:1884 ???????难度:较易 ???????第22章 以下程序输出结果是【1】。 #include "stdio.h" union pw { ????????int i; ????????char ch[2]; }a; main() { ????????a.ch[0]=97; ????????a.ch[1]=0; ????????printf("%d\n",a.i); } =======(答案1)======= 97 第3题 (4.0分) ???????题号:1890 ???????难度:中 ???????第22章 以下程序输出结果是【1】。 # include <stdio.h> int ?age(int n) { ????????int c; ????????if (n==1) ????????????????c = 10; ????????else ????????????????c = age(n-1)+2; ????????return c; } int main() { ????????printf("%d\n", age(6)); ????????return 0; } =======(答案1)======= 20 第4题 (4.0分) ???????题号:1894 ???????难度:较难 ???????第22章 以下程序输出结果是【1】。 #include <stdio.h> int a=10,b=20; int main() { ???????int f(int); ?????????? ????????int a=2,i; ????????for(i=0;i<3;i++) ????????????????printf("%d ",f(a)); ????????return 0; } int f(int a) { ????????auto ?int b=0; ???????????static int c=3; ????????b=b+1; ???????????c=c+1; ????????return(a+b+c); } =======(答案1)======= 7 8 9 第5题 (4.0分) ???????题号:1461 ???????难度:难 ???????第22章 程序运行时若依次输入2,3,40,则输出结果是【1】. main() {int *p1,*p2,*p3; int i,j,k,t; scanf("%d%d%d",&i,&j,&k); p1=&i; p2=&j; p3=&k; if(*p1<*p2){t=*p1;*p1=*p2;*p2=t;} if(*p1<*p3){t=*p1;*p1=*p3;*p3=t;} if(*p2<*p3){t=*p2;*p2=*p3;*p3=t;} printf("%d\n",*p1); } =======(答案1)======= 40 二、程序填空???共3题 (共计20分) 第1题 (5.0分) ???????题号:400 ???????难度:中 ???????第9章 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 题目:程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。 例如:若传给形参a的数据中学号、姓名和三门课的成绩依次是: ??????10001、"ZhangSan"、95、80、88,修改后的数据应为: ??????10002、"LiSi"、96、81、89。 -------------------------------------------------------*/ #include ??<stdio.h> #include ??<string.h> struct student { ????????long ?sno; ????????char ?name[10]; ????????float ?score[3]; }; /***********SPACE***********/ struct ?student fun( 【?】 ) { ????????int ?i; ????????a.sno = 10002; /***********SPACE***********/ ????????strcpy(【?】, "LiSi"); ????????for (i=0; i<3; i++) /***********SPACE***********/ ????????????????【?】+= 1; ????????return ?a; } main() { ????????struct student ?s={10001,"ZhangSan", 95, 80, 88}, t; ????????int ?i; ????????printf("\n\nThe original data :\n"); ????????printf("\nNo: %ld ?Name: %s\nScores: ?",s.sno, s.name); ????????for (i=0; i<3; i++) ????????????????printf("%6.2f ", s.score[i]); ????????printf("\n"); ????????t = fun(s); ????????printf("\nThe data after modified :\n"); ????????printf("\nNo: %ld ?Name: %s\nScores: ?",t.sno, t.name); ????????for (i=0; i<3; i++) ????????????????printf("%6.2f ", t.score[i]); ????????printf("\n"); } 答案: =======(答案1)======= struct ?student a =======(答案2)======= a.name =======(答案3)======= a.score[i] 第2题 (10.0分) ???????题号:417 ???????难度:中 ???????第10章 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 题目:以下mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回. -------------------------------------------------------*/ #include <stdio.h> int mystrlen( char *str) { ????int i; /***********SPACE***********/ ????for(i=0;【?】!='\0';i++) ; /***********SPACE***********/ ???return(【?】); } void main( ) { ????????char *str="abcdefg"; ????????printf("%d\n",mystrlen(str)); } 答案: =======(答案1)======= *(str+i) =========或========= str[i] =======(答案2)======= i 第3题 (5.0分) ???????题号:385 ???????难度:中 ???????第11章 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 题目:下列给定程序的功能是:从键盘输入若干行字符串(每行不超过80个字符),写入文 ??????件myfile4.txt中,用-1作字符串输入结束的标志,然后将文件的内容显示在屏幕 ??????上。文件的读写分别由函数ReadText和WriteText实现。 -------------------------------------------------------*/ #include <stdio.h> #include <string.h> #include <stdlib.h> void WriteText(FILE *); void ReadText(FILE *); main() { ? ????????FILE ?*fp; ????????if((fp=fopen("myfile4.txt","w"))==NULL) ????????{ ? ????????????????printf(" open fail!!\n"); ????????????????exit(0); ????????} ????????WriteText(fp); ????????fclose(fp); ????????if((fp=fopen("myfile4.txt","r"))==NULL) ????????{ ? ????????????????printf(" open fail!!\n"); ????????????????exit(0); ????????} ????????ReadText(fp); ????????fclose(fp); } /***********SPACE***********/ void WriteText(FILE ?【?】) { ? ????????char ?str[81]; ????????printf("\nEnter string with -1 to end :\n"); ????????gets(str); ????????while(strcmp(str,"-1")!=0) ????????{ /***********SPACE***********/ ????????????????fputs(【?】,fw); ? ????????????????fputs("\n",fw); ????????????????gets(str); ????????} } void ReadText(FILE ?*fr) { ? ????????char ?str[81]; ????????printf("\nRead file and output to screen :\n"); ????????fgets(str,81,fr); ????????while( !feof(fr) ) ????????{ /***********SPACE***********/ ????????????????printf("%s",【?】); ????????????????fgets(str,81,fr); ????????} } 答案: =======(答案1)======= *fw =======(答案2)======= str =======(答案3)======= str 三、程序改错???共3题 (共计20分) 第1题 (5.0分) ???????题号:230 ???????难度:中 ???????第8章 /*------------------------------------------------------ ??????? 【程序改错】 -------------------------------------------------------- 功能:找出大于m的最小素数,并将其作为函数值返回。 ------------------------------------------------------*/ #include <math.h> #include <stdio.h> int fun( int m) { ??int i,k; ??for(i=m+1;;i++) ??{ ????/**********FOUND**********/ ????for(k=1;k<i;k++) ??????/**********FOUND**********/ ??????if(i%k!=0) break; ????????/**********FOUND**********/ ????????if(k<i) ??????????/**********FOUND**********/ ??????????return k; ??} } main() { ??int n; ??scanf("%d",&n); ??printf("%d\n",fun(n)); } 答案: =======(答案1)======= for(k=2;k<i;k++) =========或========= for(k=2;i>k;k++) =========或========= for(k=2;k<=i-1;k++) =========或========= for(k=2;k<i/2;k++) =========或========= for(k=2;i/2>k;k++) =========或========= for(k=2;k<=sqrt(i);k++) =========或========= for(k=2;sqrt(i)>=k;k++) =======(答案2)======= if( i%k == 0 ) break; =========或========= if(!(i%k)) break; =======(答案3)======= if(i<=k) =========或========= if(k>=i) =========或========= if( k == i ) =========或========= if(k>=i/2) =========或========= if(k=i/2) =========或========= if(k>sqrt(i)) =======(答案4)======= return i; =========或========= return (i); 第2题 (10.0分) ???????题号:247 ???????难度:中 ???????第10章 /*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 题目:下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放 ??????在a中,中间的数放在b中,最小的数放在c中。 例如:若输入的数为:55 12 34,输出的结果应当是:a=55.0,b=34.0,c=12.0。 -------------------------------------------------------*/ #include <stdio.h> void ?fun(float *a,float *b,float *c) { /***********FOUND***********/ ????????float ??*k; ????????if( *a<*b ) ????????{ ?? ????????????????k=*a; ????????????????*a=*b; ????????????????*b=k; ????????} /***********FOUND***********/ ????????if( *a>*c ) ????????{ ? ????????????????k=*c; ????????????????*c=*a; ????????????????*a=k; ????????} ????????if( *b<*c ) ????????{ ?? ????????????????k=*b; ????????????????*b=*c; ????????????????*c=k; ????????} } main() { ? ????????float ??a,b,c; ????????printf("Input ?a ?b ?c: ?"); ????????scanf("%f%f%f",&a,&b,&c); ????????printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); ????????fun(&a,&b,&c); ????????printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); } 答案: =======(答案1)======= float k; =======(答案2)======= if(*a< *c) =========或========= if(*c> *a) 第3题 (5.0分) ???????题号:207 ???????难度:难 ???????第10章 /*------------------------------------------------------ ??????? 【程序改错】 -------------------------------------------------------- 功能:为一维数组输入10个整数;将其中最小的数与第一个数 ??????对换,将最大的数与最后一个数对换,输出数组元素。 ------------------------------------------------------*/ #include <stdio.h> main() { ??int a[10]; ??void input(); ??void output(); ??void max_min(); ??input(a,10); ??max_min(a,10); ??output(a,10); } void input(int *arr,int n) { ??int *p,i; ??p=arr; ??printf("please enter 10 integers:\n"); ??for(i=0;i<n;i++) ??/**********FOUND**********/ ??scanf("%d",p); } void max_min(int *arr,int n) { ??int *min,*max,*p,t; ??min=max=arr; ??for(p=arr+1;p<arr+n;p++) ????/**********FOUND**********/ ????if(*p<*max) ???????max=p; ????else if(*p<*min) min=p; ??????t=*arr;*arr=*min;*min=t; /**********FOUND**********/ ??if(max=arr) max=min; ??t=*(arr+n-1); ??*(arr+n-1)=*max; ??*max=t; } void output(int *arr,int n) { ??int *p,i; ??p=arr; ??printf("The changed array is:\n"); ??/**********FOUND**********/ ??while(i=0;i<n;i++) ????printf("%3d",*p++); ??printf("\n"); } 答案: =======(答案1)======= scanf("%d",p ++); =========或========= scanf("%d",arr[i]); =========或========= scanf("%d",p+i); =========或========= scanf("%d",arr+i); =======(答案2)======= if(*p>*max) =========或========= if(*max<*p) =======(答案3)======= if( max == arr ) =======(答案4)======= for(i=0;i<n;i++) =========或========= for(i=0;n>i;i++) =========或========= for(p=arr;p<arr+n;) =========或========= for(i=0;i<=n-1;i++) =========或========= for(i=0;n-1>=i;i++) =========或========= for(p=arr;p<=arr+n-1;) =========或========= for(p=arr;arr+n-1>=p;) 四、程序设计???共4题 (共计40分) 第1题 (10.0分) ???????题号:474 ???????难度:易 ???????第3章 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:求一批数中最大值和最小值的差。 ------------------------------------------------*/ #define N 30 #include "stdlib.h" #include <stdio.h> void ?wwjt(); int max_min(int a[],int n) { ??/**********Program**********/ ?? ?? ?? ??/********** ?End ?**********/ } main() { ??int a[N],i,k; ??for(i=0;i<N;i++) ????a[i]=rand()%51+10; ??for(i=0;i<N;i++) ??{ ????printf("%5d",a[i]); ????if((i+1)%5==0) printf("\n"); ??} ??k=max_min(a,N); ??printf("the result is:%d\n",k); ??wwjt(); } void wwjt() { ??FILE *IN,*OUT; ??int n; ??int i[30]; ??int o; ??IN=fopen("in.dat","r"); ??if(IN==NULL) ??{ ????printf("Read FILE Error"); ??} ??OUT=fopen("out.dat","w"); ??if(OUT==NULL) ??{ ????printf("Write FILE Error"); ??} ??for(n=0;n<5;n++) ??{ ??? ????fscanf(IN,"%d",&i[n]); ??} ??o=max_min(i,5); ??fprintf(OUT,"%d\n",o); ??fclose(IN); ??fclose(OUT); } 答案:---------------------- int i,max,min; ????max=min=a[0]; ????for(i=1;i<n;i++) ??????if(a[i]>max) max=a[i]; ??????else if(a[i]<min) min=a[i]; ???return(max-min); ---------------------- 第2题 (10.0分) ???????题号:414 ???????难度:中 ???????第3章 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:在键盘上输入一个3行3列矩阵的各个元素的值(值 ??????为整数),然后输出主对角线元素的平方和,并在 ??????fun()函数中输出。 ------------------------------------------------*/ #include <stdio.h> void ?wwjt(); ?? main() { ??int i,j,s,a[3][3];; ??for(i=0;i<3;i++) ??{ ????for(j=0;j<3;j++) ??????scanf("%d",&a[i][j]); ??} ??s=fun(a); ??printf("Sum=%d\n",s); ??wwjt(); } int fun(int a[3][3]) { ??/**********Program**********/ ?? ?? ?? ?? ?? ?? ??/********** ?End ?**********/ ?? } void wwjt() { ??FILE *IN,*OUT; ??int m; ??int n; ??int i[3][3]; ??int o; ??IN=fopen("in.dat","r"); ??if(IN==NULL) ??{ ????printf("Read FILE Error"); ??} ??OUT=fopen("out.dat","w"); ??if(OUT==NULL) ??{ ????printf("Write FILE Error"); ??} ??for(m=0;m<3;m++) ??{ ????for(n=0;n<3;n++) ??????fscanf(IN,"%d",&i[m][n]); ??} ??o=fun(i); ??{ ?? ????fprintf(OUT,"%d\n",o); ????getch(); ??} ??fclose(IN); ??fclose(OUT); } 答案:---------------------- int sum; int i; sum=0; for(i=0;i<3;i++) ?sum=sum+a[i][i]*a[i][i]; ?return sum; ---------------------- 第3题 (10.0分) ???????题号:355 ???????难度:较难 ???????第3章 /*------------------------------------------------------- 【程序设计】 --------------------------------------------------------- 题目:学生的记录由学号和成绩组成。N名学生的数据已放入主函数中的结构体数组s中, ??????请编写函数fun,其功能是:把高于等于平均分的学生数据放在b所指的数组中, ??????高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入 ??????你编写的若干语句。 -------------------------------------------------------*/ #include <stdio.h> #define ??N ??12 void wwjt ( ); typedef ?struct { ? ????????char ?num[10]; ????????int ?s; } STREC; double ?fun( STREC ?*a, STREC *b, int *n ) { ????????/**********Program**********/ ????????/********** ?End ?**********/ } void main() { ????????STREC ?s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85}, ????????????????{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}, ????????????????{"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}}; ????????STREC ?h[N]; ????????int i, n; ? ????????double ?ave; ????????ave=fun( s,h,&n ); ????????printf("The %d student data which is higher than %7.3f:\n",n,ave); ????????for(i=0;i<n; i++) ????????????????printf("%s ?%d\n",h[i].num,h[i].s); ????????printf("\n"); ????????wwjt ( ); ???????? } void wwjt( ) { ????????FILE *in, *out ; ????????STREC ?h[N]; ????????int ?i,j, n; ????????double ?ave; ????????STREC ?s[N]; ????????in=fopen("in.dat","r"); ????????if(in==NULL) ????????{ ????????????????printf("Please Verify The Currernt Dir..It May Be Changed"); ????????} ????????out=fopen("out.dat","w"); ????????if(out==NULL) ????????{ ????????????????printf("Please Verify The Current Dir.. It May Be Changed"); ????????} ????????for(j=0;j<10;j++) ????????{ ????????????????for(i=0; i<N; i++) ????????????????{ ????????????????????????fscanf(in,"%s %d", &s[i].num, &s[i].s); ????????????????} ????????????????ave=fun( s,h,&n ); ????????????????fprintf(out, "%d\n%7.3f\n", n, ave); ????????} ????????fclose(in); ????????fclose(out); } 答案: int i; double av=0.0; *n=0; for(i=0;i<N;i++) av=av+a[i].s; av=av/N; ????????????????????????????????????????????????????????????????????????????????? for(i=0;i<N;i++) if(av<=a[i].s) ????????????????{ b[*n]=a[i]; *n=*n+1; ????????????????} ???? return av; ??????? for(i=0;i<N;i++) |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:10:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |