




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机C语言作业及上机习题单片机C语言作业及上机习题单片机C语言作业及上机习题单片机C语言作业及上机习题编制仅供参考审核批准生效日期地址:电话:传真:邮编:第一次课熟悉win-TC编译环境、熟悉C语言程序结构1.使用C语言编译环境,输入下面的源程序。将你的程序命名为,然后编译运行它。/*programwritesthewords"Hello,world"tothescreen*File:*By:NJCIT*Date:07-03-09*/#include<>main(){printf("Hello,world\n");return(0);}2.main()/*求两数之和*/{inta,b,sum;/*这是变量定义*/a=123;b=456;sum=a+b;printf(“sumis%d\n”,sum);}问题:1.一个C语言源程序从哪里开始执行?
2.C程序的函数由几部分构成?
3.ANSIC中的注释内容是用什么符号界定?
回答下列问题:C语言中的标识由、和组成,以和开头,不可使用。C语言源程序从函数开始执行,每个C语言程序必须有一个且只能有一个主函数,主函数的名字为。C程序的函数由和两部分构成,函数头包括、、和;函数体由一系列的语句组成,语句由号结束,函数休包含在一对括号中。程序中的注释内容是用符号界定。计算机上实现C语言程序要经过(产生*.文件)、(产生*.文件)、(产生*.文件)和四个阶段。第二次课熟悉printf()函数、常见转义字符及各种数据类型的输出格式1.#include<>#include<>main(){printf("\n4567890");printf("\n\n\n\nafewnewlines");printf("\n\t\tand\nsome\ntabs");printf("\nandabeepjusttobeheard.\a\n");printf("\nthi");printf("swor");printf("kstoo\n");return(0);}(1)printf()函数的功能是什么?
(2)在printf()函数中’\n’的起什么作用?
(3)在printf()函数中’\t’的起什么作用?
(4)在printf()函数中’\a’的起什么作用?
2.main(){inta=5,b=7;floatx=,y=;charc=‘A’;longn=1234567;unsignedu=65535;printf(“%d%d\n”,a,b);printf(“%3d%3d\n”,a,b);printf(“%f,%f\n”,x,y);printf(“%-10f%-10f\n”,x,y);printf(“%,%,%.4f,%.4f,%3f,%3f\n”,x,y,x,y,x,y);printf(“%e,%\n”,x,y);printf(“%c,%d,%o,%x\n”,c,c,c,c);printf(“%ld,%lo,%x\n”,n,n,n);printf(“%u,%o,%x,%d\n”,u,u,u,u);printf(“%s,%\n”,”COMPUTER”,”COMPUTER”);}3.假设下面的例子都是完整程序的一部分,那么他们每一个将会输出什么?
a.printf("BaaBaaBlackSheep.");a.printf("BaaBaaBlackSheep.");b.printf("Haveyouanywool\n");c.printf("Begone!\nOcreatureoflard!");d.printf("What\nNolnBonzo\n");num;num=2;f.printf("%d+%d=%d",num,num,num+num);4.加载,编译并运行下面的程序。显示输出界面然后回答下面的问题。#include<>#include<>main(){charch;intx;floaty;doublez;ch=‘A’;printf("ch=%canditsasciivalueis%d.WhatisASCIIIwonder\n",ch,ch);x=10;printf("x=%d\n",x);y=;printf("y=%f\n",y);z=;printf("z=%lf\n",z);return(0);}1.字符的A的ASCII码是多少?
2.“%f”默认情况下小数点后面有几位数字?
3.程序中的字符被指定的值为’A’,为什么不是“A”4.改变程序使它以10个字符位宽度和2位小数的形式输出浮点型数据。5.改变程序使它以6个字符位宽度输出整型数,左对齐。3.问答题(1)C语言的基本数据类型有几种,分别是什么,并指出各种数据类型的关键字(2)描述C语言中标识符的组成(3)常量和变量的区别是什么?
(4)在程序中如何使用变量?
(5)从下面列出标识符中选出哪些可以用作合法的C用户定义标识符,哪些不能使用。为什么?(1)a3_b3(2)void(3)_123(4)123_(5)IF(6)INT(7)For(8)printf(9)WORD(10)define(11)_abc(12)sizeof(13)answer(14)to(15)signed(16)Case(17)_if(18)extern(19)putchar(20)_double(6)请选出正确的数值和字符常量,说明类型;对于不正确的数,说明原因(2)5L(3)o13(4)0Xff(5)oxaa(6)018(7)9861(8)011(9)(10).987(11)‘\0xab’(12)50.(13)(14)1e1(15)0xFF00(16)(17)473(18)OX4(19)“c”(20)‘t’(21)‘\’”(22)‘0’(23)‘\0’(24)‘4.选择题(1)合法的字符常量是。A)‘\t’B)“A”C)‘a’D)’\x32(2)合法的字符常量是。A)‘\084’B)‘\84’C)‘ab’D)’(3)是C语言提供的合法的数据类型关键字。A)FloatB)signedC)integerD)Char(4)在以下各组标识符中,合法的标识符是。A)A)B01B)table_1C)0_tB)A)Fast_B)voidC)pblD)<book>C)A)xy_B)longdoubleC)*pD)CHARD)A)sjB)IntC)_xyD)w_y23(5)属于合法的C语言长整型常量的是。A)5876273B)0LC)2E10D)(long)5876273(6)下面选项中,不是合法整型常量的是A)160B)-0xcdgC)-01D)-0x48第三次课熟悉scanf()函数的使用:用下面的scanf()函数输入数据,使a=3,b=7,x=,y=,c1=’A’,c2=’a’;main(){inta,b;floatx,y;charc1,c2;scanf(“a=%db=%d”,&a,&b);scanf(“x=%fy=%e”,&x,&y);scanf(“c1=%cc2=%c”,&c1,&c2);printf(“a=%db=%d”,a,b);printf(“x=%fy=%e”,x,y);printf(“c1=%cc2=%c”,c1,c2);}2.加载,编译并运行下面的程序然后回答下面的问题。#include<>#include<>main(){intuser_age;charuser_name[51];/*Gettheusersname*/printf("Enteryourname:");scanf("%s",user_name);/*Gettheusersage*/printf("Enteryourageinyears:");scanf("%d",&user_age);/*Printouttheirnameandageindays*/printf("G’day%s,youare%ddaysold\n",user_name,user_age*365);return(0);}1.存储用户名的变量名是什么?
2.改写这个程序使他可以用一个单独的变量以天的形式存储用户的年龄。3.使用scanf()读取多行输入#include<>#include<>main(){intuser_age;charuser_name[51];/*Gettheusersnameandage*/printf("Enteryournamefollowedbyyourageinyears(egfred23):");scanf("%s%d",user_name,&user_age);/*Printouttheirnameandageindays*/printf("G’day%s,youare%ddaysold\n",user_name,user_age*365);return(0);}1.当你在回答问题时颠倒了年龄和姓名会出现什么情况?
2.当你在代码中省去了&时会出现什么情况?
4.编程题已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序来。(2)若a=3,b=4,c=5,x=,y=,z=,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
a=3b=4c=5
x=,y=,z=
x+y=y+z=z+x=
u=51274n=128765
c1=’a’or97(ASCII)
c2=’b’or98(ASCII)(3)输入一个华氏温度,要求输出摄氏温度,公式为:,取两位小数。5.请判断以下表达式是否正确,若正确,写出表达式的值;若不正确,写出出错原因。各变量的类型说明如下:inti=8,j=3,k,a,b;unsignedlongw=5,u;doublex=,y=,t;k=i++(2)(int)x+(3)w+=-2(4)y+=x++(5)i/=j+12(6)k=--i(7)f=3/2*(t=(8)k=(a=2,b=3,a+b)(9)a+=a-=(b=4)*(a=3)(10)a=2*a=3(11)u=65535,j=-1,u=u+j(12)++(i+j)(13)2%(-3)(14)-2%(-3)6.求以下表达式的值,假设所有变量都为整型。(1)(a=b=4,a+1,b+1,a+b)(2)(a=2,b=5,a>b?a++:b++,a+b)(3)(x=8,x%=x+5)(4)30%6/27.写出下面各逻辑表达式的值。设:a=3,b=4,c=5.(1)a+b>c&&b==c(2)a||b+c&&b-c(3)!(a>b)&&!c||1(4)!(x=a)&&(y==b)&&0(5)!(a+b)+c–1&&b+c/2第四次课if语句应用(1)加载,编译并运行下面的程序,先使用一个正整数,然后再使用一个负数。有什么不同?
#include<>#include<>main(){intx;printf("Enteranumberbetween-10and+10:");scanf("%d",&x);if(x>0){printf("\nYournumberispositive\n");}return(0);}(2)使用if语句避免除0#include<>#include<>main(){floatx,y;printf("Enteranumbertobeinverted:");scanf("%f",&x);y=1/x;printf("Theinverseof%fequals%f\n",x,y);return(0);}1.当你输入数字0时结果为多少?
2.增加一个if语句使它只有当ifx不等于0时进行计算。3.现在你输入0会出现什么情况?
4.改进程序使之可以当输入数字0时打印出警告信息。(3)编写if语句写一个程序用来计算电阻上的功率。功率大小等于电阻上的电压值乘以流过电阻的电流值。完成计算后,使用一个if语句判断功率是否低于瓦特。如果低于瓦特则输出“Okeytousehalfwattresistor”,否则输出“haffwattregistorwillnotbeokey”。下面是程序的开始部分,请添加完成if语句。#include<>#include<>main(){floatpower,voltage,current;printf("Enterthevoltage:");scanf("%f",&voltage);printf("Enterthecurrent:");scanf("%f,¤t);/*Calculationhere*//*ifcheckhere*//*elsehere*/return(0);}如果功率小于瓦特,屏幕输出应该如下所示:Enterthevoltage:5Enterthevoltage:5Enterthecurrent:okaytousehalfwattresistor.如果功率大于瓦特:Enterthevoltage:5Enterthevoltage:5Enterthecurrent:200halfwattresisitorwillnotbeokay.2.编程练习:有三个整数a,b,c,由键盘输入,输出其中最大的数。编程输入整数a和b,若大于100,则输出百位以上的数字,否则输出两数之和。(3)有一函数:写一个程序,输入x的值,输出y值。(4)写一段程序计算两个并联电阻的阻值,使你的程序检查是有短路的(0欧姆)将导致0作为被除数,使用一个if语句或者三目运算避免这种情况(使用三目运算计算及检查是否除0)。提示:Rt=1/(1/R1+1/R2);你的输出应该如下所示:Enterthevalueofresistor1:45Enterthevalueofresistor1:45Enterthevalueofresistor2:56ohmsinparallelwithohmsgivesohms假如有一个电阻阻值为0的话,结果将如下所示:Enterthevalueofresistor1:0Enterthevalueofresistor1:0Enterthevalueofresistor2:45ohmsinparallelwithohmsgivesohms第5次课switch语句应用(1)加载,编译并运行下面的程序,并回答问题。#include<>main(){intnum1,num2,ans;#include<>main(){intnum1,num2,ans;chararithOp;ans=0;printf("Enternumber1-->");scanf("%d",&num1);printf("Enternumber2-->");scanf("%d",&num2);printf("Enteranoperator(+,-or*)-->");fflush(stdin);scanf("%c",&arithOp);switch(arithOp){case‘+’:ans=num1+num2;break;case‘-’:ans=num1-num2;break;case‘*’:ans=num1*num2;break;}printf("\n%d%c%d=%d",num1,arithOp,num2,ans);fflush(stdin);getchar();return(0);}1.尝试输入一个不匹配case语句的操作符,会发生什么?
2.将程序保存为并为“ans”添加乘(*)和除(/)的算法。3.添加一个default语句来处理输入的运算符不符合case情况。4.添加程序处理除数为零的情况。(2)加载,编译并运行下面的程序。#include#include<>main(){intchoice;printf("Howmanystars(1to10)doyouwant");scanf("%d",&choice);switch(choice){case10:printf("*");case9:printf("*********");break;case8:printf("*");case7:printf("*");case6:printf("*");case5:printf("*****");break;case4:printf("*");case3:printf("*");case2:printf("*");case1:printf("*");break;default:printf("Thenumberyouaskedforisoutofrange\n");}return(0);}1.打印9颗星和8颗星是不同的。描述这两种方法。2.编辑这段程序,使之工作在没有break语句的情况下。(3)任务1:完成下面的程序,使用if/else语句,判断输入的数是正数还是负数任务2:完成下面的程序,使用switch语句,判断输入的数是正数还是负数,并且要处理输入的数越界的情况。#include<>#include<>main(){intnum;printf("Programindicateswhethernumberis+veor-ve\n");printf("Enteranumberbetween-5and+5:");scanf("%d",&num);/*添加语句*/return(0);}(4)本程序是从键盘输入一个10进制数,根据用户要求输出这个数对应的16进制、8进制或者10进制数。例:若用户输入“H”,则输出这个数的16进制数。任务1:添加if语句完成程序功能任务2:添加switch语句完成程序功能,注意对输入无效数制的处理。比如输入:X时,作何处理。#include<>#include<>main(){intnum;charchoice;printf("Programprintsoctalorhexequivalentofnumbersentered\n");printf("Enteraninteger:");scanf("%d",&num);printf("DoyouwantDecimal,OctalorHex(H,D,O):");fflush(stdin);choice=getchar();/*添加程序*/return(0);}给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。(6)从键盘输入三个数,判断这三个数是否能构成三角形,如果是,输出“thethreenumberscouldbethesidesofatriangle”,如果不是输出“thethreenumberscould’tthesidesofatriangle”;并判断这个三角形是不是直角三角形,如果是,输出“thenumberscouldbethesidesofarightangletriangle”,如果不是,输出“thenumberscould’tthesidesofarightangletriangle”。第6次课循环1.写一个程序让用户输入一个1~12之间的数,程序将会输出这个数的乘法表。使用一个循环进行计算并输出一行,屏幕输出应该如下所示:Enteranumberbetween1and12:5Enteranumberbetween1and12:55timesmultiplicationtable1x5=52x5=103x5=154x5=205x5=256x5=307x5=358x5=409x5=4510x5=5011x5=5512x5=602.添加循环语句,计算并输出1~20之间的偶数的和。#include<>#include<>main(){inti,result;/*添加语句*/return(0);}3.Break语句的使用为程序添加语句,使得输入的数据在1~10之间时,退出循环,否则输出“thenumberisoutofrange”#include<>#include<>main(){intnum;while(1){printf("Enteranumberbetween1and10:");scanf("%d",&num);/*if(<--Completehere)*/}printf("Yournumberwas%d\n",num);return(0);}任务1:添加程序,使得其在从注释A开始到注释C之间循环,并提示用户输入“0”退出循环;任务2:添加程序,使得注释B到注释C之间的语句在一个循环之内,从而判断从num开始到1之间所有的素数。#include<>#include<>main(){inti,num;charisPrime;printf("Programcheckstoseeifanumberisprime\n");printf("Entertheinteger:");/*A*/scanf("%d",&num);isPrime=1;/*B*/for(i=num-1;i>1;i--){if(num%i==0){isPrime=0;printf("Number%disdivisibleby%dandisnotprime\n",num,i);break;}}if(isPrime)printf("Number%disPRIME\n",num);/*C*/return(0);}5.求爱因斯坦数学题。有一条长阶,若每步跨2阶,则最后剩余1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7步,最后正好一阶不剩。6.计算斐波那契分数序列前n项之和(n是某个常数).(2/1,3/2,5/3,8/5,13/8,21/13,......前一项的分子作为后一项的分母。前一项的分子、分母之和作为后一项的分子。)。7.问答题(1)下面循环错在哪里?
for(i=1;i>5;i++){x/=2;}(2)下面循环错在哪里?
for(i=10;i>2;i++){x*=2;}(3)这个for循环的输出结果是多少for(i=3;i>-2;i--){printf("%d",i);}(4)这个while循环的输出结果是多少i=0;while(i<5){i++;printf("%d",i*i);}(5)while循环错在哪里?
i=0;while(i=10){i++;x*=2;}(6)完成下面的代码使之可以输出你的名字28次.for(i=3;i>;i--){printf("Mynameis");综合练习一:打印ASC码表在这个项目中,我们想去打印所有的ASCII码字符及相关联的十进制和二进制值。关于ASCIIASCII表示美国信息交换标准码,正如它的名字所暗示的,它是由美国的一个代码指定的数字每个信息存储或传输计算机来完成。这里是关于ASCII码的重点:每个键盘字符都可以映射到数字从32~127;数字从0到31用于特殊字符,如制表符、铃、换行符等;扩展ASCII范围从128至255,含有专门128个字符,如边框线等;扩展的ASCII字符是非标准化,可能会从一个操作系统类型到另一个(如PC和MAC与Linux);标准的ASCII是标准化的,同样都可以跨越不同的操作系统类型。第一步写出程序的基本框架任何C程序都具有以下的基本框架/*/**Title:PrintStandardandExtendedASCIIchart*Source:*Author:SomeStudent*Version:*/#include<>main(){}第二步添加一个具有一个变量的循环语句我们想去打印所有的标准和扩展ASCII码的值,这就意味着循环从0至255/*/**Title:PrintStandardandExtendedASCIIchart*Source:*Author:NJCIT*Version:*/#include<>main(){inti;for(i=1;i<=255;i++){}return(0);}第三步不同数据格式打印变量值我们现在想使用十进制和十六进制和ASCII字符打印每个字符。/*/**Title:PrintStandardandExtendedASCIIchart*Source:*Author:NJCIT*Version:-Initialrelease*/#include<>main(){inti;for(i=1;i<=255;i++){printf("%d%x%c\n",i,i,i);}return(0);}第四步打印标题并将每列对齐现在,我们将每一个字符打印出来,使它变得整洁些并给每一栏加一个标题,注意如何选择适当的宽度打印每一栏。我们也会修改一些在我们试图打印一些如“n/a”的控制符代替一些ASCLL码字符(这些字符是一些不可打印的字符)出现的问题。/**Title:PrintStandardandExtendedASCIIchart/**Title:PrintStandardandExtendedASCIIchart*Source:*Author:NJCIT*Version:*/#include<>main(){inti;printf("DECHEXASCII\n");for(i=1;i<=255;i++){if(i<32)printf("%3d%3x%5s\n",i,i,"n/a");elseprintf("%3d%3x%5c\n",i,i,i);}return(0);}第五步使它更适应屏幕现在你可能注意到,没有太多的屏幕是被用来横跨宽.不仅如此,你必须退回通过输出缓冲区以便看到更低的数字.这样效率更高,如何255行被分割成5栏52行的话就更容易阅读。/*/**Title:PrintStandardandExtendedASCIIchart*Source:*Author:NJCIT*Version:*/#include<>main(){inti;printf("|DECHEXASC|DECHEXASC|DECHEXASC");printf("|DECHEXASC|DECHEXASC|\n");for(i=1;i<=51;i++){if(i<32)printf("|%3d%3x%3s",i,i,"n/a");elseprintf("|%3d%3x%3c",i,i,i);printf("|%3d%3x%3c|%3d%3x%3c",i+51,i+51,i+51,i+102,i+102,i+102);printf("|%3d%3x%3c|%3d%3x%3c\n",i+153,i+153,i+153,i+204,i+204,i+204);}return(0);}第六步打印一些边框现在,假如需要的话,我们有一个可以在一张A4纸上合理的打印ASCII的图表,我们现在需要做的是给一张表格用一个扩展ASCII特殊字符制作一个边框。/*/**Title:PrintStandardandExtendedASCIIchart*Source:*Author:NJCIT*Version:*/#include<>main(){inti,a;for(a=0;a<71;a++)printf("%c",205);printf("\n");printf("|DECHEXASC|DECHEXASC|DECHEXASC");printf("|DECHEXASC|DECHEXASC|\n");for(a=0;a<71;a++)printf("%c",205);printf("\n");for(i=1;i<=51;i++){if(i<32)printf("|%3d%3x%3s",i,i,"n/a");elseprintf("|%3d%3x%3c",i,i,i);printf("|%3d%3x%3c|%3d%3x%3c",i+51,i+51,i+51,i+102,i+102,i+102);printf("|%3d%3x%3c|%3d%3x%3c|\n",i+153,i+153,i+153,i+204,i+204,i+204);}for(a=0;a<71;a++)printf("%c",205);printf("\n");return(0);}第七步将一些通用的功能转换成函数(进阶)最后的阶段是介绍一个简单函数的概念,一个方法一个C源程序的一个模块,这个模块可以在项目的任何地方被调用(包括函数的内部)。我们从最后一步了解到,一段代码被重复使用了三次,这将是一个方法的理想条件。/*Title:PrintStandardandExtendedASCIIchart/*Title:PrintStandardandExtendedASCIIchart*Source:*Author:NJCIT*Version:*/#include<>voidpretty_line(){inta;for(a=0;a<71;a++){printf("%c",205);}printf("\n");return;}main(){inti;/*Printthetopborderline*/pretty_line();/*Printtheheading*/printf("|DECHEXASC|DECHEXASC|DECHEXASC");printf("|DECHEXASC|DECHEXASC|\n");/*Printthemiddleborderline*/pretty_line();for(i=1;i<=51;i++){if(i<32)printf("|%3d%3x%3s",i,i,"n/a");elseprintf("|%3d%3x%3c",i,i,i);printf("|%3d%3x%3c|%3d%3x%3c",i+51,i+51,i+51,i+102,i+102,i+102);printf("|%3d%3x%3c|%3d%3x%3c|\n",i+153,i+153,i+153,i+204,i+204,i+204);}/*Printthebottomborderline*/pretty_line();return(0);}第八步扩展打印函数的边界(进阶)这一点它看起来不错,为了使用合适的拐角和分隔栏获得一个专业的边框,我们必须去使用一些扩展字符中的特殊字符。以下是三种类型的线条是必要的:顶线标题下的线条(中间线条)底线一个方法可以有一个通过调用时传入的参数,参数可以是任何类型的(在topic2中讨论),我们就指派一个整数类型作为第一个参数,调用的线条类型如下:0是顶线1是中线2是底线现在,我们观察每一个线条,除了第一个、最后一个和和分栏符,它们基本相同。我们将使用一个例子去选择线条的样式,通过一个变量来改变调用的左右中的符号。最后,我们可以使用嵌套的三个操作打印线条,实际打印的符号是否是根据第一条(a=0)、是否是最后一条(a=70)或者是否是栏分割位置(a%14==0)。/*/**Title:PrintStandardandExtendedASCIIchart*Source:*Author:NJCIT*Version:*/#include<>/**Thisfunctionprintsalineaccrosthescreen.*Thelinecanbeoneofthefollowingtypes:*line_type=0-Thetopline*line_type=1-Themiddleline*line_type=2-thebottomline*/voidpretty_line(intline_type){charleft_char,right_char,mid_char;charext_char;inta;/*Setleft,rightandmidcharactersdependingonlinetype*/switch(line_type){case0:/*Topline*/left_char=213;right_char=184;mid_char=209;break;case1:/*Middleline*/left_char=198;right_char=181;mid_char=216;break;case2:/*Bottomline*/left_char=212;right_char=190;mid_char=207;break;default:/*Invalidargumentpassedtous.*/left_char=‘-’;right_char=‘-’;mid_char=‘+’;}for(a=0;a<71;a++){ext_char=(a==0)left_char:(a==70)right_char:(a%14==0)mid_char:205;printf("%c",ext_char);}printf("\n");left_char=198;left_char=198;right_char=181;mid_char=216;break;case2:/*Bottomline*/left_char=212;right_char=190;mid_char=207;break;default:/*Invalidargumentpassedtous.*/left_char=‘-’;right_char=‘-’;mid_char=‘+’;}for(a=0;a<71;a++){ext_char=(a==0)left_char:(a==70)right_char:(a%14==0)mid_char:205;printf("%c",ext_char);}printf("\n");return;}main(){inti;/*Printthetopborderline*/pretty_line(0);/*Printtheheading*/printf("|DECHEXASC|DECHEXASC|DECHEXASC");printf("|DECHEXASC|DECHEXASC|\n");/*Printthemiddleborderline*/pretty_line(1);/*PrinttheASCIItable*/for(i=1;i<=51;i++){if(i<32)printf("|%3d%3x%3s",i,i,"n/a");elseprintf("|%3d%3x%3c",i,i,i);printf("|%3d%3x%3c|%3d%3x%3c",i+51,i+51,i+51,i+102,i+102,i+102);printf("|%3d%3x%3c|%3d%3x%3c|\n",i+153,i+153,i+153,i+204,i+204,i+204);}/*Printthebottomborderline*/pretty_line(2);return(0);}最终结果第8次课1.编程题(1)将输入数组a[n]中的n个元素,再输入另一个数x,查看a中是否有值为x的元素,若有,则输出其下标,若没有,则输出-1。(2)输入10个互不相同的数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10987654321,则输出(编程提示:可利用2个数组变量,一个用来存放输入的整数,输入后,对这个数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。(3)求数组inta[n]中奇数的个数和平均值,以及偶数个数和平均值。(4)编写一个程序,其功能是给一维数组a输入任意6个整数,假设为:574891,然后建立一个具有以下内容的方陈,并打印出来(屏幕输出)。574891157489915748891574489157748915找出一个二位数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。2.选择题(1)在C语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型表达式C)整形常量或整形表达式C)任何类型的表达式(2)以下对一维整型数组a的正确说明是。A)inta(10);B)intn=10,a[n];C)intn;D)#defineSIZE10
scanf(“%d”,&n);inta[SIZE];inta[n];(3)若有定义:inta[10],则对数组a元素的正确引用是。A)a[10]B)a[]C)a(5)D)a[10-10](4)以下能对一维数组a进行正确初始化的语句是。A)inta[10]={0,0,0,0,0};B)inta[10]={};C)inta[]={0};D)inta[10]={10*1};(5)若有定义:inta[3][4],则对数组a元素的正确引用是。A)a[2][4]B)a[1,3]C)a(5)D)a[10-10](6)以下能对二维数组a进行正确初始化的语句是。A)inta[2][]={{1,0,1},{5,2,3}};B)inta[][3]={{1,2,3},{4,5,6}};C)inta[2][4]={{1,2,3},{4,5},{6}};D)inta[][3]={{1,0,1},{},{1,1}};(7)若有说明:inta[3][4]={0};则下面正确的叙述是。A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值0(8)若有说明:inta[][4]={0,0};则下面不正确的叙述是。A)数组a的每个元素都可得到初值0B)二维数组a的第一维大小为1C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0(9)若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为。(设a[0][0]位于数组的第一个位置上)A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1(10)若有说明:inta[][3]={1,2,3,4,5,6,7};则数组a第一维大小是。A)2B)3C)4D)无确定值(11)下面程序段的输出结果是。intk,a[3][3]={1,2,3,4,5,6,7,8,9};for(k=0;k<3;k++)printf(“%d”,a[k][2-k]);A)357B)369C)159D)147第9次课1.编程题(1)统计输入的一串字符(“假设以‘\n’结束”)中,大写字母A,B,...,Z各出现的次数。(提示,用一个数组count[26]计数各个字母出现的次数,count[0]表示A出现的次数,count[1]表示B出现的次数,...,count[25]表示字母Z出现的次数。初始时count的各元素值为0。以后,每读入一个字符ch,若它是一个大写字母,就让相应计数单元count[ch-'A']加1。)(2)编写一个程序将两个字符串连接起来,不要用strcat函数。2.选择题(1)下面是对s的初始化,其中不正确的是。A)chars[5]={“abc”};B)chars[5]={‘a’,’b’,’c’};C)chars[5]=””;D)chars[5]=”abcdef”;(2)下面程序段的输出结果是。charc[5]={‘a’,’b’,’\0’,’c’,’\0’}printf(“%s”,c);A)’a’’b’B)abC)abcD)abc(3)若有程序段:intk,a[3][3]={1,2,3,4,5,6,7,8,9};for(k=0;k<3;k++)printf(“%d”,a[k][2-k]);
则以下叙述正确的是。A)a与b数组完全相同B)a与b长度相同C)a和b中都存放字符串D)a数组比b数组长度长(4)有两个字符数组a,b,则以下正确的输入语句是。A)gets(a,b);B)scanf(“%s%s”,a,b);C)scanf(“%s%s”,&a,&b);D)gets(“a”),gets(“b”);(5)下面程序段的输出结果是。chara[7]=”abcdef”;charb[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A)B)\0C)eD)f(6)下面程序段的输出结果是。charc[]=”\t\v\\\0will\n”;printf(“%d”,strlen(c));A)14B)3C)9D)6(7)判断字符串a和b是否相等,应当使用。A)if(a==b)B)if(a=b)C)if(strcpy(a,b))D)if(strcmp(a,b))(8)判断字符串a是否大于b,应当使用。A)if(a>b)B)if(strcmp(a,b))C)if(strcmp(b,a)>0)D)if(strcmp(a,b)>0)(9)下面叙述正确的是。A)两个字符串所包含的字符个数相同时,才能比较字符串B)字符个数多的字符串比字符个数少的字符串大C)字符串”STOP”与”STOP”相等D)字符串”That”小于字符串”The”(10)下面有关字符数组的描述中错误的是。A)字符数组可以存放字符串B)字符串可以整体输入,输出C)可以在赋值语句中通过赋值运算对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较(11)下面程序的输出结果是。main(){charch[7]=”12ab56”;
inti,s=0;
for(i=0;ch[i]>’0’&&ch[i]<=’9’;i+=2)
s=10*s+ch[i]-‘0’;
printf(“%d\n”,s);}A)1B)1256C)12ab56D)ab(12)下面程序的输出结果是。main(){
charstr[]=”SSWLIA”,C;
intk;
for(k=2;(c=str[k])!=’\0’;k++){
switch(c){
case‘I’:++k;break;
case‘L’:continue;
default:putchar(c);continue;
}
putchar(‘*’);
}}A)SSWB)SW*C)SW*AD)SW第10、11次课1.编程题(1)编写一个判断一个数是否是素数的函数,若是返回1,否则返回0。(2)编写一个函数,计算下面算式前100项之和,并将计算结果返回到主调函数。1+1/3+1/5+1/7+......(3)编写一个函数,找出数组a[n]中最大元素和最小元素所在的下标,并返回给主调函数。(4)有一个数组,内放10个学生的成绩,写一个函数,求出平均分,并且打印出高于平均分的成绩。2.填空、选择题(1)C语言函数返回类型的默认定义类型是。(2)函数的实参传递到形参有两种方式:和。(3)在一个函数内部调用另一个函数的调用方式称为。在一个函数内部直接或间接调用该函数成为函数的调用方式。(4)以下正确的函数定义是。A)doublefun(intx,inty)B)doublefun(intx,y)
{z=x+y;returnz;}{intz;returnz;}C)fun(x,y)D)doublefun(intx,inty)
{intx,y;doublez;{doublez;z=x+y;returnz;}returnz;}(5)以下正确的说法是。A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用相同的存储单元D)形参时虚拟的,不占用存储单元(6)以下正确的函数定义是。A)doublefun(intx,inty)B)doublefun(intx;inty)C)doublefun(intx,inty);D)doublefun(intx,y)(7)若调用一个函数,且此函数中没有return语句,则正确的说法是。A)该函数没有返回值B)该函数返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值(8)以下不正确的说法是。A)实参可以是常量,变量或表达式B)形参可以是常量,变量或表达式C)实参可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川文理学院《供热工程与锅炉》2023-2024学年第一学期期末试卷
- 内蒙古商贸职业学院《基础缅甸语四》2023-2024学年第二学期期末试卷
- 南京林业大学《人力资源战略与规划》2023-2024学年第二学期期末试卷
- 平顶山工业职业技术学院《电子系统基础》2023-2024学年第二学期期末试卷
- 河北科技工程职业技术大学《汽车电器与电子技术》2023-2024学年第二学期期末试卷
- 建筑工程劳务施工承包合同
- 中央空调施工合同
- 场地短期租赁合同书
- 大型商铺租赁合同书
- 厂房租赁合同协议书
- 第12课 辽宋夏金元时期经济的繁荣 教案2024-2025学年七年级历史下册新课标
- 浙江省【高等职业技术教育招生考试】-商业类(电子商务)-职业技能理论知识(一)(答案版)
- 16J914-1 公用建筑卫生间
- 教学课件:《新时代新征程》
- 废气治理设施运行管理规程、制度
- 腌腊肉制品生产车间工艺布置图
- 警棍盾牌操教案(共12页)
- 电气检测报告样本
- GB-T-13916-2013-冲压件形状和位置未注公差
- 永磁直线发电机建模及其性能研究毕业论文
- 防洪安全专项整治新建棚洞工程新建棚洞实施性施工组织设计
评论
0/150
提交评论