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语言练习题(带答案)

一、单项选择题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 语言基础练习题及答案一、单项选择题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语言练习题(带答案)-绝对经典题目不看后悔————————————————————————————————作者:————————————————————————————————日期: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语言程序设计习题授课对象:信息奥赛辅导成员授课时间:题目:古典问题:有一对兔子,从出生后第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语言习题集(含答案)

一、单选题:(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语言经典练习题及解析答案一、单选题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语言练习题(带详解答案)

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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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分。