c语言-经典常用-习题

合集下载

C语言基础练习题(含答案)

C语言基础练习题(含答案)

目录第1-3章C语言基础知识习题 (2)1 选择题 (2)2 填空题 (7)3 答案及部分解析 (9)第4章选择结构习题 (11)1 选择题 (11)2 填空题 (17)3 答案及部分解析 (23)第5章循环结构习题 (26)1 选择题 (26)2 填空题: (32)3 答案及部分解题分析 (39)第6章数组习题 (41)1. 单项选择题 (41)2. 填空题 (44)3. 判断题 (45)4. 程序填空题 (45)5. 阅读程序,分析程序的功能。

(49)第7章函数习题 (55)1. 单项选择题 (55)2. 填空题 (56)3. 判断题 (57)4. 程序填空题 (58)5. 写出下列程序运行结果 (59)第8章指针习题 (67)1 选择题 (67)2 填空题 (69)第1-3章C语言基础知识习题1 选择题1. 以下不是C语言的特点的是()。

A、语言简洁紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件操作D、C语言移植性好2.下列字符序列中,不可用作C语言标识符的是()。

A.abc123 B.no.1 C._123_ D._ok3.正确的C语言标识符是()。

A._buy_2 B.2_buy C.?_buy D.buy?4. 请选出可用作C语言用户标识符的一组标识符()。

A.void B.a3_b3 C.For D.2adefine _123 -abc DOWORD IF Case sizeof5. 下列符号中,不属于转义字符的是()。

A.\\ B.\0xAA C.\t D.\06.不属于C语言关键字的是()。

A.int B.break C.while D.character7.是C语言提供的合法关键字的是()。

A.Float B.signed C.integer D.Char8.以下不能定义为用户标示符的是()。

A.scanf B.V oid C._3com_ D.int9.一个C程序是由()。

C语言练习题(带答案)

C语言练习题(带答案)

一、单项选择题1.(A)是构成C语言程序的基本单位。

A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。

A) 程序中第一条可执行语句B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B )。

A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。

C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。

A.-a1B.a[i]C.a2_iD.int t6.下列C语言用户标识符中合法的是(B)。

A)3ax B)x C)case D)-e2 E)union7.下列四组选项中,正确的C语言标识符是(C)。

A)%x B)a+b C)a123 D)1238、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age9.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型B、整型、实型、逻辑型、字符型C、整型、字符型、逻辑型D、整型、实型、字符型10.在C语言程序中,表达式5%2的结果是C。

A)2.5 B)2 C)1 D)311.如果int a=3,b=4;则条件表达式"a<b? a:b"的值是__A__。

A) 3 B) 4 C) 0 D) 112.若int x=2,y=3,z=4 则表达式x<z?y:z的结果是( B).A)4 B)3 C)2 D)0 E)113.C语言中,关系表达式和逻辑表达式的值是(B)。

c语言基础练习题及答案

c语言基础练习题及答案

c 语言基础练习题及答案一、单项选择题1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为_c_A 、”.c” B、“ .obj ” C、“ .exe” D 、“ .bas”2. 以下选项中不正确的整型常量是_c ______ 。

A、12L B 、-10 c、1,900 D、123U3. 表达式___c___ 的值是0。

A、3%5B、3/5.0 c、3/5 D、3<54. 表达式!(x>0||y>0) 等价于__D___ 。

A 、!x>0||!y>0B 、!(x>0)||!(y>0) c 、!x>0&&!y>0 D 、!(x>0)&&!(y>0)5. 若变量已正确定义并赋值,表达式__D ____ 不符合c 语言语法。

A、4&&3 B 、+a c、a=b=5 D 、int(3. 1 4)6. 若变量已正确定义,执行语句scanf(%d%d%d ,&k1,&k2,&k3) ;时,___BA 、2030,40 B、20 30 40 c、20, 30 40 D 、20, 30,407. 执行语句printf( ” __D ____ ” , 2); 将得到出错信息。

A、%dB、%o c、%x D 、%f8. 设变量定义为"int s[ ]=hello\nworld\n; ”则数组s中有—B __________ 个元素。

A、12B、13 c、14 D、159. 设变量定义为“ int a[2]={1,3}, *p=&a[0]+1; ” 则*p 的值是___B_。

A、2B、3 c、4 D、&a[0]+110. 若变量已正确定义并赋值,表达式-k++ 等价于__A________ 。

A、-(k++) B 、(-k)++ c、-(k+1) D、-(++k)11. 在c 语言程序中,在函数内部定义的变量称为__D ____ 。

C语言练习题(带标准答案)-绝对经典题目不看后悔

C语言练习题(带标准答案)-绝对经典题目不看后悔

C语言练习题(带答案)-绝对经典题目不看后悔————————————————————————————————作者:————————————————————————————————日期:1单选题1.(A)是构成C语言程序的基本单位。

A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。

A) 程序中第一条可执行语句B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)。

A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。

C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。

A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。

A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。

A)%x B)a+b C)a123 D)123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。

(完整版)C语言100个经典题目

(完整版)C语言100个经典题目

C语言程序设计习题授课对象:信息奥赛辅导成员授课时间:题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?__________________________________________________________________ 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21….___________________________________________________________________程序源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf(“%12ld %12ld”,f1,f2);if(i%2==0) printf(“\n”);/*控制输出,每行四个*/f1=f1+f2;/*前两个月加起来赋值给第三个月*/f2=f1+f2;/*前两个月加起来赋值给第三个月*/}}上题还可用一维数组处理,you try!题目:判断101-200之间有多少个素数,并输出所有素数。

__________________________________________________________________ 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

___________________________________________________________________程序源代码:#include “math.h”main(){int m,i,k,h=0,leap=1;p rintf(“\n”);for(m=101;m<=200;m++){ k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;}if(leap) {printf(“%-4d”,m);h++;if(h%10==0)printf(“\n”);}leap=1;}printf(“\nThe total is %d”,h);}题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

C语言习题集(含答案)

C语言习题集(含答案)

