二级C语言-177
c语言二级考试试题及答案

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语⾔的基本构成、格式、以及良好的书写风格,使⼩伙伴对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、程序中以/*开头并且以*/结尾的部分表⽰程序的注释部分,注释可以添加在程序的任何位置,为了提⾼程序的可读性⽽添加,但计算机在执⾏主函数内容时完全忽略注释部分,换⽽⾔之就是计算机当做注释部分不存在于主函数中。
202403C语言二级

青少年软件编程(C语言)等级考试试卷(二级)分数:100 题数:5一、编程题(共5题,共100分)1.满足条件的数的累加2现有n个整数,将其中个位数为k的数进行累加求和。
时间限制:1000内存限制:65536输入第一行1个整数n。
(0 < n < 1000)第二行n个非负整数,以空格分隔,每个数不大于100000。
第三行1个整数k。
(0 ≤ k ≤ 9)输出输出满足题目要求的累加和。
样例输入样例输出试题编号:20240323-2-01试题类型:编程题标准答案:试题难度:一般试题解析:展示地址:点击浏览考生答案:#include<bits/stdc++.h>using namespace std;int main(){int n;cin>>n;int a[n+1];for(int i=1;i<=n;i++){cin>>a[i];int k;cin>>k;int sum=0;for(int i=1;i<=n;i++){if(a[i]%10==k){sum+=a[i];}}cout<<sum;return 0;}考生得分:20是否评分:已评分评价描述:2.统一文件名小A在命名文件的时候经常不注意大小写,格式比较混乱。
现要求你写一个程序将目录下的文件统一规范的格式,即文件名的第一个字符如果是字母要大写,其他字母小写。
如将Test、test整理成Test。
时间限制:1000内存限制:65536输入第一行一个数字n,表示有n个文件名要统一,n不超过100。
接下来n行,每行一个单词,长度不超过20,表示文件的名字。
文件名由字母、数字和-组成。
输出n行,每行一个单词,对应统一后的文件名。
样例输入样例输出试题编号:20240323-2-02试题类型:编程题标准答案:试题难度:一般试题解析:展示地址:点击浏览考生答案:(此题已作答)考生得分:0是否评分:已评分评价描述:b杯“Lab杯”乒乓球赛就要在PKU的实验室之间举行了。
计算机二级《C语言》模拟试题及答案

计算机二级《C语言》模拟试题及答案计算机二级《C语言》模拟试题及答案1、以下语句的输出结果是( )。
int a=-1,b=4,k;k=(+ +a<0)&&!(b - -<=0);printf("%d,%d,%d\n",k,a,b);A. 1,0,4B. 1,0,3C. 0,0,3D. 0,0,42、下列程序的输出结果是( )。
char *p1="abcd", *p2="ABCD", str[50]="xyz";strcpy(str+2,strcat(p1+2,p2+1));printf("%s",str);A. xyabcABB. abcABzC. ABabczD. xycdBCD3、执行下面的程序后,a的值是( )。
#define SQR(X) X*Xmain( ){ int a=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a); }A. 10B. 1C. 9D. 04、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( )。
A.P+i*2B. P+(i-1)*2来源:考试大C. P+(i-1)D. P+i5、下列程序执行后输出的结果是( )。
int d=1;fun (int p){ int d=5;d + =p + +;printf("%d,",d); }main( ){ int a=3;fun(a);d + = a + +;printf("%d\n",d); }A. 8, 4B. 9, 6C. 9, 4D. 8, 56、表达式:10!=9的值是( )。
A. trueB. 非零值C. 0D. 17、若有说明: int i,j=7, *p=&i;, 则与i=j; 等价的语句是( )。
全国二级c语言教程

