精心整理1.编写一个程序将用户输入的正整数转化为对应的二进制数。#includestdio.h#includestdlib.hintmain(){intnum;printf(请输入一个正整数:);scanf(%d,&num);//异常输入直接结束if(num0){printf(输入错误!);exit(0);}//将num和2进行取余运算,存储在数组中inta[20],i=0;while(num!=0){a[i]=num%2;num=num/2;i++;}//遍历输出数组while(i0){printf(%d,a[--i]);}printf(\n);return0;}2.请写出你所了解的linux系统中常用的命令并解释其功能。(1)pwd命令该命令的英文解释为printworkingdirectory(打印工作目录)。输入pwd命令,Linux会输出当前目录。(2)cd命令cd命令用来改变所在目录。cd/转到根目录中cd~转到/home/user用户目录下cd/usr转到根目录下的usr目录中-------------绝对路径cdtest转到当前目录下的test子目录中-------相对路径(3)ls命令ls命令用来查看目录的内容。选项含义-a列举目录中的全部文件,包括隐藏文件-l列举目录中的细节,包括权限、所有者、组群、大小、创建日期、文件是否是链接等-f列举的文件显示文件类型-r逆向,从后向前地列举目录中内容-R递归,该选项递归地列举当前目录下所有子目录内的内容-s大小,按文件大小排序-h以人类可读的方式显精心整理示文件的大小,如用K、M、G作单位ls-lexamples.doc列举文件examples.doc的所有信息(4)cat命令cat命令可以用来合并文件,也可以用来在屏幕上显示整个文件的内容。catsnow.txt该命令显示文件snow.txt的内容,ctrl+D退出cat。(5)grep命令grep命令的最大功能是在一堆文件中查找一个特定的字符串。grepmoneytest.txt以上命令在test.txt中查找money这个字符串,grep查找是区分大小写的。(6)touch命令touch命令用来创建新文件,他可以创建一个空白的文件,可以在其中添加文本和数据。touchnewfile该命令创建一个名为newfile的空白文件。(7)cp命令cp命令用来拷贝文件,要复制文件,输入命令:cpsourcefilenametargetfilenamecpt.txtDocument/t该命令将把文件t.txt复制到Document目录下,并命名为t。3.编写一个程序计算任一输入数字的各位数字之和。#includestdio.h#includestdlib.hintmain(){intnum;printf(请输入一个正整数:);scanf(%d,&num);//异常输入直接结束if(num0){printf(输入错误!);exit(0);}intresult=0;while(num!=0){result+=num%10;num=num/10;}printf(%d\n,result);return0;}4.编写一个程序判断用户输入任一正整数是否为素数。#includestdio.h#includestdlib.hintmain(){intnum;printf(请输入一个大于1正整数:);精心整理scanf(%d,&num);//异常输入直接结束if(num0||num==1){printf(输入错误!);exit(0);}if(num==2){printf(%d是素数。\n,num);exit(0);}boolflag=true;//默认判断是素数for(inti=2;inum;i++){if(num%i==0){flag=false;//发现了其他因子,不是素数break;}}if(flag==true){printf(%d是素数。\n,num);}else{printf(%d不是素数。\n,num);}return0;}5.编写一个程序求给定三个字符串的最长公共字串。(难)这里我只写了两个字符串的比较方法,三个字符串的意思是一样的。#includestdio.h#includestring.h#includestdlib.hintlongest_common_substring(char*str1,char*str2){inti,k,len1,len2,len,s1_start,s2_start,idx,curmax,max;len1=strlen(str1);len2=strlen(str2);len=len1+len2;max=0;for(i=0;ilen;i++){精心整理s1_start=s2_start=0;if(ilen1){s1_start=len1-i;//每次开始匹配的起始位置}else{s2_start=i-len1;}curmax=0;for(idx=0;(s1_start+idxlen1)&&(s2_start+idxlen2);idx++){if(str1[s1_start+idx]==str2[s2_start+idx]){curmax++;}else//只要有一个不相等,就说明相等的公共字符断了,不连续了,//要保存curmax与max中的最大值,并将curmax重置为0{//max=curmaxmax?curmax:max;if(curmaxmax){max=curmax;k=s1_start+idx-1;//保存连续子串长度增加时连续子串最后一个字符在str1字符串中的下标位置,//便于输出公共连续子串}curmax=0;}}//max=curmaxmax?curmax:max;if(curmaxmax){max=curmax;k=s1_start+idx-1;}}//输出公共子串chars[100];for(i=0;imax;i++){s[i]=str1[k-max+1+i];//公共字串在str1中的下标起始位置为k-max+1,结束位置为k}s[i]='\0';精心整理printf(最长公共子串为:);puts(s);returnmax;}intmain(void){charstr1[100],str2[100];printf(请输入第一个字符串:);gets(str1);printf(请输入第二个字符串:);gets(str2);intlen=longest_common_substring(str1,str2);printf(最长公共连续子串的长度为:%d\n,len);return0;}6.编写一个程序计算用户输入的起始时间到终止时间的天数。#includestdio.hboolisLeapYear(intyear);intCalcDay(intyerar1,intmonth1,intday1,intyear2,intmonth2,intday2);intleapMonth[12]={31,29,31,30,31,30,31,31,30,31,30,31};intnormalMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};intmain(){intyear1,year2,month1,month2,day1,day2;printf(请输入第一个日期(年月日):);scanf(%d%d%d,&year1,&month1,&day1);printf(请输入第二个日期(年月日):);scanf(%d%d%d,&year2,&month2,&day2);intsum=CalcDay(year1,month1,day1,year2,month2,day2);printf(%d\n,sum);return0;}//判断是否为闰年boolisLeapYear(intyear){if(year%4==0&&year%100!=0||year%400==0){returntrue;}returnfalse;}intCalcDay(intyerar1,intmonth1,intday1,intyear2,intmonth2,intday2){intresult=0;if(yerar1!=year2)精心整理{for(inti=yerar1+1;iyear2;i++)//计算相差的整年{if(isLeapYear(i)){result+=366;}else{result+=365;}}if(isLeapYear(yerar1)){for(inti=month1+1;i=12;i++){result+=leapMonth[i-1];}result+=leapMonth[month1-1]-day1;}if(isLeapYear(yerar1)==false){for(inti=month1+1;i=12;i++){result+=normalMonth[i-1];}result+=normalMonth[month1-1]-day1;}if(isLeapYear(year2)){for(inti=1;imonth2;i++){result+=leapMonth[i-1];}result+=day2;}if(isLeapYear(year2)==false){for(inti=1;imonth2;i++){result+=normalMonth[i-1];}result+=day2;}}精心整理else{if(isLeapYear(yerar1)){if(month1!=month2){for(inti=month1;imonth2-1;i++){result+=normalMonth[i];}result+=day2+normalMonth[month1-1]-day1;}else{result+=day2-day1;}}else{if(month1!=month2){for(inti=month1;imonth2-1;i++){result+=normalMonth[i];}result+=day2+normalMonth[month1-1]-day1;}else{result+=day2-day1;}}}returnresult;}7.编写一个程序从键盘输入圆锥体的半径r和高度h,并计算体积。#includestdio.hintmain(){doubler,h;printf(请输入圆锥的半径:);scanf(%lf,&r);printf(请输入圆锥的高度:);scanf(%lf,&h);doublev=r*h/3;精心整理printf(该圆锥的体积为:%lf\n,v);return0;}8.编写一个判定一个字符串是否为另一个字符串子字符串的程序。#includestdio.h#includestring.hintcmpsubstr(chara[50],charb[50]){inti,j,flag=-1;for(i=0;i=(strlen(a)-strlen(b));i++){flag=i;for(j=0;jstrlen(b);j++)if(b[j]!=a[i+j])break;if(j==strlen(b))returnflag;}return-1;}intmain(){chara[50],b[50];intn;printf(输入字符串a:);gets(a);printf(输入字符串b:);gets(b);if(strlen(a)=strlen(b)){n=cmpsubstr(a,b);if(n!=-1)printf(b是a的子串,位置从a[%d]开始.\n,n);elseprintf(b不是a的子串);}else{n=cmpsubstr(b,a);if(n!=-1)printf(a是b的子串,位置从b[%d]开始.\n,n)