一、单选题:(1)在C语言提供的合法的关键字是( )A)swicth B) cher C)Case D)default(2)在C语言中,合法的字符常量是()A)’\084’ B) ’\x43’C)’ab’D) "\0”(3)若有定义和语句:char s[10]: s="abcd”;printf(”%s\n",s);则结果是(以下u代表空格)()A)输出abcd B)输出aC)输出abcduuuuu D)编译不通过(4) 若有定义和语句:int **pp, *p,a=10, b=20;pp=&p;p=&a; p=&b; printf("%d,%d\n",*p,**pp);则输出结果是:()A)10,20 B)10,10 C)20,10 D)20,20(5)若有以下定义和语句:int u=010,v=0x10,w=10;printf("%d,%d,%d\n”,u, v, w);则输出结果是()A) 8,16,10B)10,10,10 C)8,8,10 D) 8,10,10 (6) 若有以下定义和语句char c1=' b', c2='e’;printf(”%d,%c\n", c2-c1,c2—'a’+”A");则输出结果是( )A)2,M B)3,EC)2,E ?D)输出项与对应的格式控制不一致,输出结果不确定(7)若有以下定义:char s[20]=”programming”,*ps=s;则不能代表字符o的表达式是( )A)ps+2 B) s[2]C) ps[2]D) ps+=2,*ps(8)若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是() for (i=5; i; i—-)for(j=0;j<4; j++){。

}A) 20B) 25 C)24 D) 30(9)若有以下定义和语句:char *s1=”12345",*s2="1234";printf("%d\n",strlen(strcpy(s1,s2)));则输出结果是()A)4B)5 C)9 D)10(10)若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是()A) *p B) a[10]C)*a D)a[p-a](11)下面程序的输出是()main(){char *s=”121";int k=0,a=0,b=0;do{k++;if(k%2==0) {a=a+s[k]—’0’;continue;}b=b+s[k]—’0';a=a+s[k]—'0';}while (s[k+1]);printf("k=%d a=%d b=%d\n",k,a,b);A) k=3 a=2 b=3 B) k=3 a=3 b=2C)k=2 a=3 b=2D) k=2 a=2 b=3(12) 下面程序的输出是( )main(){ unsigned a=32768;printf("a=%d\n”,a);}运行结果: —32768A)a=—32768 B)a=32767C)a=-32767 D)a=—1(13) 若有以下定义:float x; int a,b; 则正确的switch 语句是( )A)switch(x) B) switch(x){case1.0:printf("*\n”);{case1, 2:printf(”*\n”);case2。

计算机二级c语言经典练习题及解析答案

计算机二级c语言经典练习题及解析答案

计算机二级c语言经典练习题及解析答案一、单选题1. C语言中的三大基本数据类型包括( B )A.整型、实型、逻辑型B.整型、实型、字符型C.整型、逻辑型、字符型D.整型、实型、逻辑型、数组型2. 在C语言中,以下合法的字符常量是( c )A. '\048'B. 'ab'C. '\43'D. "\0"3.设x 为 int 型变量,执行下列语句: x=10; x+=x-=x-x; 则x的值为 ( B )A. 15B. 20C. 25D. 304. 定义如下变量和数组: int i, x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i<3;i++) printf("%d",x[i][2-i]); 的输出结果是( C )A. 1 4 7B. 1 5 9C. 3 5 7D. 3 6 95.逗号表达式(a=3*5,a*4),a+15的值是( b )A.15B. 30C. 60D. 756. .以下程序的输出结果是( c )。

main( ){ int x=10,y=11;printf("%d,%d\n",x--,--y);}A. 11,11B. 10,11C. 10, 10D.11,107.若一个外部变量的定义形式为static int x ; 其中static的作用是( d )A.将变量存放在静态存储区,使x的值可以永久保留B.使变量x可以由系统自动初始化C.使x的值可以永久保留D.使x只能在本文件内引用8.有如下变量说明:int k=2;则下面的循环共执行多少( d )次while (k!=0) {printf("%d",k);k--;}A.无限多次 B.0次 C.1次 D. 2次9.设有变量说明:int a=7,b=8;那么语句:printf("%d,%d\n",(a+b,a),(b,a+b));的输出应该是( a )A. 7,15B. 8,15C. 15,7D.15,810.若已定义:int a[9], *p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( b )A. p+1B. a++C. a+1D. ++p11. C语言变量名中不能使用的字符是( d )A. 数字B. 字母C. 下划线D. 关键字12.以下变量定义中合法的是( a )A.short a=2.1e-1;B. double b=1+5e0.5;C. long do=0xffe ;D. float 3_end=1-e3;13.若有说明语句char ch1=′\x79′;则ch1( c )A.包含4个字符B.包含3个字符C. 包含2个字符D.包含1个字符14.C语言中的函数( b )A. 可以嵌套定义B.嵌套调用和递归调用均可C. 不可以嵌套调用D. 可以嵌套调用但不可以递归调用15. 设整形变量a=12;则执行完语句a+=a-=a*a后a的值为( c )A. 552B. 264C. -264D. 14416.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c<d?a:d的结果是( a )A.1 B.2 C.3 D.417.若有说明语句:int b[][4]={ 3,1,2,5,7,6,4}; 则b数组的行数为( b )A. 3B. 2C.无确定值D. 118. 若有定义:char c[10];从键盘输入“LiFang”,则正确的函数引用是( c )A. scanf(″%c″,&c[10]);B. gets(c);C. scanf(″%s″,&c);D. gets(c[10]);19. 两个基类型相同的指针变量之间,不能进行的运算是( c )A. <B. =C. +D.-20. 下面程序段执行结果是( b )int i=5,k; k=(++i)+(++i)+(i++); printf("%d,%d",k,i);A. 24,8B. 21,8C. 21,7D. 24,721.以下选项中属于C语言的数据类型是( b )。

C语言练习题(带详解答案)

C语言练习题(带详解答案)

1、编程题1.输入2个整数,求两数的平方和并输出。

#include <stdio.h>int main(void){ intt a ,b,s;printf("please input a,b:\n");scanf("%d%d”,&a,&b);s=a*a+b*b;printf("the result is %d\n",s);return 0;}2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。

#include <stdio.h>#define PI 3.14int main(void){ double r ,area , girth;printf("please input r:\n");scanf("%lf",&r);if (r>=0){ area =PI*r*r;girth =2*PI*r ;printf("the area is %.2f\n", area);printf("the girth is %.2f\n", girth);}elseprintf("Input error!\n");return 0;}3、已知函数y=f(x),编程实现输入一个x值,输出y值。

2x+1 (x<0)y= 0 (x=0)2x-1 (x>0)#include <stdio.h>void main(){ int x,y;scanf(“%d”,&x);if(x<0) y=2*x+1;else if(x>0) y=2*x-1;else y=0;printf(“%d”,y);}4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。

C语言156道经典习题

C语言156道经典习题

第1题、函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。

替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。

部分源程序存在文件prog1.c中。

原始数据文件存放的格式是:每行的宽度均小于80个字符。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

第2题、函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。

请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。

如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。

例如:位置0 1 2 3 4 5 6 7 8源字符串 d c b a h g f e4 3 2 1 9 8 7 6 5则处理后字符串 h g f e a b c d8 7 6 5 9 1 2 3 4部分源程序存在文件prog1.c中。

请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。

第3题、函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS8.DAT中。

C语言全部章节习题集(参考答案)

C语言全部章节习题集(参考答案)
}
选择结构答案
一、单项选择题
1.B 2.A 3.D 4.C 5.D 6.B 7.C
二、填空题
1. 5 5 4
5 5 4
3 3 4
2. 4 0
3. VeryGood
Good
VeryGood
A. 8 B. 4 C. 2 D. 出错
14、设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为( D )。
A. 4 B. 3 C. 2 D. 1
15、设a 为整型变量,不能正确表达数学关系:10<a<15的 C 语言表达式是( A )。
{ float a,b,temp;
printf("input a and b:");
scanf("%d,%d",&a ,&b);
temp = a; a = b; b = temp;
printf("a=%d , b=%d\n", a , b);
scanf(“%f”,&t);
if(t>=90) ch=’A’;
else if(t>=80) ch=’B’;
24、下列不正确的转义字符是( C )。
A. \\ B. \' C. 074 D. \0
二、填空题:
1、C 语言中的逻辑值“真”是用 1 表示的,逻辑值“假”是用 0 表示的。
2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。
5、判断变量 a、b 的值均不为 0 的逻辑表达式为a!=0&&b!=0 。

C语言各章节练习题(含答案)

C语言各章节练习题(含答案)

C语言各章节练习题(含答案)一、c语言概述练习题选择1.一个c程序的执行是从。

a)本程序的main函数开始,到main函数结束b)本程序文件的第一个函数已经开始,至本程序文件的最后一个函数完结c)本程序文件的第一个函数已经开始,至本程序main函数完结d)本程序的main函数已经开始,至本程序文件的最后一个函数完结2.以下描述不恰当的就是。