C语言的应用领域
操作系统
C语言是开发操作系统的首选语言,如 UNIX、Linux等都是用C语言编写的。
嵌入式系统
C语言在嵌入式系统开发中占据重要地位, 如微控制器编程、驱动程序开发等。
游戏开发
网络编程
许多经典的游戏都是用C语言编写的,如《 超级马里奥》、《俄罗斯方块》等。
C语言在网络编程方面也有广泛应用,如 TCP/IP协议栈的实现、网络服务器的开发 等。
全国二级C语言教程
contents
目录
• C语言概述 • C语言基础 • 数组与指针 • 结构体与共用体 • 文件操作 • C语言高级特性
01 C语言概述
C语言的历史与发展
起源
C语言最初是由丹尼斯·里奇(Dennis Ritchie)在1972年为开发UNIX操作 系统而设计的一种高级编程语言。
常用于底层编程、硬件操作、加密解密等领域。
类型转换与类型别名
类型转换
将一种数据类型转换为另一种数据类型,包括隐式转 换和显式转换两种方式。
类型别名
使用`typedef`关键字为数据类型定义别名,方便代码 阅读和维护。
类型转换的注意事项
在类型转换时需要注意数据溢出、精度丢失等问题。
可变参数列表与函数指针
结构体数组与指针
结构体数组
结构体数组是指元素类型为结构体的 数组。定义结构体数组后,可以像使 用普通数组一样使用结构体数组,包 括赋值、取值、遍历等。
结构体指针
指向结构体的指针称为结构体指针。通过 结构体指针可以访问结构体的成员,需要 使用`->`运算符。结构体指针在函数参数 传递、动态内存分配等方面有广泛应用。
函数定义
函数是一段完成特定功能的代码块,通 过函数名进行调用。
《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案

第二章 C程序设计的初步知识 一、选择题 2.1 以下选项中正确的整型常量是 A)12. B)-20 C)1,000 D)4 5 6 答案:B 2.2 以下选项中正确的实型常量是 A)0 B)3. 1415 C)0.329×10(2)(10的2次方) D).871 答案:D 2.3 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2 答案:B 2.4 以下选项中不合法的用户标识符是 A)abc.c B)file C)Main D)PRINTF 答案:A 2.5 以下选项中不合法的用户标识符是 A)_123 B)printf C)A$ D)Dim 答案:C 2.6 C语言中运算对象必需是整型的运算符是 A)% B)/ C)! D)** 答案:A 2.7 可在C程序中用作用户标识符的一组标识符是 A)void define WORD B)as_b3 _123 If C)For -abc case D)2c DO SIG 答案:B 2.8 若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B 2.9 以下叙述中正确的是 A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。 B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。 C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0。 D)已有a=3,b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3。 答案:B 2.10 以下叙述中正确的是 A)在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。 B)C程序由主函数组成。 C)C程序由函数组成。 D)C程序由函数和过程组成。 答案:C 2.11 TURBO C中int类型变量所占字节数是
国家计算机二级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】个结点。
全国计算机二级c语言

