c语言第八章函数上机作业

合集下载

第八章函数上机习题

第八章函数上机习题

第八章函数问题与思考1.有如下程序#include<stdio.h>long fib( int n){if(n>2) return(fib(n-1)+fib(n-2));else return(2);}void main( ){ printf("%d\n",fib(3));}该程序的输出结果是()A、2B、 4C、 6D、82.在C语言中,函数的隐含存储类别是()A、 autoB、 staticC、 externD、无存储类别3.以下所列的各函数首部中,正确的是()A、 void play(var:Integer,var b:Integer)B、 void play(int a,b)C、 void play(int a,int b)D、 Sub play(a as integer,b as integer)4.以下程序的输出结果是()A、 0B、 29C、 31D、无定值fun(int x,int y,int z){ z=x*x+y*y;}main( ){ int a=31;fun(5,2,a);printf("%d",a);}5.以下程序的输出结果是()f(int b[ ],int m,int n){int I,s=0;for(i=m;i<n;i=i+2) s=s+b[i];return s;}main( ){int x,a[ ]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf("%d\n",x);}A、10B、18C、8D、156.以下程序的输出结果是()A、1B、2C、3D、4long fun( int n){ long s;if(n==1 || n==2)s=2;else s=n-fun(n-1);return s;}main( ){ printf("%ld\n",fun(3));}7.以下程序的输出结果是()int f( ){ static int i=0;int s=1;s+=i;i++;return s;}main( ){ int i,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}A、20B、24C、25D、158. 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。

(完整版)C语言8~13章复习题

(完整版)C语言8~13章复习题

第八章函数一、选择题1、以下正确的函数定义是(A )A) double fun(int x,int y) { }B) double fun(int x;int y) { }C) float fun(int x;y) { }D) float fun(int x,y) { }2、C语言中,函数返回值的类型是由( D )决定。

A)主调函数的类型B)return语句中表达式的类型C)由系统临时指定D)定义该函数时所指定的函数类型3、下列有关函数的说法正确的是( D )。

A)在C语言中,若对函数类型未加说明,则系统隐含类型为void。

B)C函数必须有返回值,否则无法使用。

C)C函数既可以嵌套定义,又可以可递归调用。

D)C函数中,形式参数必须指定为确定的类型。

4、用一维数组名作函数的实际参数,则传递给形式参数的是(A )A)数组首元素的地址 B)数组中第一个元素的值C)数组中元素的个数 D)数组中全部元素的值5、若已定义的函数有返回值,则有关该函数调用的叙述中错误的是(B )A)调用可以作为独立的语句存在B)调用可以作为一个函数的形参C)调用可以作为一个函数的实参D)调用可以出现在表达式中6、关于C语言中return语句正确的说法是(C )A)只能在主函数中出现 B)在每个函数中都必须出现C)可以在一个函数中出现多次 D)只能在除主函数之外的函数中出现7、如果在程序中使用了C库函数中的字符串函数,则应在源程序中使用的文件包含命令是(D )A)#include <stdio.h> B)#include <stdlib.h>C)#include <math.h> D)#include <string.h>8、已定义函数如下:int fun(int *p){ return *p;}则函数的返回值是(C )A)不确定的值 B)形参p中存放的值C)形参p所指存储单元的值 D)形参p的地址值9、以下叙述不正确的是(D )A)在不同的函数中可以使用同名的变量B)函数中的形式参数是局部变量C)在函数内定义的变量只在本函数范围内有效D)在函数内复合语句中定义的变量也可在本函数范围内有效10、以下正确的说法是(C )A)全局变量的的作用域一定比局部变量的作用范围大B)函数的形参可以是全局变量C)静态(static)变量的生存周贯穿于整个程序运行期间D)在定义变量时没有赋初值的auto变量和static变量的初值都是随机值11、下列关于C语言全局变量与局部变量的叙述中,错误的是(C )A) 函数调用结束时,函数中静态局部变量不释放内存空间,变量值保留B) 函数调用结束时,函数中动态局部变量释放内存空间,变量值消失C) 全局变量的生存周期是从程序开始到程序结束D) 在一个函数或复合语句中,当局部变量与已有的全局变量重名时,在该函数或复合语句中局部变量不起作用。

C语言程序设计上机指导第8章答案

