C语言简单测试题
- 格式:docx
- 大小:28.38 KB
- 文档页数:11
c语言测试题目及答案一、选择题(每题2分,共20分)1. 下列哪个关键字不是C语言的控制语句?A. ifB. switchC. whileD. loop答案:D2. C语言中,一个整型变量int占用的字节数是多少?A. 1B. 2C. 4D. 8答案:C3. 在C语言中,以下哪个运算符用于计算两个数的乘方?A. *B. /C. ^D. %答案:C4. 下列哪个函数用于计算一个数的绝对值?A. abs()B. max()C. min()D. pow()答案:A5. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. {"Hello World"}D. ["Hello World"]答案:A6. 在C语言中,以下哪个是正确的数组声明?A. int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};B. int array[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};C. int array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};D. int array[10] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;答案:B7. 在C语言中,以下哪个是正确的函数声明?A. void myFunction(int x, int y);B. int myFunction();C. void myFunction(int x, int y) {}D. int myFunction(int x, int y);答案:A8. 在C语言中,以下哪个是正确的递归函数调用?A. func(5);B. func(func(5));C. func(func(5, 3));D. func(5, 3);答案:B9. 下列哪个是C语言中合法的变量名?A. 2variableB. variable-nameC. variable#nameD. variable_name答案:D10. 在C语言中,以下哪个是正确的结构体声明?A. struct Person { int age; char name[50]; };B. struct { int age; char name[50]; };C. Person { int age; char name[50]; };D. Person struct { int age; char name[50]; };答案:A二、填空题(每空2分,共20分)1. C语言中,用于定义一个函数的关键字是________。
C语言基础知识测试题全面完整c语言基础知识测试题全面完整基础知识测试题一.单项选择题1.以下不正确的c语言标识符是(d)a.abcb.abcc.a_bcd.ab.c2.以下正确的c语言标识符是(c)a.%xb.a+bc.a123d.test!3.一个c语言程序的继续执行从(a)。
a.main()函数已经开始,直至main()函数完结b.第一个函数已经开始,直至最后一个函数完结c.第一个语句已经开始,直至最后一个语句完结d.main()函数已经开始,直至最后一函数完结4.在c语言程序中,main(c)的边线()。
a.必须做为第一个函数b.必须作为最后一个函数c.任意d.必须放到它所调用的函数之后5.一个c语言程序就是由(b)。
a.一个主程序和若干个子程序共同组成b.一个或多个函数共同组成c.若干过程共同组成d.若干子程序共同组成6.c语言源程序的基本单位是(b)。
a.过程b.函数c.子程序d.标识符7.编辑程序的功能就是(a)。
a.创建并修正程序c.将c源程序编译成目标程序d.调试程序e.命令计算机继续执行选定的操作方式8.c编译程序就是(d)。
a.c语言程序的机器语言版本b.一组机器语言指.d.将c源程序编译成目标程序的程序f.由制造厂家提供更多的一套应用软件b9.不属于字符型常量的就是(d)a.'a'b.\'\\x72'10.设charch;以下恰当的赋值语句就是:(b)a.ch='123';b.ch='\\xff';c.ch='\\08';d.ch=\11.以下并使i的运算结果为4的表达式就是(d)a.inti=0,j=0;(i=3,(j++)+i);b.inti=1,j=0;j=i=((i=3)*2);c.inti=0,j=1;(j==1)?(i=1):(i=3);d.inti=1,j=1;i+=j+=2;a12.若t为double类型,表达式t=1,t+5,t++的值是(d)a.1b.6.0c.2.0d.1.0c13.设整型变量m,n,a,b,c,d均为1,继续执行“(m=a>b)&&(n=a>b)”后m,n的值就是(b)a.0,0b.0,1c.1,0d.1,1b14.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次为(ca.3,3,2b.3,2,2c.3,2,3d.2,3,2b15.若a=1,b=2,c=3,d=4,则条件表达式a16.设intn=7;则++n+1==9的结果是(c)a.trueb.falsec.1d.017.设a=2,b=2;则++a+b的结果就是(d),a的结果就是(b),b的结果就是(a)a.2b.3c.4d.518.设a=2,则执行b=a==!a;语句后,b的结果是(a)a.0b.1c.2d.319.建有以下语句,则c的二进制值就是()chara=3,b=6,c;c=a^b<<2;a.00011011b.00010100c.00011100d.0001100020.在c语言类型说明中,int、char、short等类型的长度是(a)a.固定的b.由用户自己定义的c.任意的d.与机器字的长度有关的二.填空题1.c语言中的标识符就可以由三种字符共同组成,它们就是、、。
c语言测试题1.题目一编写一个C语言程序,要求从键盘输入两个整数,然后输出它们的和。
解答:```c#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数: ");scanf("%d %d", &num1, &num2);int sum = num1 + num2;printf("两数之和为:%d\n", sum);return 0;}```2.题目二编写一个C语言程序,要求从键盘输入一个整数,然后判断它是否为素数。
解答:```c#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i * i <= num; i++) { if (num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数: ");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}```3.题目三编写一个C语言程序,要求实现冒泡排序算法对一个数组进行排序。
解答:```c#include <stdio.h>void bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}void printArray(int arr[], int size) {for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");}int main() {int arr[] = {5, 2, 9, 1, 3};int size = sizeof(arr) / sizeof(arr[0]); printf("排序前的数组: ");printArray(arr, size);bubbleSort(arr, size);printf("排序后的数组: ");printArray(arr, size);return 0;}```以上是三个C语言测试题的解答,分别涉及输入输出、数学运算和数组排序等。
计算机C 语言测试题1.求1!+3!+5!+……+n!的和。
2.用选择法对10个整数按升序排序。
3.以每行5个数来输出200以内能被7或17整除的偶数,并求出其和。
4. 求100-999之间的水仙花数.说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。
5. 用 公式求 的近似值,直到发现某一项的绝对值小于10-5 为止(该项不累计加)。
6. 产生并输出杨辉三角的前五行。
11 11 2 11 3 3 11 4 6 4 17. 输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
8. 分别求出一批非零整数中的偶数、奇数的平均值,用零作为终止标记。
9. 将一个数组中的元素按逆序存放。
10. 打印以下图形。
*************************11. 求一个二维数组(三行三列)中每行的最大值和每行的和。
12.13. 统计一个字符串中的字母、数字、空格和其它字符的个数。
14. 用冒泡法对数组a 之中的10个数进行由小到大的排序。
15.16. 编写函数fun 求1!+2!+3!+ …… +n!的和,在main 函数中由键盘输入n 值,并输出运算结果。
请编写fun 函数。
17. 从键盘为一维整型数组输入10个整数,调用fun 函数找出其中最小的数,并在main 函数中输出。
+-+-≈71513114ππ18.从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。
19.对任意输入的 x,用下式计算并输出 y 的值。
5 x<10y= 0 x=10-5 x>1020.用do-while语句求1~100的累计和。
21.求一个四位数的各位数字的立方和.22.求1到1000之间的偶数之积。
23.找出一批正整数中的最大的偶数。
24.求5行5列矩阵的主、副对角线上元素之和。
25.计算n门课程的平均值,计算结果作为函数值返回。
一、选择题1.语句int a=10,*point=&a; D 其值不为地址。
A. pointB. &aC. &pointD. *point2.若p为指针变量,y为变量,则y = *p++;的含义是 A A.y=*p;p++ B.y=(*p)++ C.y=p;p++ D.p++;y=*p 3.语句char str[]=”visual C++”;char *p=str;则p的值为 BA. ”visual C++”B.str的首地址C. \nD.”v”4.设有说明语句char *s[]={“student”,”Teacher”,”Father”,”Month”}, *ps=s[2];执行语句:printf(“%c,%s,%c”,*s[1],ps,*ps);则输出为AA.T,Father,FB.Teaher,F,FatherC. Teacher,Father,FatherD.语法错,无输出5.下列说明或赋值语句,不正确的是 CA. char *p;p=”Visual C++”;B. char p1[12]={‘v’,’i’,’s’,’u’};C. char p2[12];p2=”Visual C++”D. char p3[]=”Visual”;6.现有int b[3][4],*p;p=(int *)b;若要指针p指向b[2][3],以下正确的是 BA.p+=3*4+3B.p+=2*4+3C. p+=(3*4+3)*sizeof(int)D.p+=(2*4+3)*sizeof(int)7.语句int i,*p1,**p2;以下语句语法不正确的是 BA.p1=&i;B. p2=&i;C.p2=&p1;D.i=’\0x23’;8.如下图结构体说明和变量的定义,p指向a,q指向变量b.下面不能..把结点b连接到结点a之后的语句是 BC. p->next=&b;D.(*p).next=q;9.下面正确的语句是 AA. int a[3][4],(*p)[4]; p=a;B. int a[3][4],*p[4]; p=a;C. int a[3][4],*p; p=a;D. int a[3][4],**p;*p=a;10.以“追加”方式打开文本文件a:\aa.dat,下列语句中哪一个是正确的是 BA.fp=fopen("a:\\aa.dat","ab");B. fp=fopen("a:\\aa.dat","a");C. fp=fopen("a:\\aa.dat","r+");D. fp=fopen("a:\\aa.dat","w");11.设有函数定义:int f1(void){return 100,150;}调用函数f1()时, BA.函数返回值100B. 函数返回值150C. 函数返回二个值100和150D. 语句return 100,150;语法错.12.数组作为函数的形参时,把数组名作为实参,传递给函数的是 AA.该数组的首地址B. 该数组的元素个数C. 该数组中的各元素值D. 该数组的大小13.执行以下语句序列:则 Aenum {Sun,Mon,Tue,Wed,Thu,Fri,Sat}c1,c2; //Ac1=Mon; //Bprintf(“%d”,c1);A.输出1B.输出2C.输出0D. B行语法错14.执行以下语句序列:则 Cchar *p1=”Speaking”; //Achar *p2=”English”; //Bchar *p3=”a piece of cake”; //Cchar *str[]={p1,p2,p3}; //Dprintf(“%c”,*(str[0]+1));A.输出EnglishB.输出SpeakingC.输出pD. D行语法错二、填空题1.(2*2分=4分)下面程序的运行结果为16 、 2void main( ){static int a[3][2]={{12},{14,16},{1,2}};int *p=a[1];printf(“%d\n”,*(p+1));printf(“%d\n”,*(p+3));}2.(2*2分=4分)若有以下程序段,则*(*(b+2)+1)的值为11 ,*(*(p+1)+1)的值为7static int b[3][2]={1,3,5,7,9,11};int (*p)[2];p=b;3.(1*4分=4分)下面程序的运行结果为26#include<stdio.h>void sub(int *x,int i,int n){if(n<=i)sub(x,i,3*n);*x+=n++; //相当于*x=*x+(n++)}void main( ){int x=0;sub(&x,12,2);printf(“%d”,x);}4.(2*2分=4分)以下程序运行结果为_ Hello,world _、ello,world void main(){char *p,*q;char str[]="Hello,World\n";q = p = str;p++;printf(“%s\n”,q);printf(“%s\n”,p);}5. (1*4分=4分)以下程序运行结果是__121232343454_________ void main(){short ar[5]={1,2,3,4,5 };short * par=&ar[1];int i;for(i=0; i<4; i++){printf(“%d %d %d”,ar[i],par[i],*(ar+i));}}6.(2*2分=4分) 以下程序运行结果是__200 100_____void swap2(int *x,int *y){int t;t=*x;*x=*y;*y=t;}void main( ){ int a=100,b=200;swap2(&a,&b);printf(“%d\t%d”,a,b);}7.(3*2分=6分)void fun(int n, int *s){ int f1,f2;if(n= =1||n= =2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=2*f1+f2+1;printf(“%d\t%d\n”,f1,f2);}}void main( ){ int x;fun(4,&x);printf(”x=%d\n”,x);}程序输出的第一行是1 1 第二行是4 1 最后一行是x=108. (3*2分=6分)void f(int *q1,int *q2,int *q3){*q3=*q1+*q2;}void main( ){ int i,j,a[3][3]={1,1},*p1=a[0],*p2=a[0]+1,*p3=a[0]+2;for(i=2;i<9;i++)f(p1++,p2++,p3++);for(i=0;i<3;i++){ for(j=0;j<3;j++)printf(“%d”,a[i][i]);printf(’\n’);}}程序输出的第一行是111 第二行是555 最后一行是343434 9.(2*3分=6分)int f(int x,int y){return x*y;}void main( ){ int i,j,(*fun)(int,int);fun=f;for(i=1;i<4;i++){ switch(i){case 1:case 2: j=(*fun)(i,i+1);break;case 3: j=(*fun)(i-1,i+2);break;}printf(”j=%d”,j);}}程序输出的第一行是j=2 第二行是j=6 最后一行是j=10三、完善程序1.(2*3分=6分)以下min 函数的功能是:在非空单向链表中查找结点数据域为最小的值,并作为函数返回值.链表如下.struct NODE{int data;NODE *next;};int min(NODE *first){NODE *p;int m;p=first;m=p->data;for(p=p->next;p!=NULL;p= p->next)if(m> p->data)m=p->data;return m;}2.(3*2分=6分)以下程序求二维数组的平均值float average(float (*p)[4],int n){float sum=0;for(int i=0; i<n ;i++){for(j=0;j<4;j++)sum+= (*p)[j] 或 *(*p+j) ;p++;}return sum/(n*4);}void main( ){ float score[3][4]={{56,65,70,76},{89,97,52,81},{90,99,91,86}};printf(”平均值=%f ”,average(score, 3 ));}3. (2*3.5分=7分)以下程序实现将以L 为头指针的链表逆置(设结点个数n>2),即将链表头当链表尾,链表尾当链表头。
一、顺序结构1.从键盘输入一个大于0的实数,编程计算并输出以该数位半径的圆面积、圆周长及球体积(取圆周率为3.14)要求输出时有适当的文字说明测试数据:输入2.5输出圆周长15.700000 圆面积19.625000 球体积为65.4166672.从键盘输入两个大于0的实数,编程计算并输出以其为长和宽的矩形的周长和面积。
要求输出时有适当的文字说明测试数据:输入 1.2 3.5输出矩形周长9.400000 矩形面积4.2000003.从键盘输入一个华氏温度值,计算并输出其摄氏温度的值。
提示:摄氏温度c=(5/9)*(f-32) f为华氏温度测试数据:输入华氏温度值100输出摄氏温度值37.7777784.从键盘输入三个实数,计算并输出它们的和及积。
测试数据:输入 1.1 2.2 3.5输出和6.800000 积8.4700005、从键盘输入三个整数,计算并输出它们的和及平均值测试数据:输入 2 5 7输出和14.000000 平均值4.6666676、输入一个三位数,依次输出该数的符号和百位、十位、个位数字。
测试数据:输入-752输出和符号- 百位7 十位5 个位2二、选择结构1.从键盘输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其对应小写字母;如果是数字输出数字本身;如果是空格,输出“space”;如果不是上述情况,输出“other”。
2.从键盘输入三个实数a、b、c,输出其中最大的数。
测试数据:输入5.3 6.5 2.1输出最大数6.53.从键盘输入一个正整数,判断它能否被 3或者被 5整除, 如至少能被这两个数中的一个整除则输出“yes”,否则输出“no”。
测试数据:(1)输入12 输出yes(2)输入16 输出no4.从键盘输入1到7之间的某个正整数,输出表示一星期中相应的某一天的英文单词:Monday、 Tuesday等等,用switch语句做。
测试数据:输入7输出Sunday5.从键盘输入一百分制成绩(实数),将其转换为成绩等级并输出:大于等于90分为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
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. 编写一个函数,通过指针参数修改传入的字符串。
(1)C语言中下列叙述正确的是________。
A)不能使用do…while语句构成的循环B)do…while语句构成的循环,必须用break语句才能退出C)do…while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do…while语句构成的循环,当while语句中的表达式值为零时结束循环答案:D评析:选项A是错误的,c语言支持d0…while语句;选项B是错误的,do...while 构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;选项c 也是错误的。
(2)以下选项中属于C语言的数据类型是________。
A)复数型 B)逻辑型 C)双精度型 D)集合型答案:C评析:c语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类。
其中,基本类型分为整型、字符型、实型三类。
实型又称浮点型,包括单精度型和双精度型两种类型。
(3)在C语言中,不正确的int类型的常数是________。
A)32768 B)0 C)037 D)0xAF答案:A评析:c语言中int类型的常数的范围是:-32768~32767。
c整常数可用三种形式表示:十进制整数,八进制整数,十六进制整数。
选项A超出范围,不正确。
(4)以下程序输出的结果是________。
#include<stdio.h>#include<stdlib.h>main(){int a=4294967295;printf("%d %u",a,a);system("pause");}A)-1 -1 B)42949672954294967295C)-1 4294967295D)4294967295–l答案:C评析:printf函数中不同类型的数据用不同的格式字符,其中%d是按整型数据的实际长度输出十进制整数。
变量a=4294967295以%d格式输出时溢出输出值为该数的补码值,即-1;%u用来输出unsigned型数据,无符号整型变量的数值范围为0~4294967295,所以变量a=4294967295以%u格式输出的值为4294967295。
(5)下列描述中不正确的是________。
A)字符型数组中可以存放字符串B)可以对字符型数组进行整体输入、输出C)可以对整型数组进行整体输入、输出D)不能在赋值语句中通过赋值运算符”=”对字符型数组进行整体赋值答案:C评析:c语言规定只能逐个引用数组元素而不能一次引用整个数组。
字符数组的输入、输出可以将整个字符串一次输入或输出。
所以,选项c的说法是不正确的。
(6)以下程序的输出结果是________。
#include<stdio.h>#include<stdlib.h>main(){int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf("%d",p[i]);system("pause");}A)5 2 B)5 l C)5 3 D)9 7答案:C评析:题中*p=&x[1][1];是指将数组x的数组元素x[1][1]的地址赋值给指针变量p,使p指向x[1][1]这个数组元素,那么p[0]即为指针变量p当前所指向的数组元素x[1][1]的值。
(7)下列可用于C语言标识符的一组是________。
A)voidWORDdefine B)a 6$sysForC)2asizeofabc D)Int define sizeof答案:D评析:c语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
注意,大写字母和小写字母被认为是两个不同的字符。
C语言中的关键字不能用作标识符。
(8)以下程序的运行结果是__________。
#include<stdio.h>#include<stdlib.h>main(){int a[]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=a+5,*q=NULL;*q=*(p+5);printf("%d %d\n",*p,*q);}A)运行后报错B)6 6C)6 12 D)5 5答案:A评析:题目中没有给q分配存储单元,只是简单的给它赋了一个值,所以程序的运行结果是6 ll NULL pointer assignment,也就是运行后报错。
(9)以下说法中正确的是_________。
A)C语言程序总是从第一个函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义C)c语言程序总是从main()函数开始执行D)c语言程序中的main()函数必须放在程序的开始部分答案:C评析:c语言的程序是由主函数main()开始运行,由主函数来调用其他函数,函数必须是并列的,定义后使用,不能在一个函数中定义其他函数,main()函数不一定要放在程序的开始部分,故选c。
(10)有如下程序#include<stdio.h>#include<stdlib.h>float fun(int x,int y){return(x+y);}main(){int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),(a-c)));system("pause");}程序运行后的输出结果为__________。
A)编译出错 B)9 C)21 D)9.0答案:B评析:本题中先执行(int)fun(a+c,b)函数的调用,值为整型数值15;然后再执行fun(15,(a-e))函数调用,值为单精度实型数值9.000000。
输出为%3.0f,即有效数长度为3,没有小数位数,所以最后结果为9。
(11)能正确表示a和b同时为正或同时为负的逻辑表达式是_________。
A)(a>=0‖b>=0)&&(a<O‖b<O)B)(a>=0&&b>=O)&&(a<0&&b<O) C)(a+b>0)&&(a+b<=0) D)a*b>0答案:D评析:选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是0,因为没有满足条件的值;选项c中,表达式表示的是0,因为没有满足条件的值;选项D表示的是a和b为同号。
(12)若己定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[l]地址的表达式是__________。
A)p+l B)a+l C)a++ D)++p答案:C评析:数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能使这个指针常量“移动”,指向数组的其它元素。
(13)以下程序的输出结果是__________。
#include<stdio.h>#include<stdlib.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);system("pause");}A)-1 l B)0 lC)1 0 D)0 0答案:C评析:逻辑运算符的优先次序如下:!(非)→&&(与)→‖(或),但本题需特别、注意的是短路的概念。
(14)下面程序的输出结果是__________。
#include<stdio.h>#include<stdlib.h>#define P1(x)printf(x)void main(){char d[]="p";P1(d);P1("d");system("pause");}A)pd B)d”d”C)”p”d D)”p””d”答案:A评析:带参数的宏定义的一般形式为:#define宏名(参数表)字符串程序中的Pl(d);经宏置换后为printf(d);,所以输出字符串p;程序中的Pl(“d”);经宏置换后printf(“d”)。
(15)以下选项中,能定义s为合法的结构体变量的是__________。
A) typedefstructabc{ double a;charb[10];}s;B) struct{ double a;char b[10];}s;C) struct ABC{ double a;char b[10];}ABC s;D) typedef ABC{ double a;char b[10];}ABC s;答案:B评析:定义一个结构体类型的变量,可采用三种方法:①先定义结构体类型,再定义变量名;②在定义类型的同时定义变量:③直接定义结构类型变量,即不出现结构体名:选项B符合第三种定义方法。
(16)请读程序:#include<stdio.h>#include<stdlib.h>#include<string.h>main(){char*s1="AbCdEf", *s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));system("pause");}上面程序的输出结果是________。
A)正数 B)负数 C)零 D)不确定的值答案:A评析:strcmp(X1,X2)是串比较函数,本题中“s1”、“s2”分别表示这两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,则*sl为“bCdEf’’,*s2为“B”。
在字符串比较中,大小的确定是各个字符串相应位置字符的ASCII码值的大小决定的, sl>s2,返回值为正数。
(17)请读程序:#include<stdio.h>#include<stdlib.h>main(){int a=5,b=7,c=9;printf("%d,%d,",a,b,c);printf("%d,%d,%d",a,b);system("pause");}上面程序的输出结果是________。
A)5,7,9,5,7 B)5,7,5,7 C)5,7,不定,7,9 D)5,7,5,7,不定答案:D评析:printf函数按格式控制符的个数输出表列中对应的数据,若输出表列的个数大于格式控制符个数,则输出与格式控制符对应的输出表列的数据,输出表列中多的则省略;若格式控制符个数大于输出表列的个数,则输出与格式控制符对应的输出表列的数据,格式控制符多的部分输出的数据是随机的。