C语言练习题1-5及参考答案
C语言1-5章复习题及参考答案

一.选择题1、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。
A .-3 B.9 C.-12 D.62、若有定义:int a=8, b=5, c; 执行语句 c=a/b+0.4; 后,c的值为()。
A .1.4 B.1 C.2.0 D.23、有如下程序:void main(){int i,sum;for(i=1;i<=3;sum++)sum+=i;printf("%d\n",sum);}该程序的执行结果是()。
A .6 B.3 C.死循环 D.04、下列关于表达式的描述中,错误的是()。
A . 常量和变量都是表达式。
B. 运算符类型对应表达式的类型。
C. 每一个表达式都有自己的值。
D. 表达式必须以分号结尾。
5、C语言中,合法的长整型常数是()。
A . '\t' B.” A” C.65 D.a6、若已定义 x 和 y为double 类型,则表达式 x=1;y=(x+3)/2 的值是()。
A .1 B.2 C.2.00000 D.2.500007、表达式:10!=9的值是()。
A . true B. 非零值 C.0 D.18、以下程序的输出结果是()。
#include<stdio.h>void main(){printf("%d\n", NULL);}A . 不确定的 B.0 C.-1 D.19、请选出合法的C语言赋值语句。
()A . a=b=58 B.i++; C. a=58,b=58 D. k=int(a+b);10、假设 int b=2; 表达式(b>>2)/(b>>1)的值是()。
A .0 B.2 C.4 D.811、关于语句printf(“hello world\n”);,下列描述中错误的是()。
A . printf()是格式化输出函数,用于输出信息。
B. printf()括号中的内容为函数的参数。
c语言习题1-5章

C语言习题1-5章单项选择1.若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是()。
A:(exp==0)B:(exp!=0)C:(exp==1)D:(exp!=1)答案:B2.putchar函数可以向终端输出一个()。
A:整型变量表达式值B:实型变量值C:字符串D:字符或字符型变量值答案:D3.C语言中运算对象必须是整型的运算符是()。
A:%=B:/C:=D:〈=答案:A4.以下数据中,不正确的数值或字符常量是()。
A:8.9e1.2B:10C:0xff00D:82.5答案:A5.一个C语言程序是由()。
A:一个主程序和若干子程序组成B:函数组成C:若干过程组成D:若干子程序组成答案:B6.经过以下语句定义后,表达式z+=x>y?++x:++y的值为()。
int x=1,y=2,z=3;A:2B:3C:6D:5答案:C7.若int a=2,则执行完表达式a-=a+=a*a后,a的值是()。
A:-8B:-4C:-2D:0答案:D8.以下叙述中错误的是()。
A:可以通过typedef增加新的类型B:可以用typedef将已存在的类型用一个新的名字来代表C:用typedef定义新的类型名后,原有类型名仍有效D:用typedef可以为各种类型起别名,但不能为变量起别名答案:A9.结构化程序由三种基本结构组成,三种基本结构组成的算法()。
A:可以完成任何复杂的任务B:只能完成部分复杂的任务C:只能完成符合结构化的任务D:只能完成一些简单的任务答案:A10.以下关于运算符优先顺序的描述中正确的是()。
A:关系运算符<算术运算符<赋值运算符<逻辑运算符B:逻辑运算符<关系运算符<算术运算符<赋值运算符C:赋值运算符<逻辑运算符<关系运算符<算术运算符D:算术运算符<关系运算符<赋值运算符<逻辑运算符答案:C11.下列程序段的输出结果为()。
C语言1-5章复习题和参考答案.doc