C语言程序设计上机指导第8章答案
}
int max (int x,int y)
{ int z;
z=(x>y)? x: y;
return (z);
}
运行结果:
(2)以下程序求三角形的面积,请改正程序中的错误。
#include “stdio.h”
#include “math.h”
area(float, float, float);
void main()
return c;
}
void main ( )
{ int x;
scanf ("%d", &x);
printf ("%f\n", fun (x));
}
运行结果:
(2)以下程序对输入的一个整数,调用函数判断其是否是素数,是素数打印“YES”,否则打印“NO”。
# include “stdio.h”
int prime (int a)
程序清单:
#include "stdio.h"
float fun (int n,int m,int p)
{ int i;
float c;
c=0;
for (i=1; i<=n*m*p; i++)
if(i%n==0&&i%m==0&&i%p==0)
{
c=i;
break;
}
return c;
}
void main ( )
{ int i, yes=_______;
for (i=2; i<=a/2&& yes; i++)
if (_________%________==0) yes=0;

C语言上机

C语言上机

实验一上机操作初步(2学时)一、实验方式:一人一机二、实验目的:1、熟悉VC++语言的上机环境及上机操作过程。

2、了解如何编辑、编译、连接和运行一个C程序。

3、初步了解C程序的特点。

三、实验内容:说明:前三题为必做题目,后两题为选做题目。

1、输出入下信息:(实验指导书P3)*************************Very Good*************************2、计算两个整数的和与积。

(实验指导书P4)3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。

(书P4)4、在屏幕上显示一个文字菜单模样的图案:=================================1 输入数据2 修改数据3 查询数据4 打印数据=================================5、从键盘上输入两个整数,交换这两个整数。

四、实验答案:(代码+运行结果截屏)实验二简单的C程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握C语言的数据类型。

2、学会使用C语言的运算符及表达式。

3、掌握不同数据类型的输入输出方法。

三、实验内容:说明:前四题为必做题目,后两题为选做题目。

1、输入r1、r2,求出圆形垫片面积。

(实验指导书P10)2、输入华氏温度h,输出摄氏温度c。

(实验指导书P11)3、从键盘输入一个3位整数,将输出该数的逆序数。

(实验指导书P14)4、输入并运行以下程序,分析运行结果。

#include <stdio.h>void main( )\'7b int i,j;i=8; j=10;printf(“%d,%d\n”,++i,++j);i=8; j=10;printf(“%d,%d\n”,i++,j++);i=8; j=10;printf(“%d,%d\n”,++i,i);i=8; j=10;printf(“%d,%d\n”,i++,i);\'7d5、输入三角形三条边的边长,求三角形的面积。

C语言上机题参考答案

C语言上机题参考答案
}
20、设有1<=n<=500个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进
行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的
报数,如此进行下去直到所有的人都出圈为止。
要求按出圈次序输出编号。
输入格式如下:
n s m
示例:
输入:
6 1 3
输出:
3 6 4 2 5 1
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
8、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
if(x>1) y=6*x+5;
printf("%d",y);
}
三、循环图形
7、编程输出n行图形(n值通过键盘输入)
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
******
#include<stdio.h>
void main()
{int i,j,n;
printf("%.2f\n",(a+b+c)/3.0);

谭浩强C语言基础7-8章例题

谭浩强C语言基础7-8章例题
a求数组a中的所有元素之和b求数组a中的所有元素之积c求数组a中部分元素之和d求数组a中部分元素之积第8章例3下列程序的输出结果是
例1
请读程序: #include <stdio.h> #include <string.h> main() { char s1[20]="AbCdEf", s2[20]="aB"; printf("%d\n",strcmp(s1,s2)); } 上面程序的输出结果是________。 A) 32 B) 0 C) -32 D) 不确定的值
例5
请读程序片段(注意字符串内没有空格): printf("%d\n",strlen("ATS\n012\1\\")); 上面程序片段的输出结果是————。 A) 11 B) 10 C) 9 D) 8
例6
给出以下定义: char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为 ________。 A) 数组x和数组y等价 B) 数组x和数组y的长度相同 C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度
#include <conio.h> #include <stdio.h> main( ) { long s, t, sl=10; clrscr(); printf("\nPlease enter s:"); scanf("%ld", &s); /************found************/ t = s / 10; while ( s > 0) { s = s/100; t = s%10 * sl + t; /************found************/ sl = sl*100; } printf("The result is: %ld\n", t); }

C语言上机实验

C语言上机实验

实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。

2.熟悉编译环境。

3.初步熟悉C语言程序的语法规定。

4.了解简单函数的使用方法。

实验内容:1.编程且上机运行:求3个整数的和。

2.编程且上机运行:求2个数的和、差、积和商。

3.编程且上机运行:输入3个数,求最大值。

4.编程且上机运行:输入圆的半径,求圆的面积和周长。

