C++练习题
C语言练习
第一章填空题1.C语言是一种的程序设计语言。
2.C程序是由函数构成的,一个C源程序至少包含一个函数。
3.C程序的执行是从函数开始。
4.一个函数由和两部分组成。
5.函数体一般包括和。
6.C源文件取名,后缀一般为,编译源代码,生成目标文件,其后缀名一般为,对目标文件进行连接,生成可执行文件,其后缀名一般为。
7.一个C语言的语句至少应包含一个。
8.用对C程序中的任何部分作注释。
第三章填空题1.变量代表内存中具有特定属性的一个。
2.在C语言中,要求对所有用到的变量作强制定义,也就是“先,后”。
3.在定义变量的同时给变量一个值,称为。
4.#define PI 3.14 说明PI为。
5.C语言规定标识符只能由、和三种字符组成,且第一个字符必须为或。
6.在C语言中整数可用________进制数、________进制数、________进制数三种数制表示。
7.C语言中的实数又称,它有两种表示形式、。
8.在微机内存中,字符型数据以____________存储。
9.表达式 b=35/7*5-7%4*4 运算后 b= 。
10.已有变量a,其值伪2,则表达式(a=3*5),a+=2,a++ 的值为,a的值为。
选择题1.以下符合C语言语法的实型常量是()。
A 1.2E0.5B 3.14159EC 0.5E-3D E152.在C语言中运算对象必需是整型的运算符是()。
A %B /C *D !3.已有变量a,其值伪9,表达式a+=a-=a+a的值伪()。
A -9B -18C 9D 184.下列选项中,能用作标识符的是()。
A 2_int_B *1_2C int-2_D _123a5.在C语言提供的合法的关键字是()。
A swicthB cherC defaultD Case6.如定义变量 i=3,则表达式-i++的值和i的值分别为()。
A -3 4B -4 4C -3 3D -4 37.表达式(b=(2,3),b+=2 )%15+b 的值为( )。
c练习题(带答案)
一、选择题1.C++语言属于( C )。
A)自然语言B)机械语言C)面向对象语言D)汇编语言2.下面选项中不属于面向对象程序设计特点的是(C) 。
A)继承性B)多态性C)相似性D)封装性3.可用作C++语言用户标识符的一组标识符是( B )。
A)void define +WORD B)a3_b3 _123 YNC)for -abc Case D)2a DO sizeof4.假定一个二维数组的概念语句为“int a[3][4]={{3,4},{2,8,6}};”,那么元素a[2][1]的值为(A)。
A)0 B)4 C)8 D)65.以下情形中,哪一种情形可不能挪用拷贝构造函数( B )A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,挪用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回挪用者时6.以下哪一关键字可用于重载函数的区分(C)A)extern B)static C)const D)virtual7.以下有关数组的表达中,正确的选项是( B )A)C++中数组的存储方式为列优先存储B)数组名能够作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n终止D)数组指针的语法形式为:类型名*数组名[下标表达式];8.以下有关继承和派生的表达中,正确的选项是( C)A)派生类不能访问通过私有继承的基类的珍惜成员B)多继承的虚基类不能够实例化C)假设是基类没有默许构造函数,派生类就应当声明带形参的构造函数D)基类的析构函数和虚函数都不能够被继承,需要在派生类中从头实现9.实现运行时多态的机制是( A )A)虚函数B)重载函数C)静态函数D)模版函数10.如有下面的函数挪用:fun(a+b, 3, max(n-1, b));其中实参的个数是(A)A)3 B)4 C)5 D)611.以下关于this指针的说法正确的选项是(B)A)this指针存在于每一个函数当中B)在类的非静态函数中this指针指向挪用该函数的对象C)this指针是指向虚函数表的指针D)this指针是指向类的函数成员的指针12.在以下关于C++函数的表达中,正确的选项是(C)A)每一个函数至少要有一个参数B)每个函数都必须返回一个值C)函数在被挪用之前必需先声明D)函数不能自己调用自己13.以下运算符中,不能重载的是(C)A)&& B)!= C). D)->14.下面程序的输出结果是(B)#include <iostream>using namespace std;int i = 0;int fun(int n){static int a = 2;a++;return a+n;}void main(){int k = 5;{int i = 2;k += fun(i);}k += fun(i);cout << k;}A)13 B)14 C)15 D)1615.下面的程序段的运行结果为(D)char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果C)字符’b’的地址D)字符’b’16.下面程序的输出结果是( C )#include <iostream>using namespace std;class A{public:A (int i) { x = i; }void dispa () { cout << x << “,”; }private :int x ;};class B : public A{public:B(int i) : A(i+10) { x = i; }void dispb() { dispa(); cout << x << endl; } private :int x ;};void main(){B b(2);();}A)10,2 B)12,10 C)12,2 D)2,2 17.下面程序的输出结果是(C)#include <iostream>using namespace std;class Base{public:Base(int i) { cout << i; }~Base () { }};class Base1: virtual public Base{public:Base1(int i, int j=0) : Base(j) { cout << i; } ~Base1() {}};class Base2: virtual public Base{public:Base2(int i, int j=0) : Base(j) { cout << i; }~Base2() {}};class Derived : public Base2, public Base1{public:Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c),Base2(d), Base(a){ cout << b; }private:Base2 mem2;Base1 mem1;};void main() { Derived objD (1, 2, 3, 4); }A)134122 B)123412 C)D)14321218.下面程序的输出结果是(C)#include <iostream>using namespace std;class Base{public:virtual void f() { cout << “f0+”; }void g() { cout << “g0+”; }};class Derived : public Base{public:void f() { cout << “f+”; }void g() { cout << “g+”; }};void main() { Derived d; Base *p = &d; p->f(); p->g(); }A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+19.下面程序的输出结果是( C )#include <iostream>using namespace std;class Sample{friend long fun (Sample s){if < 2) return 1;return * fun(Sample);}public:Sample (long a) { x = a; }private:long x;};void main(){int sum = 0;for (int i=0; i<4; i++){sum += fun(Sample(i));}cout << sum;}A)12 B)16 C)10 D)3420.以下程序的输出结果是:(D)#include <iostream>using namespace std;int fun(char *s){ char *p=s;while (*p!='\0') p++;return (p-s);}void main(){cout<<fun("abc")<<endl;}A.0 B. 1 C. 2 D. 3 21.有如下程序段:int i=1;while(1){i++;if (i==10) break;if(i%2==0) cout<<’*’;}执行那个程序段输出字符*的个数是(C)A. 10B. 3C. 422.以下关于虚基类的描述中,错误的选项是(C)A. 使用虚基类可以消除由多继承产生的二义性B. 构造派生类对象时,虚基类的构造函数只被调用一次C. 声明class B:virtual public A 说明类B为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数23.有下类概念Class A {Char *a;Public:A():a(0){}A(char *aa) {new char[strlen(aa)+1] B. char[strlen(aa)+1]C. char[strlen(aa)]D. new char[sizeof(aa)-1]24.假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,那么访问x对象中数据成员a的格式为(X)。
c语言练习题
2-7:将一元钱分成一分,二分,五分币,共有多少种方法?
三、简单的判断问题
3-1:输入一个数n,判断该数是不是偶数,是偶数输出Y,不是偶数输出N
3-2:输入3-12之间的一个数,输出该月有几天。
四、累加问题与累乘问题
18.1乒乓球
这是一份乒乓球比赛的信息记录。
WWWLLLLWWLLWLWLLLLW
W代表你得一分,L代表对手得一分。
编写程序,由键盘输入比赛信息(WL字符串形式),输出当前的比分,你的分数在前,中间以冒号分隔。
例如,对于上面的信息记录,应当输出
8:11
18.2陶陶摘苹果
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。例如:对于输入100 200 150 140 129 134 167 198 200 111 110,应当输出5
**
****
******
********
**********
1-6:编写程序,输出以下图形。
*
***
*****
*******
*********
1-7:编写程序,输出以下图形。
*
***
*****
*******
*********
1-8:编写程序,输出以下图形。(教材130页6.14)
*
***
*****
C语言练习题
void main()
{ int s,k;
for(s=0,k=0;k<3;k++)
s+=a[k][k];
printf("%d#",s);
for(s=0,k=0;k<3;k++)
7. 设 char x =′a′;则printf(″x = ﹪c, y = ﹪c \ n″,x,97);的输出是( )
A. x = a,y = 97 B. x = 97,y = a
C. x = 97,y = 97 D. x = a,y = a
8、在Trubo-C中,C语言源程序文件的后缀是()。
A. if(a>b){if(c>d) x = 1;else x = 2;}
B. if(a>b){if(c>d) x = 1;} else x = 2;
C. if((a>b) && (c>d)) x = 1;else x = 2;
D. if(a< =b) x = 2;else if (c>d) x = 1;
15.若变量a,b,c已正确定义并赋值,符合C语言语法的表达式是( )。
A. ab/c; B. a/cb C. a?b D. a*b/c
16.为表示.“a和b都大于0”,应使用的C语言表达式是( )。
A.(a>0)&&(b>0) B.a&&b C.(a>0)||(b>0) D.(a>0)|(b>0)
{ *y=x++; }
(完整版)C语言程序设计练习题(含程序及参考答案)
(完整版)C语⾔程序设计练习题(含程序及参考答案)C语⾔练习题(所提供的源程序均采⽤⾃定义函数⽅式解决,如不采⽤函数⽅式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能⼀⼀验证,仅供参考使⽤)1、定义⼀个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三⾓形函数返回3,若能构成等腰三⾓形函数返回2,若能构成⼀般三⾓形函数返回1,若不能构成三⾓形函数返回0。
#includeint fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写⼀个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运⾏后 a 中的值为8,b中的值为3。
#includevoid fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输⼊3个数,将最⼤值放在变量a中,最⼩值放在变量c中。
c练习题(1)
1.下面是一个加法程序,程序运行时等待拥护从键盘输入两整数,然后求出它们的和并输出之。
观察运行结果(程序输出),上机验证该程序。
#include <stdio.h>void main(){int a,b,c;printf(“Please input a,b;”);scanf(“%d,%d”,&a,&b);c=a+b;printf(“%d+%d=%d\n”,a,b,c);}2.下面的程序用来求三个数的平均值,上机验证该程序。
main(){float a,b,c,average;printf(“Please input a b c:”);scanf(“%f%f%f”,&a,&b,&c);average=(a+b+c)/3;printf(“The average value is :%f\n”,average);}练习题C语言基本语法知识一、选择题(1)以下叙述中错误的是A)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头D)用户定义的标识符中,大、小写字母代表不同标识(2)以下叙述中错误的是A)C语句必须以分号结束B)复合语句在语法上被看作一条语句C)空语句出现在任何位置都不会影响程序运行D)赋值表达式末尾加分号就构成赋值语句(3)以下能正确定义且赋初值的语句是A)int n1=n2=10; B)char c=32;C)float f=f+1.1; D)double x=12.3E2.5;(4)设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是A)k=k>=kB)-k++C)k%int(f) D)k>=f>=m(5)有以下程序段int k=0,a=1,b=2,c=3; k=ac ? c:k;执行该程序段后,k的值是A)3 B)2 C)1 D)0(6)以下选项中可作为C语言合法常量的是A)-80.B)-080C)-8e1.0D)-80.0e(7).以下不能定义为用户标识符的是A)MainB)_0C)_intD)sizeof(8)以下选项中,不能作为合法常量的是A)1.234e04 B)1.234e0.4C)1.234e+4 D)1.234e09)有以下程序main(){int m=12,n=34;printf("%d%d",m++,++n); 12 35 m=13 printf("%d%d\n",n++,++m); 35 14}程序运行后的输出结果是A)12353514 B)12353513C)12343514 D)12343513(10)有以下程序main(){int m=3,n=4,x;x=-m++; x= 3 m =4x=x+8/++n; x= 3+8/4= 5printf("%d\n",x);}程序运行后的输出结果是A) 3 B) 5 C) -1 D) -2(11)以下符合C语言语法的实型常量是A) 1.2E0.5B) 3.14.159EC) .5E-3D) E15(12) 若以下选项中的变量已正确定义,则正确的赋值语句是A) x1=26.8%3B) 1+2=x2C) x3=0x12D) x4=1+2=3;(13) 设有以下定义int a=0;double b=1.25;char c=‟A‟;#define d 2则下面语句中错误的是A) a++; B) b++ C) c++; D) d++;实验二整型、浮点型、字符型数据使用1.编程序,输出如下图形:*********************#include <stdio.h>int main(){int i;int j;for(i=1;i<=5;i++){for(j = 1;j<=i;j++){printf("*");}printf("\n");}}2.编写程序,实现下面的输出格式和结果:a= 5,b= 7,a-b=-2,a/b= 71%c1=COMPUTER,c2=COMP ,c3= COMPx=31.19,y= -31.2,z=31.1900s=3.11900e+001,t= -3.12e+001#include <stdio.h>int main(){int a = 5;int b = 7;printf("%d\n",a-b);printf("%2.0f%%\n",(float)a/b*100);char c1[] = "COMPUTER",c2[]="COMP",c3[]="COMP";printf("%s %s %s\n",c1,c2,c3);float x = 31.19,y=-31.2,z=31.1900;printf("%5.2f %4.1f %7.4f",x,y,z);}3.编写程序,输入变量x值,输出变量y的值,并分析输出结果。
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.intt5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的-,选项B中[与]不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3a某B)某C)caeD)-e2E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的-不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%某B)a+bC)a123D)123选项A中的%,选项B中+不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print_3ddb8aBcB、I\\amone_halftart$it3paiC、tr_1CpppowwhileD、P某qMy->bookline#Hi.age选项B中的\\,$,选项D中>,#,.,-不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
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语言基础练习题(含答案)
第一章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语言入门练习题一、基础知识篇1.1 变量与常量1. 定义一个整型变量并赋值为10。
2. 声明一个浮点型常量,其值为3.14。
3. 将字符型变量 'A' 赋值给另一个字符型变量。
1.2 数据类型1. 将一个整型变量转换为浮点型变量。
2. 将一个长整型变量赋值给一个短整型变量。
3. 编写一个程序,输出不同数据类型所占的字节数。
1.3 运算符1. 计算5加3乘2的结果。
2. 判断两个整型变量是否相等。
3. 使用自增运算符使变量i的值增加1。
二、控制结构篇2.1 顺序结构1. 编写一个程序,输出1到10的整数。
2. 输出用户输入的两个整数中的较大值。
3. 计算并输出圆的面积(给定半径)。
2.2 选择结构1. 判断一个整数是正数、负数还是零。
2. 根据用户输入的成绩,输出对应的等级(A、B、C、D、E)。
3. 编写一个程序,实现石头剪刀布的游戏。
2.3 循环结构1. 计算1到100所有整数的和。
2. 输出所有的水仙花数(一个三位数,其各位数字的立方和等于该数本身)。
3. 使用循环结构输出九九乘法表。
三、函数篇3.1 函数定义与调用1. 编写一个函数,计算两个整数的和。
2. 定义一个函数,实现字符串的复制。
3. 创建一个函数,判断一个数是否为素数。
3.2 递归函数1. 使用递归函数计算斐波那契数列的第n项。
2. 编写一个递归函数,实现字符串的逆序输出。
3. 利用递归函数求解汉诺塔问题。
四、数组篇4.1 一维数组1. 初始化一个包含10个整数的数组,并输出其元素。
2. 计算一维数组中所有元素的和。
3. 找出一维数组中的最大值和最小值。
4.2 二维数组1. 创建一个3行4列的二维数组,并输出其元素。
2. 计算二维数组对角线元素的和。
3. 实现矩阵的转置。
五、指针篇5.1 指针基本操作1. 声明一个整型变量和一个指向该变量的指针,并输出指针所指向的值。
2. 使用指针实现两个整数的交换。
3. 编写一个函数,通过指针参数修改传入的字符串。
C练习题(有答案)
1循环控制:2数组:3函数4宏定义5指针6文件1循环控制:(一)选择题1.设有程序段int k=10;while(k=0)k=k-1;这下面描述中正确的是_________.a)while循环执行10次 b)循环是无限循环c)循环体语句一次也不执行 d)循环体语句执行一次2.语句while(!E);中的表达式!E等价于________. a)E==0 b)E!=1 c)E!=0 d)E==1 3.下面程序段的运行结果是__________.int n=0;while(n++<=2);printf("%d",n);a)2 b)3 c)4 d)有语法错4.下面程序的运行结果是____.#include<stdio.h>main(){int num=0;while(num<=2){num++;printf("%d\n",num); } }a)1 b)1 c)1 d)12 2 23 345.以下程序段________.x=-1;do{x=x*x;}while(!x);a)是死循环 b)循环执行二次c)循环执行一次 d)有语法错误6.若有如下语句int x=3;do{printf(""%d\n",x-=2);}while(!(--x));则上面程序段______.a)输出的是1 b)输出的是1和-2 c)输出的是3和0 d)是死循环7.下面程序的运行结果是______.#include<stdio.h>main(){int y=10;do{y--;}while(--y);printf("%d\n",y--);}a)-1 b)1 c)8 d)08.若i为整型变量,则以下循环执行次数是_____.for(i=2;i==0;)printf("%d",i--);a)无限次b)0次 c)1次 d)2次9.执行语句for(i=1;i++<4; );后变量i的值是______.a)3 b)4 c)5 d)不定10.以下正确的描述是_______.a)continue语句的作用是结束整个循环的执行b)只能在循环体内和switch语句体内使用break语句c)在循环体内使用break语句或continue语句的作用相同d)从多层循环嵌套中退出时,只能使用goto语句(二)填空题1.下面程序段是从键盘输入的字符中统计字符的个数,用换行符结束循环。
(完整版)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.Void C._3com_ D.int9.一个C程序是由()。
C练习题库及答案
C选择题部分〔共200题〕1、下面程序的输出是___D______#include<stdio.h>void main(){ int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b2、在以下选项中,不正确的赋值语句是__D______.A) ++t; B) n1=(n2=(n3=0));C) k=i=j; D) a=b+c=1;3、下面合法的C语言字符常量是______A____.A) '\t' B) "A" C) 65 D) A4、表达式: 10!=9的值是________D____.A) true B) 非零值C) 0 D) 15、C语言提供的合法的数据类型关键字是_____B____.A) Double B) short C) integer D) Char6、字符(char)型数据在微机内存中的存储形式是__D__.A) 反码B) 补码C) EBCDIC码D) ASCII码7、C语言程序的基本单位是_____C______.A) 程序行B) 语句C) 函数D) 字符8、设int a=12,则执行完语句a+=a-=a*a后,a的值是____D____A) 552 B) 264 C) 144 D) -2649、执行下面程序中的输出语句后,输出结果是____B__.#include<stdio.h>void main(){int a;printf("%d\n",(a=3*5,a*4,a+5));}A) 65 B) 20 C) 15 D) 1010、下面程序的输出是____B______.#include<stdio.h>void main(){int x=023;printf("%d\n",--x);}A) 17 B) 18 C) 23 D) 2411、下面程序的输出的是_____C____.#include<stdio.h>void main(){int x=10,y=3;printf("%d\n",y=x/y);}A) 0 B) 1 C) 3 D) 不确定的值12、已知字母A的ASCII码为十进制的65,下面程序的输出是______A_____.#include<stdio.h>void main(){char ch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}A) 67,D B) B,C C) C,D D) 不确定的值13、假设要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a14、以下程序的输出结果是____D_____.#include<stdio.h>void main(){ int x=10,y=10;printf("%d %d\n",x--,--y);}A) 10 10 B) 9 9 C) 9 10 D) 10 915、设有如下定义:int x=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是_____D_____.A) 1 B) 0 C) 4 D) 316、为表示关系x≥y≥z,应使用C语言表达式___A___.A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z) C) (x>=y>=z) D) (x>=y) & (y>=z)17、C语言中非空的基本数据类型包括____B____.A) 整型,实型,逻辑型B) 整型,实型,字符型C) 整型,字符型,逻辑型D) 整型,实型,逻辑型,字符型18、假设x和y都是int型变量,x=100,y=200,且有下面的程序片段:printf("%d",(x,y));上面程序片段的输出结果是____A___.A) 200 B) 100C) 100 200 D) 输出格式符不够,输出不确定的值19、阅读下面的程序#include<stdio.h>void main(){char ch;scanf("%3c",&ch);printf("%c",ch);}如果从键盘上输入abc<回车>则程序的运行结果是__A_____.A) a B) b C) c D) 程序语法出错20、阅读下面的程序#include<stdio.h>void main(){int i,j;i=010;j=9;printf("%d,%d",i-j,i+j);}则程序的运行结果是____D____.A) 1,19 B) -1,19 C) 1,17 D) -1,1721、阅读下面的程序#include<stdio.h>void main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d",i,j,m,n);}程序的运行结果是______C____. A) 8,10,8,10 B) 9,11,8,10C) 9,11,9,10 D) 9,10,9,1122、已知a=12,则表达式a+=a-=a*=a的结果是_____A__.A) 0 B) 144 C) 12 D) -26423、假设已定义int a,则表达式a=10,a+10,a++的值是__B_.A) 20 B) 10 C) 21 D) 1124、阅读下面的程序#include<stdio.h>void main(){int i,j;scanf("%3d%2d",&i,&j);printf("i=%d,j=%d\n",i,j);}如果从键盘上输入1234567<回车>,则程序的运行结果是____D____.A) i=123,j=4567 B) i=1234,j=567C) i=1,j=2 D) i=123,j=4525、下面程序的输出结果是____D____.#include<stdio.h>void main(){int a=-1, b=4, k;k=(++a<=0)&&(b--<=0);printf("%d,%d,%d\n",k,a,b);}A) 1,1,2 B) 1,0,3 C) 0,1,2 D) 0,0,326、下面程序的输出结果是____A____.#include<stdio.h>void main(){int a=5,b=3;float x=3.14, y=6.5;printf("%d,%d\n",a+b!=a-b,x<=(y-=6.1));}A) 1,0 B) 0,1 C) 1,1 D) 0,027、执行下面程序段后,输出结果是____A____.int a;int b=65536;a=b;printf("%d\n",a);A) 65536 B) 0 C) -1 D) 128、假设有以下定义和语句:int a=010, b=0x10, c=10;printf("%d,%d,%d\n",a,b,c);则输出结果是____B_____.A) 10,10,10 B) 8,16,10 C) 8,10,10 D) 8,8,1029、已知有double型变量x=2.5,y=4.7,整型变量a=7, 则表达式x+a%3*(int)(x+y)%2/4 的值是_____B____.A) 2.4 B) 2.5 C) 2.75 D) 030、假设已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是____C____.A) 5.5 B) 5 C) 3 D) 4.031、以下程序的输出结果是____D____.#include<stdio.h>void main(){int a=12, b=12;printf("%d,%d\n",--a,++b);}A) 10,10 B) 12,12 C) 11,10 D) 11,1332、设有以下语句:int x=10;x+=3+x%(3),则x的值是.____A_____A) 14 B) 15 C) 11 D) 1233、假设d为double型变量,则表达式d=1,d+5,d++的值是_____D__.A) 1 B) 6.0 C) 2.0 D) 1.034、表达式5!=3的值是____D____.A) T B) 非零值C) 0 D) 135、假设有定义int a=12,n=5,则表达式a%=(n%2)运算后,a的值______A____.A) 0 B) 1 C) 12 D) 636、假设有定义int x=3,y=2和float a=2.5,b=3.5,则表达式:(x+y)%2+(int)a/(int)b的值是__D__.A) 0 B) 2 C) 1.5 D) 137、在C语言中,以下表达不正确的选项是_____A____.A) 在C程序中,无论是整数还是实数,都能被准确无误的表示B) 在C程序中,变量名代表存储器中的一个位置C) 静态变量的生存期与整个程序的生存期相同D) C语言中变量必须先定义后引用38、C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符____C____.A) 必须为字母B) 必须为下划线C) 必须为字母或下划线D) 可以是字母,数字或下划线中的任意一种39、设有说明:char w; int x; float y; double z; 则表达式: w*x+z-y值的数据类型是___D____.A) float B) char C) int D) double40、一个C语言的执行是从_____A______.A) 本程序的主函数开始,到本程序的主函数结束B) 本程序的第一个函数开始,到本程序的最后一个函数结束C) 本程序的主函数开始,到本程序的最后一个函数结束D) 本程序的第一个函数开始,到本程序的主函数结束41、设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是____A____.A) 10<a<15 B) a==11||a==12||a==13||a==14 C) a>10&&a<15 D) !(a<=10)&&!(a>=15)42、以下程序执行后的输出结果是_____C____.#include <stdio.h>void main( ){ int a=5,b=60,c;if (a<b){c=a*b;printf("%d*%d=%d\n",b,a,c);}else{c=b/a;printf("%d/%d=%d\n",b,a,c);}}A) 60/5=12 B) 300 C) 60*5=300 D) 1243、如果c为字符型变量,判断c是否为空格不能使用____A____.(假设已知空格ASCII码为32)A) if(c=='32') B) if(c==32)C) if(c=='\40') D) if(c==' ')44、运行下面程序时,假设从键盘输入"3,5<CR>",则程序的输出结果是____D____.#include <stdio.h>void main( ){int x,y;scanf("%d,%d",&x,&y);if (x==y)printf("x==y");else if (x>y)printf("x>y");elseprintf("x<y");}A) 3<5 B) 5>3 C) x>y D) x<y45、运行下面程序时,假设从键盘输入数据为"6,5,7<CR>",则输出结果是____C___.#include <stdio.h>void main( ){ int a,b,c;scanf("%d,%d,%d",&a,&b,&c);if (a>b)if (a>c)printf("%d\n",a);elseprintf("%d\n",c);elseif (b>c)printf("%d\n",b);elseprintf("%d\n",c);}A) 5 B) 6 C) 7 D) 不定值46、执行下面程序时,假设从键盘输入"2<CR>",则程序的运行结果是____A____.#include <stdio.h>void main( ){ int k; char cp;cp=getchar( );if (cp>='0' && cp<='9')k=cp-'0';else if (cp>='a' && cp<='f')k=cp-'a'+10;else k=cp-'A'+10;printf("%d\n",k);}A) 2 B) 4 C) 1 D) 1047、运行下面程序时,从键盘输入"2.0<CR>",则输出结果是___B_____.#include <stdio.h>void main( ){ float a,b;scanf("%f",&a);if (a<0.0) b=0.0;else if ((a<0.5) && (a!=2.0)) b=1.0/(a+2.0);else if (a<10.0) b=1.0/2;else b=10.0;printf("%f\n",b);}A) 0.000000 B) 0.500000C) 1.000000 D) 0.25000048、执行下面程序后,运行结果是____A____.#include <stdio.h>void main( ){ int x=41,y=1;if (x%3==0 && x%7==0){ y+=x;printf("y=%d\n",y);}else{y=x;printf("y=%d",y);}}A) y=41 B) y=43 C) y=42 D) y=149、运行下面程序时,从键盘输入"12,34,9<CR>",则输出结果是___A___.#include <stdio.h>void main( ){ int x,y,z;scanf("%d,%d,%d",&x,&y,&z);if (x<y)if (y<z)printf("%d\n",z);else printf("%d\n",y);else if (x<z)printf("%d\n",z);else printf("%d\n",x);}A) 34 B) 12 C) 9 D) 不确定的值50、运行下面程序时,从键盘输入字母H,则输出结果是_____C___.#include <stdio.h>void main( ){ char ch;ch=getchar( );switch(ch){ case 'H':printf("Hello!\n");case 'G':printf("Good morning!\n");default:printf("Bye_Bye!\n");}}A) Hello! B) Hello!Good Morning!C) Hello! D) Hello!Good morning! Bye_Bye!Bye_Bye!51、执行以下程序段后的输出结果是_____A____.int x=1,y=1,z=1;x+=y+=z;printf("%d\n",x<y?y:x);A) 3 B) 2 C) 1 D) 452、设ch是char型变量,值为'A',则表达式ch=(ch>='A' && ch<='Z')?ch+32:ch的值是__B___.A) Z B) a C) z D) A53、下面程序的输出结果是____C____.#include <stdio.h>void main( ){ int x=8,y=-7,z=9;if (x<y)if (y<0) z=0;else z-=1;printf("%d\n",z);}A) 8 B) 1 C) 9 D) 054、运行下面程序时,假设从键盘输入"5 <CR>",则程序的输出结果是_____B___.#include <stdio.h>void main( ){ int a ;scanf("%d",&a);if (a++>5)printf("%d\n",a);else printf("%d\n",a--) ;}A) 7 B) 6 C) 5 D) 455、运行下面程序时,假设从键盘输入"3,4 <CR>",则程序的输出结果是____B___.#include <stdio.h>void main( ){ int a,b,s;scanf("%d,%d",&a,&b);s=a;if (s<b) s=b;s=s*s;printf("%d\n",s) ;}A) 14 B) 16 C) 18 D) 20 56、以下程序的执行结果是_____D____.#include <stdio.h>void main( ){ int x=0,y=1,z=0;if (x=z=y)x=3;printf("%d,%d\n",x,z);}A) 3,0 B) 0,0 C) 0,1 D) 3,157、假定等级和分数有以下对应关系:等级:A 分数:85~100等级:B 分数:60~84等级:C 分数:60 以下对于等级grade输出相应的分数区间,能够完成该功能的程序段是____D____.A) switch (grade){case 'A':printf("85--100\n");case 'B':printf("60--84\n");case 'C':printf("60以下\n");default:printf("等级错误!\n");}B) switch (grade){case 'A':printf("85--100\n");break;case 'B':printf("60--84\n");case 'C':printf("60以下\n");default:printf(" 等级错误!\n");}C) switch (grade){case 'A':printf("85--100\n");break;case 'B':printf("60--84\n");break;case 'C':printf("60以下\n");default:printf("等级错误!\n");}D) switch (grade){case 'A':printf("85--100\n");break;case 'B':printf("60--84\n");break;case 'C':printf("60以下\n");break;default:printf("等级错误!\n");}58、能够完成如下函数计算的程序段是__B____.┌-1 x<0y= ┤0 x=0└ 1 x>0A) y=1; B) if (x>=0)if(x!=0) if(x>0) y=1;if(x>0) y=1; else y=0;else y=0; else y=-1;C) y=0; D) y=-1;if (x>=0) if (x>0) y=1;if (x>0) y=1; else y=0;else y=-1;59、有如下程序#include <stdio.h>void main( ){ float x=5.0,y;if(x<0.0) y=0.0;else if (x<10.0) y=1.0/x;else y=1.0;printf("%f\n",y);}该程序的输出结果是____C_____.A) 0.000000 B) 0.50000C) 0.200000 D) 1.00000060、以下程序的执行结果是___B_____.#include <stdio.h>void main( ){ int x=1,y=0;switch (x){case 1:switch (y){case 0:printf("first\n");break;case 1:printf("second\n");break;}case 2:printf("third\n");}}A) first B) firstsecond thirdC) first D) secondthird61、以下程序的执行结果是____A____.#include <stdio.h>void main( ){ int a,b,c,d,x;a=c=0;b=1;d=20;if (a) d=d-10;else if(!b)if (!c) x=15;else x=25;printf("d=%d\n",d);}A) d=20 B) d=10 C) d=15 D) 2562、有如下程序:#include <stdio.h>void main( ){ int a=2,b=-1,c=2;if (a<b)if (b<0) c=0;else c++;printf("%d\n",c);}该程序的输出结果是___C_____.A) 0 B) 1 C) 2 D) 363、以下程序执行后的输出结果是____B____.#include <stdio.h>void main( ){ int x,y=1,z;if ((z=y)<0) x=4;else if (y==0) x=5;else x=6;printf("%d,%d\n",x,y);}A) 4,1 B) 6,1 C) 5,0 D) 出错信息64、有如下程序#include <stdio.h>void main( ){ int x=1,a=0,b=0;switch(x){case 0: b++;case 1: a++;case 2: a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是______A____.A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=265、下面程序的输出结果是____C_____.#include <stdio.h>void main( ){ int a=-1,b=1,k;if ((++a<0) && (b--<=0))printf("%d %d\n",a,b);elseprintf("%d %d\n",b,a);}A) -1 1 B) 0 1 C) 1 0 D) 0 066、假定w、x、y、z、m均为int型变量,有如下程序段:w=1;x=2;y=3;z=4;m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;则该程序段执行后,m的值是____D_____.A) 4 B) 3 C) 2 D) 167、以下程序的输出结果是___D______.main( ){ int a=100;if (a>100) printf("%d\n",a>100);else printf("%d\n",a<=100);}A) a<=100 B) 100 C) 0 D) 168、假设执行下面的程序从键盘上输入9,则输出结果是.______B________#include <stdio.h>void main( ){int n;scanf("%d",&n);if (n++<10) printf("%d\n",n);else printf("%d\n",n--);}A) 11 B) 10 C) 9 D) 869、以下程序输出结果是_____D_____.#include <stdio.h>void main( ){ int m=4;if (++m>5) printf("%d\n",m--);else printf("%d\n",--m);}A) 7 B) 6 C) 5 D) 470、假设执行下面的程序从键盘上输入5,则输出结果是.#include <stdio.h>void main( ){int x;scanf("%d",&x);if (x++>5) printf("%d\n",x);else printf("%d\n",x--);}A) 7 B) 6 C) 5 D) 471、以下程序段运行结果是____A____.int x=1,y=1,z=-1;x+=y+=z;printf("%d\n",x<y?y:x);A) 1 B) 2 C) 4 D) 不确定的值72、有以下程序#include <stdio.h>void main( ){ int a,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}输出结果是____A____.A) 2,1 B) 3,2 C) 4,3 D) 2,-173、运行下面程序时,假设从键盘输入数据为"123",则输出结果是___C____.#include "stdio.h"void main(){ int num,i,j,k,place;scanf("%d",&num);if (num>99)place=3;else if(num>9)place=2;elseplace=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch (place){ case 3: printf("%d%d%d\n",k,j,i);break;case 2: printf("%d%d\n",k,j);break;case 1: printf("%d\n",k);}}A) 123 B) 1,2,3 C) 321 D) 3,2,174、执行以下程序后的输出结果是___D____.#include <stdio.h>void main( ){ int k=4,a=3,b=2,c=1;printf("%d\n",k<a?k:c<b?c:a);}A) 4 B) 3 C) 2 D) 175、以下条件表达式中能完全等价于条件表达式x的是____B___.A) (x==0) B) (x!=0) C) (x==1) D) (x!=1)76、假设运行下面程序时,给变量a输入15,则输出结果是___A___.#include <stdio.h>void main( ){ int a,b;scanf("%d",&a);b=a>15?a+10:a-10;printf("%d\n",b) ;}A) 5 B) 25 C) 15 D) 1077、运行下面程序后,输出是___D___.#include <stdio.h>void main( ){ int k=-3;if (k<=0) printf("****\n");else printf("####\n")}A) ####B) ****C) ####****D) 有语法错误不能通过编译78、执行下面程序的输出结果是____C____.#include <stdio.h>void main( ){ int a=5,b=0,c=0;if (a=a+b) printf("****\n");else printf("####\n");}A) 有语法错误不能编译B) 能通过编译,但不能通过连接C) 输出****D) 输出####79、为了防止嵌套的if-else语句的二义性,C语言规定else总是与___C___组成配对关系. A) 缩排位置相同的ifB) 在其之前未配对的ifC) 在其之前尚未配对的最近的ifD) 同一行上的if80、设x 、y 、z 、t均为int型变量,则执行以下语句后,t的值为____C_____.x=y=z=1;t=++x || ++y && ++z;A) 不定值B) 4 C) 1 D) 081、以下程序段____C______.x=-1;do{x=x*x;} while (!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误82、对下面程序段描述正确的选项是___B____.int x=0,s=0;while (!x!=0) s+=++x;printf("%d",s);A) 运行程序段后输出0B) 运行程序段后输出1C) 程序段中的控制表达式是非法的D) 程序段循环无数次83、下面程序段的输出结果是____C____.x=3;do { y=x--;if (!y) {printf("*");continue;}printf("#");} while(x=2);A) ## B) ##* C) 死循环D)输出错误信息84、下面程序的运行结果是____B____.#include<stdio.h>void main( ){ int a=1,b=10;do{ b-=a;a++;} while(b--<0);printf("%d,%d\n",a,b);}A) 3,11 B) 2,8 C) 1,-1 D) 4,985、下面程序段的运行结果是____B______.int n=0;while (n++<=2)printf("%d",n);A) 012 B) 123 C) 234 D) 错误信息86、下面程序段的运行结果是___D_____.int x=0,y=0;while (x<15) y++,x+=++y;printf("%d,%d",y,x);A) 20,7 B) 6,12 C) 20,8 D)8,2087、下面程序的运行结果是___B_____.#include<stdio.h>void main(){ int s=0,i=1;while (s<=10){ s=s+i*i;i++;}printf("%d",--i);}A) 4 B) 3 C) 5 D) 688、函数pi的功能是根据以下近似公式求π值:____C______(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)请填空,完成求π的功能。
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编程练习题C语言是一种广泛使用的计算机编程语言,以其高效性和灵活性而闻名。
为了帮助学习者更好地掌握C语言,以下是一些C编程练习题,它们覆盖了基础到中级的知识点。
# 基础练习题1. 数据类型转换编写一个程序,输入一个整数和一个浮点数,然后输出它们转换为字符型后的ASCII值。
2. 算术运算编写一个程序,接受两个整数作为输入,并计算它们的和、差、积、商以及余数。
3. 条件语句编写一个程序,根据用户输入的成绩(0-100),输出相应的等级(A-F)。
4. 循环结构使用for循环打印从1到100的所有整数,并找出3和5的公倍数。
5. 数组操作编写一个程序,接受用户输入的5个整数,存储到数组中,并找出最大值和最小值。
# 中级练习题1. 字符串处理编写一个程序,接受用户输入的字符串,然后反转该字符串并输出。
2. 函数定义与调用定义一个函数,计算两个数的最大公约数,并在主函数中调用它。
3. 指针应用编写一个程序,使用指针交换两个变量的值,并输出交换后的结果。
4. 结构体使用定义一个结构体来存储学生的信息(如学号、姓名、成绩),然后编写一个程序来输入和输出这些信息。
5. 文件操作编写一个程序,能够读取一个文本文件中的内容,并计算其中单词的数量。
# 进阶练习题1. 递归函数编写一个递归函数来计算阶乘,并在主函数中调用它。
2. 动态内存分配使用malloc或calloc动态分配内存,并编写一个程序来复制一个数组的内容到另一个数组。
3. 链表操作实现一个简单的链表,并提供插入、删除和遍历链表的函数。
4. 排序算法实现冒泡排序、选择排序或插入排序算法,并编写一个程序来对用户输入的一系列数字进行排序。
5. 二叉树遍历定义一个二叉树的结构,并实现前序、中序和后序遍历。
# 实践项目1. 简单计算器实现一个基本的计算器,能够进行加、减、乘、除等基本运算。
2. 图书管理系统设计一个简单的图书管理系统,能够添加、删除、查找和列出图书。
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语言练习题及答案综合强化练习一一、选择题(每题1分,共40分)1、以下叙述正确的是( )A)C语言总是从第一个定义的函数开始执行B)在C程序中,要调用的函数必须在main函数中定义C)C程序的执行总是从main函数开始执行的D)C程序中的main函数必须放在程序的开始部分2、下列合法的用户标识符为( )A)_4sum B) static C) 1max D) #dtotal3、ch为字符型变量,则下面赋值语句正确的为( )。
A)ch="ABC" B) ch="A" C) ch= a D) ch=674、C语言中整形常量有哪几种形式( )A) 十进制、八进制、十六进制B) 二进制、十进制、八进制、十六进制C) 二进制、八进制、十六进制D) 二进制、十进制5、字符串" China "在内存中占用的字节数是( )A) 1 B) 2 C) 5 D) 66、int x,y; x=7/2;y=7/2.0;则x的值为( )A) 3.500000 3 B) 3 3.500000C) 3.500000 3.500000 D)3 37、下面程序int x=0x2B; printf("%d",x);的输出结果为( )A) 2B B) 0x2B C) 43 D) 448、实型常量用指数形式表示,下列哪一项不是合法的( )A) 3.65e3 B)0.356E3 C)356e3 D)3.56e3.09、设有语句int a=3;则执行了语句a-= a+=a*a;后变量a的值是( )A)0 B)3 C) -9 D) -310、下列字符中,错误的转义字符是( )A)'\085' B) '\\' C) '\0' D) '\n '11、下面程序的输出结果是( )int a=2;if(a=5) a=a+2;printf("%d ",a);A) 2 B) 4 C) 5 D)712、下列程序段的循环次数是( )int k=0;while(k= =0) printf("%d",k);k--; printf ("\n");A) 无限次B) 0 次C) 1次D)2次13、下列说法正确的是( )A) 在循环体中可以用break语句结束本次循环B) 在循环体中可以用continue语句结束本次循环C) break语句仅能使用在switch结构中D) 可以使用continue语句跳出switch结构14、以下正确的函数形式是()。
C语言基础练习100题含标准答案
C语言基础练习100题含标准答案1. 编写一个C语言程序,要求输出"Hello, World!"#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}2. 编写一个C语言程序,要求输出两个整数的和。
#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("两个整数的和为:%d\n", sum);return 0;}3. 编写一个C语言程序,要求输出一个整数的平方。
#include <stdio.h>int main() {int num, square;printf("请输入一个整数:");scanf("%d", &num);square = num * num;printf("该整数的平方为:%d\n", square);return 0;}4. 编写一个C语言程序,要求输出1到10的所有整数。
#include <stdio.h>int main() {int i;for (i = 1; i <= 10; i++) {printf("%d ", i);}printf("\n");return 0;}5. 编写一个C语言程序,要求输出1到10的所有整数的和。
#include <stdio.h>int main() {int i, sum = 0;for (i = 1; i <= 10; i++) {sum += i;}printf("1到10的所有整数的和为:%d\n", sum);return 0;}6. 编写一个C语言程序,要求输入一个字符串并输出该字符串。
(完整版)C语言各章练习题
目录第一章程序设计和C语言 (2)第二章最简单的C程序设计 (2)第三章选择结构程序设计 (4)第四章循环结构程序设计 (7)第五章数组 (11)第六章函数 (14)第七章指针 (18)第一章程序设计和C语言一、选择题:1.一个C程序的执行是从( )A、本程序的main函数开始,到main函数结束B、本文件第一个函数开始,到本文件的最后一个函数结束C、本程序的main函数开始,到本文件的最后一个函数结束D、本文件的第一个函数开始,到本文件的main结束2.以下说法不正确的是()A、一个C源程序可由一个或多个函数组成B、一个C程序必须包含一个main函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面3.C语言规定:在一个源程序中,main函数的位置()A、必须在开始B、必须在系统调用的库函数的位置C、可以任意D、必须在最后4.源程序program.c经编译产生的目标文件和连接后产生的可执行文件是( )A、program.bak和program.objB、program.obj和program.exeC、program.exl和program.cD、program.bak和prgram.exe第二章最简单的C程序设计一、选择题1.是合法的用户自定义标识符的( )A、ah-spksB、doubleC、<ctrl>D、_myapple2.以下正确的C语言标识符是()A、%xB、a+bC、a123D、test!3.以下不能定义为用户标识符的是( )A、V oidB、b_2C、intD、name4.以下选项中可作为C语言合法整数的是( )A、11010(B)B、0583C、x2b2D、0xafb5.VC++6.0中的短整型数值在计算机中占用的字节个数是( )A、1B、2C、3D、46.设short int型的数据长度为2个字节,则unsigned short 类型数据的取值范围是()P34A、均为2个字节B、0至65535C、-3276至32767D、-256至255 7.以下选项中可作为C语言合法常量的是()(指数E或e前必须有数字,后面必须有整数)A、-80.0B、-080C、-8e1.2D、-80.0e8.在VC++6.0编译环境下,下列式中,值不为4的表达式是()P34,double为8字节A、sizeof(unsigned long)B、sizeof(long)C、sizeof(unsigned int)D、sizeof(double)9.设有说明语句:char a=’\123’;则变量a( )一个ascii字符A、包含1个字符B、包含2个字符C、3个字符D、说明不合法10.设x为一数字字符,则其所对应的十进制数值为()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1[简答题]学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。
注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。
试题程序:参考解析:【参考答案】【考点分析】本题考查:结构体数组操作;用循环判断结构查找数组中的最大值。
【解题思路】该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值;第2个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入b中。
【解题宝典】’对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。
如何对结构体数组进行类似操作呢?掌握以下语句:2[单选题] 下列定义数组的语句中,正确的是( )。
参考答案:A参考解析:数组说明的一般形式为:类型说明符数组名[常量表达式]。
B选项中N是变量,不能用变量定义数组长度。
c选项中数组长度是非法的一串数字。
定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。
3[单选题] 若有以下程序段则以下选项中值为6的表达式是A.P->nB.(*p).nC.p->n++D.++(P->n)参考答案:D参考解析:本题考查结构体变量的引用,其中a为定义的结构体数组,D选项中P->n为5,++(P->11)为6,所以D选项正确。
4[单选题] 有以下程序程序运行后的输出结果是A.4B.8C.9D.6参考答案:B参考解析:本题考查宏定义,宏定义只是做个简单的替换,执行NUM=(N+l+1)*N+1/2=8,选项B正确。
5[单选题] 有以下程序程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是A.a.aB.*P.aC.P->aD.(*p).a参考答案:B参考解析:本题考查结构体变量的引用,题目中要求输出结构体中成员a的数据,P为指针,* P为结构体变量,那么*P.a可以表示为结构体中成员a的数据。
6[单选题] 若有定义语句:double a,*P=&a;以下叙述中错误的是( )。
A.定义语句中的*号是-个间址运算符B.定义语句中的木号是-个说明符C.定义语句中的P只能存放double类型变量的地址D.定义语句中,P=&a把变量a的地址作为初值赋给指针变量P参考答案:A参考解析:在变量定义double a,*P:&a;中,}号是一个指针运算符,而非间址运算符,所以A错误。
7[单选题] 设有以下程序段:以下叙述正确的是( )。
A.只有变量c的定义是合法的B.只有变量a,b,c的定义是完全合法的C.所有变量的定义都是完全合法的D.只有变量a,b的定义是完全合法的参考答案:D参考解析:float“8]={1.0,2.0};定义了一个包含8个float 型元素的数组,并初始化了数组的前2项,其他项是随机数。
int b [1]={0},定义了只有一个int型元素的数组,并初始化为0。
char c[]={¨A”,”B¨};定义一个char型数组,大小有初始化元素决定,但初始化值是字符串,类型不兼容,编译出错。
char d=…1’;定义一个char型变量,但是初始化赋值字符串,类型不兼容,编译出错。
因此只有a,b定义和初始化正确。
故答案为D选项。
8[单选题] 有以下程序:程序运行后的输出结果是( )。
A.1002,ZhangDa,1202.0B.1002,ChangRon9,1202.0C.1001,ChangRon9,1098.0D.1001,ZhangDa,1098.0参考答案:D参考解析:本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D正确。
9[单选题] 有以下程序:则以下函数调用语句错误的是( )。
A.k:f(a,B.;B.k:add(a,B.;C.k=(*f)(a,B.;D.k=*(a,B.;参考答案:D参考解析:D选项中+f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。
10[单选题] 程序调试的任务是( )。
A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误参考答案:D参考解析:程序调试的任务是诊断和改正程序中的错误。
1[填空题]下列给定程序中,函数fun的功能是进行数字字符转换。
若形参ch中是数字字符‘0’~‘9’,则将‘0’转换成‘9’,‘1’转换成‘8’,‘2’转换成‘7’,…,‘9’转换成‘0’;若是其他字符则保持不变;并将转换后的结果作为函数值返回。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:参考解析:【参考答案】(1)char(2)ch<=~9 (3)’O’【考点分析】本题考查:函数定义,注意函数定义的一般形式以及有参函数和无参函数的区别;if语句条件表达式,本题的条件表达式是判断数字字符;函数返回值,其一般形式为“return表达式;”。
【解题思路】填空l:函数定义时,类型标识符指明了函数的类型,函数的类型实际上是函数返回值的类型,所以此处应该填入char。
填空2:通过if条件语句判断字符串中字符是否为数字字符,即大于等于字符‘0’,同时小于等于字符‘9’。
填空3:return语句完成函数返伺操作,要实现字符转换,完整语句为return~9一(ch一~0)。
【解题宝典】 .有参函数定义,其一般形式为:类型标识符函数名(形式参数列表){ 声明部分语句}在形参列表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号分隔。
在进行函数调用时,主调函数将赋予这些形式参数实际的值。
形参也是变量,必须在形参列表中给出类型说明。
2[单选题] 以下叙述中错误的是( )。
A.gets函数用于从终端读人字符串B.getehar函数用于从磁盘文件读人字符C.fputs函数用于把字符串输出到文件D.fwrite函数用于以二进制形式输出数据到文件参考答案:B参考解析:本题考查字符处理函数和文件操作函数。
属于基础知识,其中B选项9etchar函数是用于从终端读人一个字符。
3[单选题] 以下选项中合法的实型常量是( )A.0B.3.13e-2.1C..914D.2.0*10参考答案:C参考解析:A选项为整型数据。
B选项中e后面必须为整数。
D 选项是表达式,不是常量,所以选择C。
4[单选题] 有以下程序段:以下选项中不能正确引用字符串的是( )。
A.3B.p[3]C.str[2]D.*P参考答案:A参考解析:t p[3]一p[3][0]是一个字符,不是字符串,选项A 错误。
P[3]和str[2]和+P分别代表了ddd,eec,flaa。
答案为A选项。
5[单选题] 有以下程序(strcpy为字符串复制函数,streat为字符串连接函数)程序运行后的输出结果是A.a12xyzB.bc2yzC.a2yzD.12yz参考答案:C参考解析:本题考查字符串处理函数strcpy和streat,执行完strcpy(a+1,b+2);后,a变为a2,执行完strcat(a,c+1)后,a变为a2yz,所以答案为C选项。
6[单选题] 在软件开发中,需求分析阶段产生的主要文档是( )。
A.软件集成测试计划B.软件详细设计说明书C.用户手册。
D.软件需求规格说明书参考答案:D参考解析:需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。
所以选择D。
7[单选题]若有以下程序则程序的输出结果是A.1,2,3,4B.2,1,2,-1C.5,1,2,-1D.2,2,2,4参考答案:参考解析:第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断。
执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。
判断第二个if条件为逻辑与表达式。
只有两个运算对象均非零,才为真,第一个表达式c==3,不成立,不再判断第二个运算对象,所以不执行d=-1操作和a=5操作。
所以结果为选项D。
8[单选题] 下面选项中的程序段,没有编译错误的是参考答案:A参考解析:本题考查字符数组的初始化以及指向字符串的指针,B选项不能直接将字符串赋值给数组名,C选项不能将两个字符数组直接互相赋值,D选项中不能这样定义charmark[],必须指定长度或者直接初始化。
9[单选题] 以下选项中关于程序模块化的叙述错误的是( )。
A.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C.把程序分成若干相对独立的模块,可便于编码和调试D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序参考答案:A参考解析:程序模块化思想中,可以采用自顶向下、逐步细化的方法。
所以选项A中“自底向上”的说法是错误的。
10[单选题] 已知大写字母A的ASCIl码值是65,小写字母a的ASCIl码值是97。
以下不能将变量C中的大写字母转换为对应小写字母的语句是( )。
A.C=(。
A’+C.%26一"a"B.c=c+32C.c=c一"A"+"a"D.c=(c一’A")%26+-a"参考答案:A参考解析:根据题意可知,小写字母比与之对应的大写字母的A SCⅡ码大32。
A选项中字符A加上c表示的大写字符再对字母个数2 6取余,本身这个表达式没有任何含义,所以选择A选项。
1[单选题]以下叙述中正确的是A.如果函数带有参数,就不能调用自己B.所有函数均不能接受函数名作为实参传入C.函数体中的语句不能出现对自己的调用D.函数名代表该函数的入口地址参考答案:B参考解析:本题考查函数调用相关知识,B选项中函数可以接受函数名作为实参传人,引用函数名也是指针,C、A选项是错误的,因为递归函数就能调用自己。
2[单选题] 有以下程序:程序运行时,输入的值在哪个范围才会有输出结果( )。
A.小于3的整数B.不等于10的整数C.大于3或等于10的整数D.大于3且不等10的整数参考答案:D参考解析:根据代码可知如果x的值小于等于3,执行空语句,不进行打印操作。
如果x的值大于3,再判断x的值是否不等于l0,如果不等于l0就打印X的值,所以选择D选项。