linux c编程精华配套-实验手册_第1页
linux c编程精华配套-实验手册_第2页
linux c编程精华配套-实验手册_第3页
linux c编程精华配套-实验手册_第4页
linux c编程精华配套-实验手册_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

实验一:编程环境以及C编程 实验二:C语言基本概念及格式化IO函 实验三:C语言控制 实验四:C语言函 实验七:LINUX-C进程内存布 实验一:编程环境以C编内容概一、LINUXC编程环境二、典型C程序实例概览范例剖范例一:一年大约有3.1536*107s。编写一个程序,要求输入你的,然后显示该等于多少秒。思路:假设你为N,那么该合等秒数为s=N*3.1536*107,该程序专家点评在于:我们要用合//age2sec.c int{shortage;printf("howoldareyou(between0--100):");//age:0-100intret1,ret2;while((ret1=scanf("%hd",&age))!=1||//inputdon'tmatchtheformat(ret2=getchar())!='\n'||//don'tmatchtheformatage>100||age< //outof{if(ret1!=1||ret2!={}

while(getchar()!='\n'){;}//discardinvalidinputsprintf("inputinvalid!\n");printf("invalidprintf("howoldareyou(between0--100):");//age:0-}seconds=age*printf("youhavepass%.0lfsecondsinyourlife!\n",seconds);return0;}2seconds定义为float类型,而不是整型,这样才能装得下秒数ret2必须等于’\n’,如果不等于’\n’ageCHAR_MAX-155或导致while语句的循环,提示用户继续输入。4scanf("%hd",&age)中的%hdage中。hhalf,ddecimal,即半个十进制整型(4个字节(2个字节强3、Mr.Bing写了下面这个程序,请你认为不妥的地方include“stdio.h”main{}(floatg;h;g=e21;tax=rate*g;)值为回车符(使用ASCII码。6、说说'A'与"A"有什么区别实验二:C语言基本概念及格式化IO函内容概要一、字符串和格式化范例剖间并输出到屏幕上。(使用#define来定义一60的符号常量)N60分钟=1小时,因此N分钟包含的小时数应该是N/60,只要是整#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<limits.h> intmain(void){intminutes;{scanf("%d",&minutes);//noerrorcheck!if(minutes<0){fprintf(stderr,"inputinvalid,tryagain:");}}printf("%dhoursand%dminutes\n",minutes/MIN,minutes%MIN);//算return}强化值(比如输入5,则输出5到15)。要求在各个输出值之间用空格、制表符或者换行符分开。2、写出下面表达式运算后aa=12。设ana+=a-=a*=a/=a+=a-=a*=的立方并且将它的立方打印出来。main函数负责把输入的值传递给该函数。18daysare2weeks,4days.#include<stdio.h>int{return0;}实验三:C语言控制内容概要二、字符IO范例剖$int{intnum,scanf("%d",&num);//noerrno{intfor(j=0;j<i+1;{}}return}1for和while构成二重循环,while循环控制输出的行数,for2,程序中的scanf()函数没有强化转换为:c=5(F-32)/9实验四:C语言内容概要范例剖1和本身整除(1既不是素数也不是合数),假设给定一个整数N,只要用2,3,4……N-1来整除N,如果都不能除尽,则N是素数。#include<stdio.h>#include<limits.h>boolprime(int{inti;num*=-1;{if(num%i==return}