5.在屏幕上输出:“hello world!”实验结果:实验二(第3章实验)1.实验目的:理解C语言的类型系统。

实验内容:写程序测试数据-2在类型char,int,unsigned int,long int,unsigned long int 中存储情况。

实验过程:实验结果:参见各种类型的存储实现描述。

2.实验目的:了解混合类型计算中类型的转换规则。

实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。

注意unsigned int和int数据运算时类型转换的方向。

实验过程:/** 类型转换问题* 试问下面两个表达式等价吗?*/#include <stdio.h>#include <stdlib.h>int main() {unsigned int ui,uj;ui = 1;uj = 2;if (ui < uj)printf("\n%u < %u is true !\n", ui, uj);elseprintf("\n%u < %u is false !\n", ui, uj);if (ui - uj < 0)printf("\n%u - %u <0 is true !\n", ui, uj);elseprintf("\n%u - %u <0 is false !\n", ui, uj);system("pause");return 0;}实验结果:参见类型转换规则。

C语言上机作业试题5套含答案

C语言上机作业试题5套含答案

第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。

程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。

例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。

例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。

(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。

)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。

方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。

例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。

⏹A说:不是我。

⏹B说:是C。

⏹C说:是D。

⏹D说:他乱说。

已知三个人说的是实话,一个人说的是谎话。

此刻要依照这些信息,找出做了好事的人。

C#程序设计 第8章-函数

C#程序设计  第8章-函数

第8章函数本章主要介绍函数的定义格式、函数的调用方法、函数的参数传递方式以及变量的作用域及其存储类型等。

8.1 C函数概述在第1章中已初步介绍了C语言程序是由一个或多个函数组成的。

在前面章节中,也已经涉及到了函数的概念。

如标准输入函数scanf,标准输出函数printf,以及其它一些数学函数、字符串函数等。

当然这一类函数称为C的标准函数(或库函数),它们是由C 系统提供的。

对于用户来说,根据需要,只要调用这些函数即可,并不需要知道这些函数是如何实现这些功能的。

因此,有了这些C的标准函数(或库函数),既可以加强用户所编程序的功能,又可以提高程序设计的效率。

然而,在实际编程中仅依靠C的标准函数是不够的。

如统计若干个班级某门课程(如数学)的平均成绩,用前面几章所学的知识来解决会很繁琐,而C的标准函数又无解决此类问题的函数。

为此,可以采用自定义函数(也可称为用户函数)来解决。

即将班级名称和人数作为自定义函数的参数,在该函数内部求出对应班级某门课程的平均成绩,并将结果输出。

这样,若想统计10 个班级某门课程的平均成绩,在一个程序中可以10次调用这个自定义函数,每次所提供的班级名称和人数不同即可方便地求出各个班对应的平均成绩。

通常一个具有一定规模的C程序往往由多个函数组成。

其中必有(且仅有)一个主函数,由主函数来调用其它函数。

根据需要,其它函数之间可以相互调用。

同一个函数可以被一个或多个函数调用一次或多次。

也就是说,C语言程序的全部功能都是由函数实现的。

每个函数相对独立并具有特定的功能。

可以通过函数间的调用来实现程序总体功能。

图8-1是一个程序中函数调用的示意图。

图8-1在C语言中,主函数可以调用其它函数,而其它函数均不能调用主函数。

通常把调用其它函数的函数称为主调函数,而将被调用的函数称为被调函数。

可见主函数只能是主调函数,而其它非主函数既可以是主调函数,也可以是被调函数。

C语言中,函数可按多种方式来分类:从使用的角度来分,可以分为标准函数和用户函数。

第八章 C语言习题及答案(第八章)

第八章 C语言习题及答案(第八章)

8-1 编写程序,将10个数34,3,29,63,70,16,85,82,90,93存放于一组数组中,求出这十个数的和及平均值。

解:#include "stdio.h"void main(){int a[10]={34,3,29,63,70,16,85.82,90,93};int i ,sum=0;float average ;for(i=0;i<10;i++){sum=sum+a[i] ;}average=sum/10.0;printf("sum=%d,average=%f\n",sum,average);}运行结果:sum=565,average=56.5000思考:数组有何特点?此问题如果不用数组进行处理将会怎样?8-2 编写程序,求存放于上题数组中10个数的最大值,最小值及所在的位置。