1、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。
A .-3 B.9 C.-12 D.62、若有定义:int a=8, b=5, c;执行语句c=a/b+0.4;后,c的值为()。
A .1.4 B.l C.2.0 D.23、有如下程序:void main(){int i,sum;for(i=l;i<=3;sum++)sum+=i;printf("%d\n",sum);}该程序的执行结果是()。
A .6 B.3 C.死循坏D.O4、下列关于表达式的描述屮,错误的是()0A.常量和变量都是表达式。
B.运算符类型对应表达式的类型。
C.每一个表达式都有自己的值。
D.表达式必须以分号结尾。
5、C语言中,合法的长整型常数是()。
A.'\t'B."A"C.65D.a6、若已定义x和y为double类型,则表达式x=l;y= (x+3) /2的值是()。
A.lB.2C.2.00000D.2.500007、表达式:10!二9的值是()oA.trueB.非零值C.OD.l8、以下程序的输出结果是()。
#include<stdio.h>void main(){printf("%d\n", NULL);}A.不确定的B.OC.-lD.l9、请选出合法的C语言赋值语句。
()A . a=b=58 B.i++; C. a=58,b=58 D. k=int(a+b);10^假设int b=2;表达式(b»2)/(b»l)的值是()。
A .0 B.2 C.4 D.811>关于语句printf("hello world\rT);,下列描述中错误的是()。
A . printf()是格式化输出函数,用于输出信息。
B.printf()括号屮的内容为函数的参数。
C.printf()括号中的内容会全部输出到控制台上。
C语言习题参考答案1-5

《C语言》作业第二章2.4 用传统流程图表示求解以下问题的算法。
(1)有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现改盛酱油,B瓶则相反)。
解:显然,如果只有两个瓶子,肯定不能完成此任务,必须有一个空瓶C作为过渡。
步骤如图2.4:(2)依次将3个数输入,要求输出其中最大的数。
2.5 用N-S图表示2.4题中算法(2)。
第三章3.5 字符常量和字符串常量有什么区别?解:字符常量是一个字符,在程序中字符是用单引号括起来的。
字符串变量是有0个或若干个字符组合而成,在程序中字符串是用双引号括起来,在存储时系统自动在字符串最后面加一个结束符号’\0’。
3.9 求下面算术表达式的值。
(1) x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7(2) (float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5解:(1)2.5(2)3.53.10 写出程序运行的结果#include<stdio.h>void main(){int i,j,m,n;i=8; j=10;m=++i; n=j++;printf(”%d,%d,%d,%d\n”,i,j,m,n);}解:运行结果为:9,10,9,113.12 写出下面赋值表达式运算后a的值,设原来a=12, n=5。
a 和n都定义为整型变量。
(1) a+=a (2)a-=2 (3)a * =2+3(4)a%=(n%=2 ) (5)a/=a+a (6)a+=a-=a*=a解:(1)24 (2)10 (3)60(4)0 (5)0 (6)0第4章4.6 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=‘A’,c2=‘a’,问在键盘上如何输入?(空格用_表示)#include<stdio.h>void main(){int a,b;float x,y;char c1,c2;scanf(“a=%d_b=%d”,&a,&b);scanf(“%f_%e”,&x,&y);scanf(“_%c_%c”,&c1,&c2);printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n”,a,b,x,y,c1,c2); }解:可按如下方式在键盘上输入:a=3_b=78.5_71.82A_a第五章1.补充题,描述下列条件1)a 小于b 或小于c2, 但a 和b 都大于c2)a 和b 中有一个大于c3)a 是非正整数4)a 是奇数5)a 不能被b整除解:(1)a<b||<c2&&a>c&&b>c(2)(a>c&&b<=c)||(a<=c&&b>c)(3)!(a%2==0||a%2==1)(4)a%2==1(5)a/b!=0第5.3题写出各逻辑表达式的值,设a=3,b=4,c=5。
算法与数据结构C语言习题参考答案1-5章

绪论1.将下列复杂度由小到大重新排序:A.2n B.n! C.n5D.10 000 E.n*log2 (n)【答】10 000< n*log2(n)< n5< 2n < n!2.将下列复杂度由小到大重新排序:A.n*log2(n) B.n + n2 + n3C.24D.n0.5【答】24< n0.5< n*log2 (n) < n + n2 + n33.用大“O”表示法描述下列复杂度:A.5n5/2 + n2/5 B.6*log2(n) + 9nC.3n4+ n* log2(n) D.5n2 + n3/2【答】A:O (n5/2) B:O (n) C:O (n4) D:O (n2)4.按照增长率从低到高的顺序排列以下表达式:4n2 , log3n, 3n , 20n , 2000 , log2n , n2/3。
又n!应排在第几位?【答】按照增长率从低到高依次为:2000, log3n, log2n , n2/3 , 20n , 4n2 , 3n。
n!的增长率比它们中的每一个都要大,应排在最后一位。
5. 计算下列程序片断的时间代价:int i=1;while(i<=n){printf(“i=%d\n”,i);i=i+1;}【答】循环控制变量i从1增加到n,循环体执行n次,第一句i的初始化执行次数为1,第二句执行n次,循环体中第一句printf执行n次,第二句i从1循环到n,共执行n次。
所以该程序段总的时间代价为:T(n) = 1 + n + 2n = 3n+ 1 = O(n)6. 计算下列程序片断的时间代价:int i=1;while(i<=n){int j=1;while(j<=n){int k=1;while(k<=n){printf(“i=%d,j=%d,k=%d\n”,I,j,k);k=k+1;}j=j+1;}i=i+1;}【答】循环控制变量i从1增加到n,最外层循环体执行n次,循环控制变量j从1增加到n,中间层循环体执行n次,循环控制变量k从1增加到n,最内层循环体执行n次,所以该程序段总的时间代价为:T(n) = 1 + n + n{1 + n + n[1 + n + 2n +1] +1 +1}+ 1= 3n3 + 3n2 +4n +2= O(n3)2. 线性表1.试写一个插入算法int insertPost_seq(palist, p, x ),在palist所指顺序表中,下标为p的元素之后,插入一个值为x的元素,返回插入成功与否的标志。
c语言习题1-5章

C语言习题1-5章单项选择1.若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是()。
A:(exp==0)B:(exp!=0)C:(exp==1)D:(exp!=1)答案:B2.putchar函数可以向终端输出一个()。
A:整型变量表达式值B:实型变量值C:字符串D:字符或字符型变量值答案:D3.C语言中运算对象必须是整型的运算符是()。
A:%=B:/C:=D:〈=答案:A4.以下数据中,不正确的数值或字符常量是()。
A:8.9e1.2B:10C:0xff00D:82.5答案:A5.一个C语言程序是由()。
A:一个主程序和若干子程序组成B:函数组成C:若干过程组成D:若干子程序组成答案:B6.经过以下语句定义后,表达式z+=x>y?++x:++y的值为()。
int x=1,y=2,z=3;A:2B:3C:6D:5答案:C7.若int a=2,则执行完表达式a-=a+=a*a后,a的值是()。
A:-8B:-4C:-2D:0答案:D8.以下叙述中错误的是()。
A:可以通过typedef增加新的类型B:可以用typedef将已存在的类型用一个新的名字来代表C:用typedef定义新的类型名后,原有类型名仍有效D:用typedef可以为各种类型起别名,但不能为变量起别名答案:A9.结构化程序由三种基本结构组成,三种基本结构组成的算法()。
A:可以完成任何复杂的任务B:只能完成部分复杂的任务C:只能完成符合结构化的任务D:只能完成一些简单的任务答案:A10.以下关于运算符优先顺序的描述中正确的是()。
A:关系运算符<算术运算符<赋值运算符<逻辑运算符B:逻辑运算符<关系运算符<算术运算符<赋值运算符C:赋值运算符<逻辑运算符<关系运算符<算术运算符D:算术运算符<关系运算符<赋值运算符<逻辑运算符答案:C11.下列程序段的输出结果为()。
C语言测试题(附有详细解析)

C语言测试题(附有详细解析)一、选择题1. 下面哪个选项是C语言的合法标识符?A. voidB. 2varC. intD. _temperature解析:C语言的标识符必须以字母或下划线开头,后面可以跟字母、数字或下划线。
选项A和C是C语言的关键字,不能作为标识符。
选项B以数字开头,不合法。
选项D符合标识符的规则,是正确的。
2. 在C语言中,哪个关键字用于定义整型变量?A. floatB. intC. doubleD. char解析:在C语言中,关键字`int`用于定义整型变量。
选项A 用于定义浮点型变量,选项C用于定义双精度浮点型变量,选项D用于定义字符型变量。
因此,正确答案是B。
3. 下面哪个选项是C语言中的逻辑运算符?A.++B. &&C. ||D. !=解析:C语言中的逻辑运算符包括`&&`(逻辑与)和`||`(逻辑或)。
选项A是自增运算符,选项D是不等于运算符,因此正确答案是B和C。
二、填空题4. 下面代码的输出是什么?```c#include <stdio.h>int main() {int x = 5;printf("%d\n", x++);return 0;}```解析:这段代码的输出是5。
在`printf`语句中,`x++`是后缀自增运算符,它先输出x的当前值5,然后x的值增加1。
因此,输出为5。
5. 下面代码的输出是什么?```c#include <stdio.h>int main() {int x = 5, y = 10;printf("%d\n", x > y ? x : y);return 0;}```解析:这段代码的输出是10。
条件运算符`?:`是一个三元运算符,它根据第一个表达式的值来选择第二个或第三个表达式。
在这个例子中,`x > y`是假的,所以输出是`y`的值,即10。
C语言习题册答案集

第1章绪论一、选择题1~5 CABCD 6~10 BDCBC 11~15 AADCC二、程序填空题1、一个C语言程序是由函数组成的。
2、C源程序的后缀名为3、在C程序中,main()函数最多有 1 个。
4、一个C语言程序总是从主函数/main( ) 开始执行。
5、在C语言里输入是由scanf 函数实现,输出是由printf 函数实现。
6、C语言中,当复合语句多于一条时,要求有一对{ } 括号。
7、一个C源程序必须经过_ 编译__和_链接__生成exe文件才能运行8、在一个C程序中注释部分两侧的分界符分别为_/*_____和_*/___9、编写计算机所程序所使用的语言称为__程序设计语言______。
10、程序设计语言的发展经历了三个阶段__机器语言__、_汇编语言_和__高级语言__第2章基本数据类型及顺序结构程序设计一、选择题01~05 ACDDA 06~10 ACAAC 11~15 BDBBC16~20 DABAA 21~25 DBDAA 26~30 ADDCB31~35 BDCAB二、程序填空题1、__基本数据类型、_构造类型___ 和___其它类型_______。
2、 4 、 4 、8 、 1 。
3、double4、x<-5||x>5或abs(x)>55、y%2==1 或y%2!=06、x%3==0&&x%7==0或x%21==0 ,7、10 ,10 。
8、printf(“****a=%d, b=%d****”,a,b) 。
9、a:b ; c:t1 ;10、x%10 , x/10%10 ;三、程序阅读题1、G 。
2、2, 1 。
3、0 。
4、16 。
5、2,50 。
6、b 。
7、3 。
8、10,20,0 。
9、2, 。
10、67, e 。
第3章分支结构一、选择题01-05:DCBCD 06-10:CBBBC 11-15:CBBDB16-20:ACDAA 21-25:CADBC 26-30:CBBAD二、程序阅读题(共10题)1、20,0 。
c语言考编程试题及答案

c语言考编程试题及答案C语言编程试题及答案1. 请编写一个C语言程序,实现以下功能:输入一个整数n,输出从1到n的所有整数的和。
```c#include <stdio.h>int main() {int n, sum = 0;printf("请输入一个整数: ");scanf("%d", &n);for(int i = 1; i <= n; i++) {sum += i;}printf("从1到%d的和是: %d\n", n, sum);return 0;}```2. 编写一个C语言程序,计算并输出100以内所有偶数的乘积。
```c#include <stdio.h>int main() {int product = 1;for(int i = 2; i < 100; i += 2) {product *= i;}printf("100以内所有偶数的乘积是: %d\n", product); return 0;}```3. 请编写一个C语言程序,实现字符串的反转。
```c#include <stdio.h>#include <string.h>void reverseString(char *str) {int length = strlen(str);for(int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[] = "Hello, World!";printf("原始字符串: %s\n", str);reverseString(str);printf("反转后的字符串: %s\n", str);return 0;}```4. 编写一个C语言程序,实现计算一个数组中所有元素的平均值。
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语言习题参考答案1-5章

置*/ palist->element[q] = palist->element[q+1]; palist->n = palist->n - 1; /* 元素个数减 1 */ return 1 ; } return 0; } 3. 设有一线性表 e = (e0, e1 , e2 , …, e n-1 ),其逆线性 表定义为 e'= (e n-1 , …, e2 , e1 ,e0)。 请设计一个算法,将用顺序表表示的线性表置逆,要求逆线性表 仍占用原线性表的 空间。 【答】 数据结构 采用 2.1.2 节中顺序表的定义。 思路 考虑对数组 element[ ]进行置逆,即把第一个元素和最后一个 元素换位置,把第二个元素和倒数第二个元素换位置……。 注意 这种调换的工作只需对数组的前一半元素进行,所以设置整数变 量 count 用于存放数组长度的一半的值。大家可以考虑一下:为 什么不能对整个数组进行如上的对元素“换位置”的工作?(提
PNode p1; if(llist==NULL) return 0; p1=llist; while(p1!=NULL&&p1->link!=p)p1=p1->link; /*寻找 p 所指结 点的前驱结点*/ if(p1=NULL) return 0; PNode q=(PNode)malloc(sizeof(struct Node));/*申请新结点 */ if(q=NULL) {printf(“Out of space!!!\n”);return 0;} q->info=x; q->link=p1->link; p1->link=q; return 1; } 7.写一算法,在带头结点的单链表 llist 中,删除 p 所指的结点, 并返回删除成功与否的标 志。 【答】 数据结构 采用 2.1.3 节中单链表定义。 思想: 由于在单链表中,只有指向后继结点的指针,所以只有首先找到
(完整版)C语言考试题库及答案

