东大《C语言及程序设计》_第1页
东大《C语言及程序设计》_第2页
东大《C语言及程序设计》_第3页
东大《C语言及程序设计》_第4页
东大《C语言及程序设计》_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程名称:C课程名称:CXPAGE42/32一、 简答题

X复习题1.、分析下面程序的执行过程,给出输出结果。main(){int a=x<z?y:z;printf("%d",a);}答:3。a=x<z?y:z判断方式为:若x小于z则将a赋值y;否则,则将a赋值z,题目中x的值为2,z的值为4,x小于z,因此将a赋值3。2、分析下面程序的执行过程,给出输入55时的输出结果。main(){ int a;int scanf("%d",&a);if(a>50)printf("%d",b);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}答:335555a=55,a50printf("%d",b),输出bb33,;a40,输出aa55;a30,输出aa335555二、编程题1、编写程序,由键盘输入两个整数a、b,求两数的平方和并输出。答:#include<stdio.h>intmain(viod){inta,b,s;printf("Pleaseinputa,b:\n");scanf("%d%d",&a,&b);s=a*a+b*b;printf("Theresultis%d\n",s);return0;}2、从键盘输入十个整数,统计其中正数、负数和零的个数,并在屏幕上输出。答:voidmain(){inta,i,p=0,n=0,z=0;printf("Pleaseinputnumber");for(i=0;i<10;i++){scanf("%d",&a);if(a>0)p++;elseif(a<0)elsez++;}printf("正数:%5d,负数:%5d,零:%5d\n",p,n,z);}3、从键盘读入三条边,判断能否组成三角形,若可以组成三角形,则输出此三角形的面积。答:#include<stdio.h>#include<math.h>voidmain(){floata,b,c,s,area;printf("输入三角形的三边:");scanf("%f%f%f",&a,&b,&c);if((b+c)>a&&(a+c)>b&&(a+b)>c){s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("三角形面积为:%.2f\n",area);}elseprintf("这三边不能构成三角形\n");}4、编写函数fu(,将十进制正整数转换成k答:#include<stdio.h>fun(){inti,m,n,k;printf("请输入十进制正整数:");scanf("%d",&n);printf("请输入进制数:");scanf("%d",&k);for(;;){i=n%k;m=n/k;if(i<k){printf("%d\n",k);break;}k=i;printf("%d",}}5、初始化一个4*5的矩阵,求其中最大元素和最小元素所在的行号,对调最大最小元素,输出行号、列号、对调后的矩阵。答:#include<stdio.h>main(){intstr[4][5]={{2,1,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};inti,j,max,min,a,b,c,d,temp;max=str[0][0];min=str[0][0];for(i=0;i<4;i++){for(j=0;j<5;j++){if(str[i][j]>max){max=str[i][j];a=i;b=j;}}for(j=0;j<5;j++){if(str[i][j]<min){min=str[i][j];c=i;d=j;}}}str[a][b]=min;str[c][d]=max;for(i=0;i<4;i++}for(j=0;j<5;j++)printf("%d",str[i][j]);printf("\n");}c语言及程序设计复习题B一、简答题1、说明算法可以采用哪几种控制结构组合。答:算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的执行顺序,也直接反映了算法的设计是否符合结构化原则。一个算法一般可以用顺序、选择、循环三种基本控制结构,通过顺序或嵌套组合而成。2、c答:函数是c任何函数(包括主函数main())都是由函数说明和函数体两部分组成。其一般结构如下:[函数类型]函数名(函数参数表){说明语句部分;执行语句部分;}3、分析下面程序的执行过程,给出输出结果。main(){int a=x<z?y:z;printf("%d",a);}答:3。a=x<z?y:z判断方式为:若x小于z则将a赋值y;否则,则将a赋值z,题目中x的值为2,z的值为4,x小于z,因此将a赋值3。4、分析下面程序的执行过程,给出输入55时的输出结果。main(){ int a;int scanf("%d",&a);if(a>50)printf("%d",b);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}答:335555a=55,a50printf("%d",b),输出bb33,;a40,输出aa55;a30,输出aa3355555、分析下面程序的执行过程,若键盘输入为5,给出输出结果。main(){ int switch(x){case0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d",a,b);}答:a=2, b=16、分析下面程序的执行过程,给出结果说明breakcontinuemain(){ inta=1,b;for(b=l;b<10;b++){ if(b<7){a=1;continue;}if(b==8) a++;if(b>8) a++;}printf("%d\n",a);}答:47、分析下面程序的执行过程,给出输出结果。main(){ inta=10 if(a++>10)print("%d\n",++a);elseprint("%d\n",a--);}答:108、分析下面程序的执行过程,给出输出结果。main(){ intdo{if(i%2){i++;continue;}i++;s+=i}while(i<7)print("%d\n",s);};答:16二、编程题1、输入正整数n,输出n行n列的空心四边形图案。以下是n=4的图案* * * ** ** ** * * *答:#include<stdio.h>intmain(){inti,j,n;printf("请输入scanf("%d",&n);for(i=1;i<=n;{for(j=1;j<=n;j++)if(i==1||j==1||i==n||j==n)printf("*");elseprintf("");printf("\n");}return0;}2、有一个分数序列:2/1,3/2,5/3,8/5,13/820答:#include<stdio.h>int main(){int a,b,c,i;double a=2,b=1;for(i=0;i<20;i++){sum+=1.0*a/b;c=b;b=a;a=a+c;}printf("%.2lf\n",sum);return 0;}3、从键盘上输入一个百分制成绩S,按下列原则输出其等级:若成绩大于或等于90,则等级为A80,90B7080,则等级为C60,小70,则等级为D;60,则等级为E。答:#include<stdio.h>voidmain(){intdata;chargrade;printf("Pleaseenterthescore:");scanf("%d”,&data);switch(data/10){case10:case9:grade=’A’;break;case8:grade=’B’;break;case7:grade=’C’;break;case6:grade=’D’;break;default:grade=’E’;}printf("thegradeis%c”,grade);}C语言及程序设计复习题B一、简答题1、说明算法可以采用哪几种控制结构组合。1、算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的执行顺序,也直接反映了算法的设计是否符合结构化原则。一个算法一般可以用顺序、选择、循环三种基本控制结构,通过顺序或嵌套组合而成。2、c语言程序的基本单位是什么?它的结构又如何?2、函数是c语言程序的基本模块单元。任何函包括主函数main())都是由函数说明和函数体两部分组成。其一般结构如下[函数类] 函数(函数参数){ 说明语句部分;执行语句部分;}二、编程题1、编写程序,输出从公元2010元至2100年所有闰年的年号。每输出3个年号换一行。【参考答案】#include“stdio.h”main(){ intyear,I=0;printf(“\n20102100for(year=2010;year<=2100;){if((year%4==0&&year%100!=0)||year%400==0){printf(“\t%d”,year);i++;if(i%3==0)printf(“\n”);}year++;}}2153=13+53+33。【参考答案】#include<stdio.h>main(){ inti,j,z,n;for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;z=n%10;if(i*100+j*10+z==i*i*i+j*j*j+z*z*z){ printf(“%5d”,n);}}printf(“\n”);getch();}3、编写函数fun,其功能是判断一个数是否为素数的函数,素数时返回1,否则返回0。【参考答案】/*1intsushuis(intm){intm;inti=2,t;for(;i<=m;i++)if(m%i==0&&i<m)if(m-i==0)t=1;elset=0;returnt;}4、从10个元素的数组中找到最小值,然后与数组的第一个元素对调。【参考答案】#include<stdio.h>main(){ inta[10]={1,22,4,96,88,17,5,39,-7,-2};intprintf(“\n”);for(i=0;i<=9;i++)printf(“%dprintf(“\n”);for(i=0;i<=9;i++)if(a[i]<a[min])min=i;{temp=a[0];a[0]=a[min];a[min]=temp;}for(i=0;i<=9;i++)printf(“%d”,a[i]);printf(“\n”);getch();}5、mscorefun数值返回主函数,并将低于平均分的分数存放在主函数定义的数组below5、【参考答案】#include"stdio.h"intfun(intscore[],intm,intbelow[]) scorem的元素逐个存放在below数组中/{ intfor(i=0;i<m;i++)aver+=score[i]; /*计算总分 */aver/=m; /*计算平均分*/for(i=0;i<m;i++) /* 逐个判断分数值if(score[i]<aver) /**/{ below[k]=score[i];/*存放到以below为首地址的数组中k++; /*统计低于平均分的人数*/}return/**/}main( ){ inti,n,below[9];intscore[9]={55,44,66,77,88,99,89,78,67};n=fun(score,9,below);/*调用函数,低于平均分的人数赋给n*/printf("\nbelowtheaverageare:");for(i=0;i<n;i++)printf("%4d",below[i]);/*输出below数组中n个值*/}C语言及程序设计复习题A一、简答题1、c语言中不同数据类型的数据在运算时所采用的规则有哪些?1、cint,float2、阐述算法的基本特征。2、一个算法,一般应具有以下几个基本特征。可行性、确定性、有穷性、一个输入、零个或多个输出。3、分析下面程序的执行过程,给出输入58时的输出结果。main(){ int a;if(a>50)printf("%d",a);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}3、如果a的输入值是58,通过执行三个判断语句,在每一个判断中,如果满足判断条件的话,就输出a,因为三次判断,条件都满足,所以三都次输出a,因此输出结果为585858。4main(){intdo{ printf("%d",x--);}while(!x);}4x3printf("%d",x--);时,由于X--的作用是先运算x,xl,所以,printfx3,12,!x一次。5、下面程序中循环几次?每次循环时i,j的变化如何?main(){int i,j;;printf("%d\n",j);}5For1具体情形如下:第一次当i=0i++,j+=ii=l,J=1;第二次当i=li++,j+=i,则i=2,j=3;第三次当i=2i++,j+=i,则i=3,j=6。之后退出循环。6、下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。根据题意,完善程序。intn=0,c;c=getchar();while(1】 {if( 【2】)n++;c=getchar();}6【】c!=’\n’ 】c>=’0’&&c<=’9’7、分析下面程序的执行过程,给出结果说明breakcontinuemain(){inta=1,b;for(b=l;b<10;b++){ if(a>=8) if(a%2==1){ a+=5;continue;}a-=3;)printf("%d\n",b);}7、结果为breakcontinue而break语句则是结束整个循环过程8f(intb[],intm,intn){inti,s=0;s=s+b[i];returns;)main(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf("%d\n",x);}8、本题中,主函数调用ffi=3,s=0+b[i]:4i5,仍然满足循环条件,进入第二轮循环,s=4+b[5]=4+6=107循环条件,退出循环,返回s10。二、编程题1、编写程序,由键盘输三个整数a、b、c,输出其中最大的数。1、【参考答案】#include“stdio.h”main(){ inta,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a>b)if(a>c)t=a;elset=c;elseif(b>c)t=b;elset=c;printf("%d\n",t);}2n!(n=1->20(即求1!+2!+3!+4!+5!…+20)2main(){ intn,i=1;longsum=0,s=1;scanf("%d",&n);while(i<=n){ s=s*i;sum=sum+s;i++;}printf("sum=%ld\n",sum);}3、编写函数fun,其功能是判断一个数是否为素数的函数,素数时返回1,否则返回0。3、【参考答案】/*1intsushuis(intm){intm;inti=2,t;for(;i<=m;i++)if(m%i==0&&i<m)if(m-i==0)t=1;elset=0;returnt;}C语言及程序设计复习题B二、简答题1、说明算法可以采用哪几种控制结构组合。1、算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的执行顺序,也直接反映了算法的设计是否符合结构化原则。一个算法一般可以用顺序、选择、循环三种基本控制结构,通过顺序或嵌套组合而成。2、c语言程序的基本单位是什么?它的结构又如何?2、函数是c语言程序的基本模块单元。任何函包括主函数main())都是由函数说明和函数体两部分组成。其一般结构如下[函数类] 函数(函数参数){ 说明语句部分;执行语句部分;}二、编程题1、编写程序,输出从公元2010元至2100年所有闰年的年号。每输出3个年号换一行。1、【参考答案】#include“stdio.h”main(){ intyear,I=0;printf(“\n20102100for(year=2010;year<=2100;){if((year%4==0&&year%100!=0)||year%400==0){printf(“\t%d”,year);i++;if(i%3==0)printf(“\n”);}year++;}}2153=13+53+33。2、【参考答案】#include<stdio.h>main(){ inti,j,z,n;for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;z=n%10;if(i*100+j*10+z==i*i*i+j*j*j+z*z*z){ printf(“%5d”,n);}}printf(“\n”);getch();}5、编写函数fun,其功能是判断一个数是否为素数的函数,素数时返回1,否则返回0。3、【参考答案】/*1intsushuis(intm){intm;inti=2,t;for(;i<=m;i++)if(m%i==0&&i<m)if(m-i==0)t=1;elset=0;returnt;}4、从10个元素的数组中找到最小值,然后与数组的第一个元素对调。4、【参考答案】#include<stdio.h>main(){ inta[10]={1,22,4,96,88,17,5,39,-7,-2};intprintf(“\n”);for(i=0;i<=9;i++)printf(“%dprintf(“\n”);for(i=0;i<=9;i++)if(a[i]<a[min])min=i;{temp=a[0];a[0]=a[min];a[min]=temp;}for(i=0;i<=9;i++)printf(“%d”,a[i]);printf(“\n”);getch();}5、mscorefun数值返回主函数,并将低于平均分的分数存放在主函数定义的数组below5、【参考答案】#include"stdio.h"intfun(intscore[],intm,intbelow[]) scorem的元素逐个存放在below数组中/{ intfor(i=0;i<m;i++)aver+=score[i]; /*计算总分 */aver/=m; /*计算平均分*/for(i=0;i<m;i++) /* 逐个判断分数值if(score[i]<aver) /**/{ below[k]=score[i];/*存放到以below为首地址的数组中k++; /*统计低于平均分的人数*/}return/**/}main( ){ inti,n,below[9];intscore[9]={55,44,66,77,88,99,89,78,67};n=fun(score,9,below);/*调用函数,低于平均分的人数赋给n*/printf("\nbelowtheaverageare:");for(i=0;i<n;i++)printf("%4d",below[i]);/*输出below数组中n个值*/}第一部分(填空题:按照C语言规定的用户标识符命名规不能出现在标识符中的()A.大写字母 B.连接符 数字字符 下划线答案:BA.B.C.D.计算机只能处理计算问题答案:A()是cA.C,JAVA B.C,BASIC C.C++.NET,ASP D.C,VB答案:B软件按功能可以分:应用软件、系统软件和支撑软或工具软)。下面属于应用软件的(A.编译程序 B.操作系统 C.教务管理系统 汇编程序答案:C以下选项中关于CA.所谓常量,是指在程序运行过程中,其值不能被改变的量B.常量分为整型常量、实型常量、字符常量和字符串常量C.常量可分为数值型常量和非数值型常量D.经常被使用的变量可以定义成常量答案:D下面描述中正确的是(。A.C语言提供了专门的输入/输出语句B.C语言调用输入/输出函数时需要使用include命令包含头文件C.C语言可以直接使用输入/输出函数D.输入/输出函数所在的头文件是stdlib.h答案:B假设有char型变量c1,c2c1=gatchar();c2=gatchar();printf(“c1=%c,c2=%c\n”,c1,c2);如果c1和c2的值分别为字符a和b,则从键盘正确的输入方式是(。ab<回> 回>b<回车>C.a<空>b<回> D.a<tab>b<回答案:A下面描述中正确的是(。printf(C.printf()函数输出列表项也可以是另一个printf()函数D.printf()函数的输出列表项之间用空格分隔答案:B假设有:inta,b;scanf("%d,%d",&a,&b);为了得到a和b分别为10和2,从键盘正确输入数据的是(A.10<空>20<回> B.10<回车>20<回车>C.10,20<回> D.10,20,<回>答案:C下面说法正确的是(。A.表达式计算时要考虑运算符的优先级和结合性B.表达式计算需要考虑运算符的优先级C.表达式计算时需要考虑运算符的结合性D.括号()可以改变运算符的优先级答案:A下面说法正确的是(。A.负数参与“/”和“%”运算时,其结果与C89或C99的标准有关B.C语言的“/”和“%”运算可以写成5/0或5%0的形式C.赋值运算要求他的左操作数可以是变量、常量或另一个表达式D.表达式(x=a>b)&&(y=c>d)是错误的写法答案:Aa;floatb;b=a=4.5;下面错误的描述是(。A.变量a的值是4 变量b的是4.0C.赋值表达式a=4.5的结果值是4 变量b的值是答案:D假设a,b,c,x,y均为int型,下面说法正确的是(A.表达式“a+=2”等价于表达式“a=a+2”B.表达式“a*=b+c”等价于表达式“a=a*b+c”C.表达式“y=x++”等价于表达式“x++,y=x”D.表达式“y=x++”等价于表达式“y=x,x++”答案:D逻辑运算符两侧运算对象的数据(。A.只能是0或1 只能是0或非0正数C.只能是整型或字符型数据 可以是任何类型的数答案:Dsizeof(float(。A.一个双精度型表达式 B. 一个整型表达式C.一个函数调用 一个不合法的表达答案:BA.顺序结构 B.分支结构C.循环结构 D.顺序结构、分支结构和循环结答案:D假设变量aif(a!=0);和语句if(a);相比较,正确答案(。A.两者作用不同 B.两者作用等价C.两者作用相反 D.语法答案:B为了避免在嵌套的条件语句if-else中产生二义性语言规定:else子句总是与( 。缩排位置相同的if其之前最近且不带elseif其之前最近的if第一个if答案:B#include"stdio.h"main(){intx=-10,y=5,z=0;if(x=y+z)printf("***\n");elseprintf("$$$\n");}有语法错不能通过编译***可以通过编译但不能通过连接答案:B下面说法错误的是(。A.当条件满足时重复执行某一段程序(代码)就是循环B.循环体只有一条语句时,可以不写成复合语句形式C.while语句、for语句可以相互转换D.do...while语句可以实现前判断结构答案:D下面说法错误的是(。breakbreakswitchcontinuegoto答案:D以下不是无限循环的是(。A.for(y=6,x=1;x<y;x+=2,y-=2);B.for(;;);C.while(-5)x++;答案:A24.对以下说明语句的正确理解是(inta[10]={6,7,8,9,10};D.for(i=20;。;i--)sum+=i;5a[1a[5]B.5a[0]至a[4]5a[6a[10]因为数组与初值的个数不相同,所以此语句不正确答案:B答案:B25.判断字符串a和b是否相等,应当使用( )。A.a==bA.a==bB.a=bC.strcpy(a,b)D.strcmp(a,b)答案:D26.在c语言的函数调用过程中,如果函数funA调用了函数funB,函数funB有调用了函数funA,则()。26.在c语言的函数调用过程中,如果函数funA调用了函数funB,函数funB有调用了函数funA,则()。A.称为函数的直接递归B.称为函数的间接递归C.称为函数的递归定义D.c答案:B27.若有说明:inta=2,*p=&a,*q=p;,则以下非法的赋值语句是()。A.p=q;B.*p=*q;C.a=*q;D. q=a;答案:D27.若有定义:inta[2][3];,则以下对a数组元素地址的正确表示为()A.*(a+1) B.*(a[1]+2)C.a[1]+3 D.a[0][0]答案:A答案:A以下对C语言中共用体类型数据的叙述正确的是( )。可以对共用体变量名直接赋值共用体类型定义中不能出现结构体类型的成员一个共用体变量中不能同时存放其所有成员答案:A课程名称:C课程名称:CXPAGE27/3230.若30.若用fopen打开一个新的二进制文件要求文件既能读又能写则应选用的文件方式字符串( 。A."wb+"B."r+"C."rb+"D."ab+"答案:A第二部分(编程题):4(正读反读都一样的数答案:#include<stdio.h>intmain(){ inti;inta,b,c,d;printf(". for(i=1000;i<=9999;i++){ a=i/1000;b=i%10;c=(i/100)%10;d=(i%100)/10;if(a==b&&c==d)printf("%6d",i);}}输入正整数n,输出nnn=4* * * ** ** ** * * *答:#include<stdio.h>intmain(){inti,j,n;printf("请输入课程名称:C课程名称:CXPAGE36/32scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n;j++)if(i==1||j==1||i==n||j==n)printf("*");elseprintf("");printf("\n");}return0;}3.有一个分数序列:2/1,3/2,5/3,8/5,13/820#include<stdio.h>int main(){int a,b,c,i;double a=2,b=1;for(i=0;i<20;i++){sum+=1.0*a/b;c=b;b=a;a=a+c;}printf("%.2lf\n",sum);return 0;}4.从

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论