解:#include "stdio.h"void main(){int a[10]={34,3,29,63,70,16,85,82,90,93};int i,sum,max,min,d_max,d_min;max=min=a[0];d_max=d_min=0;for(i=1;i<10;i++){if(a[i]>max) {max=a[i];d_max=i;}if(a[i]<min) {min=a[i];d_min=i;}}printf("max=%d,a[%d]\n",max,d_max);printf("min=%d,a[%d]\n",min,d_min);}运行结果:max=93,a[9]Min=3,a[1]思考:数组a[i]中i的变化意味着什么?8-3 编写程序,从键盘读入50个数存放于一数组中,求出该数组中最大值、最小值及所在位置。

解:#include "stdio.h"void main(){float a[50],max,min;int i,d_max,d_min;for(i=0;i<50;i++)scanf("%f",&a[i]);max=min=a[0];d_max=d_min=0;for(i=1;i<50;i++){if(a[i]>max) {max=a[i];d_max=i;}if(a[i]<min) {min=a[i];d_min=i;}}printf("max=%d,a[%d]\n",max,d_max);printf("min=%d,a[%d]\n",min,d_min);}思考:此题中不用数组也可以处理吗?如果可以,区别之处在哪里?8-4将存放于上题数组中的50个数分别按升序,降序排序。

C语言函数练习题

C语言函数练习题

C语言程序设计实验教学(8)【实验目的】函数是C程序的大体组成部份,学习函数的设计和挪用是很重要的。

实验目的是把握函数的概念、变量的作用域和函数的挪用。

【实验要求】实际应用程序一般是由多个函数组成的,要求将常见的功能模块用函数形式实现,并学会在主函数或其他函数中挪用概念的函数。

要学会函数声明。

【实验课时】【实验内容】1.编写函数fun(n),n为三位自然数,判定n是不是为水仙花数,是返回1,否返回0。

编写main函数,输入一个数num,挪用fun(num)函数,并输出判定结果。

#include <>#include <>int fun(int n){int a,b,c;a=n%10; b=n/10%10; c=n/100;if(a*a*a+b*b*b+c*c*c==n) return(1);else return(0);}void main(){int num; clrscr();scanf("%d",&num);while(num<100||num>=1000){printf("please enter the num again! (num>=100&&num<1000) \n"); scanf("%d",&num);}if(/**/fun(num)==1 /**/) printf(" %d is a sxhs.\n",num);else printf(" %d is not a sxhs.\n",num);}2.编写函数ss(n), 判定n是不是为素数,是返回1,否返回0。

编写main函数,输入一个数num,挪用ss(num)函数,并输出判定结果。

#include <>#include <>int ss(int n){int i;for(i=2;i<n;i++)if(n%i==0) break;if(i>=n) return(1);else return(0);}void main(){ int num; clrscr();scanf("%d",&num);if(/**/ss(num)==1 /**/) printf("%d is a sushu.\n",num);else printf("%d is not a sushu.\n",num);}3.编写一个函数fun(n),计算n!,并编写main函数测试,在main函数中输入num,挪用fun(num),输出计算的结果。

C语言上机题目

C语言上机题目

下列给定程序中,函数fun的功能是:计算下列前n项的和,并作为函数值返回。

例如,当形参n的值为10时,函数返回:-0.。

请在下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:源程序给出如下。

不得增行或删行,也不得改程序的结构!试题32:下列给定程序中,函数fun的功能是计算下式直到,并将计算结果作为函数值返回。

请在下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:源程序给出如下。

不得增行或删行,也不得改程序的结构!试题33:下列给定程序中,函数fun的功能是:在形参s所指字符串的每个数字字符之后插入一个*号。

例如,形参s所指的字符串为“def35adh3kjsdf7”,执行后结果为“def3*5*adh3*kjsdf7*”。

请在下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:源程序给出如下。

不得增行或删行,也不得改程序的结构!试题34:给定程序中,函数fun的功能是将不带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2、4、6、8、10,逆置后,从头至尾结点数据域依次为10、8、6、4、2。

. 请在下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:源程序给出如下。

不得增行或删行,也不得改程序的结构!试题35:程序通过定义学生结构体变量,存储学生的学号、姓名和三门课的成绩。

函数fun的功能是:将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。

例如,若传给形参a的数据中学号、姓名和三门课的成绩依次是:10001、“ZhangSan”、95、80、88,修改后的数据为:10002、“LiSi”、96、81、89。

请在下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:源程序给出如下。

不得增行或删行,也不得改程序的结构!试题36:给定程序中,函数fun的功能是将带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2、4、6、8、10,逆置后,从头至尾结点数据域依次为10、8、6、4、2。

C语言第八章习题带答案-2012.11.6更新[优秀范文五篇]

C语言第八章习题带答案-2012.11.6更新[优秀范文五篇]