a)一个c源程序必须包含一个main函数b)一个c源程序可由一个或多个函数组成c)c程序的基本组成单位是函数d)在c程序中,注释说明只能位于一条语句的后面3.以下描述恰当的就是。

a)在对一个c程序进行编译的过程中,可发现注释中的拼写错误b)在c程序中,main 函数必须位于程序的最前面c)c语言本身没输入输出语句d)c程序的每行中就可以写下一条语句4.一个c语言程序就是由。

a)一个主程序和若干个子程序组成b)函数组成c)若干过程组成d)若干子程序组成二、数据类型、运算符与表达式选择.1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为。

x=(i=4,j=16,k=32)a)4b)16c)32d)522.下列四组选项中,均不是c语言关键字的选项是。

a)defineiftypeb)getccharprintfc)includecasescanfd)whilegopow3.以下四组选项中,均就是不合法的用户标识符的选项就是。

(c语言标识符由字母,数字,下划线共同组成,结尾无法就是数字)a)wp_0dob)b-agotointc)floatla0_ad)-123abctemp8.未知字母a的ascii码点为十进制数65,且c2为字符型,则继续执行语句c2=‘a’+‘6’-‘3’后,c2中的值。

a)db)68c)不确定的值d)c填空题1.若存有以下定义,则排序表达式y+=y-=m*=y后的y值就是【1】。

-16intm=5,y=2;7.若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为【8】,n的值为【9】。

c语言程序基础练习题500道(附答案)

c语言程序基础练习题500道(附答案)

1.下列四组选项中,均不是C语言关健字的选项是( A )。

A) define B) gect C) include D) whileIF char scanf gotype printf case pow2.下面四个选项中,均是合法整型常量的选项是( A )。

A)160 B)-0xcdf C) -01 D)-0x48a-0xffff 01a 986,012 2e5011 0xe 0668 0x3.下面四个选项中,均是不合法的转义符的选项是( B )。

A) '\"' B) '\1011' C) '\011' D) '\abc''\\' '\' '\f' '\101''xf' '\A' '\}' 'x1f'4.下面不正确的字符串常量是( A )。

A)'abc' B)"12'12" C)"0" D)" "5.以下选项中不合法的用户标识符是( A )。

A)abc.c B)file C)Main D)PRINT6.C语言提供的合法关键字是( D )。

A) swithB) cherC) CaseD)default7.下列标识符组中,合法的用户标识符为 AA)_0123与ssipedB)del-word与signedC)list与*jerD) keep%与wind8.在C语言中,逻辑值"真"的表示是用( C )。

A) true B) 整型值0 C)非另整型值D) T9若有以下定义char s='\092';则该语句( b )A)使s的值包含一个字符B)定义不合法,s的值不确定C)使s的值包含4个字符D)使s的值包含3个字符10设C语言中,int类型数据占2个字节,则float类型数据占(D )个字节。

C语言练习题及参考答案

C语言练习题及参考答案

练习题1及参考答案1. 单项选择题(1)以下并非C语言的特点的是????? 。

A.? C语言简洁和紧凑B. 能够编制出功能复杂的程序C.? C语言可以直接对硬件进行操作D.? C语言移植性好【答】B(2)一个C程序的执行是从????? 。

A.? main()函数开始,直到main()函数结束B. 第一个函数开始,直到最后一个函数结束C. 第一个语句开始,直到最后一个语句结束D.? main()函数开始,直到最后一个函数结束【答】A(3)在C程序中,main()的位置????? 。

A. 必须作为第一个函数B. 必须作为最后一个函数C. 可以任意D. 必须放在它所调用的函数之后【答】C(4)一个C程序是由????? 。

A. 一个主程序和若干子程序组成B. 一个或多个函数组成C. 若干过程组成D. 若干子程序组成【答】B(5)下列说法正确的是????? 。

A. 在执行C程序时不是从main()函数开始的B.? C程序书写格式限制严格,一行内必须写一个语句C.? C程序书写格式比较自由,一个语句可以分行写在多行上D.? C程序书写格式严格要求一行内必须写一个语句,并要求行号【答】C2. 填空题(1)一个C源程序至少有?? ①?? 个main()函数和?? ②?? 个其他函数。

【答】①一? ②若干(2)任何C语句必须以????? 结束。

【答】分号(3)C语言源程序的基本单位是????? 。

【答】函数(4)C编译程序的功能是????? 。

【答】将C源程序编译成目标代码练习题2及参考答案1. 单项选择题(1)以下字符串为标识符的是????? 。

A. _MY????????? ??????B. 2_2222?????? ?????? ??????C. short?????? ?????? ??????D. LINE 5【答】A(2)下列符号可以作为变量名的是????? 。

A. +a????? ?????? ??????B. *p?????? ?????? ?????? ??????C. _DAY????? ?????? ??????D. next day【答】C(3)设c是字符变量,则以下表达式正确的是????? 。

C语言章节习题集(全)

C语言章节习题集(全)

C语言程序设计第一、二章单项选择题1.将汇编语言编写的程序翻译成目标程序的程序是()A)解释B)编译C)汇编D)目标2.不属于面向机器语言的是()A)符号语言B)二进制语言C)3.A)解释B)编译C)汇编D)二进制4.不属于高级语言的是()。

5.A)D)分支结构6、CA7A、在main()函数中定义B、C语言程序总是从第一个定义的函数开始执行C、C语言程序中,main()函数必须放在程序的开始部分D、C语言程序总是从main()函数开始执行8、以下对C语言描述中正确的是()。

A、C语言源程序中可以有重名的函数B、C语言源程序中要求每行只能书写一条语句C、C语言源程序中,注释可以出现在任何位置D、最小的C源程序中没有任何内容9、对C语言源程序执行过程描述正确的是()。

A、从main()函数开始执行,到main()函数结束B、从程序的第一个函数开始执行,到最后一个函数结束C、从mainD、填空题1.2.3.4.用C C程序”,扩展名规定为“____”。

5.C OBJ”的____。

6.C____,才能"EXE"。

7、89.选择结构是____选择某个操作来执行的—种程序结构。

10.选择结构可以分为____、双分支结构和多分支结构。

11.循环结构又可分为当型循环、____及次数型循环。

第三章数据类型、运算符与表达式单项选择题1.以下程序的输出结果是。

main(){inta=10,b=10;printf("%d,%d",a--,++b);}A)10,11B)10,10 C)9,9D)9,112.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是A)'a'&&'b'B)a<=b3.设ch是char型变量,其值为4.main();}A)003B)012 C)103D)1125.字符串“\t\n\\\045\’”的长度为。

C语言经典练习题50道(附答案)

C语言经典练习题50道(附答案)

1.**打印Hello World**练习:编写一个C程序,打印"Hello,World!"到屏幕上。

#include<stdio.h>int main(){printf("Hello,World!\n");return0;}2.**计算两个整数的和**练习:编写一个程序,接受两个整数,然后计算它们的和并打印结果。

#include<stdio.h>int main(){int a=5,b=7;int sum=a+b;printf("Sum:%d\n",sum);return0;}3.**判断奇数或偶数**练习:编写一个程序,接受一个整数,然后判断它是否为奇数或偶数。

#include<stdio.h>int main(){int num=10;if(num%2==0){printf("%d is even.\n",num);}else{printf("%d is odd.\n",num);}return0;}4.**计算阶乘**练习:编写一个程序,计算给定整数的阶乘。

