




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50#include<stdio.h>main() intnum50=0; inti,n; pri
2、ntf("请输入整型数组的长度(150):"); scanf("%d",&n); printf("请输入整型数组的元素:");
3、; for(i=0;i<n;i+) scanf("%d",&numi);
4、; intmin_num=num0; intmax_num=num0; for(intj=0;j<n;j+)
5、160; if(max_num<numj) max_num=numj;
6、0; elseif(min_num>numj) min_num=numj;
7、160; intsum=min_num+max_num; printf("数组中最大与最小值之和:%dn",sum); return0; 2求两个长长整型的数据的和并输出,例如输入1233333333333333。 3111111111111111111111111.
8、。,则输出。#include<stdio.h>#include<string.h>#include<malloc.h>main() char*num1,*num2; /两个长长整型数据 char*sum;/ inttemp;int len_num1,len_num2; / 两个长长整型数据的长度
9、160; intlen_max,len_min; num1=(char*)malloc(sizeof(char); num2=(char*)malloc(sizeof(char); printf("输入两个长
10、长整型数据:"); scanf("%s",num1); printf("输入两个长长整型数据:"); scanf("%s",num2); len_
11、num1=strlen(num1); len_num2=strlen(num2); len_max=(len_num1>=len_num2)?len_num1:len_num2; len_min=(len_num1<=len_num2)?len_num1:len_num2; &
12、#160; int len_max1=len_max; sum=(char*)malloc(sizeof(char)*len_max); memset(sum,0x00,len_max+1);/切忌初始化 for(;len_num1
13、>0&&len_num2>0;len_num1-,len_num2-) sumlen_max-=(num1len_num1-1-'0')+(num2len_num2-1-'0');
14、0; if(len_num1>0) sumlen_max-=num1len_num1- 1 -'0'
15、0; len_num1-; if(len_num2>0)
16、60; sumlen_max-=num1len_num2- 1-'0' len_num2-; for(intj=len_max1;j>
17、;=0;j-) /实现进位操作 / temp=sumj-'0' if(sumj>=10)
18、0; sumj-1+=sumj/10;
19、0; sumj%=10;
20、0; char*outsum=(char*)malloc(sizeof(char)*len_max1); j=0; while(sumj=0) /跳出头部0元素 j+;
21、 for(int m=0;m<len_max1;j+,m+) outsumm=sumj+'0' outsumm='0' &
22、#160;printf("输出两长长整型数据之和:%sn",outsum); return0; 3.通过键盘输入一串小写字母(az)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数:void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);【输入】 pInputStr
23、:输入字符串lInputLen: 输入字符串长度【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;#include <stdio.h>#include<string.h>#include<malloc.h>void stringFilter(const char *p_str, longlen, char *p_outstr) intarray256=0; const char *tmp = p_str; for(int j=0;j<len;j+)
24、 if(arraytmpj=0) *p_outstr+=tmpj; arraytmpj+; *p
25、_outstr= '0' void main() char *str = "cccddecc" intlen = strlen(str);
26、0; char* outstr = (char *)malloc(len*sizeof(char); stringFilter(str,len,outstr); printf("%sn",outstr); free(outstr);
27、 outstr= NULL; 4.通过键盘输入一串小写字母(az)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则:1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz" 要求实现函数:void stringZip(c
28、onst char*pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr: 输入字符串lInputLen: 输入字符串长度【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;#include <stdio.h>#include<string.h>#include<malloc.h> void stringZip(const char *p_str, long len,char *p_outstr)
29、 intcount=1; for(inti=0;i<len;i+) if(p_stri=p_stri+1)
30、60; count+;
31、 else
32、; if(count>1)
33、160; *p_outstr+= count +'0'
34、 *p_outstr+=p_stri;
35、; else
36、;
37、0; *p_outstr+=p_stri;
38、160; count = 1;/注意其位置 *
39、p_outstr= '0' void main() char*str = "cccddecc" printf("压缩之前的字符串为:%sn",str); intlen = strlen(str); char* o
40、utstr = (char*)malloc(len*sizeof(char); stringZip(str,len,outstr); printf("压缩之后的字符串为:%sn",outstr); free(outstr);
41、0; outstr= NULL;5.通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。 补充说明:1. 操作数为正整数,不需要考虑计算结果溢出的情况。2. 若输入算式格式错误,输出结果为“0”。 要求实现函数:void arithmetic(const char*pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr: 输入字符串lInputLen: 输入
42、字符串长度【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;#include <stdio.h>#include<string.h>#include<stdlib.h>void arithmetic(const char *input, longlen, char *output) chars110; chars210;
43、0; chars310; intcnt = 0; intlen_input=strlen(input); for(inti=0;i<len_input;+i)
44、160; if(inputi='')
45、60; cnt+; if(cnt!=2) *output+= '0
46、9; *output= '0' return;
47、0; sscanf(input,"%s %s %s",s1,s2,s3); if(strlen(s2)!=1|(s20!='+'&&s20!='-')
48、; *output+= '0' *output= '0'
49、0; return; int len_s1=strlen(s1); for(i=0;i<len_s1;i+)
50、160; if(s1i<'0'|s1i>'9') &
51、#160; *output+= '0' *output= '0'
52、; return;
53、160; intlen_s3=strlen(s3); for(i=0;i<len_s3;i+)
54、160; if(s3i<'0'|s3i>'9') &
55、#160; *output+= '0' *output= '0'
56、; return; &
57、#160; int x = atoi(s1); int y = atoi(s3); if(s20='+')
58、; intresult = x+y; itoa(result,output,10); elseif(s20='-
59、') intresult = x-y; itoa(result
60、,output,10); else *output+= '0' &
61、#160; *output= '0' return; void main() &
62、#160; charstr = "10 - 23" charoutstr10; intlen = strlen(str); arithmetic(str,len,outstr);
63、60; printf("%sn",str); printf("%sn",outstr); 6.一组人(n个),围成一圈,从某人开始数到第三个的人出列,再接着从下一个人开始数,最终输出最终出列的人(约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又
64、从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。)#include <stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h> typedef struct Node intdata; structNode *next;LinkList;
65、LinkList *create(int n) LinkList*p,*q,*head; inti=1; p=(LinkList*)malloc(sizeof(LinkList); p->data=i;
66、0; head=p; for(i=1;i<=n;i+) q=(LinkList*)mal
67、loc(sizeof(LinkList); q->data=i+1; p->next=q;
68、60; p=q; p->next=head; /使链表尾连接链表头,形成循环链表 returnhead;
69、0; free(p); p=NULL; free(q); q=NULL; void deletefun(LinkList *L,int m) LinkList
70、*p,*q,*temp; inti; p=L; while(p->next!=p)
71、0; for(i=1;i<m;i+)
72、160; q=p; p=p->next; &
73、#160; printf("%5d",p->data); temp=p;
74、0; q->next=p->next; p=p->next;
75、60; free(temp); printf("%5dn",p->data); int main() intn=7,m=3;
76、60; LinkList*head1; head1=create(n); deletefun(head1,m); return0;7.输入一串字符,只包含“0-10”和“,”找出其中最小的数字和最大的数字(可能不止一个),输出最后剩余数字个数。如输入 “3,3,4
77、,5,6,7,7”#include<stdio.h>#include<stdlib.h>#include<string.h> void main() charstr100; printf("输入一组字符串:n"); scanf("%s&
78、quot;,&str); intlen=strlen(str); intarray100; intcount=0; for(inti=0;i<len;i+)
79、; if(stri>='0'&&stri<='9')
80、60; arraycount+=stri-'0' arraycount='0'
81、0; intresult=count; intmin=array0; intmax=array0; for(intj=0;j<count;j+)
82、160; if(max<arrayj) max=arrayj;
83、160; elseif(min>arrayj) min=arrayj;
84、0; for(intk=0;k<count;k+) if(arrayk=min)
85、60; result-; if(arrayk=max)
86、60; result-; printf("%dn",result);8.输入一组身高在170到190之间(5个身高),比较身高差,选出身高差最小的
87、两个身高;若身高差相同,选平均身高高的那两个身高;从小到大输出;如 输入 170 181173 186 190 输出 170 173#include<stdio.h>#include<stdlib.h>#define N 5 int main() intHeightN; intdmin; &
88、#160; intH1,H2; inti,j,temp; printf("请输入一组身高在170到190之间的数据(共5个):n"); for(intk=0;k<N;k+)
89、60; scanf("%d",&Heightk); printf("n"); for(i=0;i<N;i+) fo
90、r(j=1;j<N-i&&Heightj-1>Heightj;j+)
91、; temp=Heightj-1; Heightj-1=Heightj;
92、 Heightj=temp; H1=Height0;
93、60; H2=Height1; dmin=H2-H1; for(intm=2;m<N;m+)
94、0; if(Heightm-Heightm-1<=dmin)
95、160; H1=Heightm-1; H2=Heightm;
96、 dmin=Heightm-Heightm-1; pri
97、ntf("身高差最小的两个身高为:n"); printf("%d,%dn",H1,H2); return0;9. 删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <
98、string.h>int delete_sub_str(const char *str,constchar *sub_str,char *result) assert(str!= NULL && sub_str != NULL); constchar *p,*q; char*t,*temp
99、; p= str; q= sub_str; t= result; intn,count = 0; n= strlen(q
100、); temp= (char *)malloc(n+1); memset(temp,0x00,n+1); while(*p)
101、60; memcpy(temp,p,n); if(strcmp(temp,q)= 0 )
102、0; count+; &
103、#160; memset(temp,0x00,n+1); p= p + n;
104、0; else
105、60; *t= *p; &
106、#160; p+; t+;
107、; memset(temp,0x00,n+1);
108、; free(temp); returncount;void main() chars100 = 0; intnum = delete_sub_str(“123abc12de234fg1hi34j123
109、k”,”123”,s); printf(“Thenumber of sub_str is %drn”,num); printf(“Theresult string is %srn”,s);10. 要求编程实现上述高精度的十进制加法。要求实现函数:void add (const char *num1,const char *num2, char *result)【输入】num1:字符串形式操作数1,如果操作
110、数为负,则num10为符号位'-'num2:字符串形式操作数2,如果操作数为负,则num20为符号位'-'【输出】result:保存加法计算结果字符串,如果结果为负,则result0为符号位。#include<stdio.h> #include<stdlib.h> #include<string.h> void move(char *str, int length) /移除字母前的"-"符号
111、60; if(str0 != '-') return; int i; for(i = 0; i < length-1; i+) stri = stri+1; stri = '0'
112、 intremove_zero(char *result, int length) int count = 0; for(int i = length-1; i > 0; i-) /从最后开始移除0,直到遇到非0数字,只对最初位置上的0不予判断 if(resulti = '0')
113、0; resulti = '0' count+; else
114、160; return length-count; return length - count; voidreverse(char *result, int length) /将字符串倒转 char temp; fo
115、r(int i = 0; i <= (length-1)/2; i+) temp = resulti; resulti = resultlength-1-i; resultlength-1-i = temp;
116、0; intreal_add(char *str1, char *str2, char *result, const bool flag) int len1 = strlen(str1); int len2 = strlen(str2); int n1, n2, another = 0; /another表示进位 int cur_rs = 0;&
117、#160; /表示result的当前位数 int i, j; int curSum; for(i = len1-1, j = len2-1; i >= 0 && j >= 0; i-, j-) n1 = str1i -
118、'0' n2 = str2j - '0' curSum = n1 + n2 + another; resultcur_rs+ = curSum % 10 + '0' anoth
119、er = curSum / 10; if(j < 0) while(i >= 0) /遍历str1剩余各位
120、60; n1 = str1i- - '0' curSum = n1 + another; resultcur_rs+ = curSum % 10 + '0'
121、; another = curSum / 10; if(another != 0) /如果还有进位未加上
122、0; resultcur_rs+ = another + '0' else while(j >= 0)
123、; n2 = str2j- - '0' curSum = n2 + another; resultcur_rs+ = curSum % 10 + '0'&
124、#160; another = curSum / 10; if(another != 0) resultcur_rs+ = another
125、 + '0' resultcur_rs = '0' cur_rs = remove_zero(result, cur_rs); if(!flag) resultcur_rs+ = '-' &
126、#160; resultcur_rs = '0' reverse(result, strlen(result); return cur_rs; intreal_minus(char *str1, char *str2, char *result) /使用str1减去str2
127、60; char big100, small100; int big_len, sml_len; int len1 = strlen(str1); int len2 = strlen(str2); bool flag = false; /用于标记str2是否比str1大
128、160; if(len1 < len2) flag = true; else if(len1 = len2) if(strcmp(str1, str2) = 0)
129、0; result0 = '0' result1 = '0' return 1; &
130、#160;else if(strcmp(str1,str2) < 0) flag = true; if(flag) /将str1和str2交换,确保str1指向的值是其中较大者,最后通过flag确定要不要给前面加-号
131、; char *temp = str1; str1 = str2; str2 = temp; len1 = strlen(str1); len2 = strlen(str2);&
132、#160; int n1, n2, another = 0; /another表示是否有借位 int i, j; int cur_rs = 0; int curMinus; for(i = len1-1, j =len2-1; i>=0 &&
133、 j>=0; i-,j-) n1 = str1i - '0' n2 = str2j - '0' if(n1 >= n2+another)
134、; resultcur_rs+ = (n1-n2-another)+'0' another = 0;
135、 else resultcur_rs+ = (n1+10-n2-another)+ '0' another = 1;
136、; while(i >= 0) n1 = str1i- - '0' if(another != 0) &
137、#160; n1 -= another; another = 0; resultcur_rs+ = n1 + '0'
138、; resultcur_rs = '0' cur_rs = remove_zero(result, cur_rs); if(flag) resultcur_rs+ = '-'
139、160; resultcur_rs = '0' reverse(result, cur_rs); return cur_rs; voidaddi(const char *num1, const char *num2, char *result) int len1 = s
140、trlen(num1); int len2 = strlen(num2); int rs_len; if(!len1 | !len2) return; char str1100, str2100; strncpy(str1, n
141、um1, len1); str1len1 = '0' strncpy(str2, num2, len2); str2len2 = '0' if(str10 = '-' && str20 = '-')
142、60; move(str1, len1); move(str2, len2); rs_len = real_add(str1, str2, result, false); else if(str10 = '-')
143、0; move(str1, len1); rs_len = real_minus(str2, str1, result); else if(str20 = '-') move(str2, len2);
144、0; rs_len = real_minus(str1, str2, result); else rs_len = real_add(str1, str2, result, true); /int main(int argc, char *argv) intmain() char num1100,num2100
145、; printf("请输入两个整型数据:n"); scanf("%s%s",num1,num2); char result100; memset(result, 0, 100); addi(num1,num2, result); printf("%sn", result); return 0; 11. 描述:10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年饲用原料作物合作协议书
- 2025年年园区物业合作协议书
- 心理健康课件大象版
- 二零二五版抵押贷款购销合同纠纷解决机制设计
- 二零二五版国际物流保险合同订立与理赔
- 2025版个人个人间旅游资金借款合同范本
- 二零二五年度机场航站楼建筑装饰工程施工合同范本
- 二零二五年度智能家居家居半包装修服务协议
- 二零二五版绿色住宅民用工程设计合同GF0209-绿色住宅标准
- 二零二五版文化衍生品开发及销售合同范本
- 工程项目甲供材料管理办法及流程
- 海天注塑机参数
- 2023年中国银行产品经理考试真题模拟汇编(共592题)
- GB/T 42452-2023系统与软件工程功能规模测量COSMIC方法
- YY/T 1794-2021口腔胶原膜通用技术要求
- GB/T 3730.2-1996道路车辆质量词汇和代码
- GB/T 33365-2016钢筋混凝土用钢筋焊接网试验方法
- GA/T 1393-2017信息安全技术主机安全加固系统安全技术要求
- GA 304-2012塑料管道阻火圈
- 螺旋藻片的10大销售话术(附4个联合用药方案)
- 老年肌肉衰减综合征(肌少症)课件
评论
0/150
提交评论