C语言第八章习题带答案-2012.11.6更新[优秀范文五篇]第一篇:C语言第八章习题带答案-2012.11.6更新练习8答案选择题1.在程序中要使用语句:printf(“%sn”, STRING);输出一个长度为5个字符的提示信息“OK!”,则应使用宏定义语句(D)。

A.#define STRING “OK!”B.#define STRING “"OK!”“C.#define STRING ”OK!“D.#define STRING ”“OK!”“2.以下正确的描述为(C)。

A.每个C语言程序必须在开头用预处理命令#includeB.预处理命令必须位于C源程序的首部C.在C语言中预处理命令都以”#“开头D.C语言的预处理命令只能实现宏定义和条件编译的功能3.C语言的编译系统中宏命令是(D)。

A.在程序运行时进行代换处理的B.在程序连接时进行处理的C.和源程序中其他C语句同时进行编译的D.在对源程序中其他成分正式编译之前进行处理的4.从下列选项中选择不会引起二义性的宏定义是(D)。

A.#define POWER(x)x*xB.#define POWER(x)(x)*(x)C.#define POWER(x)(x*x)D.#define POWER(x)((x)*(x))5.若有宏定义如下:#define X 5#define Y X+1#define Z Y*X/2则执行以下printf语句后,输出结果是(D)。

int a;a=Y;printf(”%d,“, Z);printf(”%dn“,--a);A.7,6B.12,6C.12,5D.7,56.若a、b、c、d、t均为int型变量,则执行以下程序段后结果为(C)。

#define MAX(A, B)(A)>(B)?(A):(B)#define PRINT(Y)printf(”Y=%dn", Y)……a=1;b=2;c=3;d=4;t=MAX(a+b, c+d);PRINT(t);A.Y=3B.存在语法错误 C.Y=7D.Y=0第二篇:第二章习题带答案一、单项选择题1、下列关于国内信用证的说法中,错误的是()。

C语言上机操作指导

C语言上机操作指导

C 语言上机操作指导程序设计是实践性很强的过程,任何程序最终都必须在计算机上运行,以检验程序的正确与否。

因此在学习程序设计中,一定要重视上机实践环节,通过上机可以加深理解C语言的有关概念,以巩固理论知识,另一方面也可以培养程序调试的能力与技巧。

