C语言作业3

合集下载

C语言作业及答案3

C语言作业及答案3

)。
A)char
B) void
C)float
D)int
8、设有说明 int (* prt)[M]; 其中的标识符 prt 是(
)。
A)M 个指向整型变量的指针
B)指向 M 个整型变量的函数指针
C)一个指向具有 M 个整型元素的一维数组的指针
D)具有 M 个指针元素的一维指针数组,每个元素都只能指向整型变量
)。
4、C 程序以函数为单位进行编译(
)。
5、由多个源文件组成一个程序时,主函数只能出现在一个源文件中(
)。
6、从变量的作用域角度来分,可以分为静态变量和动态变量(
)。
7、如果一个字符数组中包含一个以上结束符’\0’,则遇最后一个’\0’时输出才结束(
)。
8、gets( )函数的作用是从终端输入一个字符串到字符数组,并且将’\0’也装入该数组(
9、已知函数说明语句:void *fx( );则它的含义是(
)。
A)函数 fx 的返回值是一个空类型的指针
B)函数 fx 的返回值可以是任意的数据类型
C)函数 fx 无返回值
D)指针 fx 指向一个函数,该函数无返回值
10、对于下述定义,不正确的叙述是(
)。
union data
{ int i;
char c;
C)9,9
D)10,10
4、以下叙述正确的是()。
A)可以把 define 和 if 定义为用户标识符
B)可以把 define 定义为用户标识符,但不能把 if 定义为用户标识符
C)可以把 if 定义为用户标识符,但不能把 define 定义为用户标识符
D)define 和 if 都不能定义为用户标识符

C程序设计语言书面作业作业题(3)

C程序设计语言书面作业作业题(3)

C语言书面作业(三)一、选择题1.写出下面程序段的输出结果。

main(){ int x=2;while(x--);printf(“%d\n”,x);}2.下面程序的输出结果是__________。

main(){int i;for (i=0;i<10;i++);printf (“%d,i);}A) 0 B) 123456789 C) 023456789 D) 103.下面程序段的运行结果为_______for (i=1; ++i<4;);printf(“%d\n”,i);A) 3 B) 4 C) 5 D) 不定4.在执行以下程序时,如果从键盘上输入ABCdef后回车,则输出_____ #include<stdio.h>main( ){char ch;while((ch=getchar())!=‘\n’){ if (ch>=‘A’&&ch<=‘Z’) ch=ch+32;else if (ch>=‘a’&&ch<=‘z’) ch=ch-32;printf(“%c”,ch);}printf(“\n”);}A) ABCdef B) abcDEF C) abc D) DEF5.下列程序段中,不是死循环的是________A) int i=100; while(1){ i=i%100+1;if (i>100) break; }B)int k=0;do{++k;} while (k>=0);- 1 -C) for (;;); D)int s=3379;while (s++%2+s%2)s++;6.以下程序的输出结果是__________main( ){int a,b;for (a=1,b=1;a<=100;a++){if (b>=10 ) break;if (b%3==1){b+=3; continue;}}printf(“%d\n”,a);}A) 101 B) 6 C) 5 D) 47.执行以下程序时,为了使输出结果为t=4。

c语言程序设计练习3

c语言程序设计练习3

在一个C程序中(B)。

A、main函数必须出现在固定位置B、main函数可以在任何地方出现C、main函数必须出现在所有函数之前D、main函数必须出现在所有函数之后若有int a[][]={{1,2},{3,4}}; 则*(a+1),*(*a+1)的含义分别为(C)。

A、&a[0][1],3B、非法,2C、&a[1][0],2D、a[0][0],4fseek函数的正确调用形式是(D)。

A、fseek(起始点,位移量,文件类型指针)B、fseek(位移量,起始点,fp)C、fseek(文件类型指针,起始点,位移量)D、fseek(fp,位移量,起始点)C语言程序中,当调用函数时(B)。

A、实参和虚参可以共用存储单元B、实参和虚参各占一个独立的存储单元C、计算机系统自动确定是否共用存储单元D、可以由用户指定是否共用存储单元以下标识符中,不能作为合法的C用户定义标识符的是(C)。

A、toB、answerC、defineD、_ifchar *s1="hello",*s2;s2=s1;则(D)。

