C语言作业3
- 格式:doc
- 大小:265.00 KB
- 文档页数:19
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程序中(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语言第三次大作业班级:机电***姓名:*******学号:*********★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★题目一:利用数组编写一个简单的成绩管理系统,要求有效依据至少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 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项。
实验题目标准库函数使用与编译预处理实验时间 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”文件进行编译、连接、运行,得到结果。
第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语言(数组)一、选择题1. 设有程序:main(){ int i,a[11];printf("给数组赋值:\n");for (i=0;i<=10;i++)scanf("%d",( ));... ...printf("输出数组:\n");for(i=0;i<=10;i++)printf("%d,",( ));}则在程序中的两个园括号中分别应填入:CA) &a[i]和&a[i]B) a[i]和&a[i]C) &a[i]和a[i]D) a[i]和a[i]2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main(){ int a[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是( D ).A) 1 B) 3 C) 2 D) 不确定的值4. 阅读程序:f(int b[],int n){ int i,r=1;for(i=0;i<=n;i++) r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}以上程序的输出结果是( D ).A) 720 B) 6 C)24 D) 1205. 以下定义语句中,错误的是( B ).A) int a[ ] = {6,7,8};B) int n=5, a[n];C) char a[ ]= "string";D) char a[5 ]={'0','1','2','3','4'};6. 以下描述中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开始C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名相同7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ).A) scanf("%c",a[0]);B) scanf("%s",&a);C) printf("%c",a[3]);D) printf("%s",a);8.若定义数组int a[10] ,其最后一个数组元素为( C ).A) a[0]C) a[9]D) a[10]9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )?A) a[8] 的值为0B) a[1] 的值为1C) a[3] 的值为4D) a[9] 的值为010. 指出以下错误语句( A ).A) int n=10,a[n];B) int n,a[10];C) int a[10]={1,2,3};D) int a[10]={1,2,3,4,5,6,7,8,9,10};11. 请读程序:main(){int n[2],i,j,k;for(i=0;i<2;i++) n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='e',则数值为2的表达式是( C ).A)str['g'-c] B)str[2] C)str['d'-'c'] D)str['d'-c]13. 设有数组定义:int a[5];则下列给数组元素赋值错误的是( B ).B) scanf("%c",a[3]);C) a[3]=getchar();D) a[3]='a'+3;14. 以下数组定义中错误的是( D ).A) #define N 30int a[N+30];B) #define N 30int a[N];C) int a[30];D) int a[N];15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( A ).A) 6 B) 5 C) 7 D) 118. 设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a[4][5]; 则数组a占用的内存字节数是( C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是( B ).A) int b[3][4];B) int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}};C) int b[200][100]={0};D) int c[ ][3]={{1,2,3},{4,5,6}};21. 定义数组:int x[2][3]; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 622. 若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立( C )?A) 表达式b[1][2]的值为1B) 表达式b[1][2]的值为4C) 表达式b[1][2]的值为6D) 表达式b[1][2]的值为223. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",a[i][j]);语句的结果是哪一个( C )?A) 1,2,3,4,5,6B) 1 2 3 4 5 6C) 12345624. 若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立( B )?A) a数组中有6个元素B) a[2][3]是a数组的最后一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( C ).for(i=0;i<3;i++) printf("%d",x[i][2-i]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是( C ).A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]27. 以下程序的输出结果是( A ).main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d",s);}A) 18 B) 19 C) 20 D) 2128. 若已有char b[10][50];则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a[10]; 下列语句那个是正确的( D )?A) scanf("%s",a[0]);B) scanf("%s",&a);C) printf("%s",a[0])D) printf("%s",a)30. 阅读程序:main(){ char a[10];int i;for(i=1;i<=5;i++)scanf("%c",&a[i]);printf("%c",a[0]);}设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) a B)空格 C)不确定D)031. 合法的数组定义是( D ).A) int a[ ] = "string";B) int a[5]={0,1,2,3,4,5};C) char a= "string";D) char a[ ]={'0','1','2','3'};32. 设有数组定义:char string[ ]="China";则数组string所占的空间为( B ).A) 5个字节B) 6个字节C) 7个字节D) 10个字节33. 定义字符数组c:char c[ ]={"c language"};数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a[10]={'0','1','2','3','4','5','6','7','8','9'};B) char a[10]={'0','1 ','2','3'};C) char a[2]= {"1","2"};D) char a[2]= {'a’,'b’};35. 若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]是( A ).A) 'L'B) 'E'C) 'H'D) 'O'37. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( A C D)?A)b[8]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38. 若定义数组int a[10];指出下列错误语句:ABCDA) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a[10];D) a数组第一个元素的引用方法是a[1];二、判断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。
国家开放大学电大《C语言程序设计》网络课形考任务3作业及答案形考任务3一、选择题(共30分,每小题2分)题目1在下面的函数声明语句中,存在着语法错误的是( )。
选择一项:c.AA(int a; int b)题目2在下面的保留字中,不能作为函数的返回值类型的是( )。
选择一项:c. enum题目3假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为( )。
选择一项:c. 4题目4假定a为一个数组名,在下面的表达式中,存在语法错误的是( )。
选择一项:b.*a++题目5用calloc函数创建具有10个整型元素的一维数组的正确语句是( )。
选择一项:c.int*p=calloc(10,4);题目6假定变量m定义为“int m=7;”,则下面正确的语句为( )。
选择一项:b.int*p=&m;题目7假定k是一个double类型的变量,则定义变量p的正确语句为( )。
选择一项:d.char题目8选择一项:d.x=*pa+3;题目9假定有语句为“int b[10];int *pb;”,则下面不正确的赋值语句为( )。
选择一项:d.pb=b[5];题目10已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为( )。
选择一项:a.free(p);题目11在程序的一个文件中定义的函数,若要在另一个文件中调用,则必须在这另一个文件中给出该函数的( )。
选择一项:a. 原型语句题目12假定一个函数定义为“static int f1(int x,int y){return x+y;}”,该函数名称为()。
选择一项:c. f1题目13假定一个函数的原型语句为“int ff(int*x);”,一个整型数组为a[10],则下面函数调用表达式不正确的是( )。
选择一项:b.ff(a[0])题目14假定一个函数的数组参数说明为char a[],与之等价的指针参数说明为( ) 。
撞球#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整除。