



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C程序设计I》实验指导书信息工程学院计算机系TOC\o"1-5"\h\zC程序设计实验要求 2实验ー简单程序设计 21010测试验证结果 21011温度转换 21012计算书费 31013时间相加 3实验二分支结构程序设计 41020函数值计算 41021颠倒整数 51022整数排序 51023自整除数 61024选作题:FibonacciAgain 6实验三循环结构程序设计 71030整数的立方和 7\o"CurrentDocument"1031求累加和 71032与7无关的数 81033选作题:细菌繁殖 8实验四数组应用 91040杨辉三角形 91041矩阵乘法 321042学生成绩管理 351043选作题:大整数乘法 43实验五函数应用 451050各类型变量在函数调用过程中的变化 461051最大公约数和最小公倍数 471052进制转换 541053字符串替换 561054排序 591055选作题:数制转换 61实验六综合应用 641060同一天生日 641061忽略大小写比较字符串 701062不吉利日期 721063统计字符数 741064选作题:DigitalRoots 77附录 19ー、VisualC++调试环境的使用 19二、TC环境下的使用 84三、实验报告要求 90四、C程序设计常见错误及解决方案 84C程序设计实验要求课程实验是c程序设计课程的一个重要的实践环节,要求每个同学按以下要求独立完成每次实验,每次上机前必须编写完实验要求的所有题目,并按输出格式写出程序的运行结果,上机时调试程序并验证结果的正确性,若与运行结果不符,则要分析原因,上机时间由课内和课外上机两部分,以下时间为课内上机时间。实验ー简单程序设计目的及要求:.熟练掌握c开发环境的窗口、菜单命令及相应的命令,并掌握在开发环境下如何编辑、编译、连接、运行一个C程序,以及如何保存和修改C语言的源程序。.通过运行ー个简单的C程序过程,逐步了解C程序的基本结构及特点。.掌握C语言的基本数据类型,熟悉它们的使用方法及定义方式,了解各类型数据输出时所用的格式转换符,熟悉各种运算符和表达式的使用特点。.熟练掌握C中赋值运算的使用。1010测试验证结果习题4.5〇1011温度转换第三题:Description华氏温度和摄氏温度的转换公式为:C=5/9*(F-32)其中:F为华氏温度C摄氏温度Input一个整数表示华氏温度。Output输出一行。该行包含ー个浮点数C,表示转换的摄氏温度。精确到小数点后两位。SampleInput93SampleOutput33.89答案:#include<stdio.h>voidmain(){intf;floatc;scanf&f);c=(5/9.0)*(f-32);printf(*%0.2f\n",c);getchar();1012计算书费Description下面是ー个图书的单价表:计算概论28.9元/本数据结构与算法32.7元/本数字逻辑45.6元/本C++程序设计教程Y8兀/本人工智能35元/本计算机体系结构86.2元/本编译原理27.8元/本操作系统43元/本计算机网络56元/本JAVA程序设计65元/本给定每种图书购买的数量,编程计算应付的总费用。Input输入每行包含ー组10个整数(大于等于〇,小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA程序设计》的数量(以本为单位)。每两个整数用一个空格分开。Output输出一行。该行包含ー个浮点数f,表示应付的总费用。精确到小数点后两位。可用printf(“先2f\n",sum)来输出sum的值,并精确到小数点后两位。SampleInpuampleOutput2140.201013时间相加Description用整数表示时间,如:1050表示10点50分,2010表示20点10分。现输入两个时间,求两个时间的和。例:2030+850=520不是28801055+850=1945不是1905Input两行数据,每行ー个整数。Output输出相加后的时间整数。SampleInput2030850SampleOutput520答案ー:#include"stdio.h"voidmain()(inta,b,bl,b2,a1,a2,sl,s2,sum;scanf("%d",&a);scanf("%d",&b);al=a/100;a2=a-al*100;bl=b/100;b2=b-bl*100;if(a2+b2>=60)(s2=a2+b2-60;if(al+bl+l>=24)sl=al+bl+l-24;elsesl=al+bl+l;)else(s2=a2+b2;if(al+bl>=24)sl=a1+b1-24;elsesl=al+bl;sum=sl*100+s2;printf("%03d\n",sum);getchar();}答案ニ:#include"stdio.h"#include"conio.h"voidmain()(inta,b;scanf("%d",&a);scanf("%d",&b);inth=0;intc=a%100+b%100;intinc=0;if(c>=60){c=c-60;inc=l;printf("%03d",((a/100+b/100+inc)%24)*100+c);getch();实验二分支结构程序设计目的及要求:.掌握C程序设计的基本语句表达方式及基本语句结构的方法。.掌握C语言中输入、输出函数的基本功能。.掌握顺序和分支结构程序设计的方法。.能独立编写顺序及分支结构的C程序。1020函数值计算第四题:Description有一个函数 y=x (x<1)=2x-1 (1く=xく10)-3x-11 (x>=10)写ー程序,输入x值,计算y值。Inputー个整数XoOutput输出函数值y。SampleInput20SampleOutput49答案:#include"stdio.h"voidmain()(intx,y;scanf("%d",&x);if(x<l)y=x;elseif(x<10&&x>=l)y=2*x-l;elsey=3*x-l1;printf("%d\n",y);getchar();1021颠倒整数第五题Description给定一个最多4位的正整数,将其颠倒过来输出。例如:输入123,则输出321。Inputー个小于!0000的正整数。Output颠倒后整数。SampleInput1234SampleOutput4321答案:#include"stdio.h"voidmain(){intx;scanf("%d",&x);printf("%d",x%10);x=x/10;)getchar();)答案ニ:#include"stdio.h"#include"stdlib.h"intmain()(intx,y;scanf("%d",&x);if(x<10)y=x;elseif(x<100)y=(x%10)*10+x/10;elseif(x<1000)y=(x%10)*100+((x/10)%10)*10+x/l00;elseif(x<10000)y=(x%10)*1000+((x/10)%10)*100+((x/100)%10)*10+x/1000;printf("%d",y);return0;)1022整数排序第六题Description对给定的4个整数进行排序,将由小到大的顺序输出。Input一行中有4个整数,整数之间用空格分隔。Output按升序输出,各整数之间用ー个空格分隔。SampleInput253141827SampleOutput182527314答案:#include"stdio.h"#include"stdlib.h"intmain()inti,j,a[4],t;for(i=0;i<4;i++)scanf("%d",&a[i]);t=a[O];for(i=0;i<3;i++)for(j=0;j<3;j++)if(a[j]>a|j+l]){t=a[j];a[j]=a|j+l];a[j+l]=t;)for(i=0;i<4;i++)printf("%d",a[i]);return0;1023自整除数第一题Description对ー个整数n,如果其各个位数的数字相加得到的数m能整除n,则称n为自整除数.例如21,21%(2+1)==0«所以21是自整除数。Inputー个整数nOutput若n为自整除数,则输出TRUE,否则输出FALSE。SampleInput42SampleOutputTRUE答案:#include"stdio.h"voidmain()(intn,m=0,t;scanf("%d",&n);t=n;while(t>0)m+=t%10;t=t/10;)if(m!=O&&n%m==O)printf("true\n");elseprintf("false\n");getchar();)答案ニ:#include"stdio.h"#include"stdlib.h"intmain()(intm=0,n,t;scanf("%d",&n);t=n;while(t>0)(m+=t%10;if(n%m==O)printf("TRUE");elseprintf("FALSE");return0;1024选作题:FibonacciAgainProblemDescriptionThereareanotherkindofFibonaccinumbers:F(0)=7,F(l)=11,F(n)=F(n-l)+F(n-2)(n>=2).InputInputanintegern.(n<1,000,000).OutputPrinttheword"yes"if3divideevenlyintoF(n).Printtheword"no"ifnot.SampleInput5SampleOutputnoSampleInput2SampleOutputYes答案:ttinclude“stdio.h"#include“stdlib.h"intmain()iintn,a=7,b=ll,c;scanf("刎",&n);if(n==0)b=7;elseif(n==l)b=ll;elsefor(inti=2;i〈=n;i++)c=b;b=(a+b)%3;a=c;}if(b%3==0)printf("yes");elseprintf("no");return0;)答案ニ:#include"stdio.h"intFibonacci(intn);voidmain(){intfn,n;scanf("%d",&n);fn=Fibonacci(n);if(fn%3==0)printf("yes\n");elseprintf("no\n");getchar();intFibonacci(intn){if(n-0)return7;elseif(n-1)return11;elsereturnFibonacci(n-l)+Fibonacci(n-2);)答案三:#include“stdio.h"#include“stdlib.h"longF(intn);intmain(){intn;longf=0;scanf(%d",&n);if(n==0)f=7;elseif(n==l)f=ll;elsef=F(n);if(f%3==0)printf("yes");elseprintf("no");return0;)longF(intn){inta=7,b=ll;longtmp=0;for(inti=2;iく=n;i++)(tmp-a+b;a=b;b=tmp;returntmp;实验三循环结构程序设计目的及要求:.熟练掌握循环语句中for语句、while语句和dowhile语句使用方法。.掌握编写循环结构程序的方法。1030整数的立方和第二题Description给定一个正整数k(l<k<10),求1到k的立方和m。即m=l+2*2*2+...+k*k*k。Input输入只有一行,该行包含一个正整数k。Output输出只有一行,该行包含1到k的立方和。SampleInput5SampleOutput225答案:ttinclude“stdio.h"voidmain()intsum=0,n;scanf("%d",&n);for(inti=0;i〈=n;i++)sum+=i*i*i;printf("%d\n",sum);getchar();)1031求累加和Description有一分数序列:2,3,5,8,13,21 12 3 5 8 13求出该序列的前n项之和。Input输入只有一行,该行包含一个正整数n(n<200)。Output序列前n项之和(保留两位小数)。SampleInput2SampleOutput3.50答案:#include"stdio.h"voidmain()intn;floatsum=0,a=2,b=l,t;scanf("%d",&n);for(inti=0;i<n;i++)sum+=a/b;t=a;a=a+b;b=t;printf("%.2f\n",sum);getchar();1032与7无关的数Descriptionー个正整数,如果它能被7整除,或者它的十进制表示中某位数字为7,则称其为与7相关的数。现求所有小于等于n(nGOO)的与7无关的正整数的平方和.Input输入为一行,正整数n,(n<100)oOutput输出小于等于n的与7无关的正整数的平方和SampleInput21SampleOutput2336答案:#include<stdio.h>voidmain()(intn,sum=0;scanf("%d",&n);for(inti=0;i<=n;i++){if(i%7!=0&&!(i%10==7ll(i/l0)%10==7))sum+=i*i;printf("%d\n",sum);getchar();1033选作题:细菌繁殖Descriptionー种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。Input一行有5个整数,整数之间用ー个空格隔开。第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的ー天的细菌数目在长整数(long)范围内。Output对于每ー组测试数据,输出一行,该行包含ー个整数,为要求的一天的细菌数。SampleInput40答案:#include"stdio.h"#include"math.h"intmain(){intm1,d1,m2,d2,num,days=0;longsum=0;intms[13]={0,31,28,31,30,31,30,31,31,30,31,30,31);scanf("%d%d%d%d%d",&ml,&dI,&num,&m2,&d2);if(m2<mlll(m2==m1&&d2<=d1)){printf("第二个日期必须大于第一个日期\n");)else{for(inti=mi;1cm2;i++)(if(m2>=12lldl>ms[mI]lld2>ms[m2]){printf("日期不合法、n");return0;}days+=ms[i];days=days+d2-d1;sum=num*pow(2,days);printf("%d\n",sum);)getchar();return1;实验四数组应用目的及要求:.理解并掌握ー维数组、二维数组的定义及引用。.熟练掌握利用数组处理数据的方法。.掌握字符串数组和字符串的使用方法及常用字符串函数在程序中的使用。1040杨辉三角形Description打印出杨辉三角形的前n行。Input输入ー个正整数n(n<20)〇Output杨辉三角形。SampleInput5SampleOutput111TOC\o"1-5"\h\z1 2 11 3 3 11 4 6 4 1答案:#include"stdio.h"intmain()(inti,j,n,k;scanf("%d",&n);inta[20][20];a[0][0]=a[l][0]=a[l][l]=l;for(i=2;i<n;i++)a[i][O]=a[i][i]=l;for(j=l;j<i;j++)(a[i][j]=a[i-l]|j-l]+a[i-l]U];for(i=0;i<n;i++){for(k=n;k>i;k—)printf("");for(j=0;j<=i;j++)printf("%d",a[i][j]);)printf("\n");return0;1041矩阵乘法Description已知矩阵A(mxn)和矩阵B(nxp),求C=AXBInput第一行三个整数为m、n、p(m、n、p均小于10),从第二行开始为m行n列A矩阵,然后为n行p列的B矩阵。所有数据之间均由一个空格分隔。Output输出m行p列的C矩阵,所有数据之间均由一个空格分隔。SampleInput234103340102123452115SampleOutput7351611122223答案:#include"stdio.h"voidmain()inti,j,h,g,m,n,p,sum=O;scanf("%d%d%d",&m,&n,&p);printf("\n");intA[20][20],B[20][20],C[20][20];〃矩阵Afor(i=0;i<m;i++)for(j=0;j<n;j++){scanf("%d",&A[i][j]);)printf("\n");)printf("\n");〃矩阵Bfor(g=0;g<n;g++){for(h=0;h<p;h++)scanf("%d",&B[g][h]);〃两个矩阵相乘for(i=0;i<m;i++){for(j=0;j<p;j++)(sum=O;for(h=0;h<n;h++){sum+=A[i][h]*B[h][j];}C[i][j]=sum;〃输出两个矩阵printf("%-4d",C[i][j]);printf("\n");1042学生成绩管理Description学生信息包括:学号、姓名、数学成绩、英语成绩、计算机成绩。共有N个人(Nく=10,可在程序内部定义,如用#defineN10)的信息,要求计算每人的总成绩,并按总成绩由高到低的顺序输出所有人的信息。最后输出各门课程的平均成绩(保留2位小数)。Input为调试方便,N和学生信息可以在程序内部以初值的方式赋值给对应变量。Output见下例。SampleInputSampleOutputNoNameMathsEnglishComputerTotal1001zhang908088 2581003wang888580 2531002li7880 82240averageofMaths:85.33averageofEnglish:81.67averageofComputer:83.33答案ー:#include"stdio.h"#defineN10intmain()(inti,j,k,q,sum=0,score[N][4]={{90,80,88},{78,80,82},{88,85,80}},tscore;chartitle[6][N]={"NO","Name","Maths","English","Computer","Ibtal"),no[N][N]={,,100r,,"1002","1003"},tno;charname[N][N]={"zhang","li","wang"},tname;floatavgMath=0,avgEnglish=0,avgComputer=0;for(i=0;i<3;i++){sum=0;〃计算总成绩for(j=0;j<3;j++){sum+=score[i][j];)score[i][3]=sum;avgMath+=score[i][0];avgEnglish+=score[i][l];avgComputer+=score[i][2];〃排序for(i=0;i<2;i++){for(j=0;j<2;j++)if(score[j][3]<score[j+l][3]){for(q=0;q<4;q++){〃交换所有成绩tscore=score[j][q];score[j][q]=score[j4-l][q];score[j+l][q]=tscore;)for(k=0;k<N;k++){〃交换学号tno=no[j][k];no[j][k]=no[j+l][k];no|j+l][k]=tno;〃交换姓名tname=name[j][k];name[j][k]=name[j4-l][k];name[j+l][k]=tname;〃输出标题for(i=0;i<6;i++)printf("%s",title[i]);printf("\n");〃输出学号+姓名+成绩for(i=0;i<3;i++){printf("%s ",no[i]);printf("%s ",name[i]);for(j=0;j<4;j++)printf("%d",score[i][j]);printf("\n");)printf("averageofMaths:%.2f\n",avgMath/3);printf("averageofEnglish:%.2f\n",avgEnglish/3);printf("averageofComputer:%.2f\n",avgComputer/3);return0;)答案ニ:#include"stdio.h"#defineN10intmain()(inti,j,k,q,sum=0,score[N][4],tscore;chartitle[6][N]={"NO","Name","Maths","English","Computer","Total"},no[N][N],tno,name[N][N],tname;floatavgMath=0,avgEnglish=0,avgComputer=0;for(i=0;i<3;i++)〃输入学号scanf("%s",&no[i]);〃输入姓名scanf("%s",&name[i]);sum=O;〃输入成绩for(j=0;j<3;j++){scanf("%d",&score[i][j]);sum+=score[i][j];)score[i][3]=sum;avgMath+=score[i][0];avgEnglish+=score[i][1];avgComputer+=score[i][2];〃排序for(i=0;i<2;i++)for(j=0;j<2;j++)if(score[j][3]<score[j+l][3])for(q=0;q<4;q++)(〃交换所有成绩tscore=score[j][q];score[j][q]=score[j+l][q];score[j+l][q]=tscore;}for(k=0;k<N;k++)(〃交换学号tno=no[j][k];no|j][k]=no|j+l][k];no[j+l][k]=tno;〃交换姓名tname=name[j][k];name[j][k]=name[j4-l][k];name[j4-l][k]=tname;〃输出标题for(i=0;i<6;i++)printf("%s",title[i]);printf("\n");〃输出学号+姓名+成绩for(i=0;i<3;i++){printf("%s ",no[i]);printf("%s ",name[i]);for(j=0;j<4;j++)printf("%d",score[i][j]);printf("\n");printf("averageofMaths:%.2f\n",avgMath/3);printf("averageofEnglish:%.2f\n",avgEnglish/3);printf("averageofComputer:%.2f\n",avgComputer/3);return0;)1043选作题:大整数乘法Description求两个不超过200位的非负整数的积。Input有两行,每行是ー个不超过200位的非负整数,没有多余的前导〇。Output一行,即相乘后的结果。结果里不能有多余的前导〇,即如果结果是342,那么就不能输出为0342。SampleInput1234567890098765432100SampleOutput1219326311126352690000答案:#include<stdio.h>#include<string.h>intmain()inti,j,cut=0,a[200]={0},b[200]={0},c[400]={0},temp;charca[200]="0",cb[200]="0";〃输入字符串类型的a,bscanf("%s%s",&ca,&cb);〃转化成int类型的a,bfor(i=0;i<strlen(ca);i++)a[i]=(int)(ca[i]-'O');for(i=0;i<strlen(cb);i++)b[i]=(int)(cb[i]-'O');〃a,b相乘for(i=0;i<strlen(ca);i++)for(j=0;j<strlen(cb);j++)c[i+j+l]+=a[i]*b|j];〃处理进位for(i=strlen(ca)+strlen(cb)-1;i>0;i—)temp=c[i];c[i]=c[i]%10;c[i-l]+=temp/10;)〃去除前导符0while(c[cut]==O){cut++;)〃输出结果for(i=cut;i<strlen(ca)+strlen(cb);i++)(//if(c[O]!=0)printf("%d",c[i]);)return0;实验五函数应用目的及要求:.理解函数的定义及函数的调用过程(函数的调用格式、调用方式及被调用函数的使用说明)。.掌握局部变量、全局变量的说明形式和引用方法。.掌握函数的嵌套与递归调用的全过程。1050各类型变量在函数调用过程中的变化Description采用单步运行方式运行下面程序,观察各变量(静态局部变量及自动变量)在函数调用过程中的变化。main(){inta=3,i;for(i=0;i<3;i++)printf(<<P=%d\n>>,p(a));)intp(a)inta;{staticintc=l;autointb=0;b=b+l;c=c+l;return(a+b+c);1051最大公约数和最小公倍数Description对给定的两组数(每组包括2个整数),分别计算出两组数的最大公约数和最小公倍数的和。如:20、12为第一组,28、7为第二组。第一组数的最大公约数为4,最小公倍数为60:第二组数的最大公约数为7,最小公倍数为28:所以两组数的最大公约数之和为11,两组数的最小公倍数之和为88。Input输入包括两行,每行为ー组,每组两个整数。Output输出包括两行,第一行为两组数的最大公约数之和,第二行为两组数的最小公倍数之和。SampleInput2012287SampleOutput1188答案ー:#include"stdio.h"intgongyue(inta,intb);intgongbei(inta,intb);intmain()(inta,b,c,d,sl,s2;scanf("%d",&a);scanf("%d",&b);scanf("%d",&c);scanf("%d",&d);〃最大公约数s1=gongyue(a,b)+gongyue(c,d);〃最小公倍数s2=gongbei(a,b)+gongbei(c,d);printf("%d\n",sl);printf("%d\n",s2);return0;〃最大公约数intgongyue(inta,intb)(intsum,i;if(a>b){if(a%b==O)sum=b;else{for(i=l;i<b;i++){if(a%i==O&&b%i==O)sum=i;else{if(b%a==O)sum=a;elsefor(i=l;i<a;i++)if(a%i==O&&b%i==O)sum=i;returnsum;}〃最小公倍数intgongbei(inta,intb)(intsum,i;if(a>b){if(a%b==O)sum=a;elsefor(i=a;i<=a*b;i++)if(i%a==O&&i%b==O)sum=i;returni;else{if(b%a==O)sum=b;else(for(i=b;i<=a*b;i++){if(i%a==O&&i%b==O)(sum=i;returni;returnsum;答案ニ:#include"stdio.h"#include"conio.h"intdivisor(intm,intn)(intr;do(r=m%n;m=n;n=r;}while(r!=0);returnm;intlcm(intm,intn)intRem;Rem=divisor(m,n);return(m*n/Rem);)main(){inta,b,c,d;scanf("%d%d",&a,&b);if(a>b)(c=divisor(a,b);d=lcm(a,b);)else(c=divisor(b,a);d=lcm(b,a);)//printfC'a=%d,b=%d\n",a,b);printf("%d\n",c);printf("%d",a*b/c);getch();1052进制转换Description对输入的两十六进制数(两个字符串),将其转换成十进制后再求和。要求十六进制到十进制的转换功能由函数完成。例如:输入3al、80,由于3al转换为十进制后为929,80转换为十进制后为128,所以和为1057。Input输入包括两行,每行为一个十六进制数。Output输出包括一行为两数之和的十进制表示。SampleInput3al80SampleOutput1057答案:#include<stdio.h>#include<string.h>#include<math.h>intconversion(charsix[],intlen)(inti,sixint[10],sum=0;〃转化成int类型for(i=0;i<len;i++){switch(six[i]){case'A':case'a':sixint[i]=10;break;case'B':case'b':sixint[i]=l1;break;case'C:case'c':sixint[i]=12;break;case'D':case'd':sixint[i]=13;break;case'E':case'e':sixint[i]=14;break;case'F':case'f:sixint[i]=15;break;default:sixint[i]=(int)(six[i]-'O');break;)sum+=sixint[i]*pow(16,len-i-l);)returnsum;}intmain()(intsum=O;charca[200]="0",cb[200]="0";〃输入字符串类型的a,bscanf("%s%s",&ca,&cb);sum=conversion(ca,strlen(ca))+conversion(cb,strlen(cb));printf("%d",sum);return0;1053字符串替换Description将一段英文文章中字符串用给定的字符串替换。Input输入包括多行,第一行为一段英文文章(长度不超过80)o以后每行包括2个字符串(长度不超过20),之间由空格分隔,第一个串为原串,第二个串为替换串。当遇到。〇两个串时表示输入结束,并且此行不需处理。Output输出替换后的文章。SampleInputhellohowareyes.hHesou00SampleOutputHelloHowareyou.答案:#include<stdio.h>#include<string.h>voidswap(chartext[],chara[],charb[])char*str=text,back[2O];//a是textー个子串while((str=strstr(str,a))!=NULL){strcpy(back,str+strlen(a));*str=O;strcat(text,b);strcat(text,back);str+=strlen(b);intmain()(intsum=O;chartext[80],a[20],b[20];〃输入textgets(text);while(true){scanf("%s",&a);scanf("%s",&b);if(strcmp(a,"0")==0&&strcmp(b,n0")==0)break;//b替换aswap(text,a,b);)〃输出textputs(text);return0;1054排序Description对输入的10个整数进行排序,按从小到大的顺序输出。要求排序过程由函数完成。Input输入包括一行,共10个整数,各数之间由空格分割。Output在同一行上输出排好序的10个数,各数之间由空格分割。SampleInput25481327687643209659132025274348656876答案:#include<stdio.h>voidsort(intnumロ)iinti,j,temp=0;for(i=0;i<10;i++)for(j=i+l;j<10;j++)if(num[j]<num[i])itemp=num[i];num[i]=num[j];num[j]=temp;intmain(){inti,num[10];for(i=0;i<10;i++)scanf("%d”,&num[i]);sort(num);for(i=0;iく10;i++)printf(“/d”,num[i]);return0;1055选作题:数制转换Description求任意两个不同进制非负整数的转换(2进制〜16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,…,9,A,B,C,D,E,F)oInput输入只有一行,包含三个整数a,n,boa表示其后的n是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2=<a,b<=16oOutput输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1, 9,A,B,C,D,E,F)oSampleOutput210306Hint用字符串表示不同进制的整数。答案:#include<stdio.h>#include<string.h>#include<ctype.h>voidconvert(inta,charn[],intb,intlen)(inti,intn[10],sum=0,temp,count=0;charm[20];〃转化成int类型并求十进制的和sumfor(i=0;i<len;i++){n[i]=toupper(int(n[i]));if(n[i]>='A'&&n[i]<='F')intn[i]=n[i]-'A'+10;if(n[i]>='O'&&n[i]<='9')intn[i]=(int)(n[i]-'O');sum=sum*a+intn[i];)〃转化为b进制for(i=O;sum>0;i++){temp=sum%b;if(temp>=0&&temp<=9)m[i]=temp+'O';if(temp>=10&&temp<=15)m[i]=temp+'A'-10;sum=sum/b;count=i;)〃输出for(i=count;i>=0;i--)printf("%c",m[i]);}intmain()inta,b,len;charn[10];scanf("%d",&a);scanf("%s",&n);scanf("%d",&b);len=strlen(n);convert(a,n,b,len);return0;实验六综合应用目的及要求:.掌握程序的基本方法和技巧,能够独立完成较复杂程序的设计。.掌握程序的调试方法,熟悉各种类型错误的改正方法。21060同一天生日Description在ー个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。Input第一行为整数n,表示有n个学生,n<=200。此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度为11位)和出生月(l<=m<=12)0(l<=d<=31)o学号、月、日之间用ー个空格分隔。Output对每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用ー个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。对生日相同的学号,按输入的顺序输出。SampleInput6071010201053150710102011545071010201183150710102010845071010201114507101020121810SampleOutput31507101020105071010201184507101020115071010201080710102011181007101020121答案:#include<stdio.h>#include<string.h>intmain(){inti,j,k,p,start=0,count=l,n,tmonth,tday,month[200],day[200];charnumber[200][12],tnumber;scanf("%d",&n);〃输入信息for(i=0;i<n;i++)scanf("%s%d%d",number[i],&month[i],&day[i]);〃选择稳定排序法:冒泡排序〃按照月份排序for(i=0;i<n-l;i++)for(j=0;j<n-l-i;j++){if(month[j]>month[j4-1]){〃交换月份tmonth=month[j];month[j]=month[j+1];month[j+l]=tmonth;〃交换天数tday=day[j];day[j]=day[j+l];day[j+l]=tday;〃交换学号for(k=0;k<ll;k++)(tnumber=number[j][k];number[j][k]=number[j+l][k];number[+l][k]=tnumber;〃当月份相同时,按照天排序for(p=start;p<n;p++)count++;else(if(count>=2)〃对有相同月份的人,按照天排序(for(i=start;i<start+count-l;i++)for(j=start;j<start+count-1-i;j++)(if(day[j]>day[j+l]){〃交换月份tmonth=month[j];month[j]=month[j+1];month[j+1]=tmonth;〃交换天数tday=day[j];day[j]=day[j4-l];day[j+l]=tday;〃交换学号for(k=0;k<l1;k++)tnumber=number[j][k];number[j][k]=number[j4-l][k];number[j4-]][k]=tnumber;〃重新调整start位置start=start+count;count=l;〃输出信息count=l;for(i=0;i<n;i++){if(count==l){printf("%d%d",month[i],day[i]);printf("%s",number[i]);if(month[ij==month[i+1]&&day[i]==day[i+1])〃找出月份和天数相同count++;printf("%s",number[i+l]);)elsecount=l;printf("\n");))return0;1061忽略大小写比较字符串Description一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到VT为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小写时是相等的。请写ー个程序,实现对两个字符串进行忽略字母大小写的大小比较。Input输入为两行,每行一个字符串,共两个字符串。(请用gets录入每行字符串)(每个字符串长度都小于80)Output如果第一个字符串比第二个字符串小,输出ー个字符"ぐ如果第一个字符串比第二个字符串大,输出ー个字符"〉"如果两个字符串相等,输出一个字符"ゴSampleInputHellohelloSampleOutput答案:#include<stdio.h>#include<string.h>#include<ctype.h>intmain()(inti,cmp;charstrl[80],str2[80];gets(strl);gets(str2);〃全部转化为大写for(i=0;i<strlen(strl);i++)strl[i]=toupper(strl[i]);for(i=0;i<strlen(str2);i++)str2[i]=toupper(str2[i]);〃比较两个字符串cmp=strcmp(strl,str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目合作合同(五)
- 商品预订合同模板
- 度合作伙伴业务推广合同书
- 设备维修业务合同模板大全
- 跨国航空货运代理合同实施细则
- 广告屏租赁合同范本6篇
- 嘉兴平成220千伏输变电工程报告表
- 铁皮保温劳务合同5篇
- 临时餐饮管理专员合同
- 2025乡村常见房屋装修合同
- 2025年建筑行业高空作业安全生产合同
- 3.2依法行使权利 课件 -2024-2025学年统编版道德与法治八年级下册
- 2025年贵州遵义正安县事业单位招聘工作人员历年高频重点模拟试卷提升(共500题附带答案详解)
- 2025年安徽电气工程职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 教科版2024-2025学年六年级下册科学3.1《太阳系大家庭》同步练习(附参考答案)
- Polarion-ALM支持机载软件研发生命周期管理和合规性认证最佳实践
- 2025年宁夏宁东开发投资有限公司招聘笔试参考题库含答案解析
- 《半导体行业发展历程》课件
- 上海市智算中心建设导则(2025年版)
- 2025山东能源集团中级人才库选拔高频重点提升(共500题)附带答案详解
- 中央2024年农业农村部机关服务局招聘事业编制工作人员笔试历年典型考点(频考版试卷)附带答案详解
评论
0/150
提交评论