A、s2指向不确定的内存单元B、s1不能再指向其它单元C、不能访问"hello"D、puts(s1);与puts(s2);结果相同有如下程序main(){int x=1,a=0,b=0;switch(x){case 0: b++;case 1: a++;case 2: a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是 BA、a=1,b=1B、a=2,b=1C、a=1,b=0D、a=2,b=2下列正确的标识符是 DA、%yB、a+bC、6aD、_do若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是(B)。

A、"ab"B、"wb+"C、"ab++"D、"rb+"int a[10];合法的数组元素的最小下标值为(B)。

C语言第三次大作业

C语言第三次大作业

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★C语言第三次大作业班级:机电***姓名:*******学号:*********★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★题目一:利用数组编写一个简单的成绩管理系统,要求有效依据至少150条,利用程序设计模块化思想,自定义函数不少于5个。

其他要求:1、班级的人数由用户键盘输入;2、录入学生学号和考试成绩3、数据分析功能包括计算课程总分和平均分、按成绩由高到低排出成绩表、按学号由小到大排出成绩表、可按学号查询学生成绩及排名、按优秀(90~100),良好(80~89),中等(70~79),及格(60~69),不及格(<60)5个类别统计成绩并计算百分比和输出每个学生的学号、成绩及课程总分和平均分。

1、题意及算法分析根据题目要求,结合程序设计模块化思想,可自定义7~9个函数,分别实现相应的功能。

根据题目要求可定义学号数组为整形数组,平均分、成绩数组为float 类型;定义宏常量N,使得数组足够大;成绩和学号的排序可采用交换法、选择法、插入排序、冒泡法、快速排序法等,本题采用交换法排序,在采用交换法排序的时候可以通过定义一个标志变量(中间变量)实现;通过学号查找成绩可通过线性查找(顺序查找)或折半查找,本题采用的是顺序查找,采用顺序查找可以用for循环语句实现,查找次数最多为总人数n。

统计等级时,利用整数除法(区别于实数除法),结合switch语句和计数控制循环语句即可得到不同等级所占百分比。

菜单功能选择是可使用switch-case条件结构。

要注意的是数组的下标从0开始;只能逐个引用数组元素,不能一次引用整个数组;数组做函数形式参数时,数组的大小可以不出现在数组名后面的方括号内;被调用函数的实际参数用数组名或数组定义式。

2、NS流程图传统流程图:3、调试及改错1、缺少取地址运算符“&”写好程序后,解决ERROR后会情不自禁的执行程序,一执行便弹出如下对话框,回过头看程序,发现int read(long number[],float score[])函数中“printf("请输入学生总人数:"); ret=scanf("%d",n);”的语句中出现一个明显的低级错误,缺少取地址运算符“&”。

北理C语言作业及答案3

北理C语言作业及答案3

C语言作业3 43. 缩写展开成绩: 10 / 折扣: 0.8在保存字符串时,对出现在连续位置的若干个字符,如这些字符在ASCII表中也是连续出现,则可以将这些字符使用缩写形式进行保存,以节省保存空间。

例如用A-Z表示ABCD...XYZ,1-5表示12345,c-f表示cdef。

输入:包含缩写形式的字符串输出:将缩写形式进行还原后的字符串说明:只分别对大写字母、小写字母和数字进行压缩,对于形如9-A,a-C这样的缩写不进行处理。

测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.0-9↵以文本方式显示1.0123456789↵1秒64M 0测试用例2以文本方式显示1.G-I↵以文本方式显示1.GHI↵1秒64M 0测试用例以文本方式显示1.ABDG-K035-9abd-h↵以文本方式显示1.ABDGHIJK0356789abdefgh↵1秒64M 0#include <stdio.h>int main(){int i=0;char s[100];gets(s);while(s[i]!='\0'){if(s[i+1]!='-'){printf("%c",s[i]);i++;}else{if(s[i+2]>s[i] && ((s[i]<=57)+(s[i+2]<=57)!=1) && (s[i]<=57||s[i]>=65)){while(s[i]!=s[i+2]){printf("%c",s[i]++);}i+=2;}else printf("%c",s[i++]);}}printf("\n");return 0;}44. 函数递归成绩: 10 / 折扣: 0.8编写一个函数,使用递归算法求满足下述定义的整数序列的第n项。

C语言平时作业3(实用荟萃)

C语言平时作业3(实用荟萃)

实验题目标准库函数使用与编译预处理实验时间 2013-5-26 实验地点DS1421实验成绩实验性质□验证性□设计性□综合性教师评价:□算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;□实验结果正确;□语法、语义正确;□报告规范;其他:评价教师签名:一、实验目的1、理解变量的作用域和生存期的概念;2、掌握全局变量和局部变量的定义方法以及其作用域的确定方法,并能进行区别;3、理解“文件包含”处理和“工程文件”的方法概念及区别,并学会应用;4、理解局部变量对同名全局变量的屏蔽作用,掌握在程序流程的执行点选择确定操作变量的方法;5.理解和掌握最大公约数和最小公倍数的求解方法及程序实现。

二、实验项目内容(实验题目)编程实现功能:求2个数的最大公约数和最小公倍数。

要求用函数实现,并且将主函数和这两个函数分别存入3个文件“sy3-学号-a.cpp”,“sy3-学号-b.cpp”,“sy3-学号-c.cpp”中。

然后用文件包含和工程文件2种方法实现多文件编译链接。

三、源程序(实验过程或算法)1、“#include”方式:“a.cpp”文件如下:#include<stdio.h>#include "e:\20126074\sy3-20126074-b.cpp"#include "e:\20126074\sy3-20126074-c.cpp"long b(int m,int n);long c(int m,int n,int r);void main(){long m1,n1,g,l;printf("This is in File sy3-2010-a.cpp\n");printf("*** input: m1,n1 ****\n");scanf("%ld,%ld",&m1,&n1);g=b(m1,n1);printf("g=%ld\n",g);l=c(m1,n1,g);printf("l=%ld\n",l);}“b.cpp”文件如下:#include<stdio.h>long b(int m,int n){int r,t;printf("This is in File sy3-20126074-b.cpp\n");if(m<n)t=m,m=n,n=t;while(n!=0){ r=m%n;m=n;n=r;}return m;}“c.cpp”文件如下:#include<stdio.h>long c(int m,int n,int r){long bs;printf("This is in File sy3-20126074-c.cpp\n");bs=m*n/r;return bs;}对“a.cpp”文件进行编译、连接、运行,得到结果。

c语言课外作业3

c语言课外作业3

第5、6、7章函数、编译预处理、数组练习题一、选择题1.以下正确的说法是_______。

A.用户若需调用标准库函数,调用前必须重新定义。

B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义。

C.系统根本不允许用户重新定义标准库函数。

D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,由系统自动去调用。

2.以下正确的函数形式是_______。

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 ;}3.如果一个函数没有返回值,那么该函数的类型是_______。

A.int B.char C.float D.void 4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_______。

A.int B.char C.float D.void 5.以下说法不正确的是_______。

A.实参可以是常量、变量或表达式B.形参可以是常量、变量或表达式C.形参可以为任意类型D.形参应与其对应的实参类型一致6.一个函数形参的作用域是_______。

A.main函数B.形参所在函数体C.从定义处到文件尾D.整个程序7.以下关于形参和实参的说明中,错误的是_____。

A.实参和形参占用不同的内存单元,即使同名也相互不影响B.实参在进行函数调用时,它们都必须有确定的值,以便把这些值传给形参C.实参对形参的数据传送是双向的,可以把实参的值传给形参,也可以把形参的值反向传给实参D.形参变量只有在被调用时才分配内存单元8.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是_______。

《C语言程序设计A》课程形成性考核作业三参考答案

《C语言程序设计A》课程形成性考核作业三参考答案

元素赋值给x,则不正确的语句为( D )。 A.x=pa[3]; B.x=*(a+3); C.a=a[3]; D.x=*pa+3; 14.假定有定义“int b[10];int *pb;”,则不正确的赋值语句为( C )。 A.pb=b; B.pb=&b[0]; C.pb=b+2; D.pb=b[5]; 15.假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态 内存,应使用语句( D )。 A.delete[p]; B.delete *p; C.delete &p; D.delete []p; 16.假定指针变量p定义为“int *p=calloc(30,sizeof(int));”,要释放p所指 向的动态内存,应使用语句( D )。 A.delete[p]; B.deldete(p); C.free[]p; D.free(p);
1、 选择题 1. 在下面的(C)函数声明语句存在语法错误。 A.AA(int a,int b); B.AA(int ,int) C.AA(int a;int b) D.AA(int a,int) 2.在下面的(C)不能作为函数的返回类型。 A.void B.int C.new D.long 3.下面正确的函数原型语句是(B)。 A.int Function(void a); B.void Function(int); C.int Function(a); D.void int(double a); 4.函数调用func(exp1,exp2),exp3*exp4-exp5)中所含实参的个数为(B) 个。 A.1 B.2 C.4 D.5 5.下面的标识符中,(C)是文件级作用域。 A.函数形参 B.语句标号 C.外部静态类标识符 D.自动类标 识符 6.下面的标识符中,(B)具有全局级作用域。 A.函数形参 B.全局变量 C.内部静态类标识符 D.自动变量 符 7.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指 数据的地址大( C )字节。 A.1 B.2 C.4 D.8 8.假定a为一个字符数组名,则a[8]的地址比该数组的首地址大( B ) 个字节。 A.4 B.8 C.16 D.32 9.假定a为一个数组名,则下面的( B )表示有错误。 A.a[i] B.*a++ C.*a D.*(a+1) 10.用calloc函数创建具有10个整型元素的一维数组的正确语句是( C )。 A.int *p=calloc(10,2); B.int *p=callo(10; C.int *p=calloc(10,4); D.int *p=malloc(10); 11.假定变量m定义为“int m=7;”,则定义p的正确语句为( B )。 A.int p=&m; B.int *p=&m; C.int &p=*m; D.int *p=m; 12.假定k是一个double类型的变量,则定义指向k的变量p的正确语句 为( B )。 A.double p=&k; B.double *p=&k; C.double &p=*k; D.char *p=”Thank you!”; 13.假定一条定义语句为“int a[10],x,*pa=a;”,若要把数组a中下标为3的
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

撞球#include <stdio.h>#include <math.h>#include <string.h>int main(){double length,wide,x0,y0,x1,y1;int i;char towards[1500];while(1){memset(towards,0,sizeof(towards));if(scanf("%lf %lf",&wide,&length)==EOF) break;scanf("%lf %lf",&x0,&y0);scanf("%lf %lf",&x1,&y1);scanf("%s",towards);for(i=0;i<strlen(towards);i++){if(towards[i]=='F')y0=-y0;if(towards[i]=='B')y0=2*length-y0;if(towards[i]=='L')x0=-x0;if(towards[i]=='R')x0=2*wide-x0;}printf("%.4lf\n",sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)));}return(0);}20. 整数问题成绩: 0 / 折扣: 0.8请求输出满足以下条件的n 位正整数的个数:要求该n位整数的从高位开始前1位可以被1整除,该n位整数前2位可以被2*2整除,该整数前3位可以被3*3整除,该整数前4位可以被4*4整除……。

即该整数前k位都可被k平方整除。

例如:n=1,则符合条件的1位正整数为1~9,输出答案9。

n=2,符合条件的正整数为:12,16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92,96,则输出答案22。

当n=4时,2432就是一个符合题意的整数。

第一位2可以被1整除;前2为24可以被4整除;前3位243可以被9整除;整个4位2432可以被16整除。

输入:n(0<=n<9)输出:符合该条件的n位正整数的数量(本题目为软件学院2007年保研学生初试上机试题。

本题可以不用数组)测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1.1↵以文本方式显示1.9↵无限制64M 0测试用例 2以文本方式显示1.2↵以文本方式显示1.22↵无限制64M 0测试用例 6以文本方式显示以文本方式显示无限制64M 0思路一:做9个数组,第一个数组为1-9,从n=2开始,将上一组的每个数乘10加0-9,验算得到的数是否是n^2的整数倍,是则存入当前数组。

完成后第n个数组的长度即是所求。

思路二:直接数完9组数据,做成映射表。

1,2,3,4,5,6,7,8,9共9个12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92共22个126,162,207,243,288,324,360,369,405,441,486,522,567,603,648,684,720,729,765,801,846,882,927,963共24个1264,2432,2880,3248,3600,3696,4416,4864,6032,6480,6848,7200,7296,8016,8464,9632,共16个24325,28800,36000,60325,64800,72000,96325,共7个243252,288000,360000,603252,648000,720000,963252,共7个6480005,共1个n=8,9时个数为0则建立数组a[9]={9,22,24,16,7,7,1,0,0},输入n则直接输出数组的第n个值即可注意,如果数组计数从0开始,则输入n要输出a[n-1]#include <stdio.h>void main(){int n;n<9;scanf("%d",&n);{if(n==1)printf("9\n");}{if(n==2)printf("22\n");}{if(n==3)printf("24\n");}{if(n==4)printf("16\n");}{if((n==5)||(n==6))printf("7\n");}{if(n==7)printf("1\n");}{if((n==8)||(n==0))printf("0\n"); }}H5 铺地板(选作)成绩: 5 / 折扣: 0.8背景:你是一名室内装潢工程队的配料员。

你的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案如下:1 2 6 7 153 5 8 14 164 9 13 17 2210 12 18 21 2311 19 20 24 25学了 C 语言以后,你决定编写一个程序,帮助你的同伴生成这样的图形。

输入:方阵N的大小。

输出方阵。

测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1.5↵以文本方式显示1. 1 2 6 7 15↵2. 3 5 8 14 16↵3. 4 9 13 17 22↵4.10 12 18 21 23↵5.11 19 20 24 25↵1秒64M 0#define N 50#include<stdio.h>main(){int c,d,b,h,i,j,n,a[N][N];scanf("%d",&b);if(b==1)printf(" %d\n",b);else{for(i=0;i<b;i++)for(j=0;j<b;j++){if(i+j<b){d=((i+j)*(j+i+1))/2;if((i+j)%2==0) a[i][j]=d+j+1; else a[i][j]=d+1+i;}if(i+j>=b){c=0;h=i+j-b;for(n=b-1;h>0;n--,h--)c=c+n;d=(b+1)*b/2+c;if((i+j)%2==0)a[i][j]=d+b-i;else a[i][j]=d+b-j;}}for(i=0;i<b;i++){for(j=0;j<b-1;j++)if(a[i][j]<=9)printf(" %d ",a[i][j]);else printf("%d ",a[i][j]);if(a[i][j]<=9)printf(" %d\n",a[i][j]);else printf("%d\n",a[i][j]);}}}H8 邮票组合(选作)成绩: 5 / 折扣: 0.9背景:我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资。

现在,邮局有4种不同面值的邮票。

在每个信封上最多能贴5张邮票,面值可相同,可不同。

输入:四种邮票的面值。

输出:用这四种面值组成的邮资最大的从1开始的一个连续的区间。

说明:如结果为10,则表明使用4张邮票可组合出1、2、3、4、5、6、7、8、9、10这些邮资。

名词解释:邮资:就是你寄东西需要花多少钱。

邮票面额:是由国家发行的具有固定价格的花纸片,被称为邮票。

如果你寄东西,邮局称了重量,告诉你要240分。

这样你就要贴邮票了。

如果现在邮局的邮票有面值为80分、50分、20分和10分的四种,你就可以采用不同的组合得到240的邮资,例如:采用3张80分的可以凑出240分;或者24张10分的凑起来240分也可以。

显然不同邮票的组合都可以得到同样一种邮资。

测试输入期待的输出时间限制内存限制额外进程测试用例 2以文本方式显示1. 1 3 7 12↵以文本方式显示1.The max is 46.↵1秒64M 0#include<stdio.h>int neng(int a[],int max){int i,j,k,m,n;int sum;for(i=0;i<5;i++)for(j=0;j<5;j++)for(k=0;k<5;k++)for(m=0;m<5;m++)for(n=0;n<5;n++){sum=a[i]+a[j]+a[k]+a[m]+a[n];if(sum==max) return 1;}return 0;}void main(){int a[5],i;int max=0;a[4]=0;scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]); while(1){if(neng(a,max)){max++;}else break;}printf("The max is %d.\n",max-1);}H6 晕(选作)成绩: 5 / 折扣: 0.8看着这样的“回”形图案你晕吗?让我们不用数组,来做出它。

输入:n。

正方形的边长输出:边长为 n 的数字回形方阵。

测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1.3↵以文本方式显示1. 1 2 3↵2.8 9 4↵3.7 6 5↵无限制64M 0测试用例 2以文本方式显示1.4↵以文本方式显示1. 1 2 3 4↵2.12 13 14 5↵3.11 16 15 6↵4.10 9 8 7↵无限制64M 0测试用例 5以文本方式显示1.5↵以文本方式显示1. 1 2 3 4 5↵2.16 17 18 19 6↵3.15 24 25 20 7↵4.14 23 22 21 8↵5.13 12 11 10 9↵无限制64M 0#include<stdio.h>#define N 20void main(){int n,x1,x2,x3,x4,y,flag=1,s,i=0,j=0,a[N][N];scanf("%d",&n);x1=n; x2=x3=n-1; x4=n-2;for(s=1;flag; ){for(y=0;y<x1&&flag;y++) {a[i][j]=s;j++;s++;}x1-=2;i++;j--;if(s==n*n+1) flag=0;for(y=0;y<x2&&flag;y++) {a[i][j]=s;i++;s++;}x2-=2;j--;i--;if(s==n*n+1) flag=0;for(y=0;y<x3&&flag;y++) {a[i][j]=s;j--;s++;}x3-=2;i--;j++;if(s==n*n+1) flag=0;for(y=0;y<x4&&flag;y++) {a[i][j]=s;i--;s++;}x4-=2;j++;i++;if(s==n*n+1) flag=0;}for(i=0;i<n;i++,printf("\n")) for(j=0;j<n;j++) printf("%3d",a[i][j]);}H7 子数整除(选作)成绩: 5 / 折扣: 0.8对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:•sub1=a1a2a3•sub2=a2a3a4•sub3=a3a4a5例如,五位数20207可以拆分成:•sub1=202•sub2=020(=20)•sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。

相关文档
最新文档