会c语言 数组下标为变量的朋友帮我看看这个问题,同是交换最大数和最小数,两个下标这样表达什么意思?

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
全国计算机c语言二级考试最全指导资料.doc 71页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:250 &&
你可能关注的文档:
··········
··········
C语言全国计算机等级(二级)考试指导第一章二级(C语言程序设计)考试大纲公共基础知识基本要求1.掌握算法的基本概念。2.掌握基本数据结构及其操作。3.掌握基本排序和查找算法。4.掌握逐步求精的结构化程序设计方法。5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。6.掌握数据库的基本知识,了解关系数据库的设计。考试内容一.基本数据结构与算法1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。5.线性单链表、双向链表与循环链表的结构及其基本运算。6.树的基本概念;二叉树的定义及其存储结构;叉树的前序、中序和后序遍历。7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。二、程序设计基础1.程序设计方法与风格。2.结构化程序设计。3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。三、软件工程基础1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。2.结构化分析方法,数据字典,软件需求规格说明书。3.结构化设计方法,总体设计与详细设计。4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。5.程序的测试,静态调试与动态调试。四、数据库设计基础1.数据库的基本概念:数据库,数据库管理系统,数据库系统。2.数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。4.数据库设计方法和步骤:需求分析、概念设计、逻辑设计核物理设计的相关策略。考试方法1.公共基础知识的考试方法为笔试,与C语言程序设计(C++语言程序设计、Java语言程序设计、VisualBasic语言程序设计、VisualFoxPro数据库程序设计或Access数据库程序设计)的笔试部分合为一张试卷。公共基础知识部分占全卷的30分。2.公共基础知识的10道选择题和5道填空题。C语言程序设计基本要求1.熟悉TURBOC集成环境。2.熟练掌握结构化程序设计的方法,具有良好的程序设计风格。3.掌握程序设计中简单的数据结构和算法。4.TURBOC的集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。考试内容一、C语言的结构1.序的构成,MAIN函数和其他函数。2.头文件,数据说明,函数的开始和结束标志。3.源程序的书写格式。4.C语言的风格。二、数据类型及其运算1.C的数据类型(基本类型,指针类型,空类型)及其定义方法。2.C运算的种类、运算优先级和结合性。3.不同类型数据间的转换与运算。4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。三、基本语句1.表达式语句,空语句,复合语句。2.数据的输入与输出,输入输出函数的调用。3.复合语句。4.Goto语句和语句标号的使用。四、选择结构程序设计1.用if语句实现选择结构。2.用switch语句实现多分支选择结构。3.选择结构的嵌套五、循环结构程序设计1.For循环结构。2.While和dowhile循环结构。3.Continue与聚合break语句。4.循环的嵌套。六、数组的定义和引用1.一维数组合多维数组的定义、初始化和引用。2.字符串与字符数组。七、函数1.库函数的正确调用。2.函数的定义方法。3.函数的类型和返回值。4.形式参数与实在参数,参数值得传递。5.函数的正确调用,嵌套调用,递归调用。6.局部变量和全局变量。7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。8.内部函数与外部函数。八、编译预处理1.宏定义:不带参数的宏定义;带参数的宏定义。2.“文件包含”处理。九、指针1.指针与指针变量的概念,指针与地址预算符。2.变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。通过指针引用以上各类型数据。3.用指针作函数参数。4.返回指针值得指针函数。5.指针数组,指向指针的指针,main函数的命令行参数。十、结构体(即“结构”)与孔用体(即“联合”)1.结构体和公用体类型数据的定义方法和引用方法。2.用指针和结构体构成链表,单向链表的建立、输出、删除与插入。十一、位运算1.位运算符的含义及使用。2.简单的位运算。十二、文件操作1.只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。2.文件类型指针(FILE类型指针)。3.文件的打开与关闭(FOPEN,FC
正在加载中,请稍后...C语言的题目与解答,嘿嘿
您的位置: →
C语言的题目与解答,嘿嘿
C程序设计试题及题解
一.选择题?????????????????????????????????????????????????????????????
1. C语言概述??????????????????????????????????????????????????????????
2. 数据类型,运算符与表达式???????????????????????????????????????????
3. 选择结构程序设计???????????????????????????????????????????????????????
4. 循环控制???????????????????????????????????????????????????????????????
5. 数组????????????????????????????????
6. ??????????????????????????????????????
7. 函数???????????????????????????????????????????????????????????????????
8. 预处理命令??????????????????????????????????????????????????????????????
9. 指针???????????????????????????????????????????????????????????????????
10. 结构体与共用体?????????????????????????????????????????????????????
11. 位运算?????????????????????????????????????????????????????????????????
12. 文件??????????????????????????????????????????????????????????????????????
二.改错题?????????????????????????????????????????????????????????????????????
1. 统计字符串中大小写字母的个数??????????????????????????????????????????
2. 逆序输出?????????????????????????????????????????????????????????????????
3. 计算大于10的最小n个能被3整除的正整数之和??????????????????????????????
4. 输入两个整数及一个运算符进行运算???????????????????????????????
5. 输出201~300之间的所有素数,统计总个数???????????????????????????????????
6. 统计输入字符串中大写类英文字母的个数?????????????????????????????????????
7. 输入M个整数,输出其中所有的偶数??????????????????????????????
8. 输出三角形??????????????????????????????????????????????????????????????
9. 百元买百鸡?????????????????????????????????????????????????????????????
10、将‘0~8’的数字字符变成比它大1的数字字符将‘9’变为‘0’????????
11、连接字符串??????????????????????????????????????????????????????????????
12、取出ASCII码值为偶数且下标为偶数的字符??????????????????????????????????
13. 求三角形面积?????????????????????????????????????????????????????????????
14. 百马百担问题?????????????????????????????????????????????????????????????
15. 求一堆零件的总数(100至200之间)????????????????????????????????????????
16. 交换两个变量的值????????????????????????????????????????????????????????
17. 计算1至100之间的奇数之和,偶数之和?????????????????????????????????????
18. 求满足给定等式的未知数的值???????????????????????????????????
三.填空题????????????????????????????????????????????????????????????????????
1. 计算给定的公式?????????????????????????????????????????
2. 计算圆周率???????????????????????????????????????????????????????????????
3. 从10个数中找出最大值和最小值????????????????????????????????????????????
4. 计算满足一定条件的一位整数的值????????????????????????????????????
5. 输入若干个整数,统计其中大于0和小于0的个数?????????????????????????????
6. 歌德巴赫猜想????????????????????????????????????????????????????????????
7、牛顿迭代法求方程的根????????????????????????????????????????????????????
8、大写变小写,小写变大写?????????????????????????????????????????????????
9、计算平均值?????????????????????????????????????????????????????????????
10、输入姓名,输出信息????????????????????????????????????????????????????
11、冒泡排序法?????????????????????????????????????????????????????????????
12、判断三角形是否为直角三角形????????????????????????????????????????????
13、输入一个整数,输出该数的平方??????????????????????????????????????????
14、选择排序法????????????????????????????????????????????????????????????
15、用所给公式计算三角形面积??????????????????????????????????????????????
16. 输入一个4×4阶矩阵,并计算第1列元素之和???????????????????????????????
17. 二分法查找元素???????????????????????????????????????????????????????
18. 判断点是否在已知的圆内????????????????????????????????????????????????
19、求函数值??????????????????????????????????????????????????????????????
20. 计算已知公式的值???????????????????????????????????????????????????????
21. 求数组中的最大元素?????????????????????????????????????????????????????
22. 计算前m个整数的和????????????????????????????????????????????????????
23. 字符串反向存储????????????????????????????????????????????????????????
24. 将学生信息按其学号的升序排列???????????????????????????????????????????
25. 输入一个3行3列的整型数组,求其最大值和最小值????????????????????????
26、计算给定的公式的值???????????????????????????????????????????
27、输出Fibonacci数列的前15项???????????????????????????????????????????
四.编程题?????????????????????????????????????????????????????????????????
1.输入数字,求已知公式的值???????????????????????????????????????????????
2. 统计输入字符串中空格的个数?????????????????????????????????????????????
3. 函数求值???????????????????????????????????????????????????????????????
4. 求已知函数的值?????????????????????????????????????????????????????????
5. 将三个字符串从小到大排序后输出?????????????????????????????????
6. 求已知函数f( )的值????????????????????????????????????????????????????
7. 四则运算??????????????????????????????????????????????????????????????
8. 判断一个矩阵是否为对称矩阵????????????????????????????????????????????
9. 打印出Fibonacci,数列的前20个数???????????????????????????????????????
10. 计算fun( )函数值??????????????????????????????????????????????????????
11. 按要求实现函数功能???????????????????????????????????????????????????
12、函数fun1( )求值??????????????????????????????????????????????????????
13. 输入的一个月工资数额,求应交税款??????????????????????????????????????
14. 按要求处理一个4阶矩阵???????????????????????????????????????????????
15. 求已知f(x)函数的值????????????????????????????????????????????????????
16. 将以指针数组形式存放的n个字符串升序排序?????????????????????????????
17. 求方程中的较大的根???????????????????????????????????????????????????
18. 判别两个字符串的大小?????????????????????????????????????????????????
一、选择题
(1)C语言概述
1、C程序中main函数的位置(C)
A、必须在最开始 B、必须在系统库函数后面
C、可以在自定义函数后面 D、必须在最后
2、下面关于C语言用户标识符的描述,正确的是(D)
A、不能区分大小写
B、用户标识符不能描述常量
C、类型名也是用户标识
D、用户标识符可以作为变量名
3.关于C语言的叙述中,不正确的是(D)
A. C程序可由一个或多个函数组成
B. C程序必须包含一个main()函数
C. C程序的基本组成单位是函数
D. 注释说明只能位于一条语句的后面
括(A)4.若有说明语句:char C=‘\95’;则变量C包含(D)个字符
D.语法错误
5.结构化程序设计不包
B自顶而下,逐步细化
C 模拟化设计
D结构化编码
6.结构化程序设计的三种基本语句是(C)
A.函数结购
B.函数结构
C.顺序结构
D.分支结构
7.关于C语言数据类型的
A.枚举类型不是基本类型
B.数组不是构造类型
C.变量必须先定义后使用
D.不允许使用空类型
8.关于C语言的源程序的叙述中,错误的是(C)
A.C语言的源程序由函数构成
B.main函数可以书写在自定义函数之后
C.必须包含有输入语句
D.一行可以书写多个语句
9.下面叙述中,(A)不是结构化程序设计中的三种基本结构之一
A.数据结构
.B.选择结构
C.循环结构
D.顺序结构
10.char 型变量存放的是(A)
A.ASCⅡ码值
B.字符本身
C十进制代码值
D十六进制代码值
11.已有如下定义和输入语句
char c1,c2;
scanf(“%d,%c,%c”, &a, &c1, &c2);
若要求a、c1、c2的值分别为10、A和B,正确的数据输入是( B )
12.以下叙述不正确的是( D )
A、C程序的执行总是从main函数开始
B、一个C源程序必须包含一个main函数
C、C语言程序的基本组成单位是函数
D、在编译C程序源程序时,可发现注释中的拼写
13.已知如下定义和输入语句:
scanf (“%d, %d”,&a, &b);
若要求a、b的值分别为10和20,正确的数据输入是(B)
C、a=10, b=20
14、在C语言源程序中,以下叙述正确的是(C)
A、main函数必须位于文件的开头
B、每行只能写一条语句
C、程序中的每一语句可以写成几行
D、每个语句的最后必须有点号
15.对于C语言源程序,以下叙述错误的是( C )
A. 可以有空语句
B. 函数之间是平等的,在一个函数内部不能定义其它函数
C. 程序调试时如果没有提示错误,就能得到正确结果
D. 注释可以出现在在语句的前面
16.下面叙述中,(A)不是结构化程序设计三种基本结构的共同特点
A.先判断后执行
B.单入口,单出口,
C.程序中没有执行不到的语句
D.无死循环
17.若有定义:int x=1234,y=123,z=12;则语句printf(“%4d+%3d+%2d”,x,y,z);运行后的输出结果为(D)
(2)数据类型,运算符和表达式
1、若定义:int x=2; y=3; float i; 则以下符合C语言语法的表达式是(B)
A、x=x* 3=2
B、x=(y= = 1)
C、i=float(x) D、i%(-3)
2、若有定义:int a=5, b=2, c=1;则表达式a-b&c||b==c的值是(A)
3、若有68定义:float x=3.5; int z=8; 则表达式x+z%3/4的值是(B)
4.若有定义:int a=1,b=2,c=3;语句++a||++b&&++a运行后b 的值为(D)
5.设单精度型变量+,g的值均为2.0,使+为4.0的表达式为(A)
9.对于整型变量x,下述计语句(B)与赋值句:x=x%2==0?1:0;不等价
A .if(x%2!=0)x=0;else x=1; B if(x%2)x=1;else x=0;
C.if(x%2= =0)x=1;else x=0;
D .if(x%2==1) x=0;else x=1;
12.下面语句正确的是( B
A int *P;*P=20;
B char *s=“abcdef”;printf(“%s\n”,s);
C char str[]=“abcdf”;?????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????printf(“%s”,str);
D char str[]={?a?,?b?,?c?};printf(“%s”,str);
13.若有定义:inta=2;则正确的赋值表达式是(A)
A.a- =(a*3)
B.double(-a)
14.若有定义:int m=5. n=3则表达式(m+1,n+1,(--m)+(n--))的值是(B)
15.对于基类型相同的两个指针变量之间,不能进行的运算是(C)
16.若有定义:则语句a=(3*4)+2%3;运行后a的值为(B)
17.下面叙述中,错误的是(A)
A.其算术运算对象不包含函数
B.%(模拟运算符)的运算对象只能为整型量
C.算术运算的结合方向是“自左向右”
D.自加和自减运算符的结合方向是“自右向左”
18.已知int a=‘R’;则正确的表达式是(A)
B.a=int(3e2)
C .2*a=a++
D.a=a+a=a+3
19.已知double a=5.2;则正确的赋值表达式是(A)
A.a+=a-=(a=4)*(a=3)
D a=double(-3)
20.以下的计语句中,x的值一定被重新赋值的是(B)
A.if(x==y) x+=y;
B if(x>y&&x!=y);x+=y;
C.if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y);
D.if(x<y) {x++;y++}
21.设有double型变量a,b,c,e均有值,对代数式(3ae)/(bc),不正确的语言表达式是(C)
A.a/b/c*e*3
B.3*a*e/b/c
C.3*a*e/b*c
D.a*e/c/b*3
22.以下运算符中优先级最高的是(D)
23.若有自定义:int a,b;double x.,则以下不符合C语言的表达是(A)
24.若有定义:int a[3] [3];则表达式&a[2][1]-a的值为(B)
25.以下(D)是正确的变量名
26.若有定义:int a=1,b=2 ,c=3,d=4,x=5,y=6 则表达式(x=a>b)&&(y=c>b)的值为(A)
27.以下(D)是正确变量名
28.若有定义:int x=3,y=4,z=5 则值为0的表达式是(D)
A.‘x’&&‘y’
C. x||y=z&&y-z
D. !((x<y)&&!z||1)
29.若有定义:int x,a;则语句x=(a=3,a+1);运行后x、a的值依次为( C )
30.若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是( B )
31.若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是(A)
32. 以下(B)是错误的整型常量
33.语句a=(3/4)+3%2; 运行后,a的值为(B)
34.设整形变量a为5, 使b不为2的表达式是(C)
A、b=(++a)/3
B、b=6-(--a)
35、已知char a=’R’;则不正确的赋值表达式是(D);
A、a=(a++)% 4
C、c a+=256--
D、a=‘\078’
36.下面叙述正确的是(B)
A、2/3与2.0/3.0等价
B、(int)2.0/3与2/3等价
C、++5与6等价
D、‘A’与“A”等价
37、getchar(
)函数的功能是从终端输入(D)
A、一个整型量值
B、一个实型变量值
C、多个字符
D、一个字符
38、若有定义:int i=7, j=8; 则表达式 i &j||i&j的值为(A)
B、变量i的值
D、变量j的值
39、若有定义:int i ,j;则表达式(i=2, j=5, i++, i+j++)的值是(B)
40.若希望当a的值为奇数时,表达式的值为”真”,a的值为偶数时,表达式的值为”假”.则不能满足要求的表达式是( C )
B.!(a%2==0)
41.下面叙述正确的是( A )
A.强制类型转换运算的优先级高于算术运算
B.若a和b是整型变量,(a+b)++是合法的
C.”A”*'B'是合法的
D."A"+"B"是合法的
42.以下程序段运行后变量a的值为(D)
int x=6,y=5;
a=(--x==y++)?x:y+1;
43.下面程序段的运行结果是( D )
int a =5 b=6;printf (“%d”,a/b);
44.以下程序的运行结果是( D
void main()
char c=’A’;
printf(“%x,%d”,a,c);
(3)选择结构程序设计
1.C语言对于计嵌套语句的规定:else总是与(B)配对
A.第一个if
B.之前且尚未配对
C.缩进位置相同的if
D.之前最近的if
2.以下的语句中,无内嵌的if语句是(D)
A.if(x==y)x+=y;
B.if(x>y&&x!=y)x+=y;
C.if(x!=y)scanf(“%d”,&x);else scanf (“%d”,&y);
D.if(x<y)
3、以下程序运行结果是(D)
{ int n=5;
if ( n++=6 )
printf( “% d\n” , n);
printf ( “%d\n” ,
4.以下程序段运行后x的值为( B )
int a[]={1,2,3},b[]={4,2,5};
int *p,*q;
for(i=0;i&3;i++)
if(*(p+i)==*(q+i))
x=*(p+i)*2;
D.不确定
5.若有定义:int a=1,b=2,c=3;则执行以下程序后a,b,c的值分别为( D ) if(a<b) {c=a,a=b,b=c;}
A.a=1 b=2, c=3
B.a=2 b=3 c=1
C.a=2 b=3 c=3
D.a=1 b=1,c=1
6.以下程序的运行结果是(C)
void main (
{ int n=‘e’;
switch (n- -)
{default: printf (“error”);
case‘a’:
case‘b’: printf(“good”);
case‘c’: printf(“pass”);
case‘d’: printf(“warn”);
C、error good
(4)循环控制
1.对于整型变量x,与while(!x)等价的是(B)
A.while(x!=0)
B.while(x==0)
C.while(x!=1)
D.while(~x)
2.以下程序运行后,循环体运行的次数为( B )
int i=10,x;
for( ;i&10;i++)
3.设有整型变量x,下述语句( B )不会出现死循环
A、for( ; ; x+=1);
B、for(; (x=getchar( ))!=‘\n’; );
C、while (1) {x++;}
D、for(x=10; ; x--);
4、在C语言中while循环和do―while循环的主要区别是( B )
A、do―while 循环体内可以使用break语句, while循环体内不能使用break语句
B、do―while的循环至少无条件执行一次,while的循环体不是
C、do―while 循环体内可以使用continue语句,while循环体内不能使用continue语句
D、while的循环体至少无条件执行一次,do―while的循环体不是
5、对于整型变量x和y,语句for (x=0, y=0 ; (y!=123) &&(x&4); x++) y++;中的“y++;”被执行( A )
6.以下程序段运行后变量n的值为( D )
int i=1,n=1;
for( ; i&3;i++)
B.3 C.2
7.设有如下程序段:
int a[3][3]={1,0,2,1,0,2,1,0,1},i,j,s=0;
for(i=0;i&3;i++)
for(j=0;j&i;j++)
s=s+a[i][j];
则执行该程序段后,s的值是( C )
8. 以下程序运行结果(C)
void main()
int sum=0,item=0;
while(item<5)
if(sum>=6)
}shaxiaobing
printf(“%d\n”,sum) ;
9.下面程序运行结果是( A )
i=0,a[] ={1,2,3,4,5};
}while(a[++i]>2);
for(i=0;i&5;i++)
printf(“%d”,a[i]);
A.11 2 3 4 5
B.1 2 3 4 5
C.11 12 13 14 15
D.11 12 3 4 5
10.若有定义:int i=0,x=0; int a[3][3]={1,2,3,4,5,6,7,8,9}则以下程序段运行后x的值为( C )
for( ;i<3;i++) x+=a[i][2-i];
11.以下程序的运行结果是( B )
void main()
int sum=0,item=0;
while (item<5)
if(sum==5)
printf(“%d\n”,sum);
12.下面程序段的运行结果是( D )
int i=O, a[]={3,4,5,4,3};
}while(a[++i]<5);
for(i=0;i<5;i++)
printf(“%d”,a[i]) ;
13.下面程序段的运行结果是( C )
int i=0,a[]={7,5,7,3,8,3};
}while(a[++i]>5);
for(i=0;i<6;i++)
printf(“%d ”,a[i]);
A. 9 7 9 5 10 5
B.9 5 9 3 10 3
9 5 7 3 8 3
D.7 5 7 3 8 3
1、有如下定义
int a[ ][3]={1,2,3,4,5,6,7,8,};则数组a的行数( B )
D、无法确定
2.以下数组定义中,正确的是( B )
A.int a[2] [3]={1,2,3,4,5,6,7};
B.int a[] []={{1,2,3},{4,5,6},{7,8,9}};
C.int a[2] []={1,2,3,4,5,6};
D.int a[] [4]={6};
3.若有定义:int a=6,b=2;ch1ar C1=‘a’,C2=‘b’;则表达式a+b%5+C2-C1的值是( C )
D表达式错误
4.若有定义:char str[6]=“abcdm”,*ps,*str2=“abcdef”;正确的是( B )
A.stycpy(str1,str2);
B.表达式strcmp(str1,str2)的值>0
C.str1=str2;
D.表达式strlen(str1)的值为6
5.以下能对一维数组a进行正确初始化的语句是( D )
A.int a[5]=(0,0,0,0,0,)
B.int a[5]=[0]
C.int a[5]={1,2,3,4,5,6,7}
D.int a[]={0}
6.以下( A )是不正确的字符串常量
B.“12′12”
7.设有如下定义:char str[8]={“Fujian”};则分配给数组str的存储空间是(C)字节
8.下列数组定义中,正确的是( A )
A.int a[10]
B.int n=10
C.int N=10;int a[N];
D. scant(“%d”,&n);int a[n]
9.若有定义int a[2][3];则对数组元素的非法引用是( D )
A.a[0][1/2]
C.a[4-4][0]
10.若有int a=2 则a=strcmp(“miss”,“miss”)运行后a的值为(B)
11.以下程序结束后屏幕输出(B)
char str[]=“ab\\cd”;printf(“%d”,strlen(str));
12.已知int a[10];则对a数组元素引用不正确的是( A )
C.a[10-10]
13.设有以下变量定义:
char str1[]=”string”,str2[8],*str3,*str4=”string”;
则( A )是正确的
A.strcpy(str1,”china”);
B.str2=”china”;
C.strcpy(*str3,”china”);
D.strcpy(str4[0],”china”);
14、以下能对一维数组a进行正确初始化的语句是( D )
A、int a[5]=(0, 0, 0, 0, 0);
B、int a [s]=[0];
C、int a[5]={1, 2, 3, 4, 5, 6, 7 };
D、int a [ ] = {0};
15. 若有定义int a [ ] [ 3 ]={1,2,3,4,5,6,7,8,9};则表达式sizeof(a)/sizeof(a[0])
的值为( A )
16、下列数组定义中,正确的是( A )
A. int a[5]={0};
B、int a[ ]={0 1 2};
C、int a[5]=0
D、int a [ ]
17、以下数组定义中,正确的是( B )
A、int a[2][3]={1,2,3,4,5,6,7};
B、int a[ ][ ]={{1,2,3},{4,5,6}, {7,8,9}};
C、int a[2][ ]={1,2,3,4,5,6};
D、int a[ ][4]={6}
18.若有定义:int a[3][4]={{1,2},{0},{1,2,3}};则a[1][1]的值为( A )
19.若有定义:int a[3]={0,1,2};则a[1]的值为( B )
20.若有定义:int a[5]={1,2,3,4,5};则语句a[1]=a[3]+a[2+2]-a[3-1];运行后a[1]的值为( A )
21.有如下定义:char str[6]={‘a’,‘b’‘\0’,‘d’,‘e’,‘f’,};则语句printf(“%s”,str);的输出结果是( D )
22.定义char a[]=“abcdef”;char b[]=“xyz”;以下程序运行后输出( B )
strcpy(a,b);
printf(“%c”,a[2]);
23、以下程序段运行后屏幕输出为( A )
char str[80];
strcpy(str, “hello”);
printf( “%d” , strlen (str));
24.以下程序段运行后屏幕输出为( C )
char a[]=”abc\0mis”;
printf(“%d”,srelen(a));
1.关于C语言函数的描述中,正确的是( B )
A. 函数的定义可以嵌套,但函数的调用不可以嵌套
B. 函数的定义不可以嵌套,但函数的调用可以嵌套
C. 函数的定义和函数的调用都可以嵌套
D. 函数的定义和函数的调用都不可以嵌套
2.已知char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是( B )
A.scanf(“%d”,&a);
B.scanf(“%lf”,&a);
C.scanf(“%c,&a);
D.scanf(”%u”,&a);
3.putchar()函数的功能是向终端输出( B )
A.多个字符
B.一个字符
C.一个实型变量值
D.一个整型变量表达式
4、已知int a;使用scanf()函数输入一个整数给变量a, 正确的函数调用是( B )
A、scanf(“%d”, a);
B、scanf(“%d”,&a);
C、scanf(“A”, &a );
D、scanf(“%df”, &a );
5.C语言的函数体由( B )括起来
D./* */
6.如下fun函数的类型是( C )
fun(float x)
return(z);
7.设有如下函数定义:
int fun(char *str)
char *p;p=
if(p!=‘\0’)
return (p-str);
则以下语句执行后的输出结果是( A )
printf(“%d\n”,fun(“student”));
8.以下程序的屏幕输出为(B)
#include&stdio.h&
void f(int i)
printf(“%d”,a);
int a=1 ,c=3;
printf(“%d”,a);
9.若有以下函数定义:
int fun ()
static int k=0;
return ++k;
以下程序段运行后屏幕输出为( D )
for (i=1;i<=5 i++)
printf(“%d”,fun());
10.以下程序运行的结果是( A )
int fun (int array[4][4])
for(j=0;j<4;j++)
printf(“%2d”,array[2][j]);
printf(“\n”);
int a[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0}; fun(a);
11.以下程序运行后屏幕输出为( D )
#include〈stdio.h〉
int a=2 ,b=3;
int max(int a,int b)
c=a>b?a:b;
return(c);
printf(“%d”,max(d,b));
12.以下程序运行后屏幕输出为( B )
#include&stdio.h&
int f(int x,int y)
return(x+y);
int a=2,b=3,c;
printf(“%d+%d=%d\n”,a,b,c);
13、下面程序的输出结果是( D )
#include&stdio.h&
int global=100;
int global=5;
void main(
printf (“% d\n”, fun( ) )
(7)预处理命令
1.若有定义:#define PI 3,则表达式PI*2*2的值为( A )
2.设有如下定义typedef
int *INTEGER;INTEGER
P,*q;则( C )是正确的表述
A.P是int型变量
B .q是基类型为int的指针变量
C.P是基类型为int的指针变量
D.程序中可用INTEGER代替int类型名。
3、以下叙述中,正确的是( A )
A、宏展开不占用运行时间,只占用编译时间
B、预编译处理命令行必须以分号结束
C、一个源程序只能有一个预编译处理命令行
D、使用带参数的宏定义时,应该说明每个参数的数据类型
4、以下的叙述中不正确的是( C )
A、宏展开不占用运行时间,只占用编译时间
B、宏名无类型
C、宏名必须用大写字母表示
D、预处理命令行都必须以#号开始
5.以下叙述中,正确的是( B )
A."#define PRICE=30"定义了30等价的符号常量PRICE
B.预编译处理命令行都必须以"#"开头
C.宏名只能是含大写字母和数字字符
D.在程序的一行上可以书写几个有效的宏定义
6.下面程序的输出结果是(C)
#include〈stdio.h〉
#define ONE 1
#define THREE TWO+1
void main ()
printf(“%d\n”,THREE-ONE);
A.产生错误,
7.以下程序执行时,输入1 2 3 4 5&回车&输出为( A )
#include&stdio.h&
#define N 5
void main()
while(p&a+N)
scanf(“%d”,p++);
while(p&a)
prinf(“%s”,*(--p));
A.5 4 3 2 1
B.1 2 3 4 5
C.2 3 4 5 1
D.4 3 2 1 5
8.若有以下定义
#define MOD(x,y) x%y
则执行以下程序段后,z的值是( D )
int z,a=15,b=100;
z=MOD(b,a);
9、下面程序的输出结果是( A )
#include&stdio.h&
#define SQR(x) (x*x)
void main()
int a,b=3;
a=SQR(b+2);
printf(“\n%d”,a);
D.产生错误
1.若函数fun的函数头为:int
fun(int i,int j)且函数指针变量P定义如下:int (*P)(int i,int j);则要使指针P指向函数fun的赋值语句是( B )
B. P=fun;
C. P=fun(i,j)
D. P=&fun
2.设有以下语句,则( D )是对a数组元素的不正确引用,其中0?i?10.int
a[10]={0,1,2,3,4,5,6,7,8,9},*p=a
B.*(&a[i])
D.*(*(a+i))
3、在16位编译系统上,若有定义int a [ ]={10,20,30},*p=&a;当执行p++;后下列叙述错误的是( A )
A、p向高地址移了一个字节
B、p与a+1等价
C、语句printf(“%d”, p);输出20
D、p指向数组元素a[1]
4、以下程序段运行后*(++p)的值为(C)
char a[6]=“work”;
B、存放‘w’的地址
D、存放的‘O’地址
5.在16位编译系统上,若有定义int a[]={10,20,30},*p=&a;当执行p++;后下列叙述错误的是( A )
A.p向高地址移了一个字节
B.p与a+1等价
C.语句printf(“%d”,*p);输出20;
D.p指向数组元素a[1]
6.以下程序运行后*(P+3)的值为( A )
char a[]=“good”; char *P;P=a;
C.存放‘d’的地址
7.以下程序运行后x的值为(D)
int a[9]={1,2,3,4,5,6,7,8,9};
int *p,*q;
for (i=O;i<3;i++)
if(*(p+i)==*(q-i) )
x=*(p+i)*2;
8.以下程序运行段运行后x的值为( D )
int a[]={1,2,3,4,5,6,7,8};
int i,x *p;
for(i=0,i<3,i++)
9、下面程序的输出结果是(A)
#include&stdio. h&
void main (
char *s= “ abc ”;
for ( i=0 ; i&3; i++)
printf ( “% s\n ” , s+i );
a b c a b c a
c b c c a b A
D b c c b c a b c
10.执行以下程序段的输出结果是( B )
int a=10,*p=&a;
printf(“%d”,++*p);
C.变量a的地址
D.变量a的地址加1
(9)结构体与共用体
1.设有以下定义语句:
struct student{
char name[10];
}wang,zhang;的变量wang所占的内存字节是( B )
2.设有以下定义语句:
struct student{
char name[10];
则不正确的叙述是( C )
A.struct 是结构体类型的关键字
B.zhang是结构体变量名
C.wang是结构体类型名
D.num,name,score都是结构体类型student的成员名
3.若struct teacher{
char name[10];
char sex;
float score;}teacher1;
则变量teacher1所占用的内存字节是( C )
4.、假定已有如下落不明变量说明和枚举定义:
enum day{sum,mon,tue,wed,thu,fri,sat};
int a[sat];
判定下列语句是否符合语法规则,结果是( C )
if(a[mon]&0) j++;
A.语句2错误,其它正确
B.语句1正确,其它错误
C.语句3正确,其它错误
D.语句错误,其它正确
5、以下C语言共用体类型数据的描述中,不正确的是( D )
A、共用体变量占的内存大小等于所需内在最大的成员所占的内存
B、共用体类型可以出现在结构体类型定义中
C、在定义共用体变量的同时允许对另一个成员的值进行初始化
D、同一共用体中各成员的首地址不相同
6、若有以下类型说明,叙述正确的是( A )
typedef sturct{
} STU, *PSTU
A、STU 是变量名
B、PSTU是变量名
C、PSTU是指向结构体类型STU的指针类型名
D、类型说明语句有错误
7、设有如下定义语句:
union u-type{
char str[100];
union u_type u[2];
则语句“printf(“%d”, sizeof(struct str-type) );”的输出结果是( B )
8.下列对结构体类型变量定义不正确的是( C )
struct teacher{
}teacher1;
}teacher1,teacher2;
struct teacher{
9.若有定义
struct node{
struct node *
void fun(struct node *head)
struct node *p=
struct node *q=p-&
则该函数的功能是( A )
A. 删除整个单向链表
B. 删除单向链表中的一个结点
C.显示单向链表中的所有数据
D. 创建单向链表
10.对枚举类型进行定义,不正确的是( A )
A. enum b{1,2,3};
B. enum a{A,B,C};
C. enum c{3,E,F};
D. enum d{x=0,y=5,z=9};
11.下面程序的输出结果为(B)
#include&studio,h&
void main()
enum Weekday {sum=7 ,mon=1 ,tue thu ,fri,sat};
enum Weekday
print(“%d\n”,day);
12.以下程序的运行结果(D)
#include&stdio.h&
union utype{
void main()
printf(“sizeof(u):%d\n”,sizeof(u)) ;
13.若有以定义
struct link{
struct link *
}*head,*p;
并已建立如下图示所示的链表结构
?? 则能保留链表其它结点,而删除P所指向结点的程序段是( A ) A.head-&next=p-&next;free(p);
B.head-&next=p; p-&next=head-&free(p);
C.free(p);head-&next=p;p-&next=head-&
D.free(p);head-&next=p-&
14.若有定义
struct node{
struct node *
及函数: void fun(struct node *head)
struct node *p=
printf(“%d”,p-&data);
则函数 fun( )的功能是( C
A. 删除单向链表
B. 显示单向链表中的所有数据
C. 显示单向链表中的第一个数据
D. 创建单向链表
15..若有如下定义,函数 fun的功能是( B ),其中head指向链表着结点整个链表结构如下图:
struct node{
struct node *
int fun(struct node *head)
struct node *t=
while(t!=NULL)
A.删除链表head中的所有结点
B.计算链表head中的结点个数
C.插入一个元素到链表head中
D.创建一个链表head
16、若有以下定义:
struct link{
struct link *
}*head, *p;
并已建立如下图所示的链表结构;
指针P指向如下传点:
则能够把p所指结点插入到链表中成为链表第2个结点的程序段是( C )
A、B、C、p.next=head. head. Next=p
D、(* head ). next = (* p). next = (* head ).
(10)位运算
1.在对于无符号数的位运算中,操作数右移一位相当于( A )
A.操作数除于2
B.操作数乘以2
C.操作数除于4
D .操作数乘以4
2.若有定义:int a=20,b=28,C;则执行语句C=(a&b)>>2;后C的值为(A)
3.若有定义,int x=3, y=4; 则表达式!x‖y的值为( A )
(11)文件
1、以下叙述正确的是( D )
A、C语言中的文件是流式文件,因此只能顺序存取数据
B、打开一个已存在的文件进行了写操作后,原有文件中的全部数据必定被覆盖
C、在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第一个数据
D、当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失
2、标准函数fgets(s, n, f )的功能是( D )
A、从文件f中读取长度为n的字符串存入指针s所指的内存;
B、从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
C、从文件f中读取几个字符存入指针s所指的内在
D、从文件f中读取长度为n-1的字符串存入指针s所指的内存
3.以下程序运行后,屏幕显示writeok!,下列说法正确的是(
#include&stdio.h&
fp=fopen(“data.txt”,”wt”);
if(fp!=NULL)
fprintf(fp,”%s\n”,”File write successed!\n”);
fclose(fp);
printf(“write ok!\n”);
A. 当前工作目录下存在data.txt文件,其中内容是”write ok!”
B. fclose(fp);语句的功能是打开文件
C. 当前工作目录下一定不存在data.txt文件
D. 当前工作目录下一定存在data.txt文件
4.以下程序的功能是( B )
#include&stdio,h&
fp=fopen(“wj.txt”,”rb”);
fseek(fp,0,SEEK_END);
n=ftell(fp);
fclose(fp);
printf(“%ld”,n);
A.计算文件wj.txt的起始地址
B.计算文件wj.txt的终止地址
C.计算文件wj.txt内容的字节数
D.将文件指针定位到文件末尾
5.以下程序执行文件名是file.exe
main(int argc,char *argv[])
for(i=1;i&i++)
printf(“%s%c”,argv[i],(i&argc-1?’’:’\n’));
在DOS命令输入:file My C Language and Programming&回车&,其输出结果是 ( B )
A. C Language and Programming
B. My C Language and Programming
C. My C Language and
D. file My C Language and Programming
6.对下面程序正确的描述是( B
#include&stdio.h&
void main()
FILE *in,*
if((in=fopen(“infile.txt”,”r”))==NULL)
printf(“cannot open infile\n”);
if((out=fopen(“outfile.txt”,”w”))==NULL)
printf(“cannot open outfile\n”);
while(!feof(in))
fputc(fget(in).out);
fclose(in);
fclose(out);
A. 程序实现在屏幕上显示磁盘文件infile.txt的内容
B. 程序实现将两个磁盘文件infile.txt和outfile.txt的内容合二为一
C. 程序实现将磁盘文件intfile.txt复制到磁盘文件outfile.txt
D. 程序实现将两个磁盘文件合并在屏幕上输出
7.以下程序的可执行文件名为tt.exe,若程序运行后屏幕显示:we are,则在DOS提示符下输入的行名是( C )
void main(int argc,char *argv[])
printf(“%d”,argc);
for(i=1;i&i++)
printf(“%s”,argv[i]);
D.tt we are happy!
二、改错题
1. 统计输入字符串中大小写字母的个数
程序Cmody 041.c,其功能是统计输入字符串中大小写字母的个数,
如输入:abcdEFGHIJK 123
#include &stdio.h&
#include &string.h&
str1[128];
/**/len, sum=0; /**/
/* int i, len, sum=0;*/
gets(str1);
len = strlen(str1);
for(i=0; i& i++)
/**/ if( str1[i] &= 'a' || str1[i] &= 'z') /**/
/* if( str1[i] &= 'a' && str1[i] &= 'z')*/
printf(&%d\n&,sum);
2. 逆序输出
程序Cmody 042.c,其功能是将从键盘依次输入的M个整数逆序输出.
如,输入:12
#include &stdio.h&
#include &math.h&
#define M 8
{ int a[M],i;
printf(&Please input 8 numbers:\n&);
for(i=0; i&M; i++)
scanf(&%d&, /**/ a[i] /**/);
printf(&Inverse order is: \n&);
for(i=M-1; i&=0; i--)
/* for(i=M-1; i&=0; i--)*/
printf(&%d
printf(&\n& );
3. 计算大于10的最小n个能被3整除的正整数之和.
程序Cmody 012.c中函数fun(int n)的功能是:根据参数n,计算大于10的最小n个能被3整除
的正整数之和.例如:
fun(8)=11111???????0.396
#include &string.h&
#include &conio.h&
#include &math.h&
#include &stdio.h&
#define M 50
double fun(int n)
{ double y = 0.0;
for(i=1;;i++)
/**/ if((i&10)&&(i%3==0)) /**/
/* if((i&10)&&(i%3==0))*/
/**/ y+=1/i; /**/
/* y+=1.0/i;*/
void main()
{ clrscr();
printf(&fun(8) = %8.3lf\n&, fun(8));
4. 从键盘上输入两个整数,及一个运算符进行运算
程序cmody031.C的功能是:从键盘上输入两个整数,及一个运算符(+、-、*、/或%),进行程序相应的运算后输出运算的结果。
如输入:1+2
将输出:1+2=3
#include &stdio.h&
#include &conio.h&
void main()
{ int m,n,result,flag=0;
/**/ char ch,/**/
/* char ch;*/
printf(&Input an expression: &);
scanf(&%d%c%d&,&m,&ch,&n);
/**/ switch
/* switch (ch)*/
{ case '+': result=m+n;
case '-': result=m-n;
case '*': result=m*n;
case '%': result=m%n;
case '/': result=m/n;
default: { printf(&Error!\n&); flag=1; }
if (!flag) printf(&%d %c %d = %d\n&,m,ch,n,result);
5. 输出201~300之间的所有素数,统计总个数
程序cmody032.C的功能是:输出201~300之间的所有素数,统计总个数。 答案:
#include &stdio.h&
#include &math.h&
void main()
printf(&\n&);
num=fun();
printf(&\nThe total of prime is %d&,num);
{ int m,i,k,n=0;
for(m=201; m&=300;m+=2)
{ k=sqrt(m+1);
for(i=2;i&=k;i++)
/**/ if(m/i==0) /**/
/* if(m%i==0)*/
/**/ if(i==k) /**/
/* if(i&k)*/
{ printf(&%-4d&,m);
if(n%10==0) printf(&\n&);
6. 统计输入字符串中大写类英文字母的个数
程序cmody051.c,其功能是统计输入字符串中大写类英文字母的个数。
如输入:abcDEFGH123,输出:5
#include &stdio.h&
#include &string.h&
/**/ char str1 /**/;
/* char str1[255]*/
int i,len, sum=0;
printf(&Please input a string:\n&);
scanf(&%s&, str1);
len = strlen(str1);
for(i=0; i& i++)
if( str1[i] &= 'A' && str1[i] &= 'Z')
/* sum++;*/
printf(&%d\n&,sum);
7. 从键盘依次输入M个整数,输出其中所有的偶数
程序cmody052.c,其功能是实现从键盘依次输入M个整数,输出其中所有的偶数。
如输入:23
#include &stdio.h&
#include &math.h&
/**/ #include
int a[M],i;
printf(&Please input 5 numbers:\n&);
for(i=0; i&M; i++)
scanf(&%d&,
printf(&Even numbers:\n& );
for(i=0; i&M; i++)
if( a[i]/2 ==0)
/* if( a[i]%2 ==0)*/
printf(&%d
printf(&\n& );
8. 输出三角形
程序cmody 021.c输出如下所示图形
#include &stdio.h&
void main()
/**/j; /**/
/* int i,j;*/
for (i=1;i&=5;i++)
for (j=1;j&=10-2*i;j++)
printf(& &);
for (j=1;j&=5;j++)
/* for (j=1;j&=2*i-1;j++)*/
printf(&* &);
printf(&\n&);
9. 百元买百鸡
程序cmody 022.c的功能是求解百元买百鸡问题:
设一只公鸡2元,一只母鸡1元,一只小鸡0.5元。问一百元买一百只鸡、公鸡、母鸡、小鸡数可分别为多少?有多少种分配方案?
#include &stdio.h&
#include &conio.h&
/**/int fun();/**/
/* int fun()*/
{ int hen,cock,chicken,n=0;
for(cock=0;cock&=50;cock+=1)
for(hen=0;hen&=100;hen=hen+1)
{ chicken=2*(100-hen-2*cock);
/**/ if(cock+hen+chicken=100) /**/
/* if(cock+hen+chicken==100)*/
printf(&%d--&hen:%d,cock:%d,chicken:%d\n&,n,hen,cock,chicken);
if(n==20) getch();
void main()
num=fun();
printf(&\n There are %d solutions.\n&,num);
10、输入字符串‘0~8’的数字字符变成比它大1的数字字符将‘9’变为‘0’
程序cmody061.c功能输入字符串‘0~8’的数字字符变成比它大1的数字字符将‘9’变为‘0’。
如输入:a b 1 2 c d 5 6 E F 8 9 G H 4
a b 2 3 c d 6 7 E F 9 0 G H 5
#include &stdio.h&
#include &string.h&
str1[128], str2[128];
gets(str1);
len = strlen(str1);
for(i=0; i& i++)
/* for(i=0; i& i++)*/
if( str1[i] &= '0' && str1[i] &= '8')
str2[i] = str1[i] + 1;
else if(str1[i] == '9')
str2[i] = '0';
str2[i] = str1[i];
str2[i] = '\n';
/* str2[i] = '\0';*/
puts(str2);
11、连接字符串
程序cmody062.c功能将程序中两个字符串“ABC”、“xyz”连接在一起并输出ABCxyz 答案:
#include &stdio.h&
#include &string.h&
void main()
char s1[12]=&ABC&, s2[]=&xyz&;
char * ps1=s1,*ps2;
ps2 = NULL;
/* ps2 = s2;*/
while(*ps1 == NULL)
/* while(*ps1 != '\0')*/
while(*ps2) *(ps1++) = *(ps2++);
printf(&%s\n&,s1);
12、取出ASCII码值为偶数且下标为偶数的字符
程序cmody011.c的功能是:从字符串数组str1中取出ASCII码值为偶数且下标为偶数的字符依次存放到字符串中。
eg:若str1所指的字符串为:4AZ18C?Ge9a0z!
则t所指的字符串为:4ZBZ
#include &math.h&
#include &stdio.h&
#include &string.h&
#include &conio.h&
void main()
{ char str1[100], t[200];
/**/ i = 0; /**/
/* j = 0;*/
strcpy(str1, &4AZ18c?Ge9a0z!&);
for (i = 0; i&strlen(str1); i++)
/**/ if ((str1[i] %2== 0) && (i%2!=0)) /**/
/* if ((str1[i] %2== 0) && (i%2==0))*/
t[j] = str1[i];
t[j] = '\0';
printf(&\n Original string: %s\n&, str1);
printf(&\n
Result string: %s\n&, t);
13. 求三角形面积
程序Cmody071.c,其功能是从键盘输入三角形的三边长,求其面积,若三个边长不能构成三角
形,则提示错误
输出:26.98
#include &stdio.h&
#include &math.h&
void main()
float a[3],s,
printf(&Please input 3 numbers:\n&);
for(i=0; i&3; i++)
scanf(&%f&,/**/ a[i] /**/);
/**/ if( a[0]+a[1]&a[2] || a[1]+a[2]&a[0] || a[0]+a[2]&a[1] ) /**/
/*if( (a[0]+a[1])&a[2]||(a[1]+a[2])&a[0] || (a[0]+a[2])&a[1] )*/
s = (a[0]+a[1]+a[2])/2;
area = sqrt(s*(s-a[0])*(s-a[1])*(s-a[2]));
printf(&area is %.2f\n&,area);
printf(&error.\n&);
14. 百马百担问题
程序Cmody072.c,其功能是求解百马百担问题.
有100匹马,驮100担货,大马驮3担,中马驮2担,小马驮1担,问大,中,小马数可分别为多少?有多少种解决方案?
#include &stdio.h&
#include &conio.h&
/**/ void fun() /**/
/*int fun()*/
int large,middle,small,n=0;
for( large=0;large&=33;large++ )
for( middle=0;middle&=50;middle++ )
small = 2*(100-3*large-2*middle);
/**/ if( large+middle+small=100 )
/* if( large+middle+small==100 )*/
printf(&%d--&large:%d,middle:%d,small:%d\n&,n,large,middle,small);
void main()
num = fun();
printf(&\n There are %d solutions.\n&,num);
15. 求一堆零件的总数(100至200之间)
程序cmody081.c,其功能是求一堆零件的总数(100至200之间)
如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件,则多5个零件。
#include &stdio.h&
void main()
/**/ for( i=100; i&200; i++ );
/* for( i=100; i&200; i++ )*/
if((i-2)%4 == 0)
if( !((i-3)%7) )
if( i%9 == 5 )
printf(&%d\n&,/**/ &i /**/);
16. 交换两个变量的值
程序cmody082.c,其功能是交换两个变量的值。
输出:original:a?2
resuct:a?3b?3 b?2
#include &stdio.h&
/**/ void swap(int p1,int p2) /**/
/* void swap(int *p1,int *p2)*/
temp = *p1;
*p1 = *p2;
void main()
printf(&please input 2 numbers:\n&);
scanf(&%d%d&,&a,&b);
printf(&\nOriginal: a=%d b=%d\n&,a,b);
swap(&a,&b);
printf(&\nResult: a=%d b=%d\n&,a,b);
17. 计算1至100之间的奇数之和,偶数之和
程序cmody091.c,其功能是计算1至100之间的奇数之和,偶数之和
#include &stdio.h&
void main()
/**/ int a=c=0;
/* int a=0,c=0;*/
/**/ for( i=0,i&=100,i+=2 ) /**/
/* for( i=0;i&=100;i+=2 )*/
printf(&total of even numbers: %d\n&,a);
printf(&total of odd numbers: %d\n&,c-101);
18. 求满足等式xyz+yzz=520的x、y、z值(其中xyz和yzz分别表示一个三位数)。
程序cmody092.c的功能是求满足等式xyz+yzz=520的x、y、z值(其中xyz和yzz分别表示一个三位数)。
#include &stdio.h&
void main()
int x,y,z,i,result=520;
for( x=1;x&10;x++ )
for( y=1;y&10;y++ )
/**/ for( z=1;z&10;z++ ) /**/
/* for( z=0;z&10;z++ )*/
i=100*x+10*y+z+100*y+10*z+z;
/**/ if (i=result)
/* if (i==result)*/
printf(&x=%d,y=%d,z=%d\n&,x,y,z);
三、填空题
1. 计算 f(x)= x?2
补充程序Ccon 011.c使其计算 f(x)= x?2
#include &stdio.h&
#include &math.h&
void main()
printf(&Input an integer: &);
scanf(&%d&,&x);
f = /**/ (fabs(x) - 2) / (x*x + 1)
printf(&F(x)=%f\n&,f);
2. 计算圆周率
补充程序Ccon 012.c,该程序用公式??4?(1?
#include &stdio.h&
void main()
{ double pi=0;
long i, sign=1;
for(i=1;i&=10001;i+=2)
pi+=1.0*sign/i;
1111?????),计算圆周率的
printf(&%f\n&,pi);
3. 从10个数中找出最大值和最小值
补充程序Ccon 013.c程序实现从10个数中找出最大值和最小值. 答案:
#include &stdio.h&
#include &stdlib.h&
void find_max_min(int *p,int n)
max=min=*p;
for(q=p; q&/**/
/**/; q++)
if(/**/ max & *q
/**/ ) max=*q;
else if(min&*q) min=*q;
void main()
int i,num[10];
printf(&Input 10 numbers: &);
for(i=0;i&10;i++) scanf(&%d&,&num[i]);
find_max_min(/**/
printf(&max=%d,num=%d\n&,max,min);
4. 计算满足一定条件的一位整数A和B的值
补充程序Ccon 021.c,使其计算满足下式的一位整数A和B的值. AB
#include &stdio.h&
void main()
int a,b,k;
int plu = /**/ 403 /**/;
for(a=1; a&10; a++)
for(b=1; b&10; b++)
k = (a*10+b) * /**/ (b*10+a) /**/ ;
if(k==plu)
printf(&A = %d, B = %d\n&,a,b);
5. 输入若干个整数,统计其中大于0和小于0的个数,以0结束输入
补充程序Ccon 022.c,使其实现输入若干个整数,统计其中大于0和小于0的个数,以0 结束输入
#include &stdio.h&
void main()
int n,a,b;
scanf(&%d&,&n);
while(/**/ n != 0 /**/)
if(n&0) a++;
else /**/ if(n&0) b++; /**/
scanf(&%d&,&n);
printf(&Positive integer: %d, negative integer: %d\n&,a,b);
6. 歌德巴赫猜想
补充程序Ccon 023.c,该程序可测试歌德巴赫猜想:从键盘上输入一个大于6的偶数,总 能找到两个素数,使得这两素数之和正好等于该偶数.
#include &stdio.h&
#include &conio.h&
int prime(int n)
{ int k,flag=1;
for(k=2; k&=n/2+1; k++)
if (n%k==0) { flag=/**/ 0 /**/ ;}
void main()
{ int num,
{ printf(&Please input an even number:&);
scanf(&%d&, &num);
}while(num&=6||num%2==1);
for(a=2;a&=num/2+1;a++)
if(prime(a) && prime(/**/ num-a /**/))
printf(&\n %d = %d + %d &, num, a, num-a);
7、牛顿迭代法求方程的根
补充程序Ccon031.C,使其用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。 答案:
#include &stdio.h&
#include &math.h&
/**/ void main() /**/
{ float x,x0,f,f1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x=x0-f/f1;
}/**/ while /**/(fabs(x-x0)&=1e-6);
printf(&the root is: %.2f\n&,x);
8、大写变小写,小写变大写
补充程序Ccon032.C,该程序的功能是将输入的一行字符串的大写字母转变为相应的小写字母,小写字母则转变为相应的大写字母,其余字符不变。
#include &stdio.h&
void main()
{ char s[80];
printf(&Please input a string: &);
for(i=0;((s[i]=getchar())!='\n')&&(i&80);i++);
s[i]='\0';
for(i=0;s[i]!='\0';/**/ i++ /**/)
if(s[i]&='a'&&s[i]&='z')
s[i]=s[i]-32;
else if(/**/ s[i]&='A'&&s[i]&='Z' /**/)
s[i]=s[i]+32;
printf(&%c&,s[i]);
9、计算平均值
补充程序Ccon033.C,其中main函数通过调用average函数计算数组元素的平均值。 答案:
#include &stdio.h&
float average(int *pa,int n)
/**/ float avg=0.0;
for(k=0;k&n;k++)
avg = avg+/**/ *(pa+k) /**/;
avg = avg/n;
void main()
{ int a[5]={20,30,45,64,23};
m=average(/**/ a /**/, 5);
printf(&Average=%f\n&,m);
10、输入姓名,输出信息
补充程序con041.c使其实现从链盘输入一个同学的姓名(如“Jack”),输出问题该同学的信息(如“Hello, Jack!”)。
/**/ &stdio.h&
/**/ str[11];
printf(&Please input a name:\n&);
scanf(&%s&,str);
printf(&Hello,%s!\n&, str);
11、冒泡排序法
补充程序con042.c程序中的in sort()函数用冒泡法对数组a中m个元素从大到小排序。 答案:
#include &stdio.h&
#include &math.h&
void sort(int a[], int m)
{ int i, j, t,
for( i=0; i& /**/ m-1 /**/ ; i++ )
for( j=0; j & m-i-1; j++)
( a[j] & a[j+1] )
a[j] = /**/
void main()
int a[] = {23,55,8,32,18,2,9};
int i,k = sizeof(a)/sizeof(int);
sort(a,k);
for(i=0;i&k;i++)
printf(&%d
printf(&\n&);
12、判断三角形是否为直角三角形
补充程序con043.c程序中的fun()函数用勾股定理判断一个三角形是否为直角三角形,即输入三角形的三边a,b,c,能回1,不能回0。
#include &stdio.h&
#include &math.h&
int fun(/**/
float a,float b,float c
int bTrue = 0;
if( fabs(/**/
/**/ - (b*b + c*c)) & 1.0e-15)
bTrue = 1;
float a,b,c;
printf(&Please input three numbers:\n&);
scanf(&%f%f%f&,&a,&b,&c);
if( fun(a,b,c) == 1)
printf(&Yes\n&);
printf(&No\n&);
13、输入一个整数,输出该数的平方
补充程序ccon051.c,使其实现从键盘输入一个整数,输出该数的平方。
#include &stdio.h&
printf(&Please input a number:\n&);
scanf(&%d&,/**/ &x
printf(&%d*%d=%d\n&, x,x,/**/
14、选择排序法
补充程序ccon052.c,使程序中的sort()函数用选择法对数组a中的m个元素,从小到大排序。
#include &stdio.h&
#include &math.h&
void sort(int a[], int m)
{ int i, j, k,
for( i = 0; i & m-1; i++ )
for( j=i+1; j& /**/
/**/; j++)
if( a[j] & a[k] ) /**/
if( k != i )
{ t = a[k];
a[k]= a[i];
a[i] = /**/
void main()
int a[] = {72,25,58,32,2,15,7,64};
int i,m = sizeof(a)/sizeof(int);
sort(a,m);
for(i=0;i&m;i++)
printf(&%d
printf(&\n&);
15、用所给公式计算三角形面积
补充程序ccon053.c,使程序中的fun()函数,能根据三角形三边长a,b,c,用公式
,s??a?b?c?/2计算这个三角形的面积,(规定:若这三条边不能构成三角形,返回-1)。
#include &stdio.h&
#include &math.h&
/**/ float
/**/ fun(float a,float b,float c)
s = /**/ (a+b+c)/2
s = s*(s-a)*(s-b)*(s-c);
if( s & 0 )
area = -1;
area = sqrt(s);
float a,b,c,
printf(&Please input three numbers:\t&);
scanf(&%f%f%f&,
area = fun(a,b,c);
printf(&Area is: %.2f\n&,area);
16. 输入一个4行4列的二维整型数组表4×4阶矩阵,并计算第1列元素之和.
补充程序Ccon 061.c,使其从键盘输入一个4行4列的二维整型数组表4×4阶矩阵,并计算
第1列元素之和.
9 10 11 12
13 14 15 16
#include &stdio.h&
#include &math.h&
int i,/**/ j /**/;
int a[4][4],
sum=/**/ 0 /**/;
printf(&Please input 16 numbers:\n&);
for(i=0; i&4;i++)
for(j=0;j&4;j++)
scanf(&%d&,&a[i][j]);
for(i=0;i&4;i++)
/**/ sum += a[i][0];
printf(&%d\n&,sum);
17. 二分法查找元素
补充程序Ccon 062.c,使程序中的fun( )函数用二分法在已按从小到大排好序的数组a中直找q,若找到第一个q返回对应的下标,没找到返回-1.
#include &stdio.h&
int fun(int a[],int n,/**/ int q /**/)
int left,right,
right = n-1;
while(left &= right)
{ mid= /**/ (left+right)/2
if( q & a[mid] ) right = mid-1;
else if( q & a[mid]) left = mid+1;
return -1;
{ int a[]={3,4,6,11,17,22,31,45};
n = sizeof(a)/sizeof(int);
k = fun(a,n,31);
printf(&%d\n&,k);
18. 判断点是否在已知的圆内
补充程序Ccon 063.c,使其中的fun( )函数判断输入的一个点{x,y}是否位于坐标在原点,半径为r{r&0}的圆内.
#include &stdio.h&
#include &math.h&
int fun(/**/ float r /**/,float x,float y)
bIn = /**/
sqrt( x*x + y*y ) /**/ &
float r=-1,x,y;
while(r&0)
{ printf(&Please input radius r (r&0):\n&);
scanf(&%f&, &r);
printf(&Please input the dot(x,y):\n&);
scanf(&%f%f&,&x,&y);
bIn = fun(r,x,y);
if(bIn == 1)
printf(&in the circle!\n&);
printf(&out of the Circle!\n&);
19、求函数值
补充程序ccon071.c,对函数f(x)=x2-2x+6,分别计算f(x+8)和f(sin x)的值。
如x=2.0,则输出:
f(x+8)=86.000
f(sin x)=5.008
#include&stdio.h&
/**/ #include&math.h&
double fun(double x)
f=x*x-2*x+6;
return(f);
void main()
double x,y1,y2;
printf(&Please input x:&);
scanf(&%lf&,&x);
y1=fun(x+8);
y2=fun(/**/
printf(&\nf(x+8)=%.3lf&,y1);
printf(&\nf(sinx)=%.3lf&,y2);
20. 计算已知公式的值
补充程序ccon072.c,计算P?m!,其中m,n为整数且m&n&=0。 n!m?n!
#include&stdio.h&
double fun(unsigned m,unsigned n)
double p=1.0;
for(i=1;i&=m;i++)
/**/ p=p*i;
for(i=1;i&=n;i++)
/**/ p=p/i;
for(i=1;i&=m-n;i++)
void main()
printf(&p=%f\n&,fun(13,7));
21. 求数组中的最大元素
补充程序ccon073.c,函数findmax返回数组中的最大元素。 答案:
#include&stdio.h&
int findmax(int* array,int size);
void main()
int a[]={33,91,23,45,56,-12,32,12,5,90};
printf(&The max is %d\n&,/**/
findmax(a,10)
int findmax(int *array,int size)
int i, /**/ max=array[0]
for(i=1; i& i++)
if(array[i]&max) max=array[i];
22. 计算前m个整数的和
补充程序Ccon 081.c,根据输入的整数m(m&=0)值,计算答案:
#include&stdio.h&
unsigned sum(unsigned n)
unsigned i,/**/
for(i=1;i&=n;i++)
void main()
printf(&Please input a unsigned integer:&);
scanf(&%d&,&m);
while(m&0){
printf(&Please input a unsigned integer:&);
scanf(&%d&,&m);
printf(&\nThe sum is %d\n&,/**/ sum(m)
23. 字符串反向存储
补充程序Ccon082.c,使其实现将一个字符串str的内容反向存储。
#include&stdio.h&
#include&string.h&
void main()
char str[]=&1234567&, /**/
for(i=0,/**/
j=strlen(str)
/**/;i&j;i++,j--)
str[i]=str[j];
printf(&%s\n&,str);
24. 将学生信息按其学号的升序排列。
补充程序Ccon083.c,实现将结构体数组mystudent中存储的各学生信息按其学号的升序排列。
#include&stdio.h&
#include&string.h&
typedef struct{
char name[20],sex[2];
STU mystudent[]={
{1111,&Zhangqiang&,&m&,20,80},
{2104,&Liminghong&,&w&,18,82},
{3121,&Wangxingda&,&m&,21,78},
{4118,&Liushaotao&,&m&,20,90},
{1456,&Wuminghong&,&w&,35,86}
void sort(STU* ps, int size)
int i,flag,
for(pass=1;pass&pass++)
for(i=0;i&size-i++)
if(/**/ ps[i].num&ps[i+1].num
temp=ps[i];ps[i]=ps[i+1];ps[i+1]=
void main()
int i,size=sizeof(mystudent)/sizeof(STU);
printf(&Students\' information before sort:\n\n&);
printf(&Number
score\n\n&);
for(i=0;i&i++)
printf(&%-7d%s%10d\t%s%8d\n&,(mystudent+i)-&num,
(mystudent+i)-&name,(mystudent+i)-&age,
(mystudent+i)-&sex, (mystudent+i)-&score);
sort(mystudent,size);
printf(&\nStudents\' information after sort:\n\n&);
printf(&Number
score\n\n&);
for(i=0;i&i++)
printf(&%-7d%s%5d\t %s%7d\n&,(mystudent+i)-&num,
(mystudent+i)-&name,(mystudent+i)-&age,
(mystudent+i)-&sex,(mystudent+i)-&score);
25. 输入一个3行3列的整型数组,求其最大值和最小值
补充程序ccon091.c,输入一个3行3列的整型数组,求其最大值和最小值。 如输入:1
输出:max=9
#include&stdio.h&
#define ROW 3
#define COL 3
void main()
int a[ROW][COL],i,j,max,
printf(&Please input the 9 integers:\n&);
for(i=0;i&ROW;i++)
for(j=0;j&COL;j++)
scanf(&%d&,&a[i][j]);
/**/max=a[0][0];min=a[0][0];
for(i=0;i&ROW;i++)
for(j=0;j&COL;j++)
if(/**/ a[i][j]&max
max=a[i][j];
if(a[i][j]&min)
min=a[i][j];
printf(&max=%d\n&,max);
printf(&min=%d\n&,min);
26、计算s=1+12+123+
补充程序ccon092.c,计算s=1+12+123+。
#define N 5
#include&stdio.h&
void main()
int t=0,/**/ s=0
for(i=1;i&=N;i++)
t=/**/i+t*10 /**/;
printf(&\ns=%d\n&,s);
27、输出Fibonacci数列的前15项
补充程序ccon093.c,输出Fibonacci数列的前15项。
Fibonacci数列的计算方法是:
fib(n)=fib(n-1)+fib(n-2)
#include&stdio.h&
long fib(int n);
void main()
printf(&The first 15 data of Fibonacci is:\n\n&);
for(k=1;k&=15;k++)
printf(&%d &,fib(k));
printf(&\n&);
long fib(int n)
if(n==1||n==2)
/**/ return 1; /**/
return /**/
fib(n-1)+fib(n-2)
四、编程题
1.输入数字,求已知公式的值
打开程序Cprog 041.c,其中的fun( )函数,使其计算:
f (x)=?0??x?3.2
?sin(x)?2?x?0x?0
输出:f (12.000)=10.387
f (32.250)=12.935
f (0.113) =1.568
#include &stdio.h&
#include &math.h&
double f(float x)
y = ( fabs(x) + 3.2 ) / ( sin(x) +2 );
void main()
printf(&Please input a number: \n&);
scanf(&%f&,&x);
printf(&f(%.3f)=%.3f\n&,x,y);
2. 统计输入字符串中空格的个数
打开Cprong 032.c ,完成其中的函数fun (char*s),使得其实现统计输入字符串中空格的个数 答案:
#include &stdio.h&
int fun(char *s)
while(*s != '\0')
if(*s == ' ')
void main()
char str[255];
gets(str);
printf(&%d\n&,fun(str));
3. 函数求值
打开Cprog 031.c,完成其中的函数fun 1,该函数的数学表达式是:
fun 1(x)=?10
例如:fun 1(0.76)=1.200
fun 1(3.00)=10.000
当x?3时当x?3时当x?3时
fun 1(3.76)=8.520
#include &math.h&
#include &stdio.h&
double fun1(double x)
return 1.2;
else if(x == 3)
return 10;
return 2*x+1;
void main()
printf(&fun1(0.76) = %8.3lf\n&, fun1(0.76));
printf(&fun1(3.00) = %8.3lf\n&, fun1(3.00));
printf(&fun1(3.76) = %8.3lf\n&, fun1(3.76));
4. 求已知函数的值
Cprog 021.c,完成其中的函数fun 1,该函数的数字表达式是: fun1(x)=x?x?6
#include &math.h&
#include &stdio.h&
double fun1(double x)
y = ( exp(x) + fabs( x - 6 ) ) / ( x + 1.3 );
void main()
printf(&fun1(0.76) = %8.3lf\n&, fun1(0.76));
printf(&fun1(3.00) = %8.3lf\n&, fun1(3.00));
printf(&fun1(3.76) = %8.3lf\n&, fun1(3.76));
5. 将三个字符串
a,b,c从小到大排序后输出.
Cprog 022.c,完成其中函数fun 2{char a[],char b[],char c[]),实现:将三个字符串
a,b,c从小到大排序后输出.
注意:字符串比较函数为strcmp{char*,char*},
字符串复制函数为strcpy{char*,char*}.
#include &string.h&
#include &conio.h&
#include &math.h&
#include &stdio.h&
void fun2(char a[],char b[],char c[])
char t[10];
if( strcmp(a,b) & 0 )
strcpy(t,a);
strcpy(a,b);
strcpy(b,t);
if( strcmp(a,c) & 0 )
strcpy(t,a);
strcpy(a,c);
strcpy(c,t);
if( strcmp(b,c) & 0 )
strcpy(t,c);
strcpy(c,b);
strcpy(b,t);
void main()
{ char str1[15]=&Fuzhou&,str2[15]=&Fujian&,str3[15]=&China&;
fun2(str1,str2,str3);
printf(&The ordered strings is : %s, %s, %s\n&,str1,str2,str3);
6. 求已知函数f( )的值
打开程序Cprog 061.c,完成其中的f( )函数,使其计算: 3??f(x)=?lg(x?2.6)
???1x?300x?300
如:输入:0.8,输出f(0.80)=0.96
输入:4.5,输出f(4.50)=107.05
输入:725,输出f(725.00)=-1.00
#include &stdio.h&
#include &math.h&
double f(float x)
if( fabs(x) & 300 )
return y = pow(x,3) / log10( fabs(x) +2.6 );
return -1;
void main()
printf(&Please input a number: \n&);
scanf(&%f&,&x);
printf(&f(%0.2f)=%0.2f\n&,x,y);
7. 四则运算
打开程序Cprog 062.c,完成其中的fun( )函数,使其实现四则运算的功能,
如:输入:3.2
输出:3.20+2.10=5.30
3.20-2.10=1.10
3.20*2.10=6.72
3.20/2.10=1.52
#include &stdio.h&
#include &math.h&
float fun(float a,char flag,float b)
switch(flag)
return a+b;
return a-b;
return a*b;
return a/b;
void main()
float a,b;
printf(&Please input two numbers:\n&);
scanf(&%f%f&,&a,&b);
printf(&%.2f+%.2f=%.2f\n&,a,b,fun(a,'+',b));
printf(&%.2f-%.2f=%.2f\n&,a,b,fun(a,'-',b));
printf(&%.2f*%.2f=%.2f\n&,a,b,fun(a,'*',b));
printf(&%.2f/%.2f=%.2f\n&,a,b,fun(a,'/',b));
8. 判断一个矩阵是否为对称矩阵
打开程序cprog052.c完成其中的fun()函数,使其判断一个矩阵是否为对称矩阵,若矩阵 对称返回1,不对称返回0,说明:矩阵a是一个二维数组,若其中的第k行第j列的元素 与第j行第k列的元素相同,则称其为对称矩阵,否则为非对称矩阵。
#include &stdio.h&
#include &math.h&
int fun(int a[][3],int m)
for(i=0; i&3; i++)
for(j=0; j&i; j++)
if(a[i][j] != a[j][i])
void main()
int a[3][3],i,j;
fun(a,20);
for(i=0; i&3; i++)
for(j=0; j&3; j++)
scanf(&%d&,&a[i][j]);
b = fun(a,3);
if( b == 1 )
printf(&Yes\n&);
printf(&No\n&);
9. 打印出Fibonacci,数列的前20个数
打开程序Cprong042.c,完成其中的fun()函数,使程序打印出Fibonacci,数列的前20个数。 该数列{1,1,2,3,5,8,13,??}的第1,第2个数为1,从第3个数开始每个数等于 前2个数之和。
#include &stdio.h&
#include &math.h&
void fun(int a[],int m)
for(i=2; i&m; i++)
a[i] = a[i-1] + a[i-2];
void main()
int a[20],i;
fun(a,20);
for(i=0; i&20; i++)
printf(&%d
printf(&\n&);
10. 计算fun( )函数值
打开程序cprog051.c,完成其中的fun()函数,使其计算
??;??1x?700x?700
如输入:0.4
输出:f?0.40??0.82
输出:f?1.50??1.24
输入:7.80
输出:f?780.00???1.00
#include &stdio.h&
#include &math.h&
double f(float x)
if( fabs(x) & 700 )
y = sqrt( 5.8 + fabs(x) ) / ( cos(x) + 2.1 );
return -1;
void main()
printf(&Please input a number: \n&);
scanf(&%f&,&x);
printf(&f(%0.2f)=%0.2f\n&,x,y);
11. 按要求实现函数功能
打开考生文件夹中的cprog012.c,完成其中的函数fun2?inta[],intn,intb[],intc[]?, 实现:
(1) 将数组a中大于-20的元素,依次存放到数组b中。
(2) 将数组b中的元素按照从小到大的顺序存放到数组c中;
(3) 函数返回数组b中的元素个数。
#include &string.h&
#include &conio.h&
#include &math.h&
#include &stdio.h&
int fun2(int a[],int n,int b[],int c[])
int i,j,k=0,t;
for(i=0;i&n;i++)
//选取大于-20的数
if( a[i] & -20 )
b[k++] = a[i];
for(i=0;i&k;i++)
//将b数组复制到c中
c[i] = b[i];
for(i=0;i&k-1;i++)
//对c数组排序
for(j=0;j&k-i-1;j++)
if(c[j] & c[j+1])
c[j] = c[j+1];
void main()
{ int n = 10, i,
int aa[10] = {12, -10, -31, -18, -15, 50, 17, 15, -20, 20};
int bb[10], cc[10];
printf(&There are %2d elements in aa.\n&, n);
printf(&They are: &);
for(i=0; i&n; i++) printf(&%6d&, aa[i]);
printf(&\n&);
nb = fun2(aa, n, bb, cc);
printf(&Elements in bb are: &);
for (i=0; i& i++) printf(&%6d&, bb[i]);
printf(&\n&);
printf(&Elements in cc are: &);
for(i=0; i& i++) printf(&%6d&, cc[i]);
printf(&\n&);
printf(&There are %2d elements in bb.\n&, nb); }
12、函数fun1( )求值
打开考生文件夹中的cprog011.c,完成其中的函数fun1,该函数的数学表达式为:
eg:fun1?0.76??2.175
fu1n?3.0?0? 075.31?sinx?ex 1?x
fun1?3.76??9.111
#include &math.h&
#include &stdio.h&
double fun1(double x)
y = ( 1 + sin(x) + exp(x) ) / (1+x);
void main()
printf(&fun1(0.76) = %8.3lf\n&, fun1(0.76));
printf(&fun1(3.00) = %8.3lf\n&, fun1(3.00));
printf(&fun1(3.76) = %8.3lf\n&, fun1(3.76));
13. 输入的一个月工资数额,求应交税款
打开程序cprog071.c,完成其中的f?x?函数,使其对输入的一个月工资数额,求应交税款,设应交税款的计算公式如下:
1600&x≤2100
2100&x≤3100
例如:输入:1825
输入:2700
输入:5655
#include &stdio.h&
#include &math.h&
double f(float x)
if(x&=1600)
else if(x&1600&&x&=2100)
else if(x&2100&&x&=3100)
y=(x--125;
return (y);
void main()
//clrscr();
printf(&Please input a number:\n&);
scanf(&%f&,&x);
printf(&f(%.2f)=%.2f\n&,x,y);
14. 将4阶矩阵各行中0之前的所有正数依次放到另一数组中,并求这些正数之和
打开程序Cprog072.c,完成其中的fun??函数,该函数将4阶矩阵A的各行中0之前的所有正数依次放到数组b中,并返回这些正数之和。如矩阵A为
?1?0???21???312?3?4??12?13?14?? 230?24??32?330?
则调用函数fun??后,b[0]为1,b[1]为2,b?2?为23,b?3?为32,函数返回58。
#include&stdio.h&
#define ROW 4
#define COL 4
int fun(int a[][COL],int row,int b[])
int i,j,k=0,h,sum=0;
for(i=0;i&i++)
for(j=0;j&COL;j++)
if(a[i][j]==0)
if(a[i][j]&0)
{b[k]=a[i][j];
for(h=0;h&k;h++)
sum=sum+b[h];
void main()
int sss=0, b[16]={0};
int a[ROW][COL]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
sss=fun(a,ROW,b);
printf(&Sum of positive elements is %d\n&,sss);
15. 求已知f(x)函数的值
打开程序cprog 081.c完成其中f (x)函数,使其计算
f (x)=?2x(x?2)?ln?x?0x?0
如输入-1.2则输出f (-1.200)=0.241
输入6 则输出f (6.000)=19.879
#include &stdio.h&
#include &math.h&
double f(float x)
f=(x+2)*exp(x);
f=(x+2)*log(2*x);
void main()
printf(&Please input a number:\n&);
scanf(&%f&,&x);
printf(&f(%.3f)=%.3f\n&,x,y);
16. 将以指针数组形式存放的n个字符串升序排序。
打开cprog 082.c,完成其中的fun( )函数,该函数将以指针数组形式存放的n个字符串升序排序。
(提示:字符串复制函数是strcpy (char*,char*),字符串比较函数是strcmp(char*,char*) 答案:
#include &string.h&
#include &stdio.h&
void f(char p[][20],int n);
void main()
char p[][20]={&abc&,&xabdfg&,&abbd&,&dcdbe&,&cd&};
//clrscr();
for(i=0;i&5;i++)
printf(&%s\n&,p[i]);
void f(char p[][20],int n)
char a[20]={0};
int i,j,t;
for(i=1;i&n;i++)
for(j=0;j&n-i;j++)
if(strcmp(p[j],p[j+1])&0)
strcpy(a,p[j]);
strcpy(p[j],p[j+1]);
strcpy(p[j+1],a);
17. 求方程中的较大的根
打开程序cprog091.c,完成其中的f??函数,使其返回方程ax2?bx?c?0的两个根中较
2大的根,求根公式为:x1,2?a?0,且b?4ac?0。 答案:
#include &stdio.h&
#include &math.h&
double f(float a,float b,float c)
double x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/2*a;
x2=(-b-sqrt(b*b-4*a*c))/2*a;
return x1;
return x2;
void main()
printf(&The bigger root is %.2f\n&,f(1,5,6));
18. 判别两个字符串的大小。
打开程序cprog092.c,完成其中的strcmp 1()函数,该函数实现判别两字符串str1和str2的大小。
#include &stdio.h&
int strcmp1(const char* str1,const char* str2)
while(*str1!='\0'||*str2!='\0')
if(*str1==*str2)
return (*str1-*str2);
void main()
char* ps1=&uvwx&,*ps2=&uvwxyz&;
com=strcmp1(ps1,ps2);
printf(&%s&%s&,ps1,ps2);
if(com==0)
printf(&%s=%s&,ps1,ps2);
printf(&%s&%s&,ps1,ps2);
C语言的题目与解答,嘿嘿相关文章
《》由(在点网)整理提供,版权归原作者、原出处所有。
Copyright &
All Rights Reserved.

我要回帖

更多关于 c语言 数组 下标 枚举 的文章

 

随机推荐