版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。1、 编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。2、 从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少张。(输出面额最大值:比如345.78=100*3+10*4+5*1+0.5*1+0.1*2+0.01*8)3、 随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。4、 编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。5、 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。7、任何一个自然数m的立方均可写成m个连续奇数之和。例如:「3=12辽=3+53辽=7+9+114辽=13+15+17+19编程实现:输入一自然数n求组成n3的n个连续奇数。8、 知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。9、 编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。10、 输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。如输入:56439,输出:5位数5,6,4,3,99,3,4,6,511、 编写子函数:(1)用冒泡法将一个数组排成升序的函数一-SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。12、 编写函数:(1)用选择法将数组排成降序的函数——SUB1;(2)用折半查找法查找某数是否在给定的数组当中的函数SUB2。主函数:输入任意10个正整数给数组,调用SUB1对数组进行排序,从键盘输入一个正整数,调用SUB2在数组中进行查找,找到后输出“OK”,没有找到则输出“NOFOUND!”。13、 编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排列,然后将这两个数组合并成一个升序数组。14、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3„„,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。15、按如下图形打印杨辉三角形的前10行。其特点是两个腰上的数都为1,其它位置上的每一个数是它上一行相邻两个整数之和。11112113311464116、某班有5个学生,三门课。分别编写3个函数实现以下要求:(1) 求各门课的平均分;(2) 找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;(3) 找出三门课平均成绩在85-90分的学生,并输出其学号和姓名主程序输入5个学生的成绩,然后调用上述函数输出结果。17、编写一人个求X的Y次幂的递归函数,X为double型,y为int型,要求从主函数输入x,y的值,调用函数求其幂。18、打印魔方阵。所谓魔方阵是指这样的的方阵:它的每一行、每一列和对角线之和均相等。输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。例如,当n=3时,魔方阵为:816357492魔方阵中各数排列规律为:将“1”放在第一行的中间一列;从“2”开始直到nXn为止的各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数同样加1;如果上一数的行数为1,则下一个数的行数为n(最下一行),如在3X3方阵中,1在第1行,则2应放在第3行第3列。当上一个数的列数为n时,下一个数的列数应为1,行数减1。如2在第3行第3列,3应在第2行第1列。如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。如按上面的规定,4应放在第1行第2列,但该位置已被1占据,所以4就放在3的下面。由于6是第1行第3列(即最后一列),故7放在6下面。19、 找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有“鞍点”),打印出有关信息。20、 马克思在《数学手稿》中提出如下问题:有30个人(包括男人、女人和小孩)在一家饭店吃饭共花50先令,其中每个男人花3先令,每个女人花2先令,每个小孩花1先令,问男人、女人、小孩各有多少人?21、定义一个结构体变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出。22、建立一个链表,每个结点包括:学号、姓名、性别、年龄,输入一个学号,如果链表中的结点包括该学号,则输出该结点内容后,并将其结点删去。23、 给定一个日期,求出该日为星期几(已知2002-3-28为星期四)。24、 用递归法将一个整数n转换成字符串(例如输入4679,应输出字符串“4679”),n为不确定数,可以是位数不超过5,且数值在-32768~32767之间和任意整数。25、 有一个字符串,包括n个字符。写一个函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串。要求在主函数输入字符串及m值并输出复制结果。26、 在主函数中输入6个字符串,用另一个函数对他们按从小到大的顺序,然后在主函数中输出这6个已经排好序的字符串。要求使用指针数组进行处理。27、 编写一个函数实现对两个字符串的比较。不用使用C语言提供的标准函数strcmp。要求在主函数中输入两个字符串,并输出比较的结果(相等的结果为0,不等时结果为第一个不相等字符的ASCII差值)。28、 有一个unsignedlong型整数,先要分别将其前2个字节和后2个字节用为两个unsignedint型整数输出(设一个int型数据占2个字节),试编写一函数partition实现上述要求。要求在主函数输入该long型整数,在函数partition中输出结果。29、编一程序,能把从终端读入的一个字符中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存(用字符!表示输入字符串的结束)。30、有五个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人多少岁?他说比第3个人大2岁。问第3个人多少岁?他说比第3个人大2岁。问第2个人多少岁?他说比第1个人大2岁。最后问第1个人多少岁?他说是10岁。请问第5个人多大?(这是一个递归问题)参考答案1、编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。#include<stdio.h>main(){charc;printf("pleaseinputastring:");while((c=getchar())!='\n'){if(c>='A'&&c<='W'||c>='a'&&c<='w')c=c+3;elseif(c>='X'&&c<='Z'||c>='x'&&c<='z')c=(c+3)-26;printf("%c",c);}printf("\n");return0;2、 编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。#include<stdio.h>#include<conio.h>voidmain(){intn,R,i=0,a[16]={0};charstr[16]="0123456789ABCDEF";clrscr();printf("pleaseinputanintegernumber:\n");scanf("%d",&n);printf("pleaseinputR:\n");scanf("%d",&R);if(n<0){printf("%c",'-');n=-n;}while(n!=0){a[i++]=n%R;n=n/R;}while(i-->0)printf("%c",str[a[i]]);getche();}3、 从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显元、1角、5");示100元、50元、10元、5元、2元、1元、1角、5");#include<stdio.h>main(){inta1,a2,a3,a4,a5,a6,a7,a8,a9;floatf;a1=a2=a3=a4=a5=a6=a7=a8=a9=0;printf("pleaseinputafloatnumberscanf("%f",&f);while(f>100.0){f=f-100.0;a1++;}while(f>50.0){f=f-50.0;a2++;}while(f>10.0){f=f-10.0;a3++;}while(f>5.0){f=f-5.0;a4++;}while(f>1.0){f=f-1.0;a5++;while(f>0.5){f=f-0.5;a6++;}while(f>0.1){f=f-0.1;a7++;}while(f>0.05){f=f-0.05;a8++;}while(f>0.01){f=f-0.01;a9++;printf("a1=%d,a2=%d,a3=%d,a4=%d,a5=%d,a6=%da7=%d,a8=%d,a9=%d\n",a1,a2,a3,a4,a5,a6,a7,a8,a9)return0;}4、随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。#include<stdlib.h>#include<conio.h>voidmain(){inta[21],i,ran,max,min,sum,average;clrscr();for(i=1;i<=20;i++){while((ran=random(51))/10==0)//ensureranbetween20and50;a[i]=ran;}max=min=a[1];//initializeheresum=0;for(i=1;i<=20;i++){printf("a[%d]=%d\n",i,a[i]);sum+=a[i];if(max<a[i])max=a[i];elseif(min>a[i])min=a[i];}average=sum/20;printf("\nsum=%d,max=%d,min=%d,average=%d\n",sum,max,min,average);puts("\nanykeytoexit!");getche();}5、编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。#include<stdio.h>#include<conio.h>voidmain(){charstring[80],*p;inti=0,max=0;clrscr();printf("pleaseinputastring:\n");gets(string);//printf("\n%s\n",string);p=string;while(*p!='\0'){if(*p==''){if(max<=i)max=i;i=0;}elsei++;p++;}if(max<=i)max=i;printf("\nmax_lengthofthestringis:%d\n",max);getche();}6、 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<time.h>voidmain(){inti,n,A,B,C,D,abandon,ran;//abandonstandfortheoneswhoabandonclrscr();A=B=C=D=abandon=0;printf("Enterthenumberofpersons:");scanf("%d",&n);//npersonstoselectfromcandidatea,b,candd.randomize();for(i=1;i<=n;i++){ran=random(5)+65;//A,B,C,Dandtheoneswhoabandonswitch(ran){case'A':A++;break;case'B':B++;break;case'C':C++;break;case'D':D++;break;default:abandon++;}}printf("\nA=%d,B=%d,C=%d,D=%d,abandon=%d\n\n"A,B,C,D,abandon);i=4;while(i--!=0){if(A>=B&&A>=C&&A>=D&&A!=-1){printf("A=%d,",A);A=-1;}if(B>=A&&B>=C&&B>=D&&B!=-1){printf("B=%d,",B);B=-1;}if(C>=A&&C>=B&&C>=D&&C!=-1){printf("C=%d,",C);C=-1;}if(D>=A&&D>=B&&D>=C&&D!=-1){printf("D=%d,",D);D=-1;}}printf("abandon=%d,\n\n",abandon);getch();}任何一个自然数m的立方均可写成m个连续奇数之和。例如:「3=12辽=3+53辽=7+9+114辽=13+15+17+19编程实现:输入一自然数n求组成n3的n个连续奇数。#include<conio.h>#include<stdio.h>#include<math.h>//voidmain(){inti,j,n,sum,count;clrscr();printf("\nanintegerhereplease:");scanf("%d",&n);printf("\n");//i=(int)floor(sqrt((float)n));//if(i%2==0)//i++;i=1;//for(;i<=n*n*n;i+=2){sum=0;count=0;for(j=i;j<=n*n*n;j+=2){sum=sum+j;count++;if((n*n*n==sum)&&(count==n))break;}if((sum==n*n*n)&&(count==n))break;}printf("i=%d,j=%d\n\n",i,j);printf("%d*%d*%d=",n,n,n);//while(n-->1){printf("%d+",i);i+=2;}for(;i<j;i+=2)//printf("%d+",i);//printf("%d",i);getch();}8、已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。#include<stdio.h>#include<conio.h>voidmain(){intnum,a,b,c;clrscr();printf("Pressanykeytocalculate!\n\n");getch();for(num=101;num<1000;num++){a=num/100;b=num%100/10;c=num%10;if(num+c*100+b*10+a==1333)printf("\n%d+%d=1333\n",num,c*100+b*10+a);}while(!kbhit());}7、编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入#include<stdio.h>#include<conio.h>voidmain(){floatnum1,num2;chars;clrscr();printf("Enterastatementplease:");scanf("%f%c%f",&num1,&s,&num2);switch(s){case'+':printf("%.2f%c%.2f=%.2f",num1,s,num2,num1+num2);break;case'-':printf("%.2f%c%.2f=%.2f",num1,s,num2,num1-num2);break;case'*':printf("%.2f%c%.2f=%.2f",num1,s,num2,num1*num2);break;case'/':printf("%.2f%c%.2f=%.2f",num1,s,num2,num1/num2);break;default:printf("InputError!");}getch();}8、输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。如输入:56439,输出:5位数5,6,4,3,99,3,4,6,5#include<conio.h>#include<stdio.h>longpower(intn){inti;longresult=1;for(i=1;i<=n;i++)result=10*result;returnresult;}voidmain(){longnum,n,j;intcount=1,tmpcount;clrscr();printf("Pleaseinputanumber(0-99999):");scanf("%ld",&num);n=num;while((n=n/10)!=0)count++;printf("\n%ldisa%ddigits.\n\n",num,count);tmpcount=count;//temporarytmpcountforlateruseinstatementAn=num;while(count-->1){j=power(count);printf("%d,",n/j);n=n%j;}printf("%d\n",n);n=num;while(tmpcount-->1)//statementA{printf("%d,",n%10);n=n/10;}printf("%d\n",n);getch();}9、 编写子函数:(1)用冒泡法将一个数组排成升序的函数一-SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。#include<conio.h>#include<stdio.h>voidmain(){inti,k,a[12]={0};//a[0]fornousevoidsub1(intb[]),sub2(intb[],intk);clrscr();printf("Pleaseinput10numbers:");for(i=1;i<=10;i++)scanf("%d",&a[i]);getchar();sub1(a);for(i=1;i<=10;i++)printf("\na[%d]=%d\n",i,a[i]);printf("\n\npleaseinputanumbertobeinsertedintothearray:");scanf("%d",&k);sub2(a,k);for(i=1;i<=11;i++)printf("\na[%d]=%d\n",i,a[i]);puts("\nAnykeytoexit!");getch();}voidsub1(b)intb[];{inti,j,t;for(i=1;i<10;i++)//thefirstoneisalwaysthesmallestfor(j=i;j<=10;j++)if(b[i]>b[j]){t=b[i];b[i]=b[j];b[j]=t;}}voidsub2(intb[],intk){inti;for(i=10;i>=1;i--){if(k<b[i])b[i+1]=b[i];else{b[i+1]=k;break;}}}10、 编写函数:(1)用选择法将数组排成降序的函数——SUB1;(2)用折半查找法查找某数是否在给定的数组当中的函数 SUB2。主函数:输入任意10个正整数给数组,调用SUB1对数组进行排序,从键盘输入一个正整数,调用SUB2在数组中进行查找,找到后输出“OK”没有找到则输出“NOFOUND!”#include<conio.h>#include<stdio.h>voidmain(){inti,key,a[11]={0},sub1(),sub2();printf("pleaseinput10number:");for(i=1;i<=10;i++)scanf("%d",&a[i]);getchar();sub1(a);for(i=0;i<=10;i++)printf("a[%d]=%d,",i,a[i]);printf("\npleaseinputakeynumber:");scanf("%d",&key);sub2(a,key,1,10);getch();}intsub1(intb[]){intt,i,j,post;for(i=1;i<10;i++){post=i;for(j=i+1;j<=10;j++)if(b[post]>b[j])post=j;if(post!=i){t=b[i];b[i]=b[post];b[post]=t;}}return0;}intsub2(intc[],intk,intn0,intn1){inti=n0,j=n1,m;m=(i+j)/2;while(i<=j){if(k<c[m])j=m-1;if(k>c[m])i=m+1;if(k==c[m])break;m=(i+j)/2;}if(k==c[m])printf("OK!\n");elseprintf("NOFOUND!\n");return0;}11、 编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排列,然后将这两个数组合并成一个升序数组。#include<stdio.h>#include<conio.h>voidmain()inti,j,k,a[6]={0},b[6]={0},c[11]={0},sub1();clrscr();printf("\npleaseinput5intnumberstoarray1:");for(i=1;i<=5;i++)//a[0]fornousescanf("%d",&a[i]);getchar();sub1(a,5);printf("\npleaseinput5intnumberstoarray2:");for(i=1;i<=5;i++)//b[0]fornousescanf("%d",&b[i]);getchar();sub1(b,5);printf("\nthesortedarrayais:\n\n");for(i=1;i<=5;i++)printf("a[%d]=%d",i,a[i]);printf("\nthesortedarraybis:\n\n");for(i=1;i<=5;i++)printf("b[%d]=%d",i,b[i]);k=i=j=1;while(i<=5&&j<=5)if(a[i]<b[j])c[k++]=a[i++];//c[0]fornouseelsec[k++]=b[j++];if(i<j)//appendingtherestonesinarrayafor(;i<=5;i++)c[k++]=a[i];else//appendingtherestonesinarraybfor(;j<=5;j++)c[k++]=b[j];printf("\n\n");printf("\nthemergedarraycis:\n\n");for(k=1;k<=10;k++){if(k==6)printf("\n");printf("c[%d]=%d",k,c[k]);}while(!kbhit());}intsub1(intb[],intn){intt,i,j,post;for(i=1;i<n;i++){post=i;for(j=i+1;j<=n;j++)if(b[post]>b[j])post=j;if(post!=i)j{jt=b[i];b[i]=b[post];b[post]=t;}}return0;}12、 耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3„„,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。/*//approachone#defineN13#include<stdio.h>#include<conio.h>structperson{intnumber;//itsorderintheoriginalcircleintnextp;//recorditsnextperson};structpersonlink[N+1];//link[0]fornousevoidmain(){inti,count,next;//countfor12persons,and//nextforthepersonnotoutofcircleyetclrscr();for(i=1;i<=N;i++){link[i].number=i;//numberingeachpersonif(i==N)link[i].nextp=1;elselink[i].nextp=i+1;//numberingeachnextperson}printf("\nThesequenceoutofthecircleis:\n");for(next=1,count=1;count<N;count++)//countuntil12persons{i=1;while(i!=3)//icounts1,2,3{do//skiptheoneswhosenumbersarezeronext=link[next].nextp;while(link[next].number==0);//endofdoi++;}printf("%3d",link[next].number);link[next].number=0;//indicateoutofcirclealreadydo//startfromtheoneswhosenumbersarenotzeronexttimenext=link[next].nextp;while(link[next].number==0);}printf("\n\nThebetrayerofthemis:");for(i=1;i<=N;i++)if(link[i].number)printf("%3d\n",link[i].number);getch();}*///approachtwousingcycliclist#defineN13#defineLENsizeof(structperson)#include<stdio.h>#include<conio.h>#include<alloc.h>#include<stdlib.h>//structperson//permitstructplacedhere////{//intnumber;//structperson*next;//};voidmain(){inti,count;structperson//orpermitstructplacedherealso//{intnumber;structperson*next;};structperson*head,*p1,*p2;clrscr();head=p2=NULL;for(i=1;i<=N;i++){p1=(structperson*)malloc(LEN);p1->number=i;if(head==NULL)head=p1;elsep2->next=p1;p2=p1;}p2->next=head;printf("\nthesequenceoutofthecircleis:\n");for(count=1;count<N;count++){i=1;while(i!=3){p1=head;head=head->next;i++;}p2=head;printf("%3d",p2->number);p1->next=head=p2->next;free(p2);}printf("\nThebetrayerofthemis:\n%3d",head->number);getch();}15、按如下图形打印杨辉三角形的前10行。其特点是两个腰上的数都为1,其它位置上的每一个数是它上一行相邻两个整数之和。121221233124641#include<stdio.h>#include<conio.h>#defineN10voidmain(){inti,j,k,a[N][N];clrscr();for(i=0;i<N;i++)//initializea[N][N{a[i][0]=1;a[i][i]=1;}for(i=2;i<N;i++)//calculatefor(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<N;i++)//output{for(k=0;k<=3*(N-i);k++)printf("");for(j=0;j<=i;j++)printf("%6d",a[i][j]);printf("\n\n");}getch();}16、某班有5个学生,三门课。分别编写3个函数实现以下要求:(1) 求各门课的平均分;(2) 找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;(3) 找出三门课平均成绩在85-90分的学生,并输出其学号和姓名主程序输入5个学生的成绩,然后调用上述函数输出结果。#defineSNUM5/*studentnumber*/#defineCNUM3/*coursenumber*/#include<stdio.h>#include<conio.h>/*dispstudentinfo*/voidDispScore(charnum[][6],charname[][20],floatscore[][CNUM]){inti,j;printf("\n\nStudentInfoandScore:\n");for(i=0;i<SNUM;i++){printf("%s",num[i]);printf("%s",name[i]);for(j=0;j<CNUM;j++)printf("%8.2f",score[i][j]);printf("\n\n");}}/*calculateallstudentaveragescore*/voidCalAver(floatscore[][CNUM]){floatsum,aver;inti,j;for(i=0;i<CNUM;i++){sum=0;for(j=0;j<SNUM;j++)sum=sum+score[j][i];aver=sum/SNUM;printf("Averagescoreofcourse%dis%8.2f\n",i+1,aver);}}/*Findstudent:twocoursesnopass*/voidFindNoPass(charnum[][6],floatscore[][CNUM]){inti,j,n;printf("\nTwoCourseNoPassStudents:\n");for(i=0;i<SNUM;i++){n=0;for(j=0;j<CNUM;j++)if(score[i][j]<60)n++;if(n>=2){printf("%s",num[i]);for(j=0;j<CNUM;j++)if(score[i][j]<60)printf("%8.2f",score[i][j]);printf("\n");}}}/*Findstudent:threecourses85-90*/voidFindGoodStud(charnum[][6],charname[][20],floatscore[][CNUM]){inti,j,n;printf("\nScoreofthreecoursesbetween85and90:\n");for(i=0;i<SNUM;i++){n=0;for(j=0;j<CNUM;j++)if(score[i][j]>=85&&score[i][j]<=90)n++;if(n==3)printf("%s%s\n",num[i],name[i]);}}/*inputstudentinfo*/voidmain(){charnum[SNUM][6],name[SNUM][20];//arraynumreferstostudentnumberfloatscore[SNUM][CNUM];//anditslengthis6inti,j;clrscr();printf("\nPleaseinputstudentnumandscore:\n");for(i=0;i<SNUM;i++){printf("\n\nStudent%dnumber:",i+1);scanf("%s",num[i]);printf("\nStudent%dname:",i+1);scanf("%s",name[i]);printf("\nStudent%dthreescores:",i+1);for(j=0;j<CNUM;j++)scanf("%f",&score[i][j]);}DispScore(num,name,score);CalAver(score);FindNoPass(num,score);FindGoodStud(num,name,score);getch();}17、编写一人个求X的Y次幂的递归函数,X为double型,y为int型,要求从主函数输入x,y的值,调用函数求其幂。#include<stdio.h>#include<conio.h>doublefact(doublex,inty){if(y==1)returnx;elsereturnx*fact(x,y-1);}voidmain(){doublex;inty;clrscr();printf("\nPleasex,y:");scanf("%lf%d",&x,&y);printf("\nx^y=%・2lf",fact(x,y));getch();}18、打印魔方阵。所谓魔方阵是指这样的的方阵:它的每一行、每一列和对角线之和均相等。输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。例如,当n=3时,魔方阵为:816357492魔方阵中各数排列规律为:将“1”放在第一行的中间一列;从“2”开始直到nXn为止的各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数同样加1;如果上一数的行数为1,则下一个数的行数为n(最下一行),如在3X3方阵中,1在第1行,则2应放在第3行第3列。当上一个数的列数为n时,下一个数的列数应为1,行数减1。如2在第3行第3列,3应在第2行第1列。如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。如按上面的规定,4应放在第1行第2列,但该位置已被1占据,所以4就放在3的下面。由于6是第1行第3列(即最后一列),故7放在6下面。#include<stdio.h>#include<conio.h>#defineMax15voidmain(){inti,row,col,odd;intm[Max][Max];clrscr();printf("\nPleaseinputanodd:");scanf("%d",&odd);if(odd<=0||odd%2==0){printf("\nInputError!\n");getch();return0;}printf("\nodd=%d\n\n",odd);row=0;col=odd/2;//1placedinthemiddleofthefirstrowfor(i=1;i<=odd*odd;i++){m[row][col]=i;if(i%odd==0)//tothelastcolif(row==odd-1)//tothelastrowrow=0;elserow++;else//outmostelse{if(row==0)row=odd-1;elserow--;if(col==odd-1)col=0;elsecol++;}//endofoutmostelse}//endofforfor(row=0;row<odd;row++){for(col=0;col<odd;col++)printf("%4d",m[row][col]);printf("\n\n");}getch();return0;}19、找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有“鞍点”),打印出有关信息。#defineN20#defineM20#include<stdio.h>#include<conio.h>voidmain(){inta[N][M];//inta[][];notallowedhereinti,j,k,row,col,n,m,find=0;clrscr();printf("\nEntern&m:\n\n");scanf("%d%d",&n,&m);printf("\nEntera[0][0]--a[%d][%d]\n\n",n-1,m-1);for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%d",&a[i][j]);printf("\n\nThearrayyouhavejustenteredis:\n");for(i=0;i<n;i++){for(j=0;j<m;j++)printf("%5d",a[i][j]);printf("\n\n");}//findthepointfor(i=0;i<n;i++){for(col=0,j=1;j<m;j++)if(a[i][col]<a[i][j])//findcol,selectsortaccordingtocolcol=j;for(row=0,k=1;k<n;k++)if(a[row][col]>a[k][col])//findrow,selectsortaccordingtorowrow=k;if(i==row){find=1;printf("Thepointisa[%d][%d].\n",row,col);}}if(!find)printf("\nNosolution.\n");getch();}20、马克思在《数学手稿》中提出如下问题:有30个人(包括男人、女人和小孩)在一家饭店吃饭共花50先令,其中每个男人花3先令,每个女人花2先令,每个小孩花1先令,问男人、女人、小孩各有多少人?#include<stdio.h>#include<conio.h>voidmain(){intman,woman,child,money=50,count=30;inti,j,k;clrscr();printf("Theyconsistof:\n\n");for(i=0;i<=count;i++)for(j=0;j<=count;j++)for(k=0;k<=count;k++)if(i+j+k==count&&3*i+2*j+k==money){printf("man=%2dwoman=%2dchild=%2d\n",i,j,k);printf("\n");}getch();}21、定义一个结构体变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出。#include<stdio.h>#include<conio.h>structymd{intday;intmonth;intyear;};intdayof[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intdays(structymd*p){inti,d;if(p->year%4==0&&p->year%100!=0||p->year%400==0)dayof[2]=29;d=p->day;for(i=1;i<p->month;i++)d=d+dayof[i];return(d);}voidmain(){structymddate;intd;clrscr();for(;;){printf("\n \n\n");printf("date(yyyy/mm/dd)=?(yyyy=0--Exit)\n\n");scanf("%d/%d/%d",&date.year,&date.month,&date.day);if(date.year==0)break;d=days(&date);printf("\nThedayoftheyearis%d!\n\n",d);}}22、建立一个链表,每个结点包括:学号、姓名、性别、年龄,输入一个学号,如果链表中的结点包括该学号,则输出该结点内容后,并将其结点删去。#defineLENsizeof(structstud_node)#include<conio.h>#include<stdio.h>#include<string.h>structstud_record{charStudNo[6];charStudName[10];charStudSex;/*M---MaleF---Female*/intStudAge;};structstud_node{structstud_recordstud_mem;structstud_node*next;};/*CreateStudentLineartable*/structstud_node*create(){structstud_node*head,*p,*q;charvno[6],vname[10],vsex;intvage;head=NULL;while(1){printf("\nPleaseinputastudentrecord\n\nNo\tName\tSex\tAge\n\n");scanf("%s",vno);getchar();if(strcmp(vno,"0")==0)//whenvno=="0"toexitbreak;scanf("%s",vname);getchar();scanf("%c%d",&vsex,&vage);getchar();p=(structstud_node*)malloc(LEN);//allocatespacetonodepstrcpy(p->stud_mem.StudNo,vno);strcpy(p->stud_mem.StudName,vname);p->stud_mem.StudSex=vsex;p->stud_mem.StudAge=vage;if(head==NULL)head=p;elseq->next=p;//qisthepreviousnodeofpq=p;}if(head!=NULL)q->next=NULL;//thelastnodehasnochildreturnhead;}/*FindastudentandIfFoundthenDeletethenode*/structstud_node*delete(structstud_node*head,charno[6]){structstud_node*p,*q;p=head;q=p;while(p){if(strcmp(p->stud_mem.StudNo,no)==0)/*Deletethenode*/{if(p==head)//deletethefirstnodehead=p->next;else{if(p->next!=NULL)//deletethemiddlenodeq->next=p->next;else//deletethelastnodeq->next=NULL;}printf("\n\t\t%s\t%s\t%c\t%d\n",p->stud_mem.StudNo,p->stud_mem.StudName,p->stud_mem.StudSex,p->stud_mem.StudAge);free(p);break;}q=p;p=p->next;}returnhead;}/*Displineartablecontent*/voidprn(structstud_node*head){structstud_node*p;inti=1;p=head;printf("\nRecord\tNo\tName\tSex\tAge\n");while(p){printf("%3d\t%s\t%s\t%c\t%d\n",i,p->stud_mem.StudNo,p->stud_mem.StudName,p->stud_mem.StudSex,p->stud_mem.StudAge);p=p->next;i++;}}/*mainprogramhere*/voidmain(){structstud_node*head;charno[6];clrscr();head=create();prn(head);getch();printf("\nPleaseinputastudnotoFind:");gets(no);head=delete(head,no);prn(head);getch();}23、给定一个日期,求出该日为星期几(已知2002-3-28为星期四)。#include<stdio.h>#include<conio.h>structymd{intyear;intmonth;intday;};/*ifayearisaleapone*/intyn_rn(intyear){if(year%4==0&&year%100!=0||year%400==0)return1;elsereturn0;}/*returnwhichdayintheyear*/intd_of_day(structymddayof){intdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};inti,d=0;if(yn_rn(dayof.year))days[2]=29;for(i=1;i<dayof.month;i++)d=d+days[i];return(d+dayof.day);}/*returnthepositivedaysifday1>day2,ornegativedaysifday1<day2*/intday_diff(structymdday1,structymdday2){intd1,d2,i,diff=0;d1=d_of_day(day1);d2=d_of_day(day2);if(day1.year>day2.year){for(i=day2.year;i<day1.year;i++)if(yn_rn(i))diff=diff+366;elsediff=diff+365;}else{for(i=day1.year;i<day2.year;i++)if(yn_rn(i))diff=diff-366;elsediff=diff-365;}returndiff+d1-d2;}voidmain(){structymdoldday,day;intoldweek,week,diff;char. rr-7~\ 「〃c 〃〃入/r 〃〃T 〃〃m 〃 〃T1 〃〃厂•〃〃c*rq[7]={"Sun","Mon","Tue","Wen","Thu","Fri","Sat"};clrscr();/*2003-4-3:Thursday*/oldday.year=2003;oldday.month=4;oldday.day=3;oldweek=4;printf("\nPleaseinputday(YYYY-MM-DD):");scanf("%d-%d-%d",&day.year,&day.month,&day.day);diff=day_diff(day,oldday);week=(diff%7+oldweek)%7;printf("\n%d*%d-%d:%s\n",day.year,day.month,day.day,rq[week]);getch();}24、用递归法将一个整数n转换成字符串(例如输入4679,应输出字符串“4679”),n为不确定数,可以是位数不超过5,且数值在-32768~32767之间和任意整数。#include<conio.h>#include<stdio.h>voidconvert(intn){inti;if((i=n/10)!=0)convert(i);putchar(n%10+'0');//theAsciiofchar'0'is48}voidmain(){intnumber;clrscr();printf("\ninputaninteger:");scanf("%d",&number);printf("\n\nOutputstringis:");if(number<0){putchar('-');number=-number;}convert(number);getch();}25、有一个字符串,包括n个字符。写一个函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串。要求在主函数输入字符串及m值并输出复制结果。#include<stdio.h>#include<ctype.h>main(){intm;char*str1[80],*str2[80];printf("Inputastring(length<80:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 户外防护机柜钣金加工技术方案
- 试用期护士述职报告(3篇)
- 园林绿化苗木养护、景观提升及病虫害防治方案
- 2026年广东卫生系统招聘考试(护理学+卫生法律法规)真题及答案
- DB15-T 4502-2026 非物质文化遗产档案管理规范
- 《医疗器械监督管理条例》培训考试试题及答案
- 2026主管护师(中级)模拟试题及参考答案详解【突破训练】
- 综采工作面空顶区支护安全技术措施培训
- 建设工程应急救援程序培训
- 送电线路防雷技术措施培训
- 【新教材】2026秋人教PEP版六年级上册英语Unit 2 Getting together 教案(3课时)
- 2026年中医诊疗技术操作职业技能竞赛试题
- 2026浙江宁波市北仑区商贸物流投资集团有限公司辅助岗人员招聘6人笔试参考题库及答案详解
- 2025-2030全球卫星互联网星座部署竞争格局与频段资源分析
- 内蒙古机电职业技术学院单独招生(机电类)考试题(附答案)
- 腹腔镜肾上腺切除课件
- 脑卒中后吞咽障碍患者进食护理团标解读
- DB36-T 1378-2024 湿地保护修复技术规程
- 某水电站大坝施工组织设计
- QB∕T 2822-2018 毛皮服装行业标准
- 液压泵与液压马达的拆装与选用-齿轮泵的拆装
评论
0/150
提交评论