(完整版)C语言考试题库及答案一、选择题1. 以下哪个选项是C语言的合法标识符?A. intB. 2abcC. voidD. a+b答案:C2. 在C语言中,下列哪个选项是正确的数据类型?A. floatB. integerC. doubleD. All of the above答案:D3. 若变量定义如下:int a = 5;,则执行语句printf("%d", a++); 后,a的值是多少?A. 4B. 5C. 6D. 无法确定答案:C4. 以下哪个函数用于动态分配内存?A. malloc()B. alloc()C. new()D. calloc()答案:A5. 在C语言中,哪个运算符用于取模(取余)?A. %B. /C. &D. |答案:A以下是判断题部分:6. C语言中的数组名可以作为指向该数组首元素的指针使用。
()答案:正确7. 在C语言中,结构体变量可以作为函数的参数传递。
()答案:正确8. 在C语言中,静态存储类别的变量在程序运行期间始终占据内存空间。
()答案:正确二、填空题9. 在C语言中,定义一个整型变量需要使用关键字______。
答案:int10. 若变量定义如下:int a = 10;,则执行语句printf("%d", a--); 后,a的值是______。
答案:911. 在C语言中,用于动态分配内存的函数是______。
答案:malloc12. 在C语言中,用于释放动态分配的内存的函数是______。
答案:free13. 在C语言中,用于清空标准输入缓冲区的函数是______。
答案:getchar()三、编程题14. 编写一个C语言程序,实现以下功能:输入一个整数,输出它的阶乘。
答案:```c#include <stdio.h>int main() {int n, i;long factorial = 1;printf("Enter an integer: ");scanf("%d", &n);if (n < 0) {printf("Factorial of a negative number doesn't exist.\n");} else {for (i = 1; i <= n; i++) {factorial = i;}printf("Factorial of %d is %ld\n", n, factorial);}return 0;}```15. 编写一个C语言程序,实现以下功能:输入一个字符串,判断它是否是回文(正读和反读都一样的字符串)。
完整版C语言程序设计练习题含程序及参考答案