1(C语言程序的上机步骤按照C 语言语法规则而编写的C 程序称为源程序。

源程序由字母、数字及其它符号等构成,在计算机内部用相应的ASCII 码表示,并保存在扩展名为“(C”的文件中。

源程序是无法直接被计算机运行的,因为计算机的CPU 只能执行二进制的机器指令。

这就需要把ASCII 码的源程序先翻译成机器指令,然后计算机的CPU 才能运行翻译好的程序。

源程序翻译过程由两个步骤实现:编译与连接。

首先对源程序进行编译处理,即把每一条语句用若干条机器指令来实现,以生成由机器指令组成的目标程序(扩展名为“(OBJ”的文件)。

但目标程序还不能马上交计算机直接运行,因为在源程序中,输入、输出以及常用函数运算并不是用户自己编写的,而直接调用系统函数库中的库函数。

因此,必须把“库函数”的处理过程连接到经编译生成的目标程序中,生成可执行程序(扩展名为“(EXE”的文件),并经机器指令的地址重定位,便可由计算机运行,最终得到结果。

C语言程序的调试、运行步骤可以用图A-1 表示:图A-1 C 语言程序的调试、运行步骤图A-1 中,虚线表示当某一步骤出现错误时的修改路线。

运行时,无论是出现编译错误、连接错误,还是运行结果不对(源程序中有语法错误或逻辑错误),都需要修改源程序,并对它重新编译、连接和运行,直至将程序调试正确为止。

除了较简单的情况,一般的程序很难一次就能做到完全正确。

在上机过程中,根据出错现象找出错误并改正称为程序调试。

我们要在学习程序设计过程中,逐步培养调试程序的能力,它不可能靠几句话讲清楚,要靠自己在上机中不断摸索总结,它可以说是一种经验积累。

程序中的错误大致可分为三类:程序编译时检查出来的语法错误;连接时出现的错误;程序执行过程中的错误。

C语言上机题库百科园第八章!南信大!

C语言上机题库百科园第八章!南信大!

第八章以下叙述中正确的是()若有以下语句typedefstruct S{int g; char h;}T;A.可用T定义结构体变量是struct S类型的变量C.可用S定义结构体变量是struct类型的变量当定义一个结构体变量时,系统分配给它的内存是()。

A.结构体中最后一个成员所需内存量B.成员中占内存量最大的容量C.结构体中第一个成员所需内存量D.各成员所需内存量的总和若有以下定义:struct link{int data;struct link *next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构,若指针p指向a,指针q指向c。

则能把c插入到a和b之间形成新的链表的语句是()>next=&c;q->next=p->next;q->next=&b;=b;/*N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。

请编写函数fun,它的功能是:求出平均分,由函数值返回。

例如,若学生的成绩是85,76,69,91,72,64,87,则平均分应当是。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:*/#include<>#include<>#define N 8struct sliststruct slist *next;};typedef struct slist STREC;double fun(STREC *h){/***********Begin***************//***********End**************/}STREC *creat(double *s) /*创建链表*/ {STREC *h,*p,*q;int i=0;h=p=( STREC*)malloc(sizeof(STREC));p->s=0;while(i<N){q=( STREC*)malloc(sizeof(STREC));q->s=s[i];i++;p->next=q;p=q;}p->next=0;return h;}outlist(STREC *h){STREC *p;p=h->next;printf("head ");do{printf("->%4.1f ",p->s);p=p->next; /*输出各成绩*/}while(p!=NULL);printf("\n\n");}void main(){FILE *wf;double s[N]={85,76,69,85,91,72,64,87},ave; STREC *h;h=creat(s);ave=fun(h);printf("ave=%6.3f\n ",ave);/******************************/wf=fopen("debug\\","w");fprintf(wf,"%6.3f\n",ave);fclose(wf);/*****************************/}【参考代码】double av=;STREC *p=h->next;/*p直接指向"头节点"的下一个节点,即第一个成绩*/while(p!=NULL){av=av+p->s; /*求总分数*/p=p->next;}return av/N; /*返回平均值*//*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

国家开放大学C语言程序设计章节测试参考答案

国家开放大学C语言程序设计章节测试参考答案

国家开放大学《C语言程序设计》章节测试参考答案第一章C语言概述自测练习一:C语言字符集自测练习1.在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。

(√)2.在C语言字符集中,一个大写英文字母和它的小写英文字母被视为不同的字符。

(√)3.在C语言程序中,ABC和abc被作为同一标识符使用。

(×)自测练习二:C语言字符集自测练习1.在C语言中,保留字是有专门含义和作用的,不能作为一般标识符使用。

(√)2.在C语言中,作为标识符的第一个字符只能是英文字母或下划线,不能是数字字符。

(√)3.C语言中使用的字符常量,其起止标记符是()。

a. 双引号b. 尖括号c. 单引号d. 中括号4.C语言中使用的字符串常量,其起止标记符是()。

a. 双引号b. 中括号c. 尖括号d. 单引号自测练习三:C语句分类自测练习1.在C语言中,一条简单语句的结束符是()。

a. 分号b. 空格c. 冒号d. 逗号2.在C语言中,每条复合语句的开始标记字符为()。

a. <b. [c. (d. {3.不符合C语言规定的复合语句是()。

a. {x=0;}b. {}c. {;}d. {y=10}4.C语言中的选择类语句有两条,它们是()。

a. else和caseb. if和switchc. if和elsed. switch和case自测练习四:函数分类与使用自测练习1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。

a. nameb. mainc. MAINd. function2.C语言程序中的基本功能模块为()。

a. 标识符b. 函数c. 表达式d. 语句3.一个函数定义所包含的两个部分是()。

a. 函数头和函数体b. 函数原型和函数体c. 函数名和参数表d. 函数头和函数尾4.一个程序文件开始使用的每条预处理命令,其首字符必须是()。

a. #b. @c. %d. $5.在一个程序文件中,若要使用#include命令包含一个系统头文件,则此头文件所使用的起止定界符为一对()。

《C语言程序设计》课后习题答案第八章

《C语言程序设计》课后习题答案第八章

8.1 编写两个函数,分别求两个证书的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个整数由键盘输入。

void main(){ int Mgy(int x,int y);int Mgb(int z);int a,b,mgy,mgb;printf("请输入两个数:\n");scanf("%d,%d",&a,&b);mgy=Mgy(a,b);mgb=Mgb(a,b,mgy);printf("两个数的最大公约数为%d,最小公倍数为%d\n",mgy,mgb);}int Mgy(int x,int y){ int r,temp;if(x<y){ temp=x;x=y;y=temp;}while(x%y!=0){ r=x%y;x=y;y=r;}return y;}int Mgb(int x,int y,int z){ return (x*y/z);}8.2 求方程ax²+bx+c=0的根,用三个函数分别求当b²-4ac大于零、等于零和小于零时的根,8.3编写一个判素数的函数,在主函数输入一个整数,输出是否是素数的信息。

#include<math.h>void main(){ int Isprime(int a);int m,temp=0;printf("请输入一个数:\n");scanf("%d",&m);temp=Isprime(m);if(temp==0) printf("%d不是素数。

\n",m);else printf("%d是素数。

\n",m);}int Isprime(int a){ int i,k,flag;if(a==0||a==1) flag=0;else{ k=sqrt(a);for(i=2;i<=k;i++)if(a%i==0) flag=0; }return flag; }8.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一格空8.9编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符8.10 写一个函数,输入一行字符,将此字符串中最长的单词输出。

C语言程序设计-第八章函数练习题【附答案】

C语言程序设计-第八章函数练习题【附答案】

第八章 函数-习题第八章 函数8.1 选择题【题8.1】以下正确的说法是 。

建立函数的目的之一是A)提高程序的执行效率B)提高程序的可读性C)减少程序的篇幅D)减少程序文件所占内存【题8.2】以下正确的说法是 。

A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调【题8.3】以下正确的函数定义形式是 。

A)double fun(int x,int y)B)double fun(int x;int y)C)double fun(int x,int y);D)double fun(int x,y);【题8.4】以下正确的函数形式是 。

