1 / 16
文档名称:

c语言习题及答案.pdf

格式:pdf   大小:589KB   页数:16页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c语言习题及答案.pdf

上传人:小屁孩 2024/4/14 文件大小:589 KB

下载得到文件列表

c语言习题及答案.pdf

相关文档

文档介绍

文档介绍:该【c语言习题及答案 】是由【小屁孩】上传分享,文档一共【16】页,该文档可以免费在线阅读,需要了解更多关于【c语言习题及答案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。****题1】一、()函数,所以main函数必须放在程序的开头。错误:main函数可以放在程序的任何位置。并不限定在程序的开头。定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。错误:不可以交叉出现,数据说明部分在执行语句部分的前面。scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。正确注释内容太多会影响程序的执行效率。错误:不会影响程序的执行效率。因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。<二、编程题输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。提示:定义圆的半径r,圆的周长:2**r,输出结果保留2位小数可以用%.2f输入两个整数,输出其中最大者。提示:模仿例****题2】一、单项选择题下面四个选项中,均是不合法的用户标识符的选项是(C)。A)BA、x_0、do-B)float、1a0、_YC)x-y、goto、123D)_123、tmp、CHAR下列选项中不正确的常数的选项是(D)。A)0x12FB)C)D)0388下面正确的字符常量是(B)。:..A)"a"B)'\'C)"\n"D)"\376"下面正确的字符串常量是(C)。A)'a'B)'376'C)"\n"D)376表达式'A'+4*'b'的正确结果是(B)。~A)67B)C)不确定D)67L执行printf("%x",100);后的输出结果是(C)。A)100B)0x100C)0X64D)64存储字符串"\\'abc\376"需要的字节数是(D)。A)11B)13C)6D)7****题3】一、计算题+7%3*11%2/4(答案:5/2+2+7%6(答案:`=12,a*=2+3(答案:a=60)=3,b=4,c=5,a+b>c&&b==c(答案:0)3>53:5<825:40(答案:25)设a=1,b=2,c=3,d=4,m=n=1,有表达式(m=a>b)&&(n=c>d),计算表达式后m,n的值(答案:m=0,n=1)设intb=7;floata=,c=;求下面表达式的值。a+(int)(b/2*(int)(a+c)/2)%4(答案:二、单项选择题8xy若有代数式,则不正确的C语言表达式是(C)。bcA)x/b/c*y*8B)8*x*y/b/c¥C)8*x*y/b*cD)x*y/c/b*8有如下类型说明::..intk,a,b;unsignedlongw=8;doublex=则以下不符合C语言语法的表达式是(A)。A)x%(-3)B)w*=-2C)k=(a=6,b=4,a-b)D)a*=a+=a-=(b=4)*(a=3)有如下类型说明:floatn;·intm;则以下能实现将n中的数值保留小数点后两位,第三位四舍五入的表达式是(B)。A)n=(n*100+/B)m=n*100+,n=m/C)n=n*100+D)n=(n/100+*设k=7,x=12;则下列表达式值为3的是(D)。A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)已知m=48,ch='a',n=0;则表达式(m>=n&&ch<'b'&&!n)的值是(B)。A)0B)1C)真D)非0下面哪个式子在b为奇数时结果为假(C)。.A)a%2==1B)!(a%2==0)C)!(a%2)D)a%2执行printf("%f",(x=3,y=5,x>y1:);后的输出结果是(D)。A)语法错误B)1C)D)能表示条件0≤x≤100的表达式是(D)。A)0<=x<=100B)x>=0,x<=100C)0≤x≤100D)x>=0&&x<=100判断char型变量ch为数字的正确表达式是(B)。A)ch>="0"&&ch<="9"B)ch>='0'&&ch<='9'C)'0'≤ch≤'9'D)ch>='0'||ch<='9'三、编程题(应用条件运算):../输入一个整型成绩x,如果大于等于60分,输出“pass”,否则输出“fail”。提示:printf("%s",x>60"pass":"fail");输入一个年份y,如果是闰年,输出“yisaleapyear”,否则输出“yisnotaleapyear.”提示:printf("%dis%s",y%4==0&&y%100!=0||y%400==0"aleapyear.":"notaleapyear.");输入三条边a,b,c,如果它们能构成一个三角形,输出“Yes”,否则输出“No”。提示:printf("%s",a+b>c&&a+c>b&&b+c>a"Yes":"No");输入三个数x,y,z,按从小到大的输出结果。提示:分别用max0,min0代表最大、最小值,mid0表示中间值。max0=(x>yx:y)>z(x>yx:y):z;max0=(x<yx:y)<z(x<yx:y):z;mid0=x+y+z-max0-min0****题4】编程实现,输入一个整数,判断它是否为偶数,并显示相应的信息。提示:x代表输入的整数,if(x%2==0)printf("\neven");elseprintf("\nodd");编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。提示:x,y代表平面坐标,if(x*x+y*y==1)printf("\nYes");elseprintf("\nNo");编程实现,输入一个成绩等级(A-E),显示相应的百分制成绩段。A:90-100B:80-89C:70-79|D:60-69E:<60提示:chargrade;if(grade=='A')printf("\n90-100");elseif(grade=='B')printf("\n80-89");....:..写出下面程序的运行结果:#include<>main(){:inta=-1,b=1,c=5;switch(a>0){case1:switch(b-2<0){case1:printf("&");break;case2:printf("*");break;}case0:switch(c==5){case0:printf("!");break;case1:printf("#");break;default:printf("%%");%}default:printf("@");}}运行结果:&#@编程实现,使用循环结构打印以下图案。****************【*********:..提示:输出时,本图案要按向上三角形和向下三角形进行输出。每行输出中包括空格输出,‘*’号输出。输出空格和‘*’号个数要与行循环控制变量关联起来****题5】填空题:若有定义inta[3][5];则排列在数组中的第9个元素是(a[1][3])。strlen("Howareyou\n")的值是(12)。('\0')。'写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是(floats[6]={0};)。strcmp("how","How")的值是(32或>0)。选择题:若有ints[4]={1,2,3,4};,则s[s[0]+2*s[2]-s[3]]的值是(D).2C对数组的描述正确的是(B)。,但数组元素的类型可以不同。,但数组元素的类型必须相同。,但数组元素的类型可以不同。,但数组元素的类型必须相同。【对字符串"Boy"进行完整赋值的操作是(B)。[3]={'B','o','y'};[]="Boy";[3]={"Boy"};s[3];s="Boy";在c语言中引用数组元素时,其数组下标的数据类型允许是(C)。(B)。inta[10]={6,7,8,9,10};:..[1]至a[5][0]至a[4]***@[6]至a[10],所以此语句不正确三、看程序写结果main(){inta[3][3]={{1,0,2},{2,2},{0,2}},c[3][3],i,j;for(i=0;i<3;i++){for(j=0;j<3;j++){:c[i][j]=a[a[i][j]][a[j][i]];printf("%5d",c[i][j]);}}printf("\n");}运行结果为:220002201当运行以下程序时,从键盘输入:Ah2MAA3ha,请写出输出结果。main(){chars[80],c='a';!inti=0;scanf("%s",s);while(s[i++]!='\0')if(s[i]==c)s[i]=s[i]-32;elseif(s[i]==c-32)s[i]=s[i]+32;:..puts(s);}运行结果为:AH2Ma四、编程题用数组方法定义一个矩阵,求其转置矩阵。;提示:已知a[3][2],转置后的结果存放在b[2][3];则b[j][i]=a[i][j];从键盘输入9个不同的整数,组成三行三列的二元数组,找出每一列中的最大元素,并输出其行、列下标。提示:已知a[3][3],max,row,col分别用来存放一列的最大值,行下标和列下标。利用一个二维数组,打印出以下杨辉三角形,要求打印出10行。11112113311464115101051—∶∶提示:定义一个10行10列的二维数组,并且通过两重循环对第1列所有元素赋值1,主对角线也赋值。根据a[i][j]=a[i-1][j]+a[i-1][j-1]求出其它元素的值。把30个学生的学号和两门课程的成绩输入到一个二维数组中,求出的每个学生的两门课程的总成绩也放于此数组中,请按学生总分的高低打印出成绩单(包括学号、两门课程成绩和总分)。提示:定义一个30行4列的数组。为了先快速测试算法是否正确可以定义一个3行4列的数组,并且通过赋初始值,减少调试程序时反复输入数据的麻烦,算法调试成功后在加上输入数据部分。实现从高到低打印出成绩可以通过排序(降序);也可以通过另外定义1个一维数组作为索引,再通过索引打印成绩。从键盘上输入一串字符,将其逆向显示。:..提示:首先计算字符串的长度,在从右边逐一显示字符,直到下标等于0为止****题6】。。,即声明部分和执行部分。为了保证被调用函数不返回任何值,其函数定义的类型应为void。若一个局部变量的存储类型是static,则该变量的值在程序执行完成时被释放。预处理命令#include的作用是文件包含。定义一个宏,功能是判断两个数是否相等,相等为1,不等为0。#defineEQU(a,b)(a)==(b)1:0变量的存储类别有自动型、静态型、寄存器型、和外部类型共4种,它们分别用auto、static、register、extern标识。选择题{下述函数定义形式正确的是(C)。(intx;inty)(intx,y)(intx,inty)(x,y:int)关于函数参数,说法正确的是(A)。,不占用内存单元用数组名作为函数的实参时,传递给形参的是(A)。):..复合语句中定义的变量的作用范围是(D)。(D)确定。,若要定义一个只允许本源文件所有函数使用的全局变量,其他文件中不允许使用,则该变量需要使用的存储类别是(D)。[若定义的函数没有参数,则函数名后的圆括号可以省略。(′)函数的函数体可以是空语句(?)。只有main函数才能调用其他函数。(?)语句中表达式的类型必须与函数定义的类型一致。(′)函数的实参和形参可以是相同的名字。(?)函数调用中,形参与实参的类型和个数必须保持一致。(?)外部类型的变量只能定义一次,但可在不同地方声明多次。(?)外部类型的变量作用范围大,编程中应多用外部变量。(′)预处理命令行必须以#开头,且最后要用分号结尾。(′)宏命令的处理占用编译时间,而不占用运行时间。(?);看程序写结果intfun(intn){intf=1;f=f*n*2;return(f);:..}main(){inti,j;-for(i=1;i<=5;i++)printf("%d\t",fun(i));}程序运行结果:246810intx1=30,x2=40;main(){intx3=10,x4=20;sub(x3,x4);|sub(x2,x1);printf("x1=%d,x2=%d,x3=%d,x4=%d",x1,x2,x3,x4);}sub(intx,inty){intx1=x;x=y;y=x1;}程序运行结果:x1=30,x2=40,x3=10,x4=20?#defineA4#defineB(x)A*x/2main():..{floatc,a=;c=B(a);printf("c=%",c);}程序运行结果:c=编程题、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。提示:最大公约数可以采用“辗转相除法”,最小公倍数将两数乘积除于最大公约数。“辗转相除法”:设两个数分别用m,n表示且m>n,临时变量t,t=m%n;m=n;n=t;直到n等于0。有3′3的矩阵A和3′2的矩阵B,编制一个函数,求C=AX′B。提示:参照****题,A,B,C三个数组作为函数参数。编写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。提示:一维字符数组用来存放字符串,并且将它传递到函数,在函数中通过元素值交换来完成反序存放。编制一个函数,由参数传入一个字符串,统计此字串中字母、数字、和其他字符的个数,在主函数中输入字符串并显示统计结果。提示:参照例题****题7】.语句inta,*p=&a;的含义是什么答:定义整型变量a,和整型指针变量p,并且p指向变量a。写出下列数组元素的指针法表示。(1)num[3](2)data[4][2]答:(1)*(num+3)(2)*(*(data+4)+2)写出下列数组元素的下标法表示。(1)*(*(a+1)+2)(2)(*(a+3))[4](3)*(a[2]+5):..答:(1)a[1][2](2)a[3][4](3)a[2][5]分析程序,写出程序输出结果。(1)main()({inta[5]={1,2,3,4,5};int*p=&a[1];printf("%d",p[2]);}输出结果:4(2)main(){chara[]="IloveChina!";char*p=a;p=p+2;printf("%s",p);…}输出结果:loveChina!(3)main(){inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int(*pa)[4]=a;pa++;printf("%d",*(*(pa+1)+2));}输出结果:11(4)main()¥{char*str[]={"zhao","qian","sun","li"};inti;for(i=0;i<4;i++)printf("%c",str[i][0]);:..}输出结果:zqsl(5)voidsub(intx,inty,int*z){*z=y-x;}main(){、inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%4d,%4d,%4d\n",a,b,c);}输出结果:-5,-12,-7(6)#include<>fun(char*s){char*p=s;|while(*p)p++;return(p-s);}main(){char*str="abcd";inti;i=fun(str);printf("%d",i);}输出结果:4!定义语句int*f();和int(*f)();的含义分别是什么:..答:int*f();表示函数返回一个整型指针;int(*f)();表示f是函数指针,指向整型函数。在二维数组中存放有4个学生,5门课程的成绩,用指针编程实现:(1)求出每门课程的平均成绩。(2)求每个学生的总成绩和平均成绩。(3)在屏幕上列出各课成绩在85分以上的学生名单。(4)在屏幕上列出补考通知单。提示:(1)(2)(3)略,(4)根据成绩小于60分,由于有5门课程的成绩,所以需要使用elseif结构。输入一个字符串,内有数字和非数字字符,例如:a345dsaf412x371+89tah74编程将其中连续的数字作为一个证书,一次存放到一个数组d中,例如:345放在d[0],412放在d[1],......。统计共有多少个证书,并输出这些整数。提示:从字符串中提取"345":t=ch-'0';t=t*10+(ch-'0');t=t*10+(ch-'0');t='3'-'0'=3;t=3*10+('4'-'0')=34;t=34*10+('5'-'0')=345编写把十六进制数字字符串变换成整数的函数:inthtoi(char*s)。提示:同编写把十进制整数变换成二进制数字字符串的函数:char*itob(intn)。提示:同用字符指针实现字符串拷贝功能,不能使用库函数。提示:定义两个字符数组a,b,复制操作b[i]=a[i];用字符指针实现字符串连接功能,不能使用库函数。提示:定义两个字符数组a,b,先将下标定位到a的末尾'\0',在将b的元素赋值给a的对应元素,注意:别忘了添加字符串结束标志'\0'。用指向指针的指针的方法对5个字符串排序并输出。提示:一个指针数组和一个指向指针的指针变量****题8】定义复数结构体,并写出复数的加、减、乘、除、的计算函数。提示:复数包括两个部分:实部和虚部。:..定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天。注意闰年问题。提示:计算该日是本年中的第几天,是从本年1月1日起。有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求在屏幕上显示出3门课程的平均成绩,以及最高分数的学生的数据(包括学号、姓名、3门课程成绩、平均分)。提示:定义结构体数组。最高分数是指每个学生3门课程的平均分最高。编写求链表长度的函数。提示:从链表指针头往表尾移动计算结点的个数。已有两个链表a、b,每个链表的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。提示:可以定义一个新的链表,先从链表a,再从链表b中取出结点,依次按学号升序插入到新的链表中。利用节中的structcard结构编写一个程序实现5个人员数据输入和在屏幕上显示的功能:如果job项为't',则在position项为教师的职称(助教、讲师、副教授、教授);如果job项为's',则class项为学生的班级号,如501。提示:在结构体中嵌入共用体position,根据job成员确定position的具体值。口袋中有红、黄、兰3中颜色的球若干个。每次从口袋中取出1个球,根据颜色的不同,输入相应的颜色英文字符串。要求用枚举变量实现。提示:参照例。