IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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++)
??????? {
??????????????? scanf("%d",&a[i]);
??????????????? sum+=a[i];
??????? }
??????? ave=sum/N;
??????? for(i=0;i<N;i++)
??????? {
??????????????? if(a[i]>=60)
??????????????????????? pass++;
??????????????? if(a[i]>ave)
??????????????????????? better++;
??????? }
??????? for(i=0;i<N;i++)
??????????????? for(j=i+1;j<N;j++)
??????????????? {
??????????????????????? if (a[i]<a[j])
??????????????????????? {
??????????????????????????????? t=a[i];
??????????????????????????????? a[i]=a[j];
??????????????????????????????? a[j]=t;
??????????????????????? }
??????????????? }
??????????????? for(i=0;i<N;i++)
??????????????? {
??????????????????????? printf("%d",a[i]);
??????????????? }

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 12:51:42  更:2021-12-03 12:52:58 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码