#include<stdio.h>int main(){int n=5;int factorial=1;for(int i=1;i<=n;i++){factorial*=i;}printf("Factorial of%d is%d\n",n,factorial);return0;}5.**反转字符串**练习:编写一个程序,接受一个字符串,然后反转它并打印出来。

#include<stdio.h>#include<string.h>int main(){char str[]="Hello,World!";int len=strlen(str);for(int i=len-1;i>=0;i--){printf("%c",str[i]);}printf("\n");return0;}6.**检查素数**练习:编写一个程序,判断一个整数是否为素数。

C语言基础练习题(含答案)

C语言基础练习题(含答案)

第一章C语言基础知识1.1 选择题1. 以下不是C语言的特点的是()。

BA、语言简洁紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件操作D、C语言移植性好2. 下列字符序列中,不可用作C语言标识符的是()。

BA.abc123 B. C._123_ D._ok 3. 正确的C语言标识符是()。

AA._buy_2 B.2_buy C._buy D.buy4. 请选出可用作C语言用户标识符的一组标识符()。

BA.void B.a3_b3 C.For D.2a define _123 -abc DOWORD IF Case sizeof5. 下列符号中,不属于转义字符的是()。

BA.\\ B.\0xAA C.\t D.\06. 不属于C语言关键字的是()。

dA.int B.break C.while D.character 7. 是C语言提供的合法关键字的是()。

bA.Float B.signed C.integer D.Char8. 以下不能定义为用户标示符的是()。

bA.scanf B.Void C._3com_ D.int9. 一个C程序是由()。

bA.一个主程序和若干子程序组成B.一个或多个函数组成C.若干过程组成D.若干子程序组成10. C语言程序的基本单位是()。

cA.程序行 B.语句 C.函数 D.字符11. 下列说法中,错误的是()。

aA.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外C.主函数只能调用用户函数或系统函数,用户函数可以相互调用D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数12. 以下说法中正确的是()。

cA.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main( )函数中定义C.C语言程序总是从main( )函数开始执行D.C语言程序中的main( )函数必须放在程序的开始部分13. C编译程序是()。

C语言编程练习题绝对经典

C语言编程练习题绝对经典

