C练习题&答案
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语言基础练习题及答案
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语言初学者练习题目10条
C语言初学者练习题目10条1. 关于C语言初学者练习题目10条在学习编程语言的过程中,练习题目是一个重要的环节,可以帮助初学者巩固基本知识和提升解决问题的能力。
本文将介绍10个适合C语言初学者的练习题目,并分析每个题目的解题思路。
题目一:输出Hello, World!这是C语言中最基础的练习题目,通过编写一个简单的程序来输出"Hello, World!",帮助初学者熟悉C语言的基本语法和编译运行过程。
题目二:计算两个整数之和编写一个程序,接收用户输入的两个整数,并输出它们的和。
这个练习可以让初学者熟悉C语言的基本输入输出操作和基本的数学运算。
题目三:判断一个数是否为素数编写一个程序,接收用户输入的一个整数,并判断该数是否为素数。
这个练习可以让初学者熟悉使用循环和条件语句进行判断,并学习如何优化算法以提高判断效率。
题目四:计算数组元素的平均值编写一个程序,接收用户输入的一个整型数组,并计算出数组元素的平均值。
这个练习可以让初学者熟悉数组的基本使用和循环的结合运用。
题目五:查找数组中的最大值和最小值编写一个程序,接收用户输入的一个整型数组,并找出数组中的最大值和最小值。
这个练习可以让初学者学习如何定义和使用函数,并加深对数组的理解。
题目六:实现简单的字符串翻转编写一个程序,接收用户输入的一个字符串,并将其翻转输出。
这个练习可以让初学者学习如何处理字符串类型的数据,并锻炼对数组和循环的综合运用能力。
题目七:实现简单的冒泡排序编写一个程序,接收用户输入的一个整型数组,并使用冒泡排序算法对数组进行排序。
这个练习可以让初学者深入理解冒泡排序算法的原理,并学习如何进行数组的元素交换。
题目八:实现简单的查找算法编写一个程序,接收用户输入的一个整型数组和一个目标值,在数组中查找目标值并输出其下标。
这个练习可以让初学者学习不同查找算法的实现原理,并熟悉如何使用循环进行遍历操作。
题目九:实现简单的递归算法编写一个程序,使用递归算法计算斐波那契数列的第n项值,并将其输出。
C语言基础练习100题(含答案)
("\n");
则输出结果是.
A) 10,10,10 B) 8,16,10 C) 8,10,10 D) 8,8,10
18、已知有型变量2.54.7,整型变量7,
则表达式3*()()%2/4的值是.
A) 2.4 B)2.5 C) 2.75 D) 0
19、设有以下语句1033,则x的值是
{ 010;
()
3;
("\n");
}
A) 3,0 B) 0,0 C) 0,1 D) 3,1
35、能够完成如下函数计算的程序段是.
┌ -1 x<0
┤ 0 0
└ 1 x>0
A) 1;B) (x>=0)
(0)(x>0) 1;
(x>0) 1;0;
0;1;
C) 0;D) 1;
(x>=0)(x>0) 1;
23、在C语言中,以下叙述不正确的是.
A) 在C程序中,无论是整数还是实数,都能被准确无误的表示
B) 在C程序中,变量名代表存储器中的一个位置
C) 静态变量的生存期与整个程序的生存期相同
D) C语言中变量必须先定义后引用
24、设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是.
A) 10<a<15 B) 11121314
11、阅读下面的程序
<>
()
{
;
010;
9;
("");
}
则程序的运行结果是.
A) 1,19B) -1,19C) 1,17 D) -1,17
12、阅读下面的程序
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语言练习题(带详解答案)
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语言章节习题目录C语言章节习题 (1)第一章C语言概述 (2)第三章数据类型、运算符和表达式 (3)第四章顺序结构程序设计 (4)第五章选择结构程序设计 (10)第六章循环结构程序设计 (17)第7章数组习题 (25)第8章函数习题 (34)第九章预处理 (41)第十章指针 (42)第一章C语言概述一、选择题:1、一个C程序的执行是从(A)。
A本程序的main函数开始,到main函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束2、在C 语言中,每个语句必须以(D)结束.A. 回车符 B。
冒号 C。
逗号 D. 分号3、C 语言规定:在一个源程序中,main函数的位置(C)。
A. 必须在最开始B。
必须在系统调用的库函数的后面C. 可以任意 D。
必须在最后4、一个C 语言程序是由(B).A. 一个主程序和若干子程序组成B。
函数组成C. 若干过程组成D。
若干子程序组成5、下列说法中错误的是(D).A。
主函数可以分为两个部分:主函数说明部分和主函数体B。
主函数可以调用任何非主函数的其他函数C。
任何非主函数可以调用其他任何非主函数D。
程序可以从任何非主函数开始执行6、用C 语言编写的源文件经过编译,若没有产生编译错误,则系统将(B)。
A。
生成可执行目标文件 B。
生成目标文件C. 输出运行结果 D。
自动保存源文件二、填空题:1、C 语言只有(37)个关键字和 (9)种控制语句。
2、每个源程序有且只有一个(main)函数,系统总是从该函数开始执行C语言程序。
3、C 语言程序的注释可以出现在程序中的任何地方,它总是以(\*) 符号作为开始标记,以(*\)符号作为结束标记。
4、C 语言中,输入操作是由库函数(scanf)完成的,输出操作是由库函数(printf)完成的。
5、系统默认的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语言各章练习题
6.设shortint型的数据长度为2个字节,则unsignedshort类型数据的取值范围是()P34
A、均为2个字节B、0至65535C、-3276至32767D、-256至255
7.以下选项中可作为C语言合法常量的是()(指数E或e前必须有数字,后面必须有整数)
A、-80.0B、-080C、-8e1.2D、-80.0e
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是()
A、m=123n=456p=789B、m=123 n=456 p=789
C、m=123,n=456,p=789D、123 456 789
30.?shortint a=-2;printf(“%hu”,a);输出为( )
23.putchar函数可以向终端输出一个()P65
A、整数B、实数C、字符串D、字符
24.设有语句scanf(%d,%d”,&m,&n);要使m、n的值依次是2、3,正确是输入是()
A、2 3B、2,3C、2;3D、2
3
25.设变量定义为int a,b;执行下列语句时,输入( ),则a和b的值都是10
printf("%d%d",m++,++n);
printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是()
A、12353514B、12353513C、12343514D、12343513
29.有以下程序
main()
C语言练习题
一、选择题(每题 1 分,共20 分)1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。
A、循环B、递归C、转移D、嵌套2.下列标识符中,合法的是_______ 。
A) unsigned B) 5ab C) INT# D)_num23.若float x ;x = 10/4 ;x的值是。
A、B、2.0 C、3 D、24.表达式!x 等价于。
A、x==0B、x==1C、x != 0D、x != 15.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。
A、算术运算、赋值运算、关系运算B、关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算6.能将高级语言编写的源程序转换为目标程序的是。
A、链接程序B、解释程序C、编译程序D、编辑程序7.下列语句定义pf为指向float类型变量f的指针,是正确的。
A、float f, *pf = f;B、float f, *pf = &f;C、float *pf = &f, f;D、float f, pf = f;8.一个C程序的执行是从。
A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束9.能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。
A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B、(x>=1)||(x<=10)||(x>=200)||(x<=210)C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210)D、(x>=1)||(x<=10)&&(x>=200)||(x<=210)10.对两个数组a和b进行如下初始化char a[]=“ABC DEF”;char b[]={ ‘A’,’B’,’C’,’D’,’E’,’F’};则以下叙述正确的是。
C语言练习题
C语言编程练习顺序结构:1.已知行驶时间与速度,试编程求解并输出行驶的路程(5分)。
2.编写程序对100以内所有能被3整除但不能被5整除的数求和并输出结果(6分)。
3.请编写程序,将“China”译成密码,密码规律是:用原来的字母后面的第4个字符代替原来的字母。
例如:字母“A”后面的第4个字母是“E”,用”E”代替“A”。
4.编写程序,将输入的大写字母转换为小写字母输出5. 编写一个C程序,输入a,b两个值,输出这两个数的和。
6.编写程序,输入一个人三门课的成绩,输出其平均成绩。
7.编写程序,任意输入一个三位整数,输出各位上数字之和,如输入123,则1+2+3=6,输出6。
8.输入圆的半径,输出该圆的周长和面积,结果保留2位小数。
9.编写程序,输入一个人三门课的成绩,输出其平均成绩。
10.利用中间变量,完成两值交换。
选择结构:11.编写一个C程序,以下程序根据输入的三角形的三边,判断是否能组成三角形,若可以则输出它的面积和三角形的类型编写程序。
12.编写程序输入x值,求解以下分段函数,并将其结果输出y=13.编写程序,判断输入的字符,若为小写字母,将其转换为大写字母,若为大写字母,将其转换为小写字母,若为其他字符,则原样输出。
14.编写程序,输入x的值,计算y的值:公式如右图:y={−1 x<00 x=01 x>0。
15.编写程序,根据输入的数字,输出相应的星期。
(1-7,则周一---周日,除此之外的数字,均输出无效输入的提示)循环结构:16.编写程序,输出1000以内的所有水仙花数。
水仙花数是指一个三位数,数的本身等于各位数字立方之和,如153=1^3+5^3+3^3。
17.编写程序,计算100以内能被3整除的数的和。
18.编写程序,求5!(输出格式要求为:例:5!=120)19.输入n个数,要求按照由小到大的顺序输出,并要求每行输出5个。
数组:20.编写程序,任意输入一行字符,以‘\n’结束,要求统计其中字母的个数,并将原字符及统计结果输出。
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语言练习题(带答案)
一、单项选择题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、intt6、下列C语言用户标识符中合法的是(B)。
A)3ax B)xC)caseD)—e2E)union7、下列四组选项中,正确的C语言标识符是(C)、A) %xB) a+b C)a123 D) 1238、下列四组字符串中都能够用作C语言程序中的标识符的是( A )。
A、print_3d db8 aBc B、I\amone_half start$it3paiC、str_1 Cpp powwhileD、PxqMy—>book line#His、ag e9、C语言中的简单数据类型包括(D)、A、整型、实型、逻辑型B、整型、实型、逻辑型、字符型C、整型、字符型、逻辑型D、整型、实型、字符型10、在C语言程序中,表达式5%2的结果是C、A)2、5 B)2 C)1D)311、假如int a=3,b=4;则条件表达式"a〈b? a:b”的值是__A__。
A) 3 B) 4C) 0 D) 112、若int x=2,y=3,z=4 则表达式x〈z?y:z的结果是( B)、A)4 B)3C)2 D)0E)113、C语言中,关系表达式与逻辑表达式的值是( B) 、ﻩA) 0 B) 0或1 C) 1 D) ‘T’或’F’14、下面(D)表达式的值为4、A)11/3 B) 11、0/3C)(float)11/3 D) (int)(11、0/3+0、5)15、设整型变量a=2,则执行下列语句后,浮点型变量b的值不为0、5的是( B)A、b=1、0/aB、b=(float)(1/a)C、b=1/(float)aD、b=1/(a*1、0)16、若“int n;float f=13、8;”,则执行“n=(int)f%3”后,n的值是(A)A、1 B、4C、4、333333D、4、617、以下对一维数组a的正确讲明是: DA) char a(10); ﻩﻩﻩB)int a[];C)int k=5,a[k];D)chara[3]={‘a’,'b','c’};18、以下能对一维数组a进行初始化的语句是:(C)A、inta[5]=(0,1,2,3,4,) B、inta(5)={}C、int a[3]={0,1,2}D、inta{5}={10*1}19、在C语言中对一维整型数组的正确定义为D、A)int a(10);B)int n=10,a[n];C)int n;a[n]; D)#define N10inta[N];20、已知:int a[10]; 则对a数组元素的正确引用是(D)、A、a[10]B、a[3、5]C、a(5) D、a[0]21、若有以下数组讲明,则i=10;a[a[i]]元素数值是(B)。
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语言经典练习题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语言基础练习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为一数字字符,则其所对应的十进制数值为()。
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、填空共17题(共计60分)第1题(2.0分)运行以下程序时,输出结果是【1】long fit(int n){if(n>2) return(fit(n-1)+fit(n-2));else return(3);}main(){printf("%ld\n",fit(4));}答案:=======(答案1)=======9第2题(2.0分)以下程序运行后的输出结果是【1】.#include <string.h>void main(){ char ch[]="abc",x[3][4];int i;for(i=0;i<3;i++)strcpy(x[i],ch);for(i=0;i<3;i++)printf("%s",&x[i][i]); printf("\n");}答案:=======(答案1)=======abcbcc第3题(2.0分)下列程序的输出结果是【1】#include <string.h>main( ){ char b[30];strcpy(&b[0],"CH");strcpy(&b[1],"DEF");strcpy(&b[2],"ABC");printf("%s \n",b);}答案:=======(答案1)=======CDABC第4题(2.0分)运行以下程序时,输出结果是【1】#include<stdio.h>int b;int fun (int a){ static int c=2;return((++a)+(++b)+(++c)); }void main( ){ int i, a=1;for(i=0;i<2;i++)printf("%5d",fun(a));}答案:=======(答案1)=======6 8第5题(2.0分)在函数内部声明局部变量时缺省了存储类型,则该变量存储类型是【1】.答案:=======(答案1)=======auto=========或=========自动型第6题(2.0分)有以下定义和语句struct date{ int day;int month;int year;union{ int share1;float share2;}share;}a;则sizeof(a)的值是【1】. 答案:=======(答案1)=======10第7题(2.0分)以下程序的运行结果是【1】int *swap(int *a,int *b) {int *p;p=a;a=b;b=p;return a;}main(){int x=3,y=4,z=5;swap(swap(&x,&y),&z); printf("%d,%d,%d",x,y,z);}答案:=======(答案1)=======3,4,5第8题(2.0分)以下程序的运行结果是【1】void swap(int **r,int **s) { int *t;t=*r;*r=*s;*s=t;}main(){ int a=1,b=2,*p,*q;p=&a;q=&b;swap(&p,&q);printf("%d,%d\n",*p,*q); }答案:=======(答案1)=======2,1第9题(4.0分)以下程序运行时, 输出结果的第一行是【1】, 第二行是【2】. #include <stdio.h>void f (int *x, int y){ *x=y+1 ; y=*x+2 ; }main( ){ int a=2, b=2 ;f(&a, b) ;printf("%d \n%d",a,b);}答案:=======(答案1)=======3=======(答案2)=======2第10题(4.0分)设有以下main函数main(int argc, char *argv[ ]){ while(argc > 1){ ++argv;printf("%s\n", *argv);- -argc;}}经过编译、连接后得到可执行文件名为c1.exe,若在系统的命令状态下输入命令行:c1 nanjing xiaozhuang college<回车>,则在第一行输出【1】,第三行输出【2】.答案:=======(答案1)=======nanjing=======(答案2)=======college第11题(4.0分)请填空以使程序完整。
有一个m*n的矩阵,以下程序的功能是求出其中值最大的元素的值,以及相应得行号和列号。
#define M 4#define N 3main(){int i,j,row=0,colum=0,max;int a[M][N]={{1,23,3},{4,8,6},{17,6,1},{0,11,17}};【1】;for(i=0;i<=3;i++)for(j=0;j<=2;j++)if(【2】){max=a[i][j];row=i;colum=j;}printf("max=%d,row%d,colum=%d\n",max,row,colum);}答案:=======(答案1)=======max=a[0][0]=======(答案2)=======a[i][j]>max=========或=========max<a[i][j]第12题(4.0分)以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数.例如,输入的字符串为:556,则输出十进制整数366.请填空.#include <string.h>main(){ char s[6];int n,i=0;gets(s);n= 【1】 -'0';while( 【2】 !='\0')n=n*8+s[i]-'0';printf("%d \n",n);}答案:=======(答案1)=======s[0]=======(答案2)=======s[++i]第13题(6.0分)该程序功能是:将有10个元素的整型数组a中下标值为偶数的元素从大到小排列,其他元素不变。
请填空以使程序完整。
#define k 10main(){int a[k]={1,2,5,7,9,3,4,6,8,10},t;int i,j;for(i=0;i<k;i++)printf("%5d",a[i]);for(i=0;i<=【1】;i=i+2)for(j=i+2;j<k;j+=2)if(【2】){t=a[i];【3】;a[j]=t;}for(i=0;i<k;i++)printf("%5d",a[i]);printf("\n");}答案:=======(答案1)=======k-2=======(答案2)=======a[i]<a[j]=======(答案3)=======a[i]=a[j]第14题(6.0分)请填空以使程序完整。
该程序的功能是把从键盘输入的十进制(long型)以16进制数的形式输出。
#include <stdio.h>main( ){charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C', 'D','E','F'};int c[64],d,i=0;long n;printf("Enter a number:\n");scanf("%ld",&n);do{c[i]=【1】;i++;n=【2】;}while(n!=0);printf("Transmite mew base:\n");for(--i;i>=0;--i){【3】;printf("%c",b[d]);}}答案:=======(答案1)=======n%16=======(答案2)=======n/16=======(答案3)=======d=c[i]第15题(6.0分)阅读以下程序main(){ char *str[3]={"Fortrain ","Prolog","Pascal "};char **p;int i;p=str;for(i=0;i<3;i++,p++)printf("%c\n ",(*(*p+3)+1));}该程序第1行、第2行及最后一行的输出分别为【1】、【2】和【3】. 答案:=======(答案1)=======u=======(答案2)=======m=======(答案3)=======d第16题(6.0分)以下程序使用递归方法求数组中的最大值及其下标值,请填空: #define M 10void findmax(int *a,int n,int i,int *pk){if(i<n){if(a[i]>a[*pk]) 【1】;findmax(a,n,i+1,【2】);}}main(){int a[M],i,n=0;printf("\nEnter %d data:\n",M);for(i=0;i<M;i++)scanf("%d",【3】);findmax (a,M,0,&n);printf("The maximum is: %d\n",a[n]);printf("it's index is: %d\n",n);}答案:=======(答案1)=======*pk=i=======(答案2)=======pk 或 &(*pk)=======(答案3)=======a+i 或 &a[i]第17题(4.0分)阅读以下程序main(){ char *str[3]={"Basic ","Visual C++","Pascal "};char **p;int i;p=str;for(i=0; i<3; i++,p++)printf("%c\n ",(*(*p+3)+1));}该程序第1行、第2行及最后一行的输出分别为【1】、【2】和【3】. 答案:=======(答案1)=======j=======(答案2)=======v=======(答案3)=======d二、单项选择共20题(共计40分)第1题(2.0分)以下合法的赋值语句是( ).A:x=y=100B:d--;C:x+yD:c=int(a+b);答案:B第2题(2.0分)已知字符A的ASCII码为65,则执行下列函数调用语句时,不能输出字符B的是( ).A:putchar('B');B:putchar("B");C:putchar(66);D:putchar('\x42');答案:B第3题(2.0分)若以下选项中的变量已正确定义,则正确的赋值语句是( ). A:x1=86.8%3B:1+9=x2C:x3=0x1fD:x4=1+6=7答案:C第4题(2.0分)若有声明"int x=2, y=1, z=0;",则下列关系表达式中有语法错误的是________.A:x>y=2B:z>y>xC:x>y==1D:x==(x=0, y=1, z=2)答案:A第5题(2.0分)有声明int x=2;,以下表达式中值不等于8的是________.A:x+=2,x*2B:x+=x*=xC:(x+7)/2*((x+1)%2+1)D:x*7.2/x+1答案:D第6题(2.0分)若有数组A和B的声明"static char A[ ] ="ABCDEF", B[ ] = {'A', 'B', 'C','D','E', 'F'};"则数组A和数组B的长度分别是________.A:7,6B:6,7C:6,6D:7,7答案:A第7题(2.0分)以下程序运行后的输出结果是________.main( ){ char a[7]= "a0\0a0\0"; int i,j;i=sizeof(a); j=strlen(a);printf("%d %d",i,j);}A:2 2B:7 2C:7 5D:6 2答案:B第8题(2.0分)以下不正确的说法为( )A:在函数内的复合语句中定义的变量在本函数范围内有效B:在不同函数中可以使用相同名字的变量C:在函数内定义的变量只在本函数范围内有效D:形式参数是局部变量答案:A第9题(2.0分)以下程序运行结果( )long fun(int n){long s;if(n==1||n==2) s=2;else s=n-fun(n-1);return s;}main(){printf("%d\n",fun(3));}A:2B:1C:0D:10答案:B第10题(2.0分)下面程序运行后的输出结果是______.main(){ char arr[2][4];strcpy(arr[0],"you");strcpy(arr[1],"me");arr[0][3]= '&';printf("%s\n",arr[0]);}A:you&meB:youC:meD:err答案:A第11题(2.0分)以下叙述正确的是( ).A:一个用C语言编写的程序在运行时总是从main函数开始逐条执行B:main函数是系统库函数C:main函数中每行只能出现一条语句D:main函数必须出现在所用其它函数之前答案:A第12题(2.0分)语句printf("%d",(a=2)&&(b= -2));的输出结果是( )A:无输出B:结果不确定C:-1D:1答案:D第13题(2.0分)若有函数fun的定义为void fun(…){ static int a=1;……}则下列叙述中不正确的是( ).A:在每次调用fun函数时,变量a的值是上次调用结束时a的值B:在fun函数之外,可以用变量名a直接引用a的值C:在其它函数中,可以出现声明double a=2.5;D:fun函数的形式参数不能取名为a答案:B第14题(2.0分)以下程序输出结果是( )#include<stdio.h>void main(){int i,a[10];for(i=9;i>=0;i--)a[i]=10-i;printf("%d%d%d",a[2],a[4],a[8]);}A:852B:741C:862D:369答案:C第15题(2.0分)以下程序的输出结果是( ).#include <stdio.h>main(){int i;for(i='A';i<='I';i++) printf("%c",i+32); printf("\n");}A:编译不通过,无输出B:ABCDEFGHC:abcdefghiD:abcdefgh答案:C第16题(2.0分)以下关于if语句,描述错误的是( ).A:条件表达式可以是任意的表达式B:条件表达式只能是关系表达式或逻辑表达式C:条件表达式的括号不可以省略D:与else配对的if语句是其之前最近的未配对的if语句答案:B第17题(2.0分)以下程序段循环执行的次数是( ).int k=0;while(k = 1) k++;whileA:无限次B:有语法错,不能执行C:一次也不执行D:执行1次答案:A第18题(2.0分)以下正确的叙述是( )A:在C程序中,语句之间必须要用分号";"分隔B:若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型C:在C程序中,无论是整数还是实数,都能准确无误地表示D:在C程序中,%是只能用于整数运算的运算符答案:A第19题(2.0分)若有以下定义,则对a数组元素的正确引用是()int a[5],*p=a;A:p+5B:*(a+2)C:a+2D:&a+1答案:B第20题(2.0分)以下程序执行后的输出结果是( ).main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf("%d\n",s);}A:自然数1~9的累加和B:自然数1~10的累加和C:自然数1~9中的奇数之和D:自然数1~10中的偶数之和答案:D。