完整版C语言程序设计练习题含程序及参考答案1. 请编写一个C程序,要求输入一个整数n,并打印从1到n的所有整数。
```c#include <stdio.h>int main(){int n;printf("请输入一个整数n:");scanf("%d", &n);for (int i = 1; i <= n; i++){printf("%d ", i);}return 0;}```参考答案:```请输入一个整数n:51 2 3 4 5```2. 请编写一个C程序,要求输入两个整数m和n,并计算它们的和、差、积和商(m除以n的结果)。
```c#include <stdio.h>int main(){int m, n;printf("请输入两个整数m和n:");scanf("%d %d", &m, &n);int sum = m + n;int difference = m - n;int product = m * n;float quotient = (float)m / n;printf("和:%d\n", sum);printf("差:%d\n", difference);printf("积:%d\n", product);printf("商:%.2f\n", quotient);return 0;}```参考答案:```请输入两个整数m和n:10 3和:13差:7积:30商:3.33```3. 请编写一个C程序,要求输入一个整数n,并判断它是否为素数。
```c#include <stdio.h>#include <stdbool.h>bool isPrime(int n){if (n <= 1){return false;}for (int i = 2; i * i <= n; i++){if (n % i == 0){return false;}}return true;}int main(){int n;printf("请输入一个整数n:"); scanf("%d", &n);if (isPrime(n)){printf("%d是素数。
C语言习题(前五章)参考答案

C 语言习题参考答案第一部分 C 语言基础一、判断题1.对 2.错 3.对 4.对 5.错 6.错第二部分 数据类型、运算符及表达式一、选择题 1.AD 2.B 3.(1)CD (2)BD (3)C (4) B 5.B6.D /*赋值时,若有溢出,则只截取低位*/ 7.(1)AB (2)BD (3)ABCD 8.C 9.D10.C /*A,B 赋值运算符左值只能是变量,不能是表达式或常量,D 是逗号语句*/12.B /*赋值运算符优先级比逗号表达式高*/ 13.A14.D /*八进制数中,合格字符只能是0~7*/ 15.A /*二进制补码*/16.A /*八进制数中,合格字符只能是0~7*/ 17.D 19.B 20.D21.B /*赋值运算符右值的数据类型强制转换为左值的数据类型*/ 22.ABD 23.D 24.C 25.ABD 二、填空题1. 1 , -128~127 ; 2 , -32768~32767 ; 4 ,-2147483648~2147483647 ; 4 ,383810~10 。
3. 单引号, 双引号 。
4. 优先级 , 结合性 。
6. 2.5 。
7. 3.5 。
11. 24 , 10 , 60 , 0 , 12 , 0 12. double 。
14. 9 。
16. 1.5 , 1 。
18. 2 , -2 。
/*余数符号仅由被除数的符号决定*/ 三、判断题1.错 /*如常量*/3.错 /*如float 只能准确表示7位有效数字,多余的位数是近似表示*/4.错5.对6.对 10.错 四、简答题4写出下列各数的二进制补码(写成16为二进制形式):32: 0000 0000 0010 0000 -1: 1111 1111 1111 1111 -32768:1000 0000 0000 0000 2002: 0000 0111 1101 0010 -128: 1111 1111 1000 0000 0: 0000 0000 0000 0000 五、程序阅读 1.aabb[4个空格]cc[6个空格]c A 6 2.9,11,9,10第三部分 顺序结构一、选择题 2.D3.B /*假设int 占2个字节*/4.D5.C 7.C 8.B 9.D 10.B11.C /*D ,scanf 函数的格式符中不能规定小数位数*/ 12.A /*格式控制符:%2d%2d%3d,输入时,前两个空格对应的数字赋给a ,紧挨着的两个空格的位置赋给b*/ 13.C 14.D 15.D 二、填空题 6. %8. -10 12 410.34[回车] 题目补充:scanf 函数的调用形式为:scanf(“%d%d%f ”,&i,&j,&x); 。
C语言试题(答案带解析)

C语言试题(答案带解析)题目:编写一个C语言程序,实现以下功能:1. 输入一个字符串,长度不超过100个字符。
2. 统计并输出字符串中字母、数字、空格和其他字符的数量。
3. 删除字符串中所有的空格,并输出处理后的字符串。
4. 查找字符串中第一次出现字母 'a' 的位置,并输出位置(位置从0开始计算)。
5. 检查字符串是否为回文(忽略大小写和空格),如果是,输出"Yes",否则输出"No"。
试题代码如下:```c#include <stdio.h>#include <string.h>#include <ctype.h>int main() {char str[101];int alpha_count = 0, digit_count = 0,space_count = 0, other_count = 0;int i, a_position = -1;int len, is_palindrome = 1;// 输入字符串printf("Enter a string (up to 100 characters): ");fgets(str, 101, stdin);// 删除换行符len = strlen(str);if (str[len - 1] == '\n') {str[len - 1] = '\0';len--;}// 统计字符数量for (i = 0; i < len; i++) {if (isalpha(str[i])) {alpha_count++;if (str[i] == 'a') {a_position = i;}} else if (isdigit(str[i])) {digit_count++;} else if (isspace(str[i])) {space_count++;} else {other_count++;}}// 输出字符数量printf("Letters: %d\n", alpha_count); printf("Digits: %d\n", digit_count); printf("Spaces: %d\n", space_count); printf("Others: %d\n", other_count); // 删除空格并输出处理后的字符串char new_str[101];int j = 0;for (i = 0; i < len; i++) {if (!isspace(str[i])) {new_str[j++] = str[i];}}new_str[j] = '\0';printf("String without spaces: %s\n", new_str);// 查找字母 'a' 的位置if (a_position != -1) {printf("First occurrence of 'a' is at position: %d\n", a_position);} else {printf("'a' not found in the string.\n");}// 检查字符串是否为回文int start = 0, end = j - 1;while (start < end) {if (tolower(new_str[start]) !=tolower(new_str[end])) {is_palindrome = 0;break;}start++;end--;}if (is_palindrome) {printf("Yes\n");} else {printf("No\n");}return 0;}```解析:1. 程序首先通过 `fgets` 函数读取用户输入的字符串,并检查是否有多余的换行符。
C语言程序设计习题答案(1 5章)