马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人解方程组编写程序,采用穷举法求出结果;编写程序,根据以下公式求e 的值;要求用两种方法计算:1for 循环,计算前50项 2while 循环,直至最后一项的值小于10-4从键盘中输入一个数字不限位数,用循环语句编程判断并输出这个数字的位数;猴子吃桃子问题;猴子第一天摘下若干个桃,当即只一半,又多吃一个;第二天早上又将剩下的一半吃掉一半,双多吃一个;以后每天早上都吃了前天剩下的一半零一个,到第10天早上只剩下最后一个桃;问第一天摘了几个桃;编程打印九九乘法表青年歌手参加歌曲大奖赛,有10个评委打分,试编程求选手的平均得分去掉一个最高分和一个最低分;从键盘中输入一个数字可以包含小数点,其位数在60位以下,求其整数的有效位数,如输入0123.456,返回值为整数有效位数为31输入数据为浮点型,不用数组,不用字符串,只有变量的算术运算实现此功能;2使用数组来进行编程;使用数组,编写一个十进制正整数转换为任意进制数的转换工具;大进制向小进制的转换;方法是相除去余10进制327转八进制:327/8=40余数为740/8=5余数为0于是八进制数为507第一位5是最后的商使用数组,编写一个任意进制正整数转换为十进制的转换工具;以2,10进制互转为例,其他请举一反三:二进制数1101转十进制:1×2的三次幂+1×2的二次幂+0×2的一次幂+1×2的零次幂=8+4+0+1=1310个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6,14,20;然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块;编写一个函数,用以求x2-5x+4的值,x 做为函数的形参,调用此函数,求:y1=22-5×2+4Y2=x+152-5x+15+4Y3=sinx2-5sinx+4sinx 可以加载”math.h ”库函数后使用,函数说明为 doublesindoublex编写一个函数,使给定的一个二维数组N ×N 行列互换N>3;从键盘中输入一个不超过40个字符的字符串,再输入一个位数,删除对应位数的字符,然后输出删除指定字符后的字符串11111111!2!3!4!5!!e n ≈++++++⋅⋅⋅⋅⋅⋅+要求:1用puts输出指示信息2用gets接收字符串如果有一个正整数从左、右来读都是一样的,则称为回文式数简称回数;比如101,32123,999都是回数;数学中有名的“回数猜想”之迷,至今未解决;回数猜想:任取一个数,再把它倒过来,并把这两个数相加,然后把这个和数再倒过来,与原和数相加,重复此过程,一定能获得一个回数;例:68倒过来是8668+86=154154+541=605605+506=1111回数编程,输入任意整数,按上述方法产生一个回数,为简便起见,最多计算7步,看是否能得到一个回数; 要求:主函数中接收键盘数据,必须用scanf“%ld”,&变量名接收整型变量,显示该数与其倒数的和,输出每一步计算步骤;子函数1,计算该数的倒数;子函数2,验证和是否为回数,是则主函数打印“经过n次计算,得到回数”,超过7次未能得到回数,显示,“经过n次计算,未得到回数”求Sn=a+aa+aaa+------+aaaaaaan个a,其中a和n都从键盘中输入,如从键盘中输入2,5,则计算S5=2+22+222+2222+22222;include"stdio.h"voidmain{inta,n,i=1;longs=0,t=0;printf"a=";scanf"%d",&a;printf"n=";scanf"%d",&n;whilei<=n{t=t+a;s=s+t;a=a10;++i;}printf"sum=%d",s;}两个乒乓球队进行比赛,各出三人;甲队为A,B,C三人,乙队为X,Y,Z三人;已抽签决定比赛名单,有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,编程找出三对选手的对手名单;注:使用穷举法include"stdio.h"intmain{inti,j,k;fori=1;i<=3;++i{forj=1;j<=3;++j{fork=1;k<=3;++k{ifi==j||j==k||i==kcontinue;ifi=1&&k=1&&k=3{printf"Avs%c\n",i+'X'-1;printf"Bvs%c\n",j+'X'-1;printf"Cvs%c\n",k+'X'-1;return0;}}}}return0;}编写一个函数,函数说明为:charlastcharcharstr功能:求一个字符串的最后一个字符,如果是空串,则返回空字符;再利用该函数编程,输入两个字符串,输出第一字符串的最后一个字符和第二个字符串的最后一个字符;韩信点兵;韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10;编程求韩信至少有多少兵include"stdio.h"voidmain{inti;fori=1;;i++{ifi%5==1&&i%6==5&&i%7==4&&i%11==10{printf"%d",i;break;}}}用递归方法计算下列函数的值:fxx,n=x-x2+x3-x4+......-1n-1xnn>0要求:1写出递归函数的原型2编写程序4用递归法将一个整数转换成字符形式输出;例如输入483,应输出字符串“483”;其程序如下,请验证,并修改程序,增加显示出输入数字的位数的功能,并使输出结果与下图一致; voidconvertlongn{longi;ifi=n/10=0converti;putcharn%10+'0';}main{longnumber;scanf"%ld",&number;ifnumber<0{putchar'-';number=-number;}convertnumber;}利用以下公式,编程计算π的值,直到最后一项的绝对值用函数fabs小于0.0001为止;程序1题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数都是多少1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4;组成所有的排列后再去掉不满足条件的排列;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j,k;printf"\n";fori=1;i<5;i++/以下为三重循环/forj=1;j<5;j++fork=1;k<5;k++{ifi=k&&i=j&&j=k/确保i、j、k三位互不相同/printf"%d,%d,%d\n",i,j,k;}getch;}===========================================程序2题目:企业发放的奖金根据利润提成;利润I低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数1.程序分析:请利用数轴来分界,定位;注意定义时需把奖金定义成长整型;2.程序源代码:include"stdio.h"include"conio.h"main{longinti;intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf"%ld",&i;bonus1=1000000.1;bonus2=bonus1+1000000.75;bonus4=bonus2+2000000.5;bonus6=bonus4+2000000.3;bonus10=bonus6+4000000.15;ifi<=100000bonus=i0.1;elseifi<=200000bonus=bonus1+i-1000000.075;elseifi<=400000bonus=bonus2+i-2000000.05;elseifi<=600000bonus=bonus4+i-4000000.03;elseifi<=1000000bonus=bonus6+i-6000000.015;elsebonus=bonus10+i-10000000.01;printf"bonus=%d",bonus;getch;}===========================================程序3题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果;请看具体分析:2.程序源代码:include"math.h"include"stdio.h"include"conio.h"main{longinti,x,y,z;fori=1;i<100000;i++{x=sqrti+100;/x为加上100后开方后的结果/y=sqrti+268;/y为再加上168后开方后的结果/ifxx==i+100&&yy==i+268/如果一个数的平方根的平方等于该数,这说明此数是完全平方数/ printf"\n%ld\n",i;}getch;}===========================================程序4题目:输入某年某月某日,判断这一天是这一年的第几天1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天;2.程序源代码:include"stdio.h"include"conio.h"main{intday,month,year,sum,leap;printf"\npleaseinputyear,month,day\n";scanf"%d,%d,%d",&year,&month,&day;switchmonth/先计算某月以前月份的总天数/{case1:sum=0;break;case2:sum=31;break;case3:sum=59;break;case4:sum=90;break;case5:sum=120;break;case6:sum=151;break;case7:sum=181;break;case8:sum=212;break;case9:sum=243;break;case10:sum=273;break;case11:sum=304;break;case12:sum=334;break;default:printf"dataerror";break;}sum=sum+day;/再加上某天的天数/ifyear%400==0||year%4==0&&year%100=0/判断是不是闰年/leap=1;elseleap=0;ifleap==1&&month>2/如果是闰年且月份大于2,总天数应该加一天/sum++;printf"Itisthe%dthday.",sum;getch;}===========================================程序5题目:输入三个整数x,y,z,请把这三个数由小到大输出;1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小;2.程序源代码:include"stdio.h"include"conio.h"main{intx,y,z,t;scanf"%d%d%d",&x,&y,&z;ifx>y{t=x;x=y;y=t;}/交换x,y的值/ifx>z{t=z;z=x;x=t;}/交换x,z的值/ify>z{t=y;y=z;z=t;}/交换z,y的值/printf"smalltobig:%d%d%d\n",x,y,z;getch;}===========================================程序6题目:用号输出字母C的图案;1.程序分析:可先用''号在纸上写出字母C,再分行输出;2.程序源代码:include"stdio.h"include"conio.h"main{printf"HelloC-world\n";printf"\n";printf"\n";printf"\n";printf"\n";getch;}===========================================程序7题目:输出特殊图案,请在c环境中运行,看一看,VeryBeautiful1.程序分析:字符共有256个;不同字符,图形不一样;2.程序源代码:include"stdio.h"include"conio.h"main{chara=176,b=219;printf"%c%c%c%c%c\n",b,a,a,a,b;printf"%c%c%c%c%c\n",a,b,a,b,a;printf"%c%c%c%c%c\n",a,a,b,a,a;printf"%c%c%c%c%c\n",a,b,a,b,a;printf"%c%c%c%c%c\n",b,a,a,a,b;getch;}============================================================== 程序8题目:输出99口诀;1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j,result;printf"\n";fori=1;i<10;i++{forj=1;j<10;j++{result=ij;printf"%d%d=%-3d",i,j,result;/-3d表示左对齐,占3位/}printf"\n";/每一行后换行/}getch;}===========================================程序9题目:要求输出国际象棋棋盘;1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j;fori=0;i<8;i++{forj=0;j<8;j++ifi+j%2==0printf"%c%c",219,219;elseprintf"";printf"\n";}getch;}==============================================================程序10题目:打印楼梯,同时在楼梯上方打印两个笑脸;1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j;printf"\1\1\n";/输出两个笑脸/fori=1;i<11;i++{forj=1;j<=i;j++printf"%c%c",219,219;printf"\n";}getch;}.:.:经典c程序100例==11--20:.:.经典c程序100例==11--20程序11题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:include"stdio.h"include"conio.h"main{longf1,f2;inti;f1=f2=1;fori=1;i<=20;i++{printf"%12ld%12ld",f1,f2;ifi%2==0printf"\n";/控制输出,每行四个/f1=f1+f2;/前两个月加起来赋值给第三个月/f2=f1+f2;/前两个月加起来赋值给第三个月/}getch;}==============================================================程序12题目:判断101-200之间有多少个素数,并输出所有素数;1.程序分析:判断素数的方法:用一个数分别去除2到sqrt这个数,如果能被整除,则表明此数不是素数,反之是素数;2.程序源代码:include"stdio.h"include"conio.h"include"math.h"main{intm,i,k,h=0,leap=1;printf"\n";form=101;m<=200;m++{k=sqrtm+1;fori=2;i<=k;i++ifm%i==0{leap=0;break;}ifleap{printf"%-4d",m;h++;ifh%10==0printf"\n";}leap=1;}printf"\nThetotalis%d",h;getch;}===========================================程序13题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身;例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方;1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j,k,n;printf"'waterflower'numberis:";forn=100;n<1000;n++{i=n/100;/分解出百位/j=n/10%10;/分解出十位/k=n%10;/分解出个位/ifi100+j10+k==iii+jjj+kkkprintf"%-5d",n;}getch;}===========================================程序14题目:将一个正整数分解质因数;例如:输入90,打印出90=2335;程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:1如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可;2如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步;3如果n不能被k整除,则用k+1作为k的值,重复执行第一步;2.程序源代码:/zhengintisdividedyinshu/include"stdio.h"include"conio.h"main{intn,i;printf"\npleaseinputanumber:\n";scanf"%d",&n;printf"%d=",n;fori=2;i<=n;i++whilen=i{ifn%i==0{printf"%d",i;n=n/i;}elsebreak;}printf"%d",n;getch;}===========================================程序15题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B 表示,60分以下的用C表示;1.程序分析:a>ba:b这是条件运算符的基本例子;2.程序源代码:include"stdio.h"include"conio.h"main{intscore;chargrade;printf"pleaseinputascore\n";scanf"%d",&score;grade=score>=90'A':score>=60'B':'C';printf"%dbelongsto%c",score,grade;getch;}===========================================程序16题目:输入两个正整数m和n,求其最大公约数和最小公倍数;1.程序分析:利用辗除法;2.程序源代码:include"stdio.h"include"conio.h"main{inta,b,num1,num2,temp;printf"pleaseinputtwonumbers:\n";scanf"%d,%d",&num1,&num2;ifnum1<num2/交换两个数,使大数放在num1上/{temp=num1;num1=num2;num2=temp;}a=num1;b=num2;whileb=0/利用辗除法,直到b为0为止/{temp=a%b;a=b;b=temp;}printf"gongyueshu:%d\n",a;printf"gongbeishu:%d\n",num1num2/a;getch;}===========================================程序17题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数;1.程序分析:利用while语句,条件为输入的字符不为'\n'.2.程序源代码:include"stdio.h"include"conio.h"main{charc;intletters=0,space=0,digit=0,others=0;printf"pleaseinputsomecharacters\n";whilec=getchar='\n'{ifc>='a'&&c<='z'||c>='A'&&c<='Z'letters++;elseifc==''space++;elseifc>='0'&&c<='9'digit++;elseothers++;}printf"allinall:char=%dspace=%ddigit=%dothers=%d\n",letters,space,digit,others;getch;}===========================================程序18题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字;例如2+22+222+2222+22222此时共有5个数相加,几个数相加有键盘控制;1.程序分析:关键是计算出每一项的值;2.程序源代码:include"stdio.h"include"conio.h"main{inta,n,count=1;longintsn=0,tn=0;printf"pleaseinputaandn\n";scanf"%d,%d",&a,&n;printf"a=%d,n=%d\n",a,n;whilecount<=n{tn=tn+a;sn=sn+tn;a=a10;++count;}printf"a+aa+...=%ld\n",sn;getch;}==============================================================程序19题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”;例如6=1+2+3.编程找出1000以内的所有完数;1.程序分析:请参照程序<--上页程序14.2.程序源代码:include"stdio.h"include"conio.h"main{staticintk10;inti,j,n,s;forj=2;j<1000;j++{n=-1;s=j;fori=1;i<j;i++{ifj%i==0{n++;s=s-i;kn=i;}}ifs==0{printf"%disawanshu",j;fori=0;i<n;i++printf"%d,",ki;printf"%d\n",kn;}}getch;}==============================================================程序20题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米第10次反弹多高1.程序分析:见下面注释2.程序源代码:include"stdio.h"include"stdio.h"main{floatsn=100.0,hn=sn/2;intn;forn=2;n<=10;n++{sn=sn+2hn;/第n次落地时共经过的米数/hn=hn/2;/第n次反跳高度/}printf"thetotalofroadis%f\n",sn;printf"thetenthis%fmeter\n",hn;getch;}.:.:经典c程序100例==21--30:.:.经典c程序100例==21--30程序21题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个;到第10天早上想再吃时,见只剩下一个桃子了;求第一天共摘了多少;1.程序分析:采取逆向思维的方法,从后往前推断;2.程序源代码:include"stdio.h"include"conio.h"main{intday,x1,x2;day=9;x2=1;whileday>0{x1=x2+12;/第一天的桃子数是第2天桃子数加1后的2倍/x2=x1;day--;}printf"thetotalis%d\n",x1;getch;}===========================================程序22题目:两个乒乓球队进行比赛,各出三人;甲队为a,b,c三人,乙队为x,y,z三人;已抽签决定比赛名单;有人向队员打听比赛的名单;a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单;1.程序分析:判断素数的方法:用一个数分别去除2到sqrt这个数,如果能被整除,则表明此数不是素数,反之是素数;2.程序源代码:include"stdio.h"include"conio.h"main{chari,j,k;/i是a的对手,j是b的对手,k是c的对手/fori='x';i<='z';i++forj='x';j<='z';j++{ifi=jfork='x';k<='z';k++{ifi=k&&j=k{ifi='x'&&k='x'&&k='z'printf"orderisa--%c\tb--%c\tc--%c\n",i,j,k;}}}getch;}===========================================程序23题目:打印出如下图案菱形1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j,k;fori=0;i<=3;i++{forj=0;j<=2-i;j++printf"";fork=0;k<=2i;k++printf"";printf"\n";}fori=0;i<=2;i++{forj=0;j<=i;j++printf"";fork=0;k<=4-2i;k++printf"";printf"\n";}getch;}===========================================程序24题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和;1.程序分析:请抓住分子与分母的变化规律;2.程序源代码:include"stdio.h"include"conio.h"mainintn,t,number=20;floata=2,b=1,s=0;forn=1;n<=number;n++{s=s+a/b;t=a;a=a+b;b=t;/这部分是程序的关键,请读者猜猜t的作用/ }printf"sumis%9.6f\n",s;getch;}===========================================程序25题目:求1+2+3+...+20的和1.程序分析:此程序只是把累加变成了累乘;2.程序源代码:include"stdio.h"include"conio.h"main{floatn,s=0,t=1;forn=1;n<=20;n++{t=n;s+=t;}printf"1+2+3...+20=%e\n",s;getch;}===========================================程序26题目:利用递归方法求5;1.程序分析:递归公式:fn=fn_142.程序源代码:include"stdio.h"include"conio.h"main{inti;intfact;fori=0;i<5;i++printf"\40:%d=%d\n",i,facti;getch;}intfactjintj;{intsum;ifj==0sum=1;elsesum=jfactj-1;returnsum;}===========================================程序27题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来;1.程序分析:2.程序源代码:include"stdio.h"include"conio.h"main{inti=5;voidpalinintn;printf"\40:";palini;printf"\n";getch;}voidpalinnintn;{charnext;ifn<=1{next=getchar;printf"\n\0:";putcharnext;}else{next=getchar;palinn-1;putcharnext;}}===========================================程序28题目:有5个人坐在一起,问第五个人多少岁他说比第4个人大2岁;问第4个人岁数,他说比第3个人大2岁;问第三个人,又说比第2人大两岁;问第2个人,说比第一个人大两岁;最后问第一个人,他说是10岁;请问第五个人多大1.程序分析:利用递归的方法,递归分为回推和递推两个阶段;要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人10岁,再往回推;2.程序源代码:include"stdio.h"include"conio.h"agenintn;{intc;ifn==1c=10;elsec=agen-1+2;returnc;}main{printf"%d",age5;getch;}===========================================程序29题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字;1.程序分析:学会分解出每一位数,如下解释:这里是一种简单的算法,师专数002班赵鑫提供2.程序源代码:include"stdio.h"include"conio.h"main{longa,b,c,d,e,x;scanf"%ld",&x;a=x/10000;/分解出万位/b=x%10000/1000;/分解出千位/c=x%1000/100;/分解出百位/d=x%100/10;/分解出十位/e=x%10;/分解出个位/ifa=0printf"thereare5,%ld%ld%ld%ld%ld\n",e,d,c,b,a;elseifb=0printf"thereare4,%ld%ld%ld%ld\n",e,d,c,b;elseifc=0printf"thereare3,%ld%ld%ld\n",e,d,c;elseifd=0printf"thereare2,%ld%ld\n",e,d;elseife=0printf"thereare1,%ld\n",e;getch;}===========================================程序30题目:一个5位数,判断它是不是回文数;即12321是回文数,个位与万位相同,十位与千位相同;1.程序分析:同29例2.程序源代码:include"stdio.h"include"conio.h"main{longge,shi,qian,wan,x;scanf"%ld",&x;wan=x/10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;ifge==wan&&shi==qian/个位等于万位并且十位等于千位/printf"thisnumberisahuiwen\n";elseprintf"thisnumberisnotahuiwen\n";getch;}.:.:经典c程序100例==31--40:.:.经典c程序100例==31--40程序31题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母;1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母;2.程序源代码:include"stdio.h"include"conio.h"voidmain{charletter; printf"pleaseinputthefirstletterofsomeday\n"; whileletter=getch='Y'/当所按字母为Y时才结束/ {switchletter{case'S':printf"pleaseinputsecondletter\n"; ifletter=getch=='a'printf"saturday\n";elseifletter=getch=='u'printf"sunday\n";elseprintf"dataerror\n";break;case'F':printf"friday\n";break;case'M':printf"monday\n";break;case'T':printf"pleaseinputsecondletter\n"; ifletter=getch=='u'printf"tuesday\n";elseifletter=getch=='h'printf"thursday\n";elseprintf"dataerror\n";break;case'W':printf"wednesday\n";break;default:printf"dataerror\n";}}getch;}=========================================== 1.求下列分段函数的值;2.求下列分段函数的值;a、b由键盘输入3.求分段函数的值4.求分段函数的值⎪⎩⎪⎨⎧<=>+=0ln 01012X x X X e Y x5.计算:s=1+1/1+1/2+……+1/n,其中n 由键盘输入;6.用台劳级数求e 的近似值,直到最后一项小于10-6e=1+1/1+1/2+1/3+……7.求s=1-2+3-4+5……+99-1008.输出200~1000之间能被7整除的数,并统计其个数;9.任意输入100个整数,分别统计其中的正数、负数和零的个数;10.任意输入N 个数,统计其中的正数个数和负数个数;11.任意输入aNN 个数,找出并输出其中的最大数和最小数,以及它们的下标;12.求数组a88中,主对角线和次对角线上各元素之和;13.任意输入N 个数,将它们由大到小排序输出;14.编程打印下列的杨辉三角形;设10行11112113311464115101051……15.以“”为字符,打印一个正三角形;16.以“”为字符,打印一个6行的倒正三角形;17.打印10~1000之间满足下列条件的所有数:正序读和反序读都相同,例如:55、232等;18.从键盘任意输入一个大于0且小于1000的整数,然后输出此整数的所有整数因子;例如:输入12,输出1,2,3,4,6,12;19.编写一个函数,将字符串中的元音字母输出;例如字符串为“boyandgirl”,则输出为:oai20.从键盘上任意输入一个字符串S,输出其中的数字字符;例如输入为:sd12we$55abc8,则输出结果为:1255821.编写一个函数,将两个字符串连接起来;不能用strcat函数;22.编写一个函数:完成判断方阵aNN是否关于主对角线对称相等,若对称则返回1,否则返回0;23.输入10个学生包括姓名和成绩的信息,找出成绩最高的,然后输出该学生的姓名和成绩;24.输入10个学生包括姓名、计算机、英语的信息,找出二门课的平均成绩最高的学生,然后输出该学生的姓名和成绩;25.函数intaddintaNN,intbN的功能是将a数组中每行的最小元素放入b数组中,编写该函数实现之;26.函数intaddintaNN,intbN的功能是将a数组中每行的最大元素放入b数组中,编写该函数实现之;27.函数intaddintaNN,intbN的功能是将a数组中每列的最小元素放入b数组中,编写该函数实现之;28.编写一函数:intsubstringcharstr,charsub,判断字符串sub是否是字符串str的子串,若是子串,则返回子串的位置,否则返回-1;29.函数voidcompchars1,s2的功能是比较字符串s1和字符串s2,若字符串s1大于字符串s2,则函数返回1,若字符串s1等于字符串s2,则函数返回0,若字符串s1小于字符串s2,则函数返回-1;要求:不能调用库函数strcmp30.函数voiddelechars的功能是删除字符串s中的所有数字字符和非字母字符,并将字符串压缩;例如原字符串为:abc12ef5ghij8%%yz,处理后的字符串为:abcefghijyz;。