A)double fun(int x,int y){ z=x+y; return z; }B)fun(int x,y){ int z; return z; }C)fun(x,y){ int x,y; double z; z=x+y; return z; }D)double fun(int x,int y){ double z; z=x+y; return z; }【题8.5】以下正确的说法是 。

在C语言中A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参是虚拟的,不占用存储单元【题8.6】若调用一个函数,且此函数中没有return语句,则正确的说法是 。

该函数A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值【题8.7】以下不正确的说法是 。

C语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以为任意类型D)形参应与其对应的实参类型一致【题8.8】以下正确的说法是 。

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

第八章通过本章实验作业应达目标1. 掌握定义和调用函数的方法2.掌握函数嵌套调用的方法3.掌握通过“值传递”调用函数的方法4.理解变量作用域和存在期的概念,掌握全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法本章上交作业程序8_1.c、8_2.c、8_4.c、8_5.c上传至211.64.135.121/casp。

实验一判断素数的函数【实验目的】掌握用函数实现判断素数的方法。

【实验内容】编写一个函数int prime(int a),判断参数是否为素数。

函数有一个形参a,当a 为素数时,返回1,反之,返回0。

以8_1.c命名本程序并上交。

函数声明如下:int prime( int a );主函数如下:#include<math.h>#include<stdio.h>void main ( ){int a, b;printf("please input a number:\n");scanf("%d", &a);b = prime( a );if ( b = =1 )printf("the number is a prime number.");elseprintf("the number is not a prime number.");}int prime( int a ) { …… }实验二求最大公约数与最小公倍数【实验目的】熟练函数的嵌套调用。

【实验内容】编写两个函数,分别求两个正整数的最大公约数和最小公倍数,结果作为函数返回值返回。

在main函数中实现输入与输出。

以8_2.c命名本程序并上交。

主函数如下:#include<stdio.h>void main( ){int gongyueshu( int a, int b );int gongbeishu( int a, int b );int a, b, c, d;printf("please input two integer numbers:");scanf("%d%d", &a, &b);c=gongyueshu(a, b);d=gongbeishu(a. b);printf("gongyueshu is %d\n gongbeishu is %d",c,d);}int gongyueshu( int a, int b ){ ……}int gongbeishu( int a, int b ){ …… }【实验提示】可以在最小公倍数中嵌套调用最大公约数函数。

最小公倍数=a*b/最大公约数实验三求数组逆序的函数【实验目的】熟练掌握操作数组的方法及数组名作函数参数的使用方法。

【实验内容】从键盘输入int型数组a[ 20 ]的20 个元素值,编写一个函数实现对数组元素数据的逆序放置。

即第1个元素与第20个元素互换,第2个元素与第19个元素互换,……,第10个元素与第11个元素互换。

请完善下述程序并以8_3.c命名本程序。

#include<stdio.h>void main( ){void nixu( int a[ ], int n ); /* 逆序函数声明 */int a[20],x;for (x=0;x<20;x++ )scanf("%d",&a[x]);printf("Before invert,the array is:\n");for (x=0;x<20;x++ )printf("%d ",a[x]);printf(“\n”);nixu(a,20); /* 调用逆序函数,注意实参是什么 */printf("\nAfter invert,the array is:\n");for (x=0;x<20;x++ )printf("%d ",a[x]);printf(“\n”);}void nixu(int a[ ], int n){int i, t;for (i=0;i<________; i++){ t=a[i]; ________; a[n-1-i]=t; }}实验四数组中插入元素的函数【实验目的】学习在一维数组中插入元素的方法。