case 6:m=2;break; case 7:m=3;break; case 8:m=4;break; default:m=5;break; } printf("m=%d\n",m); } Cprogram\xt4_4_1b.c #include "stdio.h" main() {int a,m; scanf("%d",&a); m=0; switch(a/10) {default:m++; case 8:m++; case 7:m++; case 6:m++; case 5:case 4:case 3:case 2: case 1:case 0:m++; } printf("m=%d\n",m); } 2. 编写程序,从键盘输入一个整数,打印出它是奇数还是偶数。 答:程序参见文件 Cprogram\xt4_4_2.c #include "stdio.h" main() {int a; scanf("%d",&a); if(a%2==1) printf("%d is a odd number !\n",a); else printf("%d is a even number !\n",a); } 3. 编写程序,从键盘输入一个字符,判别它是否是小写字母,如果是,将它转换为大写字母;如果不是, 不转换。然后输出最后得到的字符。 答:程序参见文件 Cprogram\xt4_4_3.c #include "stdio.h" main() {char ch; scanf("%c",&ch); if(ch>='a' && ch<='z') ch=ch-32; printf("%c\n",ch); } 4. 编写程序,从键盘输入一个不多于 4 位的正整数,打印出它是几位数。 答:程序参见文件 Cprogram\xt4_4_4.c #include "stdio.h" main()
C语言1-5章复习题 参考答案

