C补强阶段作业_第1页
C补强阶段作业_第2页
C补强阶段作业_第3页
C补强阶段作业_第4页
C补强阶段作业_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

C补强阶段作业C补强阶段作业C补强阶段作业资料仅供参考文件编号:2022年4月C补强阶段作业版本号:A修改号:1页次:1.0审核:批准:发布日期:编写一个函数。函数的三个参数是一个字符和两个整数。字符参数是需要输出的字符。第1个整数说明了在每行中该字符输出的个数,而第二个整数指的是需要输出的行数。编写一个调用该函数的程序。要求:输入字符为回车时,作为未输入字符处理;输入行列值时若不是数字,直接结束程序。编程考点:循环基本语法;break和continue#include<>voidchLineRow(charch,intc,intr);intmain(void){ charch; intcol,row; printf("Enteracharacter(#toquit):"); while((ch=getchar())!='#'){ if(ch=='\n') continue; printf("Enternumberofcolumnsandnumberofrows:"); if(scanf("%d%d",&col,&row)!=2) break; chLineRow(ch,col,row); printf("\nEnternextcharacter(#toquit):"); } printf("Bye!\n"); return0;}voidchLineRow(charch,intc,intr){ intcol,row; for(row=0;row<r;row++){ for(col=0;col<c;col++) putchar(ch); putchar('\n'); } return;}编写一个函数计算double类型数的某个整数次幂(不得调用系统的函数pow),注意0的任何次幂和任何数值的0次幂以及负数次幂并编写测试程序编程考点:if-else的嵌套#include<>doublepower(doublea,intb);/*ANSIprototype*/intmain(void){ doublex,xpow; intn; printf("Enteranumberandtheintegerpower"); printf("towhich\nthenumberwillberaised.Enterq"); printf("toquit.\n"); while(scanf("%lf%d",&x,&n)==2){ xpow=power(x,n);/*functioncall*/ printf("%.3gtothepower%dis%.5g\n",x,n,xpow); printf("Enternextpairofnumbersorqtoquit.\n"); } printf("Hopeyouenjoyedthispowertrip--bye!\n"); return0;}doublepower(doublea,intb)/*functiondefinition*/{ doublepow=1; inti; if(b==0){finches.\n\n",total/YRS); printf("MONTHLYAVERAGES:\n\n"); printf("JanFebMarAprMayJunJulAugSepOct"); printf("NovDec\n"); for(month=0;month<MONTHS;month++){/*foreachmonth,sumrainfalloveryears*/ for(year=0,subtot=0;year<YRS;year++) subtot+=*(*(rain+year)+month); printf("%",subtot/YRS); } printf("\n"); return0;}编写一个程序,提示用户输入3个数据集,每个数据集包括5个double值。程序应当实现下列所有功能:把输入信息存储到一个3*5的数组中计算出每个数集(包含5个值)的平均值计算所有数值的平均数找出这15个数中的最大值打印出结果每个任务需要用一个单独的函数来实现。对于任务B需要编写计算并返回一维数组平均值的函数,循环三次调用该函数来实现任务B。对于任务C、D,函数应当把整个数组做为参数,并却完成任务B、C和D的函数应该向他的调用函数返回答案(推荐使用变长数组,参考程序为变长数组实现)编程考点:循环和二维数组的熟练应用,以及数组作为参数的传递#include<>#defineROWS3#defineCOLS5voidstore(doublear[],intn);doubleaverage2d(introws,intcols,doublear[rows][cols]);doublemax2d(introws,intcols,doublear[rows][cols]);voidshowarr2(introws,intcols,doublear[rows][cols]);doubleaverage(constdoublear[],intn);intmain(void){ doublestuff[ROWS][COLS]; introw; for(row=0;row<ROWS;row++){ printf("Enter%dnumbersforrow%d\n",COLS,row+1); store(stuff[row],COLS); } printf("arraycontents:\n"); showarr2(ROWS,COLS,stuff); for(row=0;row<ROWS;row++) printf("averagevalueofrow%d=%g\n",row+1,average(stuff[row], COLS)); printf("averagevalueofallrows=%g\n",average2d(ROWS,COLS,stuff)); printf("largestvalue=%g\n",max2d(ROWS,COLS,stuff)); printf("Bye!\n"); return0;}voidstore(doublear[],intn){ inti; for(i=0;i<n;i++){ printf("Entervalue#%d:",i+1); scanf("%lf",&ar[i]); }}doubleaverage2d(introws,intcols,doublear[rows][cols]){ intr,c; doublesum=; for(r=0;r<rows;r++) for(c=0;c<cols;c++) sum+=ar[r][c]; if(rows*cols>0) returnsum/(rows*cols); else return;}doublemax2d(introws,intcols,doublear[rows][cols]){ intr,c; doublemax=ar[0][0]; for(r=0;r<rows;r++) for(c=0;c<cols;c++) if(max<ar[r][c]) max=ar[r][c]; returnmax;}voidshowarr2(introws,intcols,doublear[rows][cols]){ introw,col; for(row=0;row<rows;row++){ for(col=0;col<cols;col++) printf("%g",ar[row][col]); putchar('\n'); }}doubleaverage(constdoublear[],intn){ inti; doublesum=; for(i=0;i<n;i++) sum+=ar[i]; if(n>0) returnsum/n; else return;}编写产生100个1-10的随机数的程序,并以降序排列rand()为C的标准随机数产生函数编程考点:一维数组实现选择排序,嵌套循环的基本使用#include<>#include<>voidprint(constintarray[],intlimit);voidsort(intarray[],intlimit);#defineSIZE100intmain(void){ inti; intarr[SIZE]; for(i=0;i<SIZE;i++) arr[i]=rand()%10+1; puts("initialarray"); print(arr,SIZE); sort(arr,SIZE); puts("\nsortedarray"); print(arr,SIZE); return0;}/*--sortsanintegerarrayindecreasingorder*/voidsort(intarray[],intlimit){ inttop,search,temp; for(top=0;top<limit-1;top++) for(search=top+1;search<limit;search++) if(array[search]>array[top]){ temp=array[search]; array[search]=array[top]; array[top]=temp; }}/*--printsanarray*/voidprint(constintarray[],intlimit){ intindex; for(index=0;index<limit;index++){ printf("%2d",array[index]); if(index%10==9) putchar('\n'); } if(index%10!=0) putchar('\n');}设计一个简单的结构用来存储月份的全称、缩写、月号(1-12)、天数写一个简单的程序输出从一月开始到用户选择的月份的总天数(2月假设28天)注意,用户输入不区分大小写编程考点:C库字符及字符串函数的初步使用;结构的初步使用#include<>#include<>#include<>structmonth{ charname[10]; charabbrev[4]; intdays; intmonumb;};conststructmonthmonths[12]={{"January","Jan",31,1},{"February", "Feb",28,2},{"March","Mar",31,3},{"April","Apr",30,4},{ "May","May",31,5},{"June","Jun",30,6}, {"July","Jul",31,7},{"August","Aug",31,8},{"September", "Sep",30,9},{"October","Oct",31,10},{"November", "Nov",30,11},{"December","Dec",31,12}};intdays(char*m);intmain(void){ charinput[20]; intdaytotal; printf("Enterthenameofamonth:"); while(gets(input)!=NULL&&input[0]!='\0'){ daytotal=days(input); if(daytotal>0) printf("Thereare%ddaysthrough%s.\n",daytotal,input); else printf("%sisnotvalidinput.\n",input); printf("Nextmonth(emptylinetoquit):"); } puts("bye"); return0;}intdays(char*m){ inttotal=0; intmon_num=0; inti; if(m[0]=='\0') total=-1; else{ m[0]=toupper(m[0]); for(i=1;m[i]!='\0';i++) m[i]=tolower(m[i]); for(i=0;i<12;i++) if(strcmp(m,months[i].name)==0){ mon_num=months[i].monumb; break; } if(mon_num==0) total=-1; else for(i=0;i<mon_num;i++) total+=months[i].days; } returntotal;}修改下面的代码使他首先按照输入的顺序输出图书的信息,然后按照书名的字母升序输出图书的信息,就后按照value的值升序输出图书的信息,排序的工作由子函数完成。注意,移动数据量很大的单元来实现数组的排序,不可取。可采用辅助的指针数组来实现编程考点:指针数组;结构成员的两种引用方法(->.)#include<>#defineMAXTITL40#defineMAXAUTL40#defineMAXBKS100/*maximumnumberofbooks*/structbook{/*setupbooktemplate*/chartitle[MAXTITL];charauthor[MAXAUTL];floatvalue;};intmain(void){structbooklibrary[MAXBKS];/*arrayofbookstructures*/intcount=0;intindex;printf("Pleaseenterthebooktitle.\n");printf("Press[enter]atthestartofalinetostop.\n");while(count<MAXBKS&&gets(library[count].title)!=NULL&&library[count].title[0]!='\0'){printf("Nowentertheauthor.\n");gets(library[count].author);printf("Nowenterthevalue.\n");scanf("%f",&library[count++].value);while(getchar()!='\n')continue;/*clearinputline*/if(count<MAXBKS)printf("Enterthenexttitle.\n");}if(count>0){printf("Hereisthelistofyourbooks:\n");for(index=0;index<count;index++)printf("%sby%s:$%.2f\n",library[index].title,library[index].author,library[index].value);}else printf("Nobooks

