




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言编程题目1.025 编写一个C程序,用函数printf(char *s)输出以下3行信息:* * Very Good! * 注意:(1)要求精确到每个字符、空格、字母及其大小写。(2)可多次调用printf(char *s),每次仅一个字符串参数。*/void print1()printf(*n);void print2()printf(* Very Good! *n);void main() print1(); print2(); print1();1.055 编写一个程序,输入a、b、c三个值,输出其中最大值。 要求不改变下列给定的程序框架内容,填入合适语句,使其成为满足题目要求的正确程序。*/int max_a(int a,int b,int c)int max=a;if(maxb)max=b;if(maxc)max=c; return max;int max_b(int a,int b,int c)int max=b;if(maxa)max=a;if(maxc)max=c;return max;int max_c(int a,int b,int c)int max=c;if(maxa)max=a;if(maxb?a:b; /max=maxc?max:c; /max=a; /if(maxb) max=b; /if(maxc) max=c;printf(max(%d,%d,%d)=%dn,a,b,c,max_a(a,b,c);printf(max(%d,%d,%d)=%dn,a,b,c,max_b(a,b,c);printf(max(%d,%d,%d)=%dn,a,b,c,max_c(a,b,c); 6.022 n是系统给定的外部变量,编写程序求1到n间的自然数之和。请定义局部变量s存放求和的结果,并用下列语句输出结果 printf(1+2+.+n=%dn,s);*/void main()int s; /* 请添加相关说明和语句 */ int i; for(i=1;i=n;i+) s+=i;printf(1+2+.+n=%dn,s); /* 注意:不要修改此输出语句 */6.026 n和s是系统给定的外部整型变量(不需要自行定义),编写程序求1到n之间的奇数之和,并将结果存放到s。*/void main()int i; for(i=1;i=m的最小n,并将1+2+.+n的结果存放到s。例如,若m=50,则n=10,s=55。*/void main()int i; for(i=1;sm;i+) s+=i; n=i; /* 6.051 n和s是系统给定的外部整型变量(不需要自行定义),编写程序求1-1/2+1/3-1/4+.1/n,并将结果存放到s。*/void main() /int sign=1; /float deno=2.0,term; /s=1.0; /while(deno=n) / /sign=-sign; /term=sign/deno; /s=s+term; /deno=deno+1; / /printf(%fn,s); int i=1,flag=1; s=0.0; while(i=n) s+=1.0/i+*flag; flag*=-1; printf(s=%fn,s); int min(int x, int y, int z)/* 返回3个整数x,y和z中最小的数 */ int t; t=xy?x:y; return(tz?t:z); /* 8.020 编写函数,求用1元、5元和10元三种纸币支付n元钱 共有多少种支付方法? 例如,16元可有6种支付方法: 方法 1 2 3 4 5 6 10元 0 0 0 0 1 1 5元 0 1 2 3 0 1 1元 16 11 6 1 6 1*/int change(int n) int i,j,k; int sum=0; printf(t1元t5元t10元n); for(i=0;i=n;i+) for(j=0;j=n/5;j+) for(k=0;k=n/10;k+) if(n=(i+5*j+10*k) sum=sum+1; printf(%-d,sum); printf(t%-dt%-dt%-dn,i,j,k); printf(n); return(sum);/* 8.030 先编写一个判断素数的函数。再编写一个函数将一个 偶数表示为两个素数之和,并返回其中较小的素数。 注:素数指只能被1和自身整除的正整数。规定0,1不是素数。 */int prime(int n) /* 判断素数,如果是素数返回1,不是素数则返回0 */ int t; if(n=1) return 0; for(t=2;t=(n/2);t+) if(n%t=0) return 0; return 1;int f(int i) /* 将偶数i表示为两个素数之和,返回其中较小的素数*/ int n; for( n=3; nstri) min=i; j=strmin; for(i=min-1;i=0;i-) stri+1=stri; str0=j;/* 8.060 编写函数将一个nxn的二维数组按“次对角线”翻转。 例如:翻转前的数组 翻转后的数组 1 2 3 9 6 3 4 5 6 - 8 5 2 7 8 9 7 4 1 */void invert(char aNN) int i, j,b2020; for(i=0;iN;i+) for(j=0;jN;j+) bij=aN-1-jN-1-i; for(i=0;iN;i+) for(j=0;j 4 5 6 7 8 9 1 2 3 */void invertH(char aNN) int i,j; char k; for (i=0;i*2N;i+) for (j=0;j 7 5 3 7 8 9 8 9 6 */void turningClockwise(char aNN) int i,j,row=0,column=0;int tmp,t;int flag=1;printf(原来的数组:n);for(i=0;iN;i+)for(j=0;jN;j+)printf(%5d,aij);printf(n);tmp = a00;a00 = a10;column = 1;while(!(row=0&column=0)t = arowcolumn;arowcolumn = tmp;tmp = t;if(flag=1)if(column!=N-1)column +;elseflag+;row+;else if(flag=2)if(row!=N-1)row+;elseflag+;column-;else if(flag=3)if(column!=0)column -;elseflag+;row-;else if(flag=4)if(row!=0)row-;printf(n顺时针旋转后的数组:n);for(i=0;iN;i+)for(j=0;j 6 4 5 7 8 9 9 7 8 */void turningRight(char aNN) int row, col=N-3, tmp; printf(原来的数组:n); for(row=0; rowN; row+) for(col=0; colN; col+) printf(%5d,arowcol); printf(n); for (row=0; rowN; row+) tmp = arowN-1; for (col=N-1; col; col-) arowcol = arowcol-1; arowcol = tmp; printf(右移一位后的的数组:n); for(row=0; rowN; row+) for(col=0; colN; col+) printf(%5d,arowcol); printf(n); printf(n);void func(char s, char t, int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。*/ int i; for(i=0;in;i+) ti=sn-i-1; ti=0;void func(char *s, char *t) /* s是给定字符串的起始地址, t是求得s的逆串的起始地址*/ int i,n=strlen(s); for(i=0;in;i+) *(t+i)=*(s+n-i-1);void func(char *s1, char *s2, int n) int i,j; char t; for(i=0;in;i+) *(s2+i)=*(s1+i); for(j=1;jn-2;j+) for(i=1;i=n-2-j;i+) if(*(s2+i)*(s2+i+1) t=*(s2+i); *(s2+i)=*(s2+i+1); *(s2+i+1)=t; 对字符串除首尾字符外,将其余字符按ASCII码将序排列void func(char *s1, char *s2) int i,j,n; char t; n=strlen(s1); for(i=0;in;i+) *(s2+i)=*(s1+i); for(j=1;jn-2;j+) for(i=1;i=n-2-j;i+) if(*(s2+i)*(s2+i+1) t=*(s2+i); *(s2+i)=*(s2+i+1); *(s2+i+1)=t; char *match(char *s, char c) /* 返回字符在串s中首次出现的位置指针 */while(*s != 0) if(*s = c) return(s); else s+; return(NULL); int month_day(int year, int yearday, int *pmonth, int *pday) /* year是年, yearday是天数, 若year和yearday合理, 则*pmonth和*pday是计算得出的月和日,函数返回1; 否则,函数返回0。*/int i,z=0,d112=31,28,31,30,31,30,31,31,30,31,30,31,d212=31,29,31,30,31,30,31,31,30,31,30,31; *pmonth=1; if(year%4=0&year%100!=0|year%400=0) if(1=year&1=yearday&yearday0) yearday=yearday-31; for(i=1;i0) yearday=yearday-d2i; else break; *pday=yearday;else if(1=year&1=yearday&yearday0) yearday=yearday-31; for(i=1;i=0;i-) if(*(s+i)=0&*(s+i)0)个整数的最大值。 注意:要求在函数中采用指针(而不是下标)来处理数组元素。*/ int i,max; max=*s; for(i=0;imax) max=*(s+i); return max; int min3adj(int *s, int n) /* 数组s含n(=3)个整数, 返回在s中相邻三个数的和中的最小值。*/int i,j; int sum20=0;int min = 0; for(i=0;in-2;i+) for(j=0;j3;j+ ) sumi += si+j; sumi+1=0; min = sum0; for(i=0;in-2;i+) if(sumimin) min = sumi; return min;/* 11.023 数组s存储了n个人的信息。写一函数,求这n个人中年龄最大(即出生日期最小)者的姓名。 */char *oldest(student s, int n) int i; struct student *p; p=&s0; for(i=1;in;i+) if(si.birth.year(*p).birth.year) p=&si; continue; if(si.birth.year=(*p).birth.year) if(si.birth.month(*p).birth.month) p=&si; continue; if(si.birth.month=(*p).birth.month) if(si.birth.dayname);/* 11.033 链表L存储了多个人的信息。写一函数,求这些人中年龄最大 (即出生日期最小)者的名字。 结构体类型定义如下: struct dateint year; int month; int day; /日期结构体类型 struct studentNode /链表结点的结构体类型 char name10; /人名 struct date birth; /出生日期 struct studentNode *next ; */char *oldest(struct studentNode *L)/* 若L是空表,则返回空指针null 否则返回表中年龄最大者的名字 */int j; char *p; struct studentNode *head1,*head; head=L; p=(*head).name; if(head-next!=0) for(j=1;j+) head1=head-next; if(*head).birth.yearnext=head1-next; p=(*head).name; else if(*head).birth.year=(*head1).birth.year) if(*head).birth.monthnext=head1-next; p=(*head).name; else if(*head).birth.month=(*head1).birth.month) if(*head).birth.daynext=head1-next; p=(*head).name; else head=head1; p=(*head).name; else head=head1; p=(*head).name; else head=head1; p=(*head).name; if(head1-next=0) break; else p=(*head).name; return(p);/* 11.063 结构体类型定义如下: struct course int cID; /课程号,取值099 char name10; /课程名 float credit; /学分,取值05 int semester; /学期,取值18 ; 结构体数组c存储了n门课程的信息。写一函数,求学期s的总学分。 */float creditSum(struct course c, int n, int s) int i; float sum=0; for(i=0;in;i+) if(ci.semester=s) sum=sum+ci.credit; return sum; /* 11.073 课程链表结点的结构体类型定义如下: struct courseNode /课程链表结点的结构体类型 int cID; /课程号,取值099 char name10; /课程名 float credit; /学分,取值05 int semester; /学期,取值18 struct courseNode *next; ; 结构体链表Lc存储了各学期多门课程的信息。写一函数, 求学期s的总学分。 */float creditSum(struct courseNode *Lc, int s)/* 若Lc是空表,则返回0; 否则返回学期s的总学分 */ float sum=0; if(Lc=NULL) return 0.0; else while(Lc!=NULL) if(s=(*Lc).semester) sum=sum+(*Lc).credit; Lc=(*Lc).next; return sum; /* 11.133 日期和结构体类型定义如下: struct dateint year; int month; int day; /日期结构体类型 struct student /结构体类型 char name10; /人名 struct date birth; /出生日期 ; 结构体数组s存储了n个人的名字和出生日期。写一函数,由数组s中n个人 的信息及其顺序构造相应的链表。链表的结点的结构体类型定义如下: struct studentNode /结构体类型 char name10; /人名 struct date birth; /出生日期 struct studentNode *next ; */struct studentNode *CreateLinkList(struct student s, int n) int i,j=0; struct studentN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年区块链行业区块链技术发展与商业应用前景研究报告
- 2025年共享出行行业技术应用与市场前景研究报告
- 2025年纺织服装行业可再生纤维材料应用前景研究报告
- 2025年生物科技产业创新药研发技术与市场前景分析研究报告
- 2025年生物科技领域市场前景研究报告
- 2025年互联网行业人工智能技术在互联网应用的前景研究报告
- 2025年互联网+长租公寓行业研究报告及未来发展趋势预测
- 2025年汽车智能驾驶行业发展前景展望报告
- 宜宾市2025四川宜宾高新公用事业服务有限公司第二次招聘聘用人员50人笔试历年参考题库附带答案详解
- 国家事业单位招聘2025自然资源实物地质资料中心第二批招聘9人笔试历年参考题库附带答案详解
- 粉尘涉爆安全培训考试题及答案
- 力量国际礼仪培训课件
- 危化品经营安全培训管理课件
- 交通安全应急处置预案公司
- 工商业分布式屋顶光伏项目投资分析
- 保安节前安全培训课件
- 临床运动处方实践专家共识(2025)解读 3
- 用户侧储能系统调度平台创新创业项目商业计划书
- 药厂生产管理培训课件
- 2021-2025年高考地理真题知识点分类汇编之地球的运动
- 2025海南国考时政试题及答案
评论
0/150
提交评论