return}int{intprintf("Inputanumber(between%dand%d):",INT_MIN+1,INT_MAX-1);scanf("%d",&num);//noerrnocheck!if(num==0||num==1||!prime(num))printf("humm,%disNOTaprime.\n",num);printf("great,%dISaprime!\n",return}而改用i*i<=num替换达到相同的效果,因为调用sqrt函数速度更慢。强化donut()接受一个int类型的参数,然后输出若干个0,输出0gear()接受两个int类型的参数并返回int类型的值调用my_power(3.14,-2)返回0.1014246、编写一个函数Fibonacci(),要求程序输出第n那契数,n由用户输入。那契数列:1,1,2,3,5,8,13,21,……实验五:数组与指内容概要范例剖范例五:编写一个函数,把两个数组内的相应元素相加,结果到第3个数组内。也就是说,如果数//summary.c voidsumary(intarray1[],intarray2[],intarray3[],int{intfor(i=0;i<size;array3[i]=array1[i]+}int{intarray1[LIM]={2,4,6,intarray2[LIM]={1,0,3,6};intarray3[LIM];inti;for(i=0;i<LIM;i++)return0;}强化int1种方法表示grid[22][56]2种方法表示grid[22][0]3种方法表示grid[0][0]一个有10一个有10一个指向有10一个有10#include<stdio.h>int{intref[]={8,4,0,2};int*ptr;intfor(index=0,ptr=ref;index<4;index++,ptr++)printf(“%d%d\n”,ref[index],*ptr);return}intinttorf[2][2]={12,14,ptr=intintfort[2][2]={{12},{14,ptr= apple[10],apple_tree[10][5],*pf,weight=2.2; i=3;apple[2]=scanf(“%f”,apple=printf(“%f”,apple_tree[4][4]=apple_tree[5]=pf=pf=实验六:数组与指内容概要强化voidupper_case(charstr[{ for(i=0;i<sizeof(str)/ {if(str[i]>‘a’ str[i]<str[i]-=(‘a’-}}int{charstr[]=printf(“lengthofthestring:%d\n”,sizeof(str)/sizeof(str[0]));}#include<stdio.h>intmain(void){inta[4]={1,2,3,int*ptr1=(int*)(&a+1);return0;}3、一个二维int型数组arr,再另一个一维数组指针数组,使该数组的每一个指针分别指向二维数组中的每一个元素(即每一个一维数组),然后利用数组p2arr计算数组arr的和。例如数组a[6]={-2,5,3,-6,4,-8,6};则子数组之和的最大值是8(即a[1]+a[2])。NxM数组。实验七:LINUX- 进程内存布内容概要二、LINUXC内存映像范例剖intmain(void){ staticint a+=3;b+=func}intvoid{ a+=b+=c+=printf("%d,%d,%d\n",a,b,c);}1,变量a是全局变量,因此在main函数和在func函数中的a都是同一个a,任何地方对a的操作都会2,变量bmain函数和func里面都是普通的局部变量,局部变量又叫临时变量,在进入函数体的时候,由系main函数前后两次调用func时分别产生了两个b,而main函数中也有一个b,这三个变量没有任何关系。3,变量c是静态局部变量,在数据段中,而不是在栈中,因此在多次调用func函数的过程当中,的都是同一个cmain函数中也有一个这样的静态局部变量c,这个跟funcc也没有任何关系。强化 {*p= o}void{char*str=NULL; }实验八:结构体等组合数据类内容概要范例剖 { //mpg=distance*structgasdistancegals#includestruct{floatgals;floatmpg;//mpg=distance*//passthewholestructuretothisfunctionstructgas {bill.mpg=bill.distance*bill.gals;returnbill;}//passthepointertothisvoiddeal_with_pointer(structgas{pbill->mpg=pbill->distance*pbill-}int{structgasmy_bill;my_bill.gals=my_bill=deal_with_struct(my_bill);printf("mybill'smpg:%f\n",my_bill.mpg);structgasyour_bill;your_bill.gals=printf("yourbill'smpg:%f\n",your_bill.mpg);return0;}1main函数中定义了一个结构体变量my_bill,然后将这整个结构体传deal_with_struct函数,这是按值传递,在deal_with_struct函数billmy_bill的拷贝,计算完数值之后,又通过函数返回值返回给main函数中的my_bill。强化{charitable;char*togs}struct{chardog;unsignedlongcat;charfox; {longi;charc;} {intcat;fruitapple;doublefruit则语句 表示数组元素个数的int变量以及一个函数名(或者等价的指向函数的指针)。transform()函数把指定的函数作 sin(source[0])target[0],等等。共100个元素。在一个程序中测试该函数,调4transform(),分别使用math.h函数库中的两个函数以及自己设计的两个适合的函数作为实验九:高级议内容概要强化1、写一个带参数的宏MIN(x,y),这个宏输入两个参数并返回较小的 #defineSOME_HEADER_H_…… a[], { { tmp=a[0];a[0]=a[k-a[k-1]=}}部分题目详示例代码1:

为了可以用户从键盘输入的整数,以及可以向屏幕输出结果,我们使用了标准库函数scanf()和printf(),scanf(“%hhd”,&ch)chprintf(“%c\n”,ch)将这为了能够检测用户的输入是否超过0-127的范围,第5行定义了一个short型变量ch来用户的输入,这样,当用户输入超过127但不超过short的最大值的时候,本程序可以正常工作。另外,ret1不为1时或者ret2不为’\n’时都代表用户输入了字符,第20行的while循环用来清空用户最后,该程序还是有BUG的,short类型的变量ch并不能保证用户的输入一定是有效的,因为short类215,围,所以当用户输入65536时,我们的程序就为力了,它会以为用户输入了0而觉察不出来。input55

由题目可知,如果有N夸脱水,则总共有N*9503.0*10-23gN*950克水含有的水分子数目是N*950/3.0*10-23程序中注意使用恰当的数据类型来表示浮点数,以免溢出。有整数值(比如输入5,则输出5到15)。要求在各个输出值之间用空格、制表符或者换行符分开。第6行,定义了一个局部int型变量begin,用来用户的输入。在用scanf()用户输入之前,第行用printf()执行i++自增,一直到i为11退出循环。该值的立方并且将它的立方打印出来。main函数负责把输入的值传递给该函数。main函数看10行定义了一float类型的变f13scanf用来获取用户的输入。13行第22行的printf()函数里面,第三个参数直接调用了自定义的函数cube(),并且将变量f传递了给她。函数cube()的功能就是计算f的立方值,此时程序将会跳转到第3行运行,将f的立方返回22行作为printf函数

第5行定义了一个char类型的变量alp,用来字符第7行到第10行是一个for循环,变量alp从’a’(即97)开始,每次执行外循环体语句(即printf语句)之后执行alp++,注意,字符就是整型,是一种特殊的整型,特殊在只有一个字节,因此整型支持的运算字符都是支持的,比如自加符++。一直循环到alp超过了’z’字符的ASCII码值的范围,退出for循环。

里,我们需要循环line次,打印line行。2226行,打印空格,经过分析得知,每一行所需的空格数目是line-i2832行,打印升序字母,经过分析得知,第i行需要打印i个升序字母,从‘A’开始。第34到38行,打印降序字母,经过分析得知,第i行需要打印i–1个字母。题目7:编写一个程序,该程序输入直到遇到#字符,然后报告的空格数目、的换行符数目以

断进行。得到的用户输入放在变量c当中,接下来用switch语句对其进行判断。\n(题 8:编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数main函数开始看起2434行检测用户输入37行是一for循环,通过自定义prime()2开始一直到boundary是否是素数,如果是,prime()printf函数可以打印,否则返当程序执行39行的时候,将会跳转到第5行去运行,pri

温馨提示

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

评论

0/150

提交评论