二级C语言-83
- 格式:doc
- 大小:6.19 KB
- 文档页数:3
计算机二级C语言上机(南开大学)100题程序填空题1 补充fun函数,fun函数的功能是求10的阶乘。
n>1 n-1 n==12 在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出数列是一种整数数列,其中每数等于前面两数之和n==o n==1 fun(n-1)+fun(n-2)3 补充函数fun(char*s),该函数的功能是把字符串中的内容逆置s+i<s+n-1-i*(s+i)=(s+n-1-i) *(s+n-1-i)=t4 补充函数fun,他的功能是计算并输出n(包括n)以内能被3或7整除的所有自然数的倒数之和i<=ni%3==0||i%7==0 1.0/i5 功能是求1/2的圆面积,函数通过形参得到圆的半径,函数返回1/2的圆面积r r*r &x6 功能是计算并输出下列级数的前N项合Sn,直到Sn大于q为止,q 的值通过形参传入<= n++return s7 函数fun的功能是统计长整数n的各个位上出现数字1.2.3的次数,并通过外部(全局)变量c1.c2.c3返回主函数n%10 break break8 补充main函数,功能是从键盘输入一组整数,使用条件表达式找出最大的整数,当输入的整数为0时结束&num[i]max<num[i]? num[i]!=09 给定程序的功能是分别统计字符串中大写字母和小写字母的个数(*a)++ (*b)++ upper,lower10 补充main函数,功能是从键盘输入3个整数,然后找出最大的数并输出。
max=a max=b max=c11 函数fun的功能是把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动1 s[k] c12 补充fun函数,功能是字符串tt中的大写字母都改为对应的小写字母,其他的字符不变。
tt[i]<='Z'tt[i]+=32 tt13 补充fun函数,功能是判断一个数是否为素数。
c语言二级考试试题及答案C语言二级考试试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言中数组的描述,正确的是:A. 数组名是一个变量名B. 数组名是一个常量C. 数组名是一个指针D. 数组名是一个函数答案:B2. 以下哪个是C语言中的合法变量名?A. 2variableB. variable-nameC. variable_nameD. variable name答案:C3. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello World" + "Hello World"D. "Hello\nWorld"答案:D4. C语言中,以下哪个不是标准输入输出库函数?A. printf()B. scanf()C. getchar()D. puts()答案:C5. 下列哪个是C语言中的条件语句?A. ifB. switchC. forD. while答案:A6. C语言中,以下哪个是正确的函数定义?A. int function_name(int x, int y) { /* ... */ }B. int function_name(int x, int y);C. int function_name(int x, y) { /* ... */ }D. int function_name(int x; int y) { /* ... */ }答案:A7. 在C语言中,以下哪个是正确的递归函数调用?A. function_name(x)B. function_name(x, y)C. function_name(function_name(x))D. function_name(&x)答案:C8. 在C语言中,以下哪个是正确的结构体定义?A. struct person { int age; char name[50]; };B. struct person { int age; char name[50] }C. struct person { int age; char name[50]; }D. struct person { int age; char name[50] } person;答案:A9. 在C语言中,以下哪个是正确的指针声明?A. int *ptr;B. int ptr*;C. *int ptr;D. int * ptr;答案:A10. 下列哪个是C语言中的位运算符?A. &&B. ||C. &D. ++答案:C二、填空题(每题2分,共10分)1. C语言中,使用________运算符可以实现两个整数的按位与操作。
计算机⼆级C语⾔基础知识C语⾔程序的结构认识⽤⼀个简单的c程序例⼦,介绍c语⾔的基本构成、格式、以及良好的书写风格,使⼩伙伴对c语⾔有个初步认识。
例1:计算两个整数之和的c程序:#include main() {int a,b,sum; /*定义变量a,b,sum为整型变量*/a=20; /*把整数20赋值给整型变量a*/b=15; /*把整数15赋值给整型变量b*/sum=a+b; /*把两个数之和赋值给整型变量sum*/printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); /*把计算结果输出到显⽰屏上*/ }重点说明:1、任何⼀个c语⾔程序都必须包括以下格式:main() { }这是c语⾔的基本结构,任何⼀个程序都必须包含这个结构。
括号内可以不写任何内容,那么该程序将不执⾏任何结果。
2、main()----在c语⾔中称之为“主函数”,⼀个c程序有且仅有⼀个main函数,任何⼀个c 程序总是从main函数开始执⾏,main 函数后⾯的⼀对圆括号不能省略。
3、被⼤括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执⾏的内容。
4、在{ }⾥⾯每⼀句话后⾯都有⼀个分号(;),在c语⾔中,我们把以⼀个分号结尾的⼀句话叫做⼀个c语⾔的语句,分号是语句结束的标志。
5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执⾏这条c语⾔系统提供给我们直接使⽤的屏幕输出函数,⽤户即可看到运⾏结果,本程序运⾏后,将在显⽰器上显⽰如下结果:a=20,b=15,sum=356、#include注意:(1)以#号开头(2)不以分号结尾这⼀⾏没有分号,所以不是语句,在c语⾔中称之为命令⾏,或者叫做“预编译处理命令”。
7、程序中以/*开头并且以*/结尾的部分表⽰程序的注释部分,注释可以添加在程序的任何位置,为了提⾼程序的可读性⽽添加,但计算机在执⾏主函数内容时完全忽略注释部分,换⽽⾔之就是计算机当做注释部分不存在于主函数中。
c语言二级考试题库及详解答案C语言二级考试题库及详解答案一、选择题1. 在C语言中,以下哪个选项是合法的标识符?A. 2variableB. variable2C. 3numberD. variable#答案:B2. C语言中,整型变量int所占的字节数是:A. 1字节B. 2字节C. 4字节D. 8字节答案:C(注:实际字节数可能因编译器和平台而异,但通常为4字节)3. 下列哪个不是C语言的控制语句?A. ifB. switchC. forD. goto答案:B(注:switch也是C语言的控制语句,此题有误)二、填空题1. 在C语言中,若要定义一个整型数组,可以使用以下语法:___________。
答案:int array_name[array_size];2. C语言中,用于计算两个数的乘积的运算符是:___________。
答案:*三、简答题1. 简述C语言中数组和指针的区别。
答案:数组是一种数据结构,用于存储相同类型的元素集合。
指针是一个变量,它存储了另一个变量的内存地址。
数组名可以作为指针使用,但数组本身不是指针。
数组的大小在定义时确定,而指针可以指向不同大小的内存块。
2. 解释C语言中的递归函数。
答案:递归函数是一种函数,它在执行过程中调用自己。
递归函数通常用于解决可以分解为相似子问题的问题。
递归函数必须有一个明确的终止条件,以避免无限递归。
四、编程题1. 编写一个C语言程序,实现求1到100的和。
答案:```c#include <stdio.h>int main() {int sum = 0, i;for(i = 1; i <= 100; i++) {sum += i;}printf("1到100的和是:%d\n", sum);return 0;}```2. 编写一个C语言函数,实现字符串反转。
答案:```cvoid reverseString(char *str) {int len = 0;while(str[len] != '\0') {len++;}for(int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - 1 - i];str[len - 1 - i] = temp;}}```五、论述题1. 论述C语言中函数的作用和重要性。
全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是A)循环队列B) 带链队列C) 二叉树D)带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是A) 循环队列B) 栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A) 低内聚低耦合B) 高内聚低耦合C) 低内聚高耦合D) 高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A) 可封装D) 自顶向下C) 模块化D) 逐步求精(7)软件详细设计产生的图如下:该图是A) N-S图B) PAD图C) 程序流程图D) E-R图(8)数据库管理系统是A)操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统D) 一种操作系统(9)在E-R图中,用来表示实体联系的图形是A) 椭圆图B) 矩形C) 菱形D) 三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A) 选择B) 投影C) 交D) 并(11)以下叙述中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为A)-20B)-10C)0D)10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是A)0,0C)3,2D)1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b) c=a,a=b,b=c;B)if(a>b) {c=a,a=b,b=c;}C)if(a>b) c=a;a=b;b=c;D)if(a>b) {c=a;a=b;b=c;}(18)有以下程序#includemain(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,c);}程序运行后的输出结果是A)3B)5C)7D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c)) k=1;else k=0;B)if((a>b)||(b>c) k=1;else k=0;C)if(a<=b) k=0;else if(b<=c) k=1;D)if(a>b) k=1;else if(b>c) k=1;else k=0;20)有以下程序#include{ char s[]={“012xy”};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++;printf(“%d\n”,n);}程序运行后的输出结果是A)0B)2C)3D)5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运行后的输出结果是A)0 2B)1 3C)5 7D)1 2(22)有以下定义语句,编译时会出现编译错误的是A)char a=’a’;B)char a=’\n’;C)char a=’aa’;D)char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A)E,68C)E,DD)输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运行后的输出结果是A)32B)12C)21D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i<N;I++)< p="" />{ max=MIN;if(maxreturn max;}造成错误的原因是A)定义语句int i,max;中max未赋初值B)赋值语句max=MIN;中,不应给max赋MIN值C)语句if(maxD)赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A)9,One*WorldB)9,One*DreamC)10,One*DreamD)10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);}A)3 3 4 4B)2 0 5 0C)3 0 4 0D)0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ while((*b=*a)!=’\0’) {a++,b++;} }A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下面对函数指针的定义和赋值均是正确的是A)void (*pf)(); pf=fun;B)viod *pf(); pf=fun;C)void *pf(); *pf=fun;D)void (*pf)(int,char);pf=&fun;(34)有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是A)7B)8C)9D)10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运行后的输出结果是A)10,64B)10,10C)64,10D)64,64(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是A)char str[ ]=”string”;c=str;B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A)16B)8C)4D)2(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。
编写一程序P219.C实现以下功能从键盘读入一行字符(约定:字符数≤127字节),将其中的数字字符以及这些数字字符的数量在屏幕上显示,注意:要求先显示这些数字字符的数量。
编程可用素材:printf("Please input string:")...、printf("\nshu zi ge shu wei:...、printf("\nshu zi wei:...。
程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwafl faf32535as3bf0是从键盘输入的内容。
#include <stdio.h>#include <string.h>int main(void){int num=0, i;char str[128], jieguo[128];printf("Please input string: ");gets(str);for (i=0; str[i]!='\0'; i++){if (str[i]>='0' && str[i]<='9'){jieguo[num] = str[i];num++;}}jieguo[num] = '\0';printf("\nshu zi ge shu wei:%d", num);printf("\nshu zi wei:%s", jieguo);return 0;}编写一程序P220.C实现以下功能从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。
编程可用素材:printf("Please input string:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。
福建省高等学校计算机等级考试(二级C语言)选择题试题库答案试题1.在C语言源程序中,以下叙述正确的是(A.main函数必须位于文件的开头)。
C B.每行只能写一条语句C.程序中的一个语句可以写成多行D.每个语句的最后必须有点号2.关于C语言的源程序的叙述中,错误的是()。
C B.main函数可以书写在自定义函数之后C.必须包含有输入语句D.一行可以书写多个语句3.关于C语言数据类型的叙述,正确的是()。
A.枚举类型不是基本类型C B.数组不是构造类型C.变量必须先定义后使用D.不允许使用空类型4.C程序中main函数的位置()。
A.必须在最开始C B.必须在系统库函数后面C.可以在自定义函数后面D.必须在最后5.C语言的函数体由()括起来。
B B.{}C.[]D./**/6.关于C语言的叙述中,不正确的是()。
D.注释说明只能位于一条语句的后面D 7.以下叙述不正确的是()。
A.C程序的执行总是从main函数开始B.一个C源程序必须包含一个main函数C.C语言程序的基本组成单位是函数D.在编译C程序源程序时,可发现注释中的拼写错误8.结构化程序设计的三种基本结构是()。
A.函数结构、分支结构、判断结构C B.函数结构、嵌套结构、平行结构C.顺序结构、分支结构、循环结构D.分支结构、循环结构、嵌套结构C 9.对于C语言源程序,以下叙述错误的是()。
A.可以有空语句B.函数之间是平等的,在一个函数内部不能定义其它函数C.程序调试时如果没有提示错误,就能得到正确结果D.注释可以出现在语句的前面10.下面关于C语言用户标识符的描述,正确的是()。
A.不区分大小写D B.用户标识符不能描述常量C.类型名也是用户标识符D.用户标识符可以作为变量名11.以下()是正确的变量名。
D B.ifC.f.5D._f512.以下()是正确的常量。
D B.1E5.1C.'a12'D.32766L13.以下()是正确的变量名。
青少年软件编程(C语言)等级考试试卷(四级)2023-12202312C语言四级真题编程题1.移动路线桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。
小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。
小明把这只蚂蚁放在左下角的方格中,蚂蚁从左下角的方格中移动到右上角的方格中,每步移动一个方格。
蚂蚁始终在方格矩阵内移动,请计算出不同的移动路线的数目。
对于1行1列的方格矩阵,蚂蚁原地移动,移动路线数为1;对于1行2列(或2行1列)的方格矩阵,蚂蚁只需一次向右(或向上)移动,移动路线数也为1……对于一个2行3列的方格矩阵,如下图所示:-------------------|(2,1)|(2,2)|(2,3)|-------------------|(1,1)|(1,2)|(1,3)|-------------------蚂蚁共有3种移动路线:路线1:(1,1) → (1,2) → (1,3) → (2,3)路线2:(1,1) → (1,2) → (2,2) → (2,3)路线3:(1,1) → (2,1) → (2,2) → (2,3)时间限制:1000内存限制:65536输入输入只有一行,包括两个整数m和n(0输出输出只有一行,为不同的移动路线的数目。
样例输入2 3样例输出32.公共子序列我们称序列Z = < z1, z2, ..., zk >是序列X = < x1, x2, ..., xm >的子序列当且仅当存在严格上升的序列< i1, i2, ..., ik >,使得对j = 1, 2, ... ,k, 有xij = zj。
比如Z = < a, b, f, c > 是X = < a, b, c, f, b, c >的子序列。
计算机二级C语言选择题及填空题下面的138道题目,在二级考试中命中率极高。
一、选择题(1) 下面叙述正确的是(C)A. 算法的执行效率与数据的存储结构无关B. 算法的空间复杂度是指算法程序中指令(或语句)的条数C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止D. 以上三种描述都不对(2) 以下数据结构中不属于线性数据结构的是(C)A. 队列B. 线性表C. 二叉树D. 栈(3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得A. 8B. 16C. 32D. 15(4) 下面描述中,符合结构化程序设计风格的是(A)A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B. 模块只有一个入口,可以有多个出口C. 注重提高程序的执行效率D. 不使用goto语句(5) 下面概念中,不属于面向对象方法的是 (D) 注:P55-58A. 对象B. 继承C. 类D. 过程调用(6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B)A. 可行性分析B. 需求分析C. 详细设计D. 程序编码(7) 在软件开发中,下面任务不属于设计阶段的是(D)A. 数据结构设计B. 给出系统模块结构C. 定义模块算法D. 定义需求并建立系统模型(8) 数据库系统的核心是(B)A. 数据模型B. 数据库管理系统C. 软件工具D. 数据库(9) 下列叙述中正确的是(C)A.数据库是一个独立的系统,不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题D.数据库系统中,数据的物理结构必须与逻辑结构一致(10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108A. 内模式B. 外模式C. 概念模式D. 逻辑模式(11) 算法的时间复杂度是指(C)A. 执行算法程序所需要的时间B. 算法程序的长度C. 算法执行过程中所需要的基本运算次数D. 算法程序中的指令条数(12) 算法的空间复杂度是指(D)A. 算法程序的长度B. 算法程序中的指令条数C. 算法程序所占的存储空间D. 算法执行过程中所需要的存储空间(13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出A. 349B. 350C. 255D. 351(14) 结构化程序设计主要强调的是(B)A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性(15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D) 注:即第一个阶段A. 概要设计B. 详细设计C. 可行性分析D. 需求分析(16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。
二级C语言-83
(总分:100.00,做题时间:90分钟)
一、程序填空题(总题数:1,分数:30.00)
1.给定程序中,函数fun的功能是找出100至x(x≤999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。
例如,当n值为500时,各位数字之和为15的整数有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。
共有26个。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序如下。
#include<stdio.h>
int fun(int x)
{ int n,s1,s2,s3,t;
/**************found*************/
n= 1;
t=100;
/*************found**************/
while(t<= 2)
{ s1=t%10;s2=(t/10)%10;s3=t/100;
if(s1+s2+s3==15)
{printf(":=:%d":=:,t);
n++;
}
/**************found***************/
3;
}
return n;
}
main()
{ int x=-1;
while(x>999||x<0)
{printf("Please input(0<x<=999):");
scanf("%d"t,&x);}
prinrf("/nThe result is:%d/n",fun(x));
}
(分数:30.00)
解析:0 x t++ [解析] 填空1:变量n用于存放符合条件的整数的个数,应赋初值为0。
填空2:根据题目要求,确定循环变量t的取值范围t<=x。
填空3:循环变量t自增1操作。
二、程序改错题(总题数:1,分数:30.00)
2.给定程序MODI1.C中函数fun的功能是先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。
例如:当s所指的字符串为“ABCDE”时,则t所指的字符串应为“EDCBAABCDE”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下。
#include<stdio.h>
#include<string.h>
void fun(char*s,char*t)
{
/************found**********/
int i;
i=0;
s1=strlen(s);
for(;i<s1;i++)
/******************found*************/
t[i]=s[s]-i];
for(i=0;i<s1;i++)
t[s1+i]=s[i];
t[2*s1]="/0";
}
main()
{ char s[100],t[100];
printf("/nPlease enter string s:");scanf("%s",s);
fun(s,t);
printf("The resuh is:%s/n",t);
}
(分数:30.00)
解析:int i,s1;
t[i]=s[s1-i-1]; [解析] 变量s1没有定义。
该循环实现将s串中的字符逆序存入t串中,t[i]对应s串中的s[s1-i-1]。
三、程序设计题(总题数:1,分数:40.00)
3.函数fun的功能是将a、b中的两个两位正整数合并形成一个新的整数放在c中。
合并的方式是将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。
例如,当a=45,b=12时,调用该函数后,c=1425。
注意:部分源程序存在文件PROG1.C中。
数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。
给定源程序如下。
#include<stdio.h>
void fun(int a,int b,long*c)
{
}
main()/*主函数*/
{int a,b;long c;
printf("Input a b:");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The result is:%ld/n",c);
}
(分数:40.00)
__________________________________________________________________________________________ 正确答案:()
解析:void fun(int a,int b,long*c)
{
*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;
} [解析] 本题的主要问题是如何取出a和b的个位数和十位数,取出后如何表示成c中相应的位数。
由于a和b都是只有两位的整数,所以分别对它们除以10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。
得到后对应乘以1000、100、10、1就可得到c的千位数、百位数、十位数和个位数。
注意:使用c时要进行指针运算。