一.选择题1、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是(C)。
A .-3 B.9 C.-12 D.62、若有定义:int a=8,b=5,c;执行语句c=a/b+0.4;后,c的值为(B)。
A .1.4 B.1 C.2.0 D.23、有如下程序:void main(){int i,sum;for(i=1;i<=3;sum++)sum+=i;printf("%d\n",sum);}该程序的执行结果是(C)。
A .6 B.3 C.死循环 D.0 。
4、下列关于表达式的描述中,错误的是(D)。
A . 常量和变量都是表达式。
B. 运算符类型对应表达式的类型。
C. 每一个表达式都有自己的值。
D. 表达式必须以分号结尾。
5、C语言中,合法的长整型常数是()。
A . '\t' B.” A” C.65 D.a6、若已定义x和y为double类型,则表达式x=1;y=(x+3)/2的值是(C)。
A .1 B.2 C.2.00000 D.2.500007、表达式:10!=9的值是(D)。
A . true B. 非零值 C.0 D.18、以下程序的输出结果是(B)。
#include<stdio.h>void main(){printf("%d\n",NULL);}A . 不确定的 B.0 C.-1 D.19、请选出合法的C语言赋值语句。
(B)A . a=b=58 B.i++; C. a=58,b=58 D. k=int(a+b);10、假设int b=2;表达式(b>>2)/(b>>1)的值是(A)。
A .0 B.2 C.4 D.811、关于语句printf(“hello world\n”);,下列描述中错误的是(C)。
A . printf()是格式化输出函数,用于输出信息。
B. printf()括号中的内容为函数的参数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言练习题1-5及参考答案练习题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. _MYB. 2_2222C. shortD. LINE 5【答】A(2)下列符号可以作为变量名的是。
A. +aB. *pC. _DAYD. next day【答】C(3)设c是字符变量,则以下表达式正确的是。
A. c=666B. c='c'C. c="c"D. c="abcd"【答】B(4)23+'m'+3.6-123.45/'b'的结果是型数据。
A. charB. doubleC. intD. long int【答】3.6和123.45均为double型,运算结果也是double型。
本题答案为B。
(5)若变量已正确赋值,以下符合C语言语法的表达式是。
A. a=a+7;B. a=7+b+c,a++C. int(12.3%4)D. a=a+7=c+b【答】选项A错误,以分号结尾是一个语句而不是表达式;选项B正确,是一个逗号表达式;选项C错误,因为%求模运算的两个运算数必须均为整数;选项D错误,给一个表达式(a+7)而非变量赋值是不正确的。
本题答案为B。
(6)整型变量x=1,y=3,经下列计算后,x的值不等于6的表达式是。
A. x=(x=1+2,x*2)B. x=y>2?6:5C. x=9-(--y)-(--y)D. x=y*(int)(4.8/2) 【答】选项A的计算过程——x=1+2=3,再计算x=x*2=6;选项B的计算过程——y>2为真,x=6;选项C 的计算过程——式中有两个--运算,最后y=1,x=9-1-1=7;选项D的计算过程——x=y*(int)(4.8/2)=y*2=6。
本题答案为C。
(7)若定义int m=7,n=12;则能得到值为3的表达式是。
A. n%=(m%=5)B. n%=(m-m%5)C. n%=m-m%5D. (n%=m)-(m%=5)【答】A、B、C、D选项各表达式的值分别是0、2、2、3。
本题答案为D。
(8)以下程序的运行结果是。
#include <stdio.h>main(){int i=5,j=6,m=i+++j;printf("%d,%d,%d\n",i,j,m);}A. 6,6,11B. 5,6,11C. 5,6,12D. 6,6,12【答】m=i+++j等价于m=(i++)+j。
本题答案为A。
(9)以下程序的运行结果是。
#include <stdio.h>void main(){double f=3.14159;int n;n=(int)(f+10)%3;printf("%d\n",n);}A. 1B.0 C.2 D. 3【答】f+10=13.14159,(int)(f+10)=13,13%3=1。
本题答案为A。
(10)以下程序的运行结果是。
#include <stdio.h>void main(){int n,i=2,j=4;n=(++i==j--);printf("%d\n",n);}A. 0B.1 C.2 D. 3【答】++i返回3,j--返回4,两者不等,故n=0。
本题答案为A。
2. 填空题(1)表达式语句与表达式的不同是。
【答】语句必须以分号结尾,而表达式结尾没有分号;语句可以出现在函数体中数据定义或声明语句后面的任何位置,而表达式只能出现在语句中规定的位置或表达式中(嵌套出现)。
(2)在C语言中可以利用将一个表达式的值转换成指定的类型。
【答】强制类型转换(3)写出完成下列功能的表达式:· 如果变量c是大写字母,则将c转换成对应的小写,否则c的值不改变。
①· 如果d是数字,则将d转换成相应的整数,否则d的值不改变。
②· 返回两个整数x、y中较大者。
③· 返回三个整数x、y和z中最大者。
④【答】① c=(c>='A' && c<='Z') ? c-'A'+'a' : c② d=(d>='0' && d<='9') ? d-'0' : d③ (x>y) ? x : y④ (x>y) ? (x>z ? x : z) : (y>z ? y : z) 或 (x>y && x>z) ? x : (y>z ? y : z)(4)以下程序的运行结果是。
#include <stdio.h>#include <string.h>main(){char s[]="ab\n\\\'\r\b";printf("%d,%d\n",sizeof(s),strlen(s));}【答】字符串s由字符'a'、'b'、'\n'、'\\'、'\''、'\r'、'\b'等7个字符组成,故长度为7,但字符串本身有一个结束标志'\0'。
所以,s的长度为7,在内存中占用8个字节。
输出为:8,7。
(5)以下程序的运行结果是。
#include <stdio.h>main(){int a=2,b=4,c=6,x,y;y=(x=a+b),(b+c);printf("y=%d,x=%d\n",y,x);}【答】结果为y=6,x=6。
(6)以下程序的运行结果是。
#include <stdio.h>main(){char a,b;a='a';b='b';a=a-32;b=b-32;printf("%c,%c,%d,%d\n",a,b,a,b);}【答】A,B,65,66(7)以下程序的运行结果是。
#include <stdio.h>main(){int i,j,x,y;i=5;j=7;x=++i;y=j++;printf("%d,%d,%d,%d\n",i,j,x,y);}【答】执行x=++i后,i=6,x=6;执行y=j++后,j=8,y=7;所以输出为:6,8,6,7。
(8)以下程序的运行结果是。
#include <stdio.h>main(){int a=1;char c='a';float f=2.0;printf("①:%d\n",a+2!=c-100);pri ntf("②:%d\n",(a>c)>=(f>4));printf("③:%d\n",!a==!f);printf("④:%d\n",(!a&&1)!=(!c||1));printf("⑤:%d\n",(!a>2)?3:0)<((f!=1)?0:1);printf("⑥:%d\n",(1,2,3)==(3,3,3));}【答】①:1 (a+2=3,c-100=-3,表达式结果=1(真))②:1(a>c的结果是0(假),f>4的结果是0,表达式结果=1)③:1(!a的结果是0,!f的结果是0,表达式结果=1)④:1(!a&&1的结果是0,!c||1的结果是1,表达式结果=1)⑤:0(!a>2的结果是0,(!a>2)?3:0的结果是0,f!=1的结果是1,(f!=1)?0:1的结果是0,表达式结果=0)⑥:1((1,2,3)表达式的结果是3,(3,3,3)的结果是3练习题3及参考答案1. 单项选择题(1)以下说法正确的是。
A. 输入项可以为一个实型常量,如scanf("%f",3.5)B. 只有格式控制没有输入项也能进行正确输入,如scanf("%d")C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f)D. 当输入数据时,必须指明变量的地址,如scanf("%f",&f)【答】D(2)若a为整型变量,则以下语句。
a=-2L;printf("%d\n",a);A. 赋值不合法B. 输出值为-2C. 输出为不确定值D. 输出值为2【答】B(3)若x和y均定义为int型,z定义为double型,以下scanf()函数调用语句不合法的是。
A. scanf("%d%lx,%le",&x,&y,&z);B. scanf("%2d*%d%lf",&x,&y,&z);C. scanf("%x%*d%o",&x,&y);D. scanf("%x%o%6.2f",&x,&y,&z); 【答】scanf()函数中没有精度控制。