全国计算机二级c语言计算机二级c语言考试是全国各地计算机专业学生必须参加的一项考试。
C语言是一种广泛使用的高级编程语言,被广泛应用于机器控制、嵌入式系统、编译器、操作系统等领域。
掌握C语言对于学习计算机专业或从事计算机相关工作的人来说非常重要。
下面将详细介绍关于计算机二级c语言考试内容、难点与备考技巧。
一、计算机二级c语言考试内容计算机二级c语言考试内容主要包括以下几个方面:1. C语言基础知识C语言基础知识包括数据类型、变量、常量、运算符、流程控制语句、函数等。
需要掌握C语言中各种数据类型的定义和使用,包括int、float、double、char、short等。
同时,还需要掌握变量、常量的定义和使用方法,例如如何定义整型变量、字符型变量、浮点型变量等。
此外,还需要了解C语言中的运算符、流程控制语句及函数的相关知识。
2. 数组和指针数组和指针是C语言中重要的概念和内容。
需要掌握数组的定义方法、数组的初始化和访问等内容。
需要了解C语言中指针的定义和使用方法,包括指针的类型、指针变量的定义、指针的运算符和指针的使用。
3. 结构体和文件操作结构体是C语言中一个重要的数据类型,用于组织不同类型的数据。
需要了解结构体的定义和使用方法,包括结构体类型的定义、结构体变量的定义和结构体数组的使用。
文件操作也是C语言中重要的内容之一,需要掌握文件的打开、读、写和关闭操作。
二、难点对于C语言初学者来说,最大的困难就在于掌握C语言语法和基本编程思想。
以下是一些学习C语言时常见的难点:1. 指针和数组指针和数组是C语言中比较困难的概念,需要花费大量的时间来学习和掌握。
指针的使用需要了解指针变量和指针运算符的概念,掌握指针变量和数组之间关系的技巧。
数组的使用需要掌握数组的定义、初始化、访问方法以及数组在函数中的传递等。
2. 递归函数递归函数在C语言中是一种常见的编程技巧,但对于初学者来说很难理解。
递归函数的调用方式和普通函数的调用方式不同,需要注意递归函数中的出口条件,防止进入死循环。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级C语言-177
(总分:100.00,做题时间:90分钟)
一、程序填空题(总题数:1,分数:30.00)
1.下列给定程序中,函数fun的功能是:逆置数组元素中的值。
例如,若a所指数组中的数据为:1,2,3,4,5,6,7,8,9,则逆置后依次为:9,8,7,6,5,4,3,2,1。
形参n给出数组中数据的个数。
请在下划线处填入正确的内容,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
void fun(int a[],int n)
{
int i,t
/********found********/
for(i=0;i< 1;i++)
{
t=a[i]
/********found********/
a[i]=a[n-1- 2];
/********found********/
3=t;
}
}
main()
{
int b[9]=(1,2.3,4,5,6,7,8,9},i;
printf("/nThe original data:/n");
for{i=0;i<9;i++)
printf("%4d",b[i]);
printf("/n");
fun(b,9);
printf("/nThe data after invert:/n");
for(i=0;i<9;i++)
printf("%4d",b[i]);
printf("/n");
}
(分数:30.00)
解析:n/2 i a[n-1-i] [考点]
本题关键字有:for循环语句;变量交换算法。
[解析]
填空1:将a[0]与a[n-1]对换,a[0]与a[n-2]对换,依次类推,需进行n/2次对换。
填空2:将a[0]与a[n-1]对换,a[1]与a[n-2]对换,依次类推,则a[i]=a[n-1-i];。
填空3:两值交换操作,应填入a[n-1-i]。
二、程序改错题(总题数:1,分数:30.00)
2.下列给定程序中,函数fun的功能是:将一个由八进制数字字符组成的字符串转换成十进制整数。
规定输入的字符串最多只能包含S位八进制数字字符。
例如,若输入77777,则输出32767。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int fun(char*p)
{
int n;
/********found********/
n=*p-"o";
p++;
while(*p!=0)
{
/********found********/
n=n*8+*p-"o";
p++;
}
return n;
}
main()
{
char s[6];
int i;
int n;
printf("Enter a string(octal digits):");
gets(s);
if(strlen(s)>5)
{
printf("Error;string too longer!/n/n");
exit(0);
}
for(i=0;s[i];i++)
if(s[i]<"0"||s[i]>"7")
{
printf("Error;%c not is octal digits!/n/n",s[i]);
exit(0);
}
printf("The originl string:");
puts(s);
n=fun(s);
printf("/n%s is convered to intege number:%d/n/n",s,n);
}
(分数:30.00)
__________________________________________________________________________________________ 正确答案:()
解析:n=*p-"0"; n=n*8*p-"0"; [考点]
本题关键字有:数字和字符转换方法;进制转换方法。
各种进制转换为十进制采用按权求和的方法,十进制转换成某进制采用除该进制基数取余的方法。
[解析]
(1)指针D中存放的是数字字符,即数字的ASCII码值,将其减去字符‘0’的ASCII码得到对应的数字,进而完成数字运算。
(2)将八进制数乘以8再加上个位数来完成在一个数后面加上一位的操作。
三、程序设计题(总题数:1,分数:40.00)
3.学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中。
请编写函数fun,其功能是:函数返回该学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#define N 16
typedef struct
{
char num[10];
int s;
}STREC;
STREC fun(STREC*a,char*b)
{
}
void main()
{
STREC s[N]={{GA005",85},
{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},{ "GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{GA017",64},{"GA018",64},{"G A016",72}};
STREC h;
char m[10];
int i;
printf("The original data:/n");
for(i=0;i<N;i++)
{
if(i%4==0)
printf("/n"); /*每行输出4个学生记录*/
printf("%s%3d",s[i]num,s[i].s);
}
printf("/n/nEnter the number:");
gets(m);
h=fun(s,m);
printf("The data:");
printf(”/n%s%4d/n",h.num,hs);
printf("/n");
}
(分数:40.00)
__________________________________________________________________________________________ 正确答案:()
解析:STREC fun(STREC*a,char*b)
{
int i;
STREC str={"/0",-1}; /*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1*/
for(i=0;i<N;i++)
if(strcmp(a[i].num,b)==0)
/*找到指定学号的学生数据*/
str=a[i];
return str; /*返回学生记录*/
} [考点]
本题关键字有:结构体类型;字符串比较函数strcmp。
[解析]
定义返回值的学号为空串,成绩为-1,通过循环语句查找与所给学号相同的学生数据,若找到则将学生数据赋值给str,将str作为函数值返回。