C语言经典100题

C语言经典100题

C语言程序设计复习指导一、程序设计题1、多项式求和(积)例1:3!+5!+7!+...+N!,求直到S>=680000为止的奇数N。

(N=11)main(){int i,j;long s,t=0;for(i=3;;i=i+2){s=1;for(j=1;j<=i;j++)s=s*j;t=t+s;if(t>=680000)break;}printf("%d",i);}例2:请编程计算1-1/2+1/3-1/4+1/5-...+1/99。

(精确到小数点后3位)。

main(){int i,t=1;float s=0;for(i=1;i<=99;i++){s=s+*t/i;t=-t;}printf("%.3f",s);getch();}例3:1+1/3+1/9+1/27…+1/n>时最小的n。

(n=81)main(){int i;float s=0;for(i=1;;i=i*3){s=s+i;if(s>break;}printf("%d",i);getch();}例4:求4*(1-1/3+1/5-1/7+…)的值,直到最后一项的绝对值小于10的负6次方为止。

#include ""main(){long i,t=1;float s=0;for(i=1;fabs*t/i)>=;i=i+2){s=s+*t/i;t=-t;}printf("%f",4*s);getch();}2、穷举法的应用例1:百钱百鸡问题。

例2:大作业本单价4元,中作业本单价2元,小作业本单价1元,当天共卖出大中小作业本30本,每种至少卖出1本,金额100元,问大中小作业本共有几种组合情况。

(3) main(){int a,b,c,s=0;for(a=1;a<=30;a++)for(b=1;b<=30-a;b++){c=30-a-b;if(a+b*2+c*4==100) s++;}printf("\n%d",s);}3、迭代法的应用例1:已知一个数列的前三个数是1,2,3,从第四个数起,每个数都是前三个数之和。

c语言练习题55题

c语言练习题55题

1.输入两个正整数,m和n,求其最大公约数和最小公倍数。

2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。

3.输入一个正整数求出它是几位数;输出原数和位数。

4.输入一个正整数,输出原数并逆序打印出各位数字。

5.从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入。

6.从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。

将结果输出。

7.求1!+2!+3!+……+20!,将结果输出。

8.求下列试子的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。

9..打印出100~999之间的所有水仙花数。

10..求Sn=a+aa+aaa+…+aa…a之值,n,a由键盘输入。

11.给出年、月、日,计算该日是该年的第几天。

12.求一个3*3的整型矩阵对角线元素之和。

将原矩阵和求出的和输出。

13.求一个4*3的矩阵各行元素的平均值;将原矩阵和求出的平均值全部输出。

14.求一个3*4的矩阵各列元素的平均值;将原矩阵和求出的平均值全部输出。

15.求一个3*5的矩阵各列元素的最大值,将原矩阵和求出的最大值全部输出16.求一个4*3的矩阵各行元素的最大值,将原矩阵和求出的最大值全部输出。

17..求一个M*N的矩阵中元素的最大值,将原矩阵和求出的最大值全部输出。

18.有一篇文章,有三行文字,每行有80个字符。

要求统计出其中英文大写字母、消协字母、数字、空格以及其他字符的个数。

19..将20个整数放到一维数组中,输出该数组的最大值和最小值。

20..将15个整数放到一维数组中,输出该数组中的最大值它的下标,然后将它和数组中的最前面的元素对换。

21..将字符数组str1种下标为偶数的元素赋给另一字符数组str2,并输出str1和str2。

22..编写一个程序,将两个字符串连接起来,不要使用strcat函数。

23..编写一个程序,将字符数组a中的全部字符复制到字符数组b中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c语言-经典常用-习题1.输入一个字符串,将其按给定的长度n格式化并输出,若n=0,则输出原字符串输入输入一个字符串输出格式化并输出样例输入asdfasdf3样例输出asdfasdf提示#include<stdio.h>#include<string.h>int main(){int n,m,i,j;char a[10000];gets(a);scanf("%d",&m);n=strlen(a);if(m==0)puts(a);else{for(i = 0; i < n; i += m){if(a[i] == '\0')return 0;for(j = 0; j < m; ++ j){if(a[i + j] == '\0'){printf("\n");return 0;}printf("%c", a[i + j]);}printf("\n");}}return 0;}2.题目描述输入一个长度不超过100 的字符串,删除串中的重复字符。

输入输入要检查的字符串,长度不超过100个字符。

例如:abacaeedabcdcd。

输出删除重复字符后的字符串。

例如:abced。

样例输入saas样例输出sa提示#include <stdio.h>int main(){char a[100];int i,j,m;scanf("%s",a);for(i=0;a[i]!=0;i++)for(j=i+1;a[j]!=0;j++)if(a[i]==a[j]){for(m=j;a[m]!=0;m++){a[m]=a[m+1];}j--;}puts(a);return 0;}3.请编写C程序,输入5个不同的且为字符格式的学生编号,将其先由大到小排序,再将最大的学生编号和最小的学生编号互换位置,然后输出此时5位学生的编号。

输入输入5位学生的编号(只含数字字符、英文字母或空格)。

输出输出按题意要求排序后的5位学生的编号。

样例输入good1tiger100horse2011mouse 02221century样例输出21centurymouse 022horse2011good1tiger100提示用gets()函数输入字符串。

#include<stdio.h>int main()char *temp,*p[5];char str[5][50];int i,j,c;for(i=0;i<5;i++) {gets(str[i]);p[i] = str[i];}for(i=0;i<5;i++) {for(j=4;j>=i+1;j--) {if((*p[j])>(*p[j-1])) {temp = p[j];p[j] = p[j-1];p[j-1] = temp;}}printf("%s\n",p[4]);for(i=1;i<4;i++){printf("%s\n",p[i]);}printf("%s\n",p[0]);}4.编程实现将字符串中最短的单词输出,在主函数中输入字符串,编写一个函数完成最短单词的查找,如果有多个相同长度单词,则只输出第一个最短单词。

假设单词之间用空格分隔(一个或多个空格),findshort(s1,s2)函数完成s1串是最短单词的查找,找到的最短单词存储于s2中。

输入一行字符串输出最短单词样例输入Happy new year样例输出new# include <stdio.h># include <string.h>int main(){int i,l;int min = 0, p, q;char str[10000];gets(str);for(i = 0; str[i] != '\0'; i ++){if(str[i] != ' '){q = i;l = 1;while(str[++ i] != ' ' && str[i] != '\0')++ l;if(min == 0 || min > l){min = l;p = q;}-- i;}}for(i = p; str[i] != ' ' && str[i] != '\0'; ++ i) printf("%c", str[i]);printf("\n");return 0;}5.输出任意的一个字符串内(字符串内可以包含空格)的所有整数。

输出时两整数间有四个空格。

输入输入一串字符输出输出所有的整数样例输入a00asd123e24样例输出0 123 24#include<stdio.h>int main(){int i;char a[100];gets(a);for(i=0;a[i];i++){if(a[i]>'0'&&a[i]<='9'){printf("%c", a[i]);while(a[++i]>='0'&&a[i]<='9')printf("%c",a[i]);printf(" ");}else if(a[i]=='0'){if(a[i+1]>='0'&&a[i+1]<='9')continue;else printf("0 ");}else continue;}printf("\n");return 0;}6.输入一字符串,对其按给定的条件进行排序,并输出。

排序条件为:将字符串从中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。

如果字符串长度为奇数,则最中间的字符不参与处理。

例如,输入dcbahgfe,则输出hgfeabcd;若输入432198765,则输出876591234。

输入输入一个字符串。

输出输出按题中条件排序后的字符串。

样例输入432198765样例输出876591234# include <stdio.h># include <stdlib.h># include <string.h>int main(){char *p,*q,ch;p = new char[100];gets(p);int i,j;int n=strlen(p);q = new char[n];if(n%2==0){for(i=0;i<n/2-1;i++){for(j=i+1;j<n/2;j++){if(p[i]>p[j]){ch=p[i];p[i] = p[j];p[j]=ch;}}}for(i=0;i<n/2;i++){ch = p[i];p[i] = p[i+n/2];p[i+n/2] = ch;}}else{for(i=0;i<n/2-1;i++){for(j=i+1;j<n/2;j++){if(p[i]>p[j]){ch=p[i];p[i] = p[j];p[j]=ch;}}}for(i=0;i<n/2;i++){ch = p[i];p[i] = p[i+n/2+1];p[i+n/2+1] = ch;}}printf("%s\n",p);return 0;}7.激动人心的时刻到了!我们开发的记账软件即将在欧美地区发布,但我希望能把本土化工作做得更好。

所谓的本土化可不仅仅是把软件界面语言翻译成英语,还要根据当地的习俗来调整软件的使用方法。

比如我国在书写数字时,习惯根据“万位”用逗号将数字分隔,10001000 写成1000,1000;而欧美国家使用“千位”来分隔,10001000 会写成10,001,000。

现在,请你帮我写一个程序:将那些按“万位”来分隔的数字转换成按“千位”来分隔,让欧美的用户使用更加方便。

输入输入有多行,每一行包含一个以万位分隔的数字。

输出对应每组输入,输出以千位分隔的数字。

样例输入12,3456,78901000,1000样例输出1,234,567,89010,001,000# include <stdio.h># include <string.h>int main(){int i,a,b,j;char P[100];char q[100];while (scanf("%s",P)==1){a= strlen(P);b = 0;j = 0;for( i = a-1; i >= 0; i--){if(P[i] != ','){q[j++] = P[i];b += 1;if(b == 3){q[j++] = ',';b = 0;}}}if(j%4==0)j-=1;for(i = j-1; i >= 0; i--){printf("%c",q[i]);}printf("\n");}}8.绝对素数是指本身是素数,其逆序数也是素数的数。

例如:10321与12301是绝对素数。

编写一个程序,求出所有m~n(m≥11,n≤1000)之间的绝对素数。

程序要求实现两个自定义函数,prime(n)用于判断一个整数n是否是素数,是则返回1,否则返回0;inv(n)用于对整数n 进行逆序,函数返回逆序后的整数。

主函数通过调用上述两个自定义函数实现绝对素数的判断和输出。

输入m n输出m~n之间的绝对素数,每个输出整数占5位,每行输出10个样例输入11 1000样例输出11 13 17 31 37 71 73 79 97 101107 113 131 149 151 157 167 179 181 191199 311 313 337 347 353 359 373 383 389701 709 727 733 739 743 751 757 761 769787 797 907 919 929 937 941 953 967 971983 991提示#include<stdio.h> int prime(int x) {int i;for(i=2;i<x;i++) {if(x%i==0)return 0;}return 1;}int inv (int x) {int i,t,p=0;while(x>0){i=0;t=x%10;x=x/10;p=p*10+t;}return p;}int main(){int num,n,m,i=0;scanf("%d%d",&m,&n);for(num=m;num<=n;num++){if((prime(num))&&(prime(inv(num)))) {i++;if(i%10==0)printf("%5d\n",num);elseprintf("%5d",num);}}putchar ('\n');}9.某大奖赛有n(1<n<40)个选手参赛,m (2<m<20)个评委为依次参赛的选手评判打分:最高10分,最低0分。

相关文档
最新文档