最新C语言程序设计-第3次上机
- 格式:doc
- 大小:742.50 KB
- 文档页数:18
C 语言程序设计上机实验指导与习题参考答案(第四版)(学生改编)实验 1:C语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。
(3)通过运行简单的 C 程序,初步了解 C程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。
includequotstdio.hquotmain printfquotThefirstCProgramnquot具体操作步骤(1)在编辑窗口中输入程序。
(2)保存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
,则该题完成。
4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。
(2)保存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入 15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中介绍的方法进入在线评判系统。
(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。
(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
C语⾔程序设计实验指导书(新)C语⾔程序设计实验指导书重要说明:上机实验⽬的和要求⼀实验报告要求每次实验,提交⼀份实验报告。
具体格式见“实验报告格式范⽂”将代码和运⾏截图粘贴到“C改⾰实验指导书24学时”word的相应位置。
如下图,程序运⾏的截图如下:⼆上机实验的⽬的上机实验的⽬的,绝不仅仅是为了验证教材和讲课的内容,或者验证⾃⼰所编程序正确与否。
学习程序语⾔,上机实验的⽬的如下:1 加深对讲授内容的理解,尤其是⼀些语法规定,光靠课堂讲授,既枯燥⽆味⼜难以记住,通过多次上机,就能⾃然、熟练地掌握语法规定。
2 了解和熟悉C语⾔程序开发环境。
熟悉⼀两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。
3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运⾏。
要真正掌握计算机应⽤技术,就不仅应当了解和熟悉有关理论和⽅法,⽽且要求⾃⼰动⼿实践能⼒强。
4 在做实验时千万不要在程序通过后就认为万事⼤吉,完成任务了,应当在通过的程序上做⼀些调试和修改,看看会得到什么结果。
多动脑筋思考,将会对你有很⼤帮助。
三上机实验前的准备⼯作1 了解所⽤的计算机系统的性能和使⽤⽅法;2 复习和掌握与本实验有关的教学内容;3 准备好上机所⽤的程序,切忌⾃⼰不思考、不编制程序或抄袭别⼈的程序;4 准备好调试和运⾏时所需的数据。
四上机实验的步骤1 调出C语⾔编译系统,进⼊C语⾔⼯作环境;2 输⼊⾃⼰编制好的程序;3 检查输⼊是否有错,及时更正;4 进⾏编译和连接;5 运⾏程序,分析结果。
重要说明:上机实验⽬的和要求 0实验⼀C语⾔上机基础 (4)实验⼆基本数据类型、运算符和表达式 (7)实验三输⼊、输出函数的使⽤ (9)实验四选择结构程序设计 (11)实验五循环结构程序设计 (13)实验六数组 (16)实验七简单函数 (18)实验⼋⾼级函数 (19)实验九指针 (20)实验⼗⾃定义数据、⽂件 (22)附1:c语⾔函数库 (24)实验⼀C语⾔上机基础特别声明:为了教学的便捷以及学⽣⾃学的⽅便,我们选择了便于下载和安装的Microsoft Visual C++ 6.0软件作为编译环境。
大学大一c语言程序设计实验室上机题全部代码答案(实验报告)大学大一C语言程序设计实验室上机题全部代码答案(实验报告)实验目的:本实验旨在让大一学生通过实际操作掌握C语言的基本语法和常见程序设计题型,提高编程能力。
实验要求:1. 学生需要在实验室中完成上机题,并编写相应的代码。
2. 要求代码具有良好的结构和规范,能够正确运行,并符合题目要求。
3. 学生需要记录代码的思路和过程,并在实验报告中进行详细说明。
实验过程:本次实验共包括以下几个上机题,分别是:1. 题目:输入两个整数,计算它们的和。
实现思路:- 首先,定义两个整型变量a和b,用来保存输入的两个整数。
- 然后,使用scanf函数分别读取两个整数的值。
- 接下来,定义一个整型变量sum,用来保存两个整数的和。
- 使用sum = a + b计算两个整数的和。
- 最后,使用printf函数将结果输出到屏幕上。
2. 题目:输入一个整数n,计算1到n之间所有整数的和。
实现思路:- 首先,定义一个整型变量n,用来保存输入的整数。
- 然后,使用scanf函数读取整数n的值。
- 接下来,定义一个整型变量sum,用来保存1到n之间所有整数的和。
- 使用for循环语句,从1循环到n,累加每个整数的值。
- 最后,使用printf函数将结果输出到屏幕上。
3. 题目:输入一个整数n,判断它是否是质数。
实现思路:- 首先,定义一个整型变量n,用来保存输入的整数。
- 然后,使用scanf函数读取整数n的值。
- 接下来,定义一个布尔型变量isPrime,用来保存n是否是质数的判断结果。
- 使用for循环语句,从2循环到n-1,判断n是否能被其中任意一个整数整除。
- 如果n能被任意一个整数整除,则将isPrime设为假;否则,将isPrime设为真。
- 最后,根据isPrime的值,使用printf函数输出相应的判断结果。
4. 题目:输入一个正整数n,输出n的所有因子。
实现思路:- 首先,定义一个整型变量n,用来保存输入的正整数。
第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。
程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。
例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。
(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。
)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。
方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。
例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。
⏹A说:不是我。
⏹B说:是C。
⏹C说:是D。
⏹D说:他乱说。
已知三个人说的是实话,一个人说的是谎话。
此刻要依照这些信息,找出做了好事的人。
实验一 C语言的运行环境、运行过程和表达式的使用一、目的与要求1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2、了解在该系统上如何编辑、编译、连接和运行一个C程序。
3、通过运行简单的C程序,初步了解C源程序的特点。
4、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
5、学会使用C的有关算术运算符,以及包含这些运算符的表达式二、实验例题【例1】编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for.在Turbo C的集成环境下,键入如下源文件。
敲Alt+F组合键打开File菜单,File菜单中Write to或save as选项可将默认noname.c文件名改为任意文件名。
程序example.c如下:main(){printf("Hello,World!\n");printf("Wolcome to the C language world!\n");printf("Everyone has been waiting for.\n");}然后用Ctrl+F9执行example.c,用Alt+F5查看结果,即在屏幕上显示题目要求的三行文字。
按回车键重新返回Turbo C的编辑环境。
注意,在运行程序之前最好先存盘。
【例2】输入并运行程序,写出运行结果。
main(){int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}运行方法同上,最后结果为:sum is 579。
【例3】输入并运行程序,写出运行结果。
main(){int a,b,c;int max(int,int);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c);}int max(int x,int y){int z;if (x>y) z=x;else z=y;return(z);}这个程序的功能是对于任意输入的两个整数,输出较大的那个数。
第一次作业一、写出下列每个程序运行后的输出结果1. #include<stdio.h>void main(){int x=5;switch(2*x-3){case 4:printf("%d ",x);case 7:printf("%d ",2*x+1);case 10:printf("%d ",3*x-1);break;default:printf("%s ","default\n");}printf("%s\n","switch end.");}2. #include<stdio.h>void main(){int i,s=0;for(i=1;i<=6;i++)s+=i*i;printf("s=%d\n",s);}3. #include<stdio.h>void main(){int i,s1=0,s2=0;for(i=0;i<10;i++)if(i%2)s1+=i;else s2+=i;printf("%d %d\n",s1,s2);}4. #include<stdio.h>void main(){int n=10,y=1;while(n--){y++;y++;}printf("y=%d\n",y);}5. #include<stdio.h>void main(){int f,f1,f2,i;f1=f2=1;printf("%d %d ",f1,f2);for(i=3;i<=10;i++){f=f1+f2;printf("%d ",f);if(i%5==0)printf("\n");f1=f2;f2=f;}printf("\n");}6. #include<stdio.h>#include<math.h>void main(){int i,n;for(n=2;n<=20;n++){int temp=(int)sqrt(n);//sqrt(n)求出n的平方根并取整for(i=2;i<=temp;i++)if(n%i==0)break;if(i>temp)printf("%d ",n);}printf("\n");}7. #include<stdio.h>#include<math.h>const int M=20;void main(){int i,c2,c3,c5;c2=c3=c5=0;for(i=1;i<=M;i++){if(i%2==0)c2++;if(i%3==0)c3++;if(i%5==0)c5++;}printf("%d %d %d\n",c2,c3,c5);}8. #include<stdio.h>#include<math.h>const int M=20;void main(){int i,s;for(i=1,s=0;i<15;i++){if(i%2==0 || i%3==0)continue;printf("%d ",i);s+=i;}printf("%d\n",s);}参考答案:1、答案:11 14 switch end.2、答案:s=91.3、答案:25 20.4、答案:y=21.5、答案:1 1 2 3 58 13 21 34 556、答案:2 3 5 7 11 13 17 197、答案:10 6 48、答案:1 5 7 11 13 37第二次作业一、根据下列每个题目要求编写程序1.编写一个函数,函数头格式为“void fun4(char *a , int b[])”,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素。
C语言程序设计实验指导书实验一数据类型及简单程序设计一、实验目的1.掌握C语言数据类型,熟悉变量的定义及赋值方法。
2.掌握不同的类型数据之间赋值的规律。
3.学会使用C的运算符及表达式,特别是自加(++)自减(——)运算符的使用。
4.学会使用VC调试程序的方法。
二、实验内容和步骤问题1:输入并运行下面的程序main( ){char c1,c2;c1=’a’;c2=’b’;printf(“%c %c\n”,c1,c2);}①程序运行结果为?②增加一条语句:printf(“%d %d\n”,c1,c2);再运行程序,运行结果为?问题2:输入并运行下面的程序(转义字符使用)main( ){char c1,c2,c3,c4,c5;c1=’x’;c2=’y’;c3=’z’;c4=’\101’;c5=’\102’;printf(“x%c y%c\tz%c\n”,c1,c2,c3);printf(“\t\’%c\’ \”%c\”\n”,c4,c5);}在上机前先用人工分析程序,写出应得结果,上机后将二者对照。
问题3:输入并运行下面的程序main( ){int i,j,m,n;i=6;j=8;m=++i;n=j++;printf(“%d,%d,%d,%d\n”,i,j,m,n);}①运行程序,注意i、j、m、n个变量的值为?。
②将第4、5行改为:m=i++;n=++j;运行程序,注意i、j、m、n个变量的值为?。
③将程序改为:main( ){int m,n;m=6;n=8;printf(“%d,%d\n”,m++,n++);}运行程序,注意输出结果的变化为?。
④在③的基础上,将printf语句改为:printf(“%d,%d\n”,++m,++n);运行程序,注意输出结果的变化为?。
⑤再将printf语句改为:printf(“%d,%d,%d,%d \n”,m,n,m++,n++);运行程序,注意输出结果的变化为?。
实验一上机操作初步一、实验内容:说明:前三题为必做题目,后两题为选做题目。
1、输出入下信息:(实验指导书P79)*************************Very Good*************************2、计算两个整数的和与积。
(实验指导书P81)3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。
(书P3)4、在屏幕上显示一个文字菜单模样的图案:=================================1 输入数据2 修改数据3 查询数据4 打印数据=================================5、从键盘上输入两个整数,交换这两个整数。
二、参考答案:1、#include <stdio.h>void main( ){ printf(“********************\n”);printf(“ Very Good\n”);printf(“********************\n”);}2、#include <stdio.h>void main( ){ int a,b,c,d;printf(“Please enter a,b:”);scanf(“%d,%d”,&a,&b);c=a+b;d=a*b;printf(“%d+%d=%d\n”,a,b,c);printf(“%d*%d=%d\n”,a,b,d);}3、#include <stdio.h>#include <math.h>void main( ){ double x,s;printf(“Please input value of x:”);scanf(“%lf”,&x);s=cos(x);printf(“cos(%lf)=%lf\n”,x,s);}4、#include <stdio.h>void main( ){ printf(“==================================\n”);printf(“ 1 输入数据 2 修改数据\n”);printf(“ 3 查询数据 4 打印数据\n”);printf(“===================================\n”);}5、#include <stdio.h>void main( ){ int x,y,t;printf(“Please enter x and y:”);scanf(“%d%d”,&x,&y);t=x; x=y; y=t;printf(“After swap:x=%d,y=%d\n”,x,y);}实验二简单的C程序设计一、实验内容:说明:前四题为必做题目,后两题为选做题目。
C 语言程序设计上机实验指导与习题参考答案仅供教师内部参考华南农业大学目录上机实验1实验1 C 语言程序初步1一实验目的1二实验内容1实验2 基本数据类型运算和表达式3一实验目的3二实验内容3实验3 基本输入与输出5一实验目的5二实验内容5实验4 选择结构程序设计4一实验目的4二实验内容4实验5 循环结构程序设计一9一实验目的9二实验内容9实验6 循环结构程序设计二15一实验目的15二实验内容15实验7 数组17一实验目的17二实验内容17实验8 字符数组的应用22一实验目的22二实验内容22实验9 函数的基本应用24 一实验目的24二实验内容24实验10 指针与结构体26一实验目的26二实验内容26*实验11 链表29一实验目的29二实验内容29*实验12 文件32一实验目的32二实验内容32上机实验实验1 C 语言程序初步一实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2 了解在该系统上如何编辑编译连接和运行一个C 程序3 通过运行简单的C 程序初步了解C 程序的特点4 在教师的指导下学会使用JudgeOnline 实验系统二实验内容1 运行第一个C 程序[题目The first C Program]将下列程序输入TC 或VC编译连接和运行该程序void mainprintf "The first C Program\n"[具体操作步骤]以Turbo C 上的操作为例1Windows 进入后按照第一章中介绍的方法进入Turbo C2在编辑窗口中输入程序3保存程序取名为a1c4按照第一章中介绍的方法编译连接和运行程序2 在JudgeOnline 系统中提交实现了计算ab 功能的程序[题目1001计算ab]由键盘输入两个整数计算并输出两个整数的和实现该功能的程序如下void mainint a bscanf "dd" a b1 printf "d" a b1在程序编辑窗口中输入程序2保存程序取名为a2c3按照前二章中介绍的方法编译连接和运行程序4在程序运行过程中输入15 30↙↙表示输入回车符5 如果看到如下输出结果则表明1530 的结果正确如果得不到如下结果则需检查并更正程序456 按照第三章中介绍的方法进入JudgeOnline 实验系统7 显示题目列表点击题号为1001题名为计算ab的题目8 查看完题目要求后点击页面下端的sumbit 参照第二章提交程序的方法提交程序a2c9 查看评判结果如果得到accepted则该题通过否则返回第一步检查程序是否正确2实验2 基本数据类型运算和表达式一实验目的1掌握C 语言数据类型熟悉如何定义一个整型和实型的变量以及对它们赋值的方法2 掌握不同的类型数据之间赋值的规3 学会使用C 的有关算术运算符以及包含这些运算符的表达式特别是自加和自减-- 运算符的使用4 进一步熟悉C 程序的编辑编译连接和运行的过程二实验内容1 变量的定义[题目1117变量定义按要求完成程序]下面给出一个可以运行的程序但是缺少部分语句请按右边的提示补充完整缺少的语句void mainint a b 定义整型变量a 和bint i j 定义实型变量i 和ja 5b 6i 314 j iabprintf "a db di fj f\n" a b i j[具体操作步骤]1将代码补充完整2在TC 或VC上运行通过3在JudgeOnline 实验系统上提交2 赋值表达式与赋值语句[题目1118赋值表达式与赋值语句写出程序运行结果] 阅读下面程序写出运行结果void mainfloat aint b cchar d ea 35b ac 330d c3e \\printf "fddcc" abcde运行结果为35000003330J\[提示]赋值语句具有类型转换的功能但可能会改变数据3 基本运算[题目1119基本运算写出程序运行结果]阅读下面程序写出运行结果void mainint a b cfloat d 15 e fa 357b 1510c be 1510f d10printf "dddfff" abcdef运行结果为0211500000010000001500000[提示]除法分整除与普通除法之分4实验3 基本输入与输出一实验目的1熟练掌握putchargetcharprintf scanf 函数的使用方法2 掌握各种类型数据的输入输出的方法能正确使用各种格式转换符二实验内容[题目1126字符的输入与输出]编程实现由键盘输入一个字符后在屏幕上输出该字符[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]a↙↙[正确输出] [正确输出]a参考程序include "stdioh"mainchar chch getcharputchar ch[题目1127计算加法]编程实现由键盘输入一个加法式输出正确的结果两个加数均为整数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]1020 ↙- 1560↙[正确输出] [正确输出]30 45参考程序include "stdioh"mainint a bscanf "dcd" abprintf "d" ab[题目1014求圆面积]由键盘输入圆半径r 请计算该圆的面积注取314159结果保留两位小数位另外程序只要能对r 在0 到10000 范围的情况输出正确答案即可[第一组自测数据] [键盘输入]5652 ↙[键盘输入][正确输出] 112↙1335502 [正确输出][第二组自测数据] 39408[提示]结果保留两位小数可采用printf 函数的格式控制字符来实现参考程序include "stdioh"mainfloat arearscanf "f"rarea 314159rrprintf "02f"area2[题目1015计算摄氏温度值]从键盘输入一个华氏温度值要求按格式输出其对应的摄氏温度值精确到小数点后两位数学公式描述为5C F 329[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]100↙100↙[正确输出] [正确输出]3778 3778[提示]注意公式中的除为普通除法参考程序includevoid mainfloat fcscanf "f"fc 509 f-32printf "2f"c3实验4 选择结构程序设计一实验目的1了解C 语言表示逻辑的方法以0 代表假以非0 代表真2 学会正确使用逻辑运算符和逻辑表达式3 熟练掌握if 语句和switch 语句4 结合程序掌握一些简单的算法二实验内容[题目1120判断点是否在圆]由键盘输入一个点的坐标要求编程判断这个点是否在单位圆上点在圆上输出Y 不在圆上输出N 使用小数点后3 位精度进行判断[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]07070707 ↙8>0505↙[正确输出] [正确输出]Y N[提示] 1平面上的点与圆的关系分为在圆内在圆上在圆外三种本题要求判断是否在圆上2判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度本题为0001 的方法实现参考程序include "stdioh"include "mathh"void mainfloat abscanf "ff"abif fabs aabb-1 1e-3printf "Y\n"else printf "N\n"[题目1017求数的位数]由键盘输入一个不多于9 位的正整数要求输出它是几位数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]349213 ↙10000↙[正确输出] [正确输出]6 5[提示]划定一位数二位数九位数的范围后用if else if else 语句实现判断4参考程序mainint nplacescanf "ld"nif n 99999999 place 9else if n 9999999 place 8else if n 999999 place 7else if n 99999 place 6else if n 9999 place 5else if n 999 place 4else if n 99 place 3else if n 9 place 2else place 1printf "ld\n"place[题目1018数的排序]由键盘输入三个整数a b c按从小到大的顺序输出这三个数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]654590 ↙963 ↙[正确输出] [正确输出]456590 369参考程序includemainint abctscanf "ddd"abcif a b t aa bb tif a c t aa cc tif b c t bb cc tprintf "ddd"abc[题目1016字符变换]由键盘输入5 个字符将其中的大写字母变成小写其它类型的字符不变并按输入顺序逐个输出[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]ApPLe ↙aB 5 ↙[正确输出] [正确输出]apple ab 5[提示]下面代码实现由键盘读入一个字符并按题意处理后输出char aa getcharif a A a Z a a32putchar a5现在题目要求处理5 个字符怎么做呢请自己思考参考程序includemainchar abcdescanf "ccccc"abcdeif a Za A a a32if b Zb A b b32if c Zc A c c32if d Zd A d d32if e Ze A e e32printf "ccccc"abcde[题目1019数的整除]由键盘输入5 个整数逐个判断它们能否被27 整除能的输出YES不能的输出NO 注意输出时一个判断结果占一行5 个数的判断共占5 行[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]8 27 17577 325 54 ↙8 27 17577 325 54 ↙[正确输出] [正确输出]NO NOYES YESYES YESNO NOYES YES[提示]整除即除得余数为0参考程序include "stdioh"mainint abcdescanf "d d d d d"abcdeif a27 0 printf "YES\n" else printf "NO\n"if b27 0 printf "YES\n" else printf "NO\n"if c27 0 printf "YES\n" else printf "NO\n"if d27 0 printf "YES\n" else printf "NO\n"if e27 0 printf "YES\n" else printf "NO\n"[题目1020正负奇偶判断]由键盘输入非零整数x 判断该数正负正数输出positive 负数输出negative 接着判断该数的奇偶性奇数输出odd偶数输出even[第一组自测数据] negative[键盘输入] odd-43 ↙[第二组自测数据][正确输出] [键盘输入]698 ↙positive[正确输出] even参考程序include "stdioh"mainint nscanf "d"nif n 0 printf "negative\n"else printf "positive\n"if n2 0 printf "even\n"else printf "odd\n"[题目1023简单计算器]下面程序是实现一个简单的运算器保留两位小数点如果由键盘输入1050计算机可以输出结果6000如果输入8 *6计算机输出4800如果输入204 计算机输出500 如果输入8-6计算机输出200 请在空处填上适当的代码运行通过后并提交include "stdioh"void mainfloat abcscanf "fcf"switch opcasecase - _case _case __default printf "error"returnprintf "result " c[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]452↙501-23 ↙[正确输出] [正确输出]90 27107参考程序includeint mainchar opscanf "fcf"aopbswitch opcase c abbreakcase -c a-bbreakcase c abbreakcase c abbreakdefaultprintf "error"breakprintf "result 2f"c8实验5 循环结构程序设计一一实验目的1熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中用循环实现一些常用算法如穷举迭代递推等二实验内容[题目1024计算阶乘]输入正整数n计算n 结果用长整型数表示注n 123n[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]5 ↙8 ↙[正确输出] [正确输出]120 40320参考程序includemainlong in 1ascanf "ld"afor i 1i ai n niprintf "ld\n"n[题目1025计算数列和]有数列1357911现要求由键盘输入n计算输出该数列的前n 项和[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]2 ↙ 5 ↙[正确输出] [正确输出]4 259参考程序includemainlong nsum 0it 1scanf "ld"nfor i 1i nisum sumtt t2printf "ld\n"sum或includemainlong nsumscanf "ld"nsum nnprintf "ld"sum注评判系统不对程序实现细节进行分析只对运行结果进行评测[题目1026 加一行字符中的数字]由键盘输入一行字符总字符个数从1 个至80 个均有可能以回车符表示结束将其中每个数字字符所代表的数值累加起来输出结果[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]abc123↙A6H7T65↙[正确输出] [正确输出]6 24[提示] 1可以使用下面程序段逐个读入键盘输入的一行字符char chwhile ch getchar \n2 数字字符转为对应的数值可用a ch-0参考程序includemainchar cint s 0awhile c getchar \nif c 0c 9a c-48s saprintf "d"s10[题目1029求最大公约数]由键盘输入两个正整数mn mn 用长整数表示计算它们的最大公约数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]1624↙1725↙[正确输出] [正确输出]8 1[提示]公约数是既能整除m 又能整除n 的数题目要求满足这一条件的最大的一个参考程序includemainlong rmntempscanf "ldld"mnwhile m 0r nmn mm rprintf "ld\n"n或includemainlong mntisscanf "ldld"mnt m nnmfor i t-1i 1i--if mi 0ni 0s i breakprintf "d"s[题目1030字符变换]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束将其中的大写字符变成小写其它类型的字符不变最后输出变换后的句子[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙ThiS IS My fIrSt C ProgrAm ↙[正确输出] [正确输出]how are you this is my first c program11参考程序includemainchar cwhile c getchar \nif c Ac Zc c32putchar c[题目1037计算数列和]有数列编程实现由键盘输入n计算输出数列前n 项和结果保留四位小数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]20 ↙30 ↙[正确输出] [正确输出]326603 880403参考程序includemainint itnfloat a 2b 1s 0scanf "d"nfor i 1i nis sabt aa abb tprintf "4f\n"s[题目1044输出最小值]从键盘输入十个整数输出最小值[ 自测数据][键盘输入]12 45 76 87 5 87 43 55 99 21 ↙[正确输出]512参考程序include "stdioh"mainint itminscanf "d" minfor i 1i 10iscanf "d" tif t min min tprintf "d\n"min*[题目1031统计单词个数]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束以空格分割单词要求输出单词的个数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙There are many students and many[正确输出] trees↙3 [正确输出]7参考程序includemainint inum 0word 0char cfor i 0 c getchar \niif c word 0else if word 0word 1numprintf "d"num*[题目1042百万富翁]一个百万富翁遇到一个陌生人陌生人找他谈了一个换钱的计划该计划如下我每天给你m 元而你第一天只需给我一分钱第二天我仍给你m 元你给我2 分钱第三天我仍给你m 元你给我4分钱依次类推你每天给我的钱是前一天的两倍直到一个月38 天百万富翁很高兴欣接受这个契约现要求编写一个程序由键盘输入m计算多少天后百万富翁开始亏钱[第一组自测数据] 18[键盘输入] [第二组自测数据]100↙[键盘输入][正确输出] 10000↙13[正确输出] 25参考程序includeincludemainint nmiscanf "d"mfor i 1i 38iif 001 pow 2i-1 -1 -im 0 breakprintf "d"i-114实验6 循环结构程序设计二一实验目的1进一步熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中使用多重循环二实验内容[题目1028求素数]输出2 到200 之间包括2 200 的所有素数注要求1 行1 个素数按由小到大的顺序输出[提示]采用双重循环外层循环产生2 到200 之间的数内层循环对数进行判断是否为素数参考程序includeincludemainint mkifor m 2m 200mk sqrt mfor i 2i kiif mi 0 breakif i k printf "d\n"m[题目1035打印菱形]由键盘输入正数n要求输出2n1 行的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]3 ↙ 2 ↙[正确输出] [正确输出]15参考程序include "stdioh"include "mathh"mainint nijkscanf "d"nfor i 1i 2n1ik abs n1-ifor j 1j kj printf " "for j 1j 2n1-2kj printf ""printf "\n"[题目1038打印图案]由键盘输入正数n要求输出中间数字为n 的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]4 ↙ 3[正确输出] [正确输出]1 1121 121 12321 12321 1234321 121 12321 1 1211参考程序includeincludemainint nijkhscanf "d"nfor i -n1i n-1ifor j 0j abs i jprintf " "for k 1k n-abs i k printf "d"kfor h n-abs i -1h 1h-- printf "d"hprintf "\n"16实验7 数组一实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2 掌握与数组有关的算法二实验内容[题目1039倒序]由键盘输入10 个整数倒序输出数字间由一个空格分隔[ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]66 13 67 99 2 19 20 14 5 70参考程序includemainint a [10]int ifor i 0i 10i scanf "d"a[i]for i 9i 0i-- printf "d\n"a[i][题目1040统计不同数字个数]由键盘输入20 个整数统计不同数字的个数[ 自测数据][键盘输入]70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11↙[正确输出]16[提示]上述答案中因为5 有1 个重复数字11 有1 个重复数字22 有2 个重复数字故不同数字有16个分别是70 5 14 22 19 2 99 67 13 66 93 44 38 11 39 3317参考程序include"stdioh"mainint a [20]int itp 0for i 0i 20iscanf "d"a[i]for t 0t itif a[t] a [i] breakif t ipprintf "d"p[题目1062打印矩阵]由键盘输入一个3×4 的矩阵要求输出它的转置矩阵[ 自测数据][键盘输入] [正确输出] 1 6 9 3 1 1 11 1 02 6 1 91 9 8 9 9 0 83 2 9参考程序includemainint a [3][4]b[4][3]ijfor i 0i 3ifor j 0j 4jscanf "d"a[i][j]b[j][i] a [i][j]for i 0i 4ifor j 0j 3jprintf "d "b[i][j]printf "\n"*[题目1047冒泡排序]由键盘输入10 个数用冒泡法对10 个数从小到大排序并按格式要求输出代码如下请填充完整数字间由一个空格分隔incude "stdioh"mainint a[10] i j t18for i 0i 10iscanf "d"___________for ___________for j 0j ____jif ______________________for i 0i 10iprintf "d "a[i][ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]2 5 13 14 19 20 66 67 70 99参考程序includemainint a [10]int ijtfor i 0i 10iscanf "d"a[i]for i 0i 9ifor j 0j 9-ijif a[j] a [j1]t a [j] a [j] a[j1] a[j1] tfor i 0i 10iprintf "d "a[i]*[题目1046计算高精度加法]由键盘输入两个位数很长的整数一行一个数每个数最长不超过80 位试计算并输出这两个数的和[ 自测数据][键盘输入]1XXXXXXXXXX23456789 ↙987654321098765 ↙[正确输出]1XXXXXXXXXX4455555419参考程序include "stdioh"include "stringh"mainint a [100] 0 b[100] 0 c[100] 0char s[101]int i 0n1 0n2 0 0e 0gets sn1 strlen sfor i n1-1i 0i-- a[n1-1-i] s[i]-0gets sn2 strlen sfor i n2-1i 0i-- b[n2-1-i] s[i]-0if n1 n2 n1else n2for i 0i ic[i] a[i]b[i]e 10e a[i]b[i]e 10if c[] 0 printf "d"c[]for i -1i 0i--printf "d"c[i]*[题目找矩阵中的鞍点]由键盘输入一个3 ×4 3 行4 列的矩阵输出矩阵中的鞍点即在矩阵行中最大列中最小的数若没有鞍点输出NO 字样[ 自测数据][键盘输入]87 90 110 98 ↙70 97 210 65 ↙98 45 120 30 ↙[正确输出]11020参考程序includemainint ijka[3][4]jflagfor i 0i 3ifor j 0j 4jscanf "d"a[i][j] for i 0i 3ia [i][0]j 0for j 0j 4jif a[i][j]a [i][j] j jflag 1for k 0k 3kif a [k][j]flag 0 breakif flagprintf "d" breakif flagprintf "NO"21实验8 字符数组的应用一实验目的1掌握字符数组和字符串函数的使用2 掌握与字符串处理有关的算法二实验内容[题目1121定义存贮字符串的字符数组]在下面程序中填充定义字符数组的语句使程序完整include "stringh"void mainchar s[80] 定义字符数组sstrcpy s "abcdefghij klmn"printf "s" s参考程序[题目1123字符串的输入与输出]下面程序实现从键盘读入字符串后输出到屏幕请填充必要的语句include "stdioh"void mainchar s[50]printf "Whats your name"gets s 由键盘读入字符串printf "Your name is "printf "s" s 打印字符串参考程序[题目1122字符串的合并]从键盘输入3 个字符串每个字符串以回车符做为结束标志将3 个字符串以输入先后顺序合并到字符串s 中请填空使用程序完整include "stdioh"include "stringh"mainchar s[100] ""char a [30]gets a strcat s a22gets a strcat s agets a strcat s a可以写多行代码printf "s" s[ 自测数据][键盘输入] [正确输出]123 123abc456abc456参考程序[题目1050寻找字符串]由键盘输入两个字符串假设第一个字符串必包含第二个字符串如第一个字符串为ABCDEF第二个为CDE则CDE 包含在ABCDEF 中现要求编程输出第二字符串在第一行字符串中出现的位置如果第二个字符串在第一个字符串中出现多次则以最前出现的为准[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]ABCDEFG ↙hellhello ↙DE ↙hello ↙[正确输出] [正确输出]4 5[提示]方法1建立双重循环外层循环变量指示第一个串的查找起始位置内层循环从起始位置开始判断第二个字符中是否出现在此处方法2 使用字符串函数strstr参考程序include "stdioh"mainint ijchar a [80] b[80]gets a gets bfor i 0a[i] \0ifor j 0b[j] \0jif a[ij] b[j] breakif b[j] \0 breakif a[i] \0 printf "d"i1else printf "Not Found"23实验9 函数的基本应用一实验目的1掌握定义函数的方法2 掌握函数实参与参的对应关系以及值传递的方式3 掌握函数的嵌套调用和递归调用的方法4 掌握全局变量和局部变量动态变量静态变量的概念和使用方法二实验内容[题目1059函数定义]下面是使用辗转相除法求最大公约数的程序请补充完整程序中函数的定义与调用include "stdioh"int f int m int nint rwhile r mn 0m nn rreturn nmainint a b nscanf "dd" a bprintf "d\n" f a b[题目1083编写函数计算阶乘]下面程序实现由键盘读入整数n计算并输出n 请补充完整计算阶乘的函数long fanc int along in 1for i 1i ai n nireturn nvoid mainint nscanf "d" n24printf "ld" fanc n[题目1124函数中的变量]写出下面程序的运行结果int f1 int xstatic int z 3y 0yzreturn xyzmainint a 1kfor k 0k 3k printf "4d"f1 a 程序运行结果为6 8 10*[题目1084编写递归调用函数实现十进制数转二进制数]下面程序实现由键盘输入一个正整数不大于100000000 输出其对应的二进制数原码表示请填空include "stdioh"void fun int iif i 1fun i2printf "d" i2mainint nscanf "d" nfun n25实验10 指针与结构体一实验目的1通过实验进一步掌握指针的概念会定义和使用指针变量2 能正确使用数组的指针和指向数组的指针变量3 能正确使用字符串的指针和指向字符中的指针变量4 掌握结构体类型变量的定义和使用二实验内容[题目1091交换两数由大到小输出]下面程序交换两数使两数由大到小输出请填空include "stdioh"void swap int p1 int p2int temptemp p1p1 p2p2 tempint mainint ab int papbscanf "dd" a bpa a pb bif a b swap pa pbprintf "d d\n"ab[题目1065数组中的指针]设有如下数组定义int a[3][4] 1357 9111315 17192123计算下面各项的值设数组a 的首地址为2000一个int 类型数占四个字节注意地址则输出地址变量则输出变量值要求一行一个答案不允许多余空行及空格1a[2][1] 2 a[1] 3 a 4 a 15 a 16 a 17 a[2] 18 a 1 19 a2 226参考程序include "stdioh"mainprintf "19\n"printf "2016\n"printf "2000\n"printf "2016\n"printf "2004\n"printf "2016\n"printf "2036\n"printf "2020\n"printf "21"[题目1092函数实现求字符串长度]下面程序以指针方式传递参数由函数实现求字符串长度请填空完成include "stdioh"include "stringh"int f char preturn strlen pint mainchar s[80]int iscanf "s" si f sprintf "d" i[题目1125定义结构体类型]要求定义一个名为student 的结构体类型其包含如下成员1字符数组name 最多可存放10 个字符2 字符变量sex用于记录性别3 整数类型变量num用于记录学号4 float 类型变量score 用于记录成绩并使下列代码完整定义结构体类型struct studentchar name[20]char sex。
C语言程序设计上机实验报告学院:机械工程学院班级:机自161213姓名:刘昊学号:20162181310实验时间:2017年3月6号任课老师:张锐C语言程序设计上机实验报告实验一一、实验名称: C程序的运行环境和运行C程序的方法二、实验目的:了解在C编译系统上如何编辑、编译、连接和运行一个C程序三、实验内容:(1). 输入并运行一个简单的C程序。
(2). 设计程序,对给定的两个数求和。
(3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。
四、源程序代码:代码1:运行结果1:程序分析1:该程序用来判断所输入的整数是否为一个素数,如果一个数能被除了1和它本身整除,还能被其它数整除,那么它就不是一个素数,因此,用for循环来进行整除过程的简写。
代码2:运行结果2:程序分析2:简单的使用printf()和scanf()函数进行简单的数据运算。
代码3:运行结果3:程序分析3:使用if语句进行判断。
五.实验总结C语言程序设计上机实验报告实验二一、实验名称:顺序结构程序设计二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法,熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。
三、实验内容:(1). 编写程序,实现小写字母转大写。
(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。
(3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。
(4). 编写程序,实现单字符getchar和putchar输入输出。
(5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。
四、源程序代码代码1:运行结果1:程序分析1:所有的字符都有一个对应的数字与之对应,每一个小写字母对应的数与大写字母对应的数之间总是相差32,所以只需要对所输入的字符进行减法运算就可以转换为与之对应的大写字母。
代码2:运行结果2:程序分析2:简单的数据运算和格式字符的输出。
C 语言上机操作指导程序设计是实践性很强的过程,任何程序最终都必须在计算机上运行,以检验程序的正确与否。
因此在学习程序设计中,一定要重视上机实践环节,通过上机可以加深理解C语言的有关概念,以巩固理论知识,另一方面也可以培养程序调试的能力与技巧。
1(C语言程序的上机步骤按照C 语言语法规则而编写的C 程序称为源程序。
源程序由字母、数字及其它符号等构成,在计算机内部用相应的ASCII 码表示,并保存在扩展名为“(C”的文件中。
源程序是无法直接被计算机运行的,因为计算机的CPU 只能执行二进制的机器指令。
这就需要把ASCII 码的源程序先翻译成机器指令,然后计算机的CPU 才能运行翻译好的程序。
源程序翻译过程由两个步骤实现:编译与连接。
首先对源程序进行编译处理,即把每一条语句用若干条机器指令来实现,以生成由机器指令组成的目标程序(扩展名为“(OBJ”的文件)。
但目标程序还不能马上交计算机直接运行,因为在源程序中,输入、输出以及常用函数运算并不是用户自己编写的,而直接调用系统函数库中的库函数。
因此,必须把“库函数”的处理过程连接到经编译生成的目标程序中,生成可执行程序(扩展名为“(EXE”的文件),并经机器指令的地址重定位,便可由计算机运行,最终得到结果。
C语言程序的调试、运行步骤可以用图A-1 表示:图A-1 C 语言程序的调试、运行步骤图A-1 中,虚线表示当某一步骤出现错误时的修改路线。
运行时,无论是出现编译错误、连接错误,还是运行结果不对(源程序中有语法错误或逻辑错误),都需要修改源程序,并对它重新编译、连接和运行,直至将程序调试正确为止。
除了较简单的情况,一般的程序很难一次就能做到完全正确。
在上机过程中,根据出错现象找出错误并改正称为程序调试。
我们要在学习程序设计过程中,逐步培养调试程序的能力,它不可能靠几句话讲清楚,要靠自己在上机中不断摸索总结,它可以说是一种经验积累。
程序中的错误大致可分为三类:程序编译时检查出来的语法错误;连接时出现的错误;程序执行过程中的错误。
C语言程序设计-第3次上机C语言程序设计实验报告班级 CS1108 日期 2012/5/26学生姓名王一微学号 U201114404第 3 次上机实验1 编译预处理(一) 实验目的(1)掌握文件包含、宏定义、条件编译、assert宏的使用;(2)练习带参数的宏定义、条件编译的使用;(3)练习assert宏的使用;(4)使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。
(二) 实验内容及要求1.源程序改错下面是用宏来计算平方差和交换两数的源程序。
在这个源程序中,存在若干语法和逻辑错误,要求在计算机上对这个源程序进行调试修改,使之能够正确完成计算平方差和交换两数的任务。
源程序:#include<stdio.h>#define SUM a+b#define DIF a-b#define SWAP(a,b) a=b,b=avoid main(void){int b, t;printf("Input two integers a, b:");scanf("%d,%d", &a,&b);printf("\nSUM=%d\n the difference between square of a andsquare of b is:%d",SUM, SUM*DIF);SWAP(a,b);Printf("\nNow a=%d,b=%d\n",a,b);}源程序在code::blocks上运行后出现修改后为:运行测试为:2.源程序修改替换下面是用函数实现求三个数中最大数、计算两数之和的源程序。
在这个源程序中存在若干语法和逻辑错误,要求:(1) 对这个例子程序进行调试修改,使之能够正确完成指定任务。
(2) 用带参数的宏替换函数max,来实现求最大数的功能。
源程序:void main(void){int a, b, c;float d, e;printf("Enter three integers:");scanf("%d,%d,%d",&a,&b,&c);printf("\nthe maximum of them is %d\n",max(a,b,c));printf("Enter two floating point numbers:");scanf("%f,%f",&d,&e);printf("\nthe sum of them is %f\n",sum(d,e));}int max(int x, int y, int z){int t;if (x>y)t=x;elset=y;if (t<z)t=z;return t;}float sum(float x, float y){return x+y;}(1)源程序修改后为:运行测试为:(2)按要求修改源程序如下:运行测试为3.跟踪调试程序下面程序的功能是利用R计算圆的面积s,以及面积s的整数部分。
现要求:(1)修改程序,使程序编译通过且能运行。
源程序修改如下:运行测试为:(2) 单步执行。
进入函数integer_fraction时,watch窗口中x为何值?在返回main时, watch窗口中i为何值?单步执行,进入integer_fraction时,watch窗口中x=254.468796.返回main时,watch中i=254.(3) 排除错误,使程序能正确输出面积s值的整数部分,不会输出错误信息assertion failed。
程序代码:#define Rvoid main(void){float r,s;int s_integer=0;printf ("input a number: ");scanf("%f",&r);#ifdef Rs=3.14159*r*r;printf("area of round is: %f\n",s);s_integer= integer_fraction(s);printf("the integer fraction of area is %d\n", s_integer); assert((s-s_integer)<1.0);#endif}int integer_fraction(float x){int i=x;return i;}实验2 数组实验(一) 实验目的(1)掌握数组的说明、初始化和使用。
(2)掌握一维数组作为函数参数时实参和形参的用法。
((二) 实验内容及要求1.源程序改错下面是用来将数组a中元素按升序排序后输出的源程序。
分析源程序中存在的问题,并对源程序进行修改,使之能够正确完成任务。
源程序:#include<stdio.h>void main(void){int a[10] = {27, 13, 5, 32, 23, 3, 17, 43, 55, 39};void sort(int [],int);int i;sort(a[0],10);for(i = 0; i < 10; i++)printf("%6d",a[i]);printf("\n");}void sort(int b[], int n){int i, j, t;for (i = 0; i < n - 1; i++)for ( j = 0; j < n - i - 1; j++)if(b[j] < b[j+1])t = b[j], b[j] = b[j+1], b[j+1] = t;}源程序修改如下:运行测试为:2.源程序完善、修改、替换(1) 下面的源程序用于求解瑟夫问题:M个人围成一圈,从第一个人开始依次从1至N循环报数,每当报数为N时报数人出圈,直到圈中只剩下一个人为止。
请在源程序中的下划线处填写合适的代码来完善该程序。
源程序:#include<stdio.h>#define M 10#define N 3void main(void){int a[M], b[M]; /* 数组a存放圈中人的编号,数组b存放出圈人的编号 */int i, j, k;for(i = 0; i < M; i++) /* 对圈中人按顺序编号1—M */a[i] = i + 1;for(i = M, j = 0; i > 1; i--){/* i表示圈中人个数,初始为M个,剩1个人时结束循环;j表示当前报数人的位置 */for(k = 1; k <= N; k++) /* 1至N报数 */ if(++j > i - 1) j = 0;/* 最后一个人报数后第一个人接着报,形成一个圈 */b[M-i] = j? a[j-1] : a[i-1] ; /* 将报数为N的人的编号存入数组b */if(j)for(k = --j; k < i; k++) /* 压缩数组a,使报数为N的人出圈 */a[k]=a[k+1] ;}for(i = 0;i < M – 1; i++) /* 按次序输出出圈人的编号*/printf(“%6d”, b[i]);printf(“%6d\n”, a[0]); /* 输出圈中最后一个人的编号*/}运行测试为:(2) 上面的程序中使用数组元素的值表示圈中人的编号,故每当有人出圈时都要压缩数组,这种算法不够精炼。
如果采用做标记的办法,即每当有人出圈时对相应数组元素做标记,从而可省掉压缩数组的时间,这样处理效率会更高一些。
因此,请采用做标记的办法修改(1)中的程序,并使修改后的程序与(1)中的程序具有相同的功能。
源程序为:运行测试为:3.跟踪调试源程序在下面所给的源程序中,函数strncat(s,t,n)本来应该将字符数组t的前n个字符连接到字符数组s中字符串的尾部。
但函数strncat在定义时代码有误,不能实现上述功能。
请按下面的要求进行操作,并回答问题和排除错误。
(1) 单步执行源程序。
进入函数strncat后观察表达式s、t和i。
当光条落在for语句所在行时,i为何值?当光条落在strncat函数块结束标记(右花括号 })所在行时, s、t分别为何值?光条落在for语句所在行时,i=22光条落在strncat函数块结束标记所在行时(2) 分析函数出错的原因,排除错误,使函数正确实现功能,最后写出程序的输出结果。
源程序:#include<stdio.h>void strncat(char [],char [],int);void main(void){char a[50]="The adopted symbol is",b[27]="abcdefghijklmnopqrstuvwxyz";strncat(a, b, 4);printf("%s\n",a);}void strncat(char s[],char t[], int n){int i = 0, j;while(s[i++]) ;for(j = 0; j < n && t[j];)s[i++] = t[j++];s[i] = '\0';}(2)调试发现s,t和i值有误,修改后源程序为:运行输出结果为:程序设计:编写并上机调试运行能实现以下功能的程序。
(1) 已知三角形的面积是))()((c s b s a s s area ---=,其中2/)(c b a s ++=,a,b,c 为三角形的三边。
定义两个带参数的宏,一个用来求s ,另一个用来求area,试编写一程序,用带参数的宏来计算三角形的面积。
(1)源程序如下:运行测试为:结果正确。
(2) 使用条件编译方法编写一程序,其功能要求是,输入一行电报文字,可以任选两种输出:一为原文输出;二为变换字母的大小写(如小写‘a’变成大写‘A’,大写‘D’变成小写‘d’),其他字符不变。
用#define命令控制是否变换字母的大小写。
例如,#define CHANGE 1 则输出变换后的文字,若#define CHANGE 0则原文输出。
(2)源程序如下:运行测试为:将#define CHANGE 1换为#define CHANGE 0后源程序为:运行测试为:结果正确。
(3) 编写一个程序,从键盘读取数据,对一个3 4矩阵进行赋值,求其转置矩阵,然后输出原矩阵和转置矩阵。