【实验内容】参照给定的主函数,编写一个函数void insert(int a[ ], int n, int y ),它的功能是:把y值插入到有n个数的有序的a数组中, y的值从键盘读入。

插入后,数组中的数仍然有序。

以8_4.c命名本程序并上交。

对照下面三种情况运行程序:1)插在最前2)插在最后3)插在中间。

int a[11]={2,4,6,8,10,12,14,16,18,20};void insert( int a[ ], int n, int number );void main( ){int i, x ;printf("original array is:\n");for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("insert a new number:");scanf("%d",&x);insert(a,10,x);for(i=0;i<11;i++)printf("%d ",a[i]);}void insert( int a[ ], int n, int number ){ …… }若输入数11,输出 2 4 6 8 10 11 12 14 16 18 20输入数1,输出 1 2 4 6 8 10 12 14 16 18 20输入数33,输出 2 4 6 8 10 12 14 16 18 20 33【实验提示】1.若x插入数组的中间,插入后此元素之后的数,依次后移一个位置。

例如查找到 11应该放置在a[ 5 ] 的位置上,原来a[5]的数据 12 以及其后的所有元素后移一位。

2.后移元素的过程,应该注意从数组的末尾开始依次a[n]=a[n-1],a[n-1]=a[n-2]……实验五报数问题【实验目的】掌握数组和函数的应用。

【实验内容】n个人围成一圈,1,2,3循环报数,报到3的人退出。

到最后只余1人,输出最后留下的是第几号(最初的序号,以1起始)。

若n=6,则输出1;若n=10,则输出4;若n=100,则输出91。

编写函数,n作函数参数,函数返回结果。

以8_5.c命名本程序并上交。

#include<stdio.h>int baoshu( int n ){ …… }void main( ){int m ;scanf( "%d", &m ) ;printf( "n=%d\n", baoshu(m) ) ;}【实验提示】在初始化数组时,以1至n为序给每个人编号,分别设置三个计数器,一个用来表示数组的下标,一个用来表示退出的人数,另外一个表示报数时的计数器变量。

每次当某变量报数为3时,将该数组元素置0,当退出人数达到n-1时,推出循环。

最后返回数组中的唯一一个非零元素。

实验六全局变量与局部变量【实验目的】掌握全局变量和局部变量在程序中的关系。

【实验内容】下面的程序运行后的结果是_____________。

int x=3, y=5;int max( int x, int y ){int z;z=x>y?x:y;return(z);}void main( ){int x=8;printf( "max=%d\n",max(x,y) );}实验七变量的静态存储方式【实验目的】熟悉static定义静态变量的用法。

【实验内容】下面程序运行后的输出结果是_____________。

#include<stdio.h>varfunc( ){ int var=0;static int static_var=0;printf("\40:var equal %d \n",var);printf("\40:static var equal %d \n",static_var);printf("\n");var++;static_var++;}void main( ){ int i;for(i=0;i<3;i++)varfunc();}习题1.有如下程序#include<stdio.h>long fib( int n){if(n>2) return(fib(n-1)+fib(n-2));else return(2);}void main( ){ printf("%d\n",fib(3));}该程序的输出结果是()A、2B、 4C、 6D、82.在C语言中,函数的隐含存储类别是()A、 autoB、 staticC、 externD、无存储类别3.以下所列的各函数首部中,正确的是()A、 void play(var:Integer,var b:Integer)B、 void play(int a,b)C、 void play(int a,int b)D、 Sub play(a as integer,b as integer)4.以下程序的输出结果是()A、 0B、 29C、 31D、无定值fun(int x,int y,int z){ z=x*x+y*y;}main( ){ int a=31;fun(5,2,a);printf("%d",a);}5.以下程序的输出结果是()f(int b[ ],int m,int n){int I,s=0;for(i=m;i<n;i=i+2) s=s+b[i];return s;}main( ){int x,a[ ]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf("%d\n",x);}A、10B、18C、8D、156.以下程序的输出结果是()A、1B、2C、3D、4long fun( int n){ long s;if(n==1 || n==2)s=2;else s=n-fun(n-1);return s;}main( ){ printf("%ld\n",fun(3));}7.以下程序的输出结果是()int f( ){ static int i=0;int s=1;s+=i;i++;return s;}main( ){ int i,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}A、20B、24C、25D、158. 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。

相关文档
最新文档