Toobad.\n");return0;}参考答案代码#include<>#include<>#defineMAXTITL40#defineMAXAUTL40#defineMAXBKS100/*maximumnumberofbooks*/structbook{/*setupbooktemplate*/ chartitle[MAXTITL]; charauthor[MAXAUTL]; floatvalue;};voidsortt(structbook*pb[],intn);voidsortv(structbook*pb[],intn);intmain(void){ structbooklibrary[MAXBKS];/*arrayofbookstructures*/ structbook*pbk[MAXBKS];/*pointersforsorting*/ intcount=0; intindex; printf("Pleaseenterthebooktitle.\n"); printf("Press[enter]atthestartofalinetostop.\n"); while(count<MAXBKS&&gets(library[count].title)!=NULL &&library[count].title[0]!='\0'){ printf("Nowentertheauthor.\n"); gets(library[count].author); printf("Nowenterthevalue.\n"); scanf("%f",&library[count].value); pbk[count]=&library[count]; count++; while(getchar()!='\n') continue;/*clearinputline*/ if(count<MAXBKS) printf("Enterthenexttitle.\n"); } printf("Hereisthelistofyourbooks:\n"); for(index=0;index<count;index++) printf("%sby%s:$%.2f\n",library[index].title, library[index].author,library[index].value); printf("Hereisthelistofyourbookssortedbytitle:\n"); sortt(pbk,count); for(index=0;index<count;index++) printf("%sby%s:$%.2f\n",pbk[index]->title,pbk[index]->author, pbk[index]->value); sortv(pbk,count); printf("Hereisthelistofyourbookssortedbyvalue:\n"); for(index=0;index<count;index++) printf("%sby%s:$%.2f\n",pbk[index]->title,pbk[index]->author, pbk[index]->value); return0;}voidsortt(structbook*pb[],intn){ inttop,search; structbook*temp; for(top=0;top<n-1;top++) for(search=top+1;search<n;search++) if(strcmp(pb[search]->title,pb[top]->title)<0){ temp=pb[search]; pb[search]=pb[top]; pb[top]=temp; }}voidsortv(structbook*pb[],intn){ inttop,search; structbook*temp; for(top=0;top<n-1;top++) for(search=top+1;search<n;search++) if(pb[search]->value<pb[top]->value){ temp=pb[search]; pb[search]=pb[top]; pb[top]=temp; }}编写程序满足下列要求定义一个name结构,它含有两个成员:一个字符串用于存放名字,另一个字符串用于存放姓氏定义一个student结构,它含有3个成员:name结构,一个存放3个浮点数的grade数组,以及一个存放这3个数平均值的变量使用main()函数声明一个具有CSIZE(CSIZE=4)个student结构的数组,用来作为一个班级的数组,并随意初始化这些结构的名字部分,即:初始化一个班级数组里面学生的姓名。使用函数来执行d,e,f,g所描述的任务请求输入学生的分数,以交互地获取每个学生的成绩。将分数放到相应结构的grade数组成员中。可以自主选择在main()或一个函数中实现这个循环为每个结构计算平均分,并把平均值赋给合适的成员输出每个结构的信息输出每门课程的班级平均分编程考点:结构数组的使用#include<>#include<>#defineLEN14#defineCSIZE4#defineSCORES3structname{ charfirst[LEN]; charlast[LEN];};structstudent{ structnameperson; floatscores[SCORES]; floatmean;};voidget_scores(structstudentar[],intlim);voidfind_means(structstudentar[],intlim);voidshow_class(conststructstudentar[],intlim);voidshow_ave(conststructstudentar[],intlim);intmain(void){ structstudentclass[CSIZE]={{"Flip","Snide"},{"Clare","Voyans"}, {"Bingo","Higgs"},{"Fawn","Hunter"}}; get_scores(class,CSIZE); find_means(class,CSIZE); show_class(class,CSIZE); show_ave(class,CSIZE); return0;}voidget_scores(structstudentar[],intlim){ inti,j; for(i=0;i<lim;i++){ printf("Pleaseenter%dscoresfor%s%s:\n",SCORES, ar[i].,ar[i].; for(j=0;j<SCORES;j++){ while(scanf("%f",&ar[i].scores[j])!=1){ scanf("%*s"); puts("Pleaseusenumericinput."); } } }}voidfind_means(structstudentar[],intlim){ inti,j; floatsum; for(i=0;i<lim;i++){ for(sum=0,j=0;j<SCORES;j++) sum+=ar[i].scores[j]; ar[i].mean=sum/SCORES; }}voidshow_class(conststructstudentar[],intlim){ inti,j; charwholename[2*LEN]; for(i=0;i<lim;i++){ strcpy(wholename,ar[i].; strcat(wholename,""); strcat(wholename,ar[i].; printf("%27s:",wholename); for(j=0;j<SCORE

温馨提示

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

评论

0/150

提交评论