版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、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三个值,输出其中最大值。 要求不改变下列给定的程序
2、框架内容,填入合适语句,使其成为满足题目要求的正确程序。*/int max_a(int a,int b,int c)int max=a;if(max<b)max=b;if(max<c)max=c; return max;int max_b(int a,int b,int c)int max=b;if(max<a)max=a;if(max<c)max=c;return max;int max_c(int a,int b,int c)int max=c;if(max<a)max=a;if(max<b)max=b;return max; void main() i
3、nt a,b,c,max; scanf("%d,%d,%d",&a,&b,&c); /max=a>b?a:b; /max=max>c?max:c; /max=a; /if(max<b) max=b; /if(max<c) 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",
4、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
5、main()int i; for(i=1;i<=n;i+) if(i%2!=0) s+=i;6.040 m,n和s是系统定义的外部整型变量(不需要自行定义),编写程序,根据m的值求满足1+2+.+n>=m的最小n,并将1+2+.+n的结果存放到s。例如,若m=50,则n=10,s=55。*/void main()int i; for(i=1;s<m;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
6、 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=x<y?x:y; retur
7、n(t<z?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
8、=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(
9、n%t=0) return 0; return 1;int f(int i) /* 将偶数i表示为两个素数之和,返回其中较小的素数*/ int n; for( n=3; n<=i; n+) if(prime(i-n) && prime(n) return n; /* 8.050 编写函数,将字符串中ASCII码最小的字符放在第一 个字符位置,其余字符依次往后移。 */void func(char *str)/* 将字符串str中ASCII码最小的字符放在第一个 */* 字符位置,其余字符依次往后移。 */ int i,j,min; for(min=0,i=1;stri!=
10、'0'i+) if(strmin>stri) 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;i<N;i+) for(j=0;j<N;j+) bij=aN-1-jN-1-i; for(i=0;i<N;i
11、+) for(j=0;j<N;j+) aij=bij; return; /* 8.064 编写函数将一个NxN的二维数组“水平”翻转。 例如:翻转前的数组 翻转后的数组 1 2 3 7 8 9 4 5 6 -> 4 5 6 7 8 9 1 2 3 */void invertH(char aNN) int i,j; char k; for (i=0;i*2<N;i+) for (j=0;j<N;j+) k=aij; aij=aN-i-1j; aN-i-1j=k; /* 8.067 编写函数将一个NxN的二维数组的周边元素“顺时针”轮转1位。 例如:轮转前的数组 轮转后的数
12、组 1 2 3 4 1 2 4 5 6 -> 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;i<N;i+)for(j=0;j<N;j+)printf("%5d",aij);printf("n");tmp = a00;a00 = a10;column = 1;while(!(row=0&&column=0)t
13、 = 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;i<N;i+)for(j=0;j<N;j+)printf(&quo
14、t;%5d",aij);printf("n");/* 8.072 编写函数将一个NxN的二维数组a的元素按行向右轮转1位。 例如:轮转前的数组 轮转后的数组 1 2 3 3 1 2 4 5 6 -> 6 4 5 7 8 9 9 7 8 */void turningRight(char aNN) int row, col=N-3, tmp; printf("原来的数组:n"); for(row=0; row<N; row+) for(col=0; col<N; col+) printf("%5d",arowc
15、ol); printf("n"); for (row=0; row<N; row+) tmp = arowN-1; for (col=N-1; col; col-) arowcol = arowcol-1; arowcol = tmp; printf("右移一位后的的数组:n"); for(row=0; row<N; row+) for(col=0; col<N; col+) printf("%5d",arowcol); printf("n"); printf("n");voi
16、d func(char s, char t, int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。*/ int i; for(i=0;i<n;i+) ti=sn-i-1; ti='0'void func(char *s, char *t) /* s是给定字符串的起始地址, t是求得s的逆串的起始地址*/ int i,n=strlen(s); for(i=0;i<n;i+) *(t+i)=*(s+n-i-1);void func(char *s1, char *s2, int n) int i,j;
17、 char t; for(i=0;i<n;i+) *(s2+i)=*(s1+i); for(j=1;j<n-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;i<n;i+) *(s2+i)=*(s1+i); for(j=1;j<n-2;
18、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是天数,
19、 若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&&yearday<=366)z=1;if(yearday-31)>0) year
20、day=yearday-31; for(i=1;i<=11;i+)if(yearday/d2i=0) *pmonth=*pmonth+1; break; else *pmonth=*pmonth+1; if(yearday-d2i>0) yearday=yearday-d2i; else break; *pday=yearday;else if(1<=year&&1<=yearday&&yearday<=365) z=1; if(yearday-31)>0) yearday=yearday-31; for(i=1;i<=
21、11;i+)if(yearday/d1i=0&&yearday!=0) *pmonth=*pmonth+1; break; else *pmonth=*pmonth+1; if(yearday-d1i!=0) yearday=yearday-d1i; else break; *pday=yearday;return(z);long func(char *s) /* s是一个数字字符串的地址,函数返回值为由s含有的数字字符转换得到的数(包含正负数情况) */ int i,j,k=0,a=1; long n=0; for(j=0;*(s+j)!='0'j+) for
22、(i=j-1;i>=0;i-) if(*(s+i)>='0'&&*(s+i)<='9') n=n+(*(s+i)-'0')*a; a=a*10; if(*s='-') n=n*(-1); return n;int findmax(int s, int n) /* 返回s中n(>0)个整数的最大值。 注意:要求在函数中采用指针(而不是下标)来处理数组元素。*/ int i,max; max=*s; for(i=0;i<n;i+) if(*(s+i)>max) max=*(s+i);
23、 return max; int min3adj(int *s, int n) /* 数组s含n(>=3)个整数, 返回在s中相邻三个数的和中的最小值。*/int i,j; int sum20=0;int min = 0; for(i=0;i<n-2;i+) for(j=0;j<3;j+ ) sumi += si+j; sumi+1='0' min = sum0; for(i=0;i<n-2;i+) if(sumi<min) min = sumi; return min;/* 11.023 数组s存储了n个人的信息。写一函数,求这n个人中年龄最大(
24、即出生日期最小)者的姓名。 */char *oldest(student s, int n) int i; struct student *p; p=&s0; for(i=1;i<n;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.bir
25、th.day<(*p).birth.day) p=&si; return(p->name);/* 11.033 链表L存储了多个人的信息。写一函数,求这些人中年龄最大 (即出生日期最小)者的名字。 结构体类型定义如下: struct dateint year; int month; int day; /日期结构体类型 struct studentNode /链表结点的结构体类型 char name10; /人名 struct date birth; /出生日期 struct studentNode *next ; */char *oldest(struct studentN
26、ode *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.year<(*head1).birth.year) head->next=head1->next; p=(*head).name; else if(*head).birth.year=(*head1).bir
27、th.year) if(*head).birth.month<(*head1).birth.month) head->next=head1->next; p=(*head).name; else if(*head).birth.month=(*head1).birth.month) if(*head).birth.day<(*head1).birth.day) head->next=head1->next; p=(*head).name; else head=head1; p=(*head).name; else head=head1; p=(*head).
28、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)
29、int i; float sum=0; for(i=0;i<n;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的总学分。 */fl
30、oat 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 /结构体类型 ch
31、ar 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 studentNode *hea
32、d; struct studentNode *p1,*p2; if(n=0) return NULL; while(j<n) p1=(struct studentNode *)malloc(sizeof(struct studentNode); if(j=0) head=p1; else (*p2).next=p1; p2=p1; for(i=0;i<10;i+) (*p1).namei=i; (*p1).birth.year=sj.birth.year; (*p1).birth.month=sj.birth.month; (*p1).birth.day=sj.birth.day; j+; (*p2).next=NULL; return(head);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年赣江新区人民医院心血管内科医师岗招聘备考题库(第二批)含答案详解
- 2025年济宁市区某单位招聘财务出纳备考题库带答案详解
- 理解文中句子含意课件
- 理想的房间课件
- 慢热型人格面试应对策略
- 2025年虚拟现实VR在房地产营销领域的创新应用报告
- 设计师职业前景分析
- 消防安全整治中心方案
- 中学生学习方法专题讲座
- 医患关系的科学意义
- 2025年常熟市交通产业投资集团有限公司(系统)招聘14人备考题库含答案详解
- 临沂市公安机关2025年第四季度招录警务辅助人员备考题库新版
- 2025年新版中医药学概论试题及答案
- 深圳市龙岗区2025年生物高一上期末调研模拟试题含解析
- 栏杆劳务分包合同范本
- 2025年黄帝内经章节题库及答案
- 具身智能+医疗康复中多模态感知与自适应训练系统研究报告
- 广东省深圳市宝安区2026届高一上生物期末联考试题含解析
- 自动化生产线调试与安装试题及答案
- GB/T 7986-2025输送带滚筒摩擦试验
- 2025秋期版国开电大本科《管理英语4》一平台综合测试形考任务在线形考试题及答案
评论
0/150
提交评论