




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、请编写程序求解下式的值(n、k的值从键盘转入)2、张教授最近正在研究一个项目,其间涉及到十进制与十六进制之间的转换,然而,手工 将大量的十进制转换成十六进制是十分困难的。请编写程序,将给定的非负十进制数转化成相应的十六进制数并输出(用A、B、C、D、E、F分别表示十六进制的 10、11、12、13、 14、 15)。3、输入一个字母打印图示图形,该图形中间一行由输入字母组成,其相邻的上下两行由它前面的字母组成,按此规律,直到字母A出现在第一行和最末行为止。如下图:ABBCCCDDDDCCCBBA4、试编程从N位数字串中删去 M个数使剩下的数字串所表示的数值最小。5、 孪生数是指两个相差为
2、2的素数,如3和5,5和7,11和13。请编写程序输出 15对 孪生数。6、 编写程序找出文件中最长和最短的正文行并统计文件中的行数(假定最长行不超过80 个字符)。7、 数列总是有一些奇妙的性质。现有一数列A,它是以递增顺序排列的,并且该数列中所有的数的质因子只有可能是2、3和5。请编写程序输出这个数列中的前N个数字。8、试编写程序实现两个大的整数的乘法运算。参考答案:1、请编写程序求解下式的值(n、k的值从键盘转入)#include vstdio.h>#include <math.h> void main(void)int n,k,x;double sum=0;print
3、f(”请输入n和k的值:”);scanf("%d%d",&n,&k);for(x=1;x<=n;x+)sum+=pow(x,k);/ 注意计算次方的函数printf(” 所求结果为:fn",sum);11、12、/2 、张教授最近正在研究一个项目,其间涉及到十进制与十六进制之间的转换,然而,手 工将大量的十进制转换成十六进制是十分困难的。请编写程序,将给定的非负十进制数转 化成相应的十六进制数并输出(用A、B CD、E、F分别表示十六进制的10、13、 14、 15)。#include <stdio.h>void main(voi
4、d)int data10,beichushu,yushu,shang;char data1610,p=0;/ 数组 data16 用于存放十六进制各位上的数doprintf("请输入一个非负十进制数:”);scanf("%d",&data10);while(data10<0);beichushu=data10;/ 将初始值作为被除数/ 以下循环用于完成转换doshang=beichushu/16; 求商yushu=beichushu%16; 求余数if(yushu<10)/ 小于 1 0则转换得到对应数字字符 data16p+=yushu+
5、39;0'else/大于等于10则转换得到对应字母data16p+=yushu-10+'A' beichushu=shang;将商作为下次的被除数继续除while(shang!=0);printf(”十进制数 %d所对应的十六进制数为:”,data10);for(p-;p>=0;p-)printf("%c",data16p); printf("n");/3 、输入一个字母打印图示图形,该图形中间一行由输入字母组成,其相邻的上下两行由 它前面的字母组成,按此规律,直到字母A出现在第一行和最末行为止。如下图:#include &
6、lt;stdio.h>void main(void)char ch,row,col;doprintf("请输入中间行所对应的字母(大写):");scanf("%c",&ch);while(ch<'A')|(ch>'Z');/ 输出图形的上半部分 for(row=1;row<=ch-'A'+1;row+)/ 控制行数for(col=1;colv=ch-'A'-row+1;col+)输出相应个数空格以控制位置 printf(" ");for(c
7、ol=1;colv=row;col+) 输出相应个数字母 printf("%c",row+'A'-1);printf("n");/ 换行/ 输出图形的下半部分for(row=1;rowv=ch-'A'row+)/ 控制行数for(col=1;colv=row;col+)输出相应个数空格以控制位置 printf(" ");for(col=1;colv=ch-'A'-row+1;col+)/输出相应个数字母 printf("%c",ch-row);printf("
8、;n");/ 换行4、试编程从N位数字串中删去 M个数使剩下的数字串所表示的数值最小。#include "stdio.h"#include "string.h"#define N 80void main()char strN+1;int i,j,n,m,yn;/yn 用于判断数字串有是否有逆序对,1有, 0无printf(" 请输入原始数字串: ");scanf("% s",str);printf(" 原始数字串为: %sn",str);n=strlen(str);doprintf(&
9、quot; 请输入要删除的数的位数( 0-%d ): ",n);scanf("% d",&m);while(m<0)|(m>n);yn=1;while(m>0)&&(yn)/ 有逆序对时删除较大者yn=0;for(i=0;(stri+1!='0')&&(yn=0);i+)if(stri>stri+1)/ 有逆序对 for(j=i;strj+1!='0'j+) strj=strj+1;strj='0'm-;yn=1;if(m>0)strstrlen(
10、str)-m='0'printf("% sn",str);15 对/5 、孪生数是指两个相差为 2 的素数,如 3 和 5,5和 7,11和 13。请编写程序输出 孪生数。/ 注意: 1既不是素数,也不是合数, 2 是最小的素数,也是唯一的偶素数#include <stdio.h>/ 判断 x 是否为素数,若是则返回 1,否则返回 0int judge(int x)int i,yn;yn=1;/ 为 1 表示是素数for(i=2;(i<x)&&(yn=1);i+)if(x%i=0)yn=0;return yn;void ma
11、in(void)unsigned i=2,count=1,d1,d2; while(count<=15) d1=i; d2=d1+2; i+;if(judge(d1)&&judge(d2) printf("No.%2d:%10d%10dn",count+,d1,d2);80/6 、编写程序找出文件中最长和最短的正文行并统计文件中的行数(假定最长行不超过 个字符)。#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 80void main(
12、void)unsigned count=1,maxno,minno; char maxN+1,minN+1,curN+1,fnameN+1;FILE *fp; printf(" 请输入文件名: ");/ 输入文件名 scanf("%s",fname);fp=fopen(fname,"r"); if(fp=NULL)printf(”文件无法打开!n");else while(!feof(fp)/ 文件没结束时反复读取并判断 fgets(cur,N,fp);/ 读取一行if(count=1)/ 若为第一行则当其为目前的最长及最短
13、行 maxno=1;minno=1; strcpy(max,cur);strcpy(min,cur);else/ 若不是第一行if(strlen(max)<strlen(cur)/ 新的最长行maxno=count;strcpy(max,cur);if(strlen(min)>strlen(cur)/ 新的最短行minno=count;strcpy(min,cur);count+;/ 行号增 1;fclose(fp);printf(”文件共有 %d 行 n",count-1);printf(”最长行为第 %d行,其内容为: sn",maxno,max); pri
14、ntf("最短行为第 %d行,其内容为: %sn",minno,min);7、数列总是有一些奇妙的性质。现有一数列A,它是以递增顺序排列的,并且该数列中所有的数的质因子只有可能是2、3和&请编写程序输出这个数列中的前N个数字。#include <stdio.h>/此题的关键是如何分解出一个数x所有的质因子/下面函数用于判断 x的质因子是否仅为 2、3或5,是则返回1,否则返回0 int judge(int x)int i=2,yn;yn=1;while(x>=i)&&(yn)if(x%i=0)如果能整除if(!(i=2)|(i=3)
15、|(i=5)/ 质因子不是 2、 3或5 yn=0;while(x%i=0)&&(yn)x/=i;i+;return yn;void main(void)int n,i,count=0;doprintf("请输入要求的数列元素的个数(>=1):");scanf("%d",&n);while(n<1);for(i=2;count<n;i+)if(judge(i) printf("No.%5d: %10dn",+count,i);printf("n");/8 、试编写程序实现两
16、个大的整数的乘法运算。#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 100/ 逆置,因为计算机中数据的高低位跟现实中的习惯刚好相反 void revert(char t)int i,len;char temp;len=strlen(t);for(i=1;i<=len/2;i+)temp=ti-1;ti-1=tlen-i; tlen-i=temp;/ 以字符串形式输入被乘数和乘数void input(char a,char b)doprintf("n 请输入要
17、进行乘法运算的两个整数(单个数不要超 scanf("%s%s",a,b);while(strlen(a)>N)|(strlen(b)>N);/ 对两个数实现乘法运算char * multiply(char a,char b)char *p;unsigned int i,j,x,y,r1,r2,r3;p=(char *)malloc(1+strlen(a)+strlen(b);/ 对存放乘积的空间进行初始化pstrlen(a)+strlen(b)='0' for(i=0;i<strlen(p);i+) pi='0'/ 进行乘法
18、运算for(i=0;i<strlen(b);i+)y=bi-'0'for(j=0;j<strlen(a);j+)x=aj-'0' r1=x*y+(pj+i-'0'); r2=r1%10;r3=r1/10; pj+i=r2+'0' pj+i+1=pj+i+1-'0'+r3+'0'/ 将前导 0 取消 for(i=strlen(p);(i>=0)&&(pi-1='0');i-) pi-1='0'return(p);void main()c
19、har aN,bN,c2*N;input(a,b);/ 逆置,以方便运算 revert(a); revert(b);strcpy(c,multiply(a,b);/ 逆置,以便于跟现实中的高低位顺序一致 revert(a);revert(b); revert(c);printf("%s*%s=%sn",a,b,c); system("pause");/一种改进算法/ 以下程序实现两个比较大的正整数相乘,可以得出准确/ 的结果:#include <stdio.h>#include <stdlib.h>#include <str
20、ing.h>#define WEISHU 4 / 每组包含的位数#define MAXLEN 10000 / 单个数字最多位数/ 逆置,因为计算机中数据的高低位跟现实中的习惯刚好相反void revert (char *data)unsigned short i,len;char temp;len=strlen (data) ;for (i=1;i<=len/2;i+)temp=datai-1;datai-1=datalen-i;datalen-i=temp;/ 将字符串形式的数据分组并转换成 unsigned short 形式/ 的数据,每组长度为 weishu, 0 号元素存放
21、组数 (系数个数 ) void stoi (char *str,unsigned short *data)unsigned short s=0,i,j=1,quan=1;for(i=0;stri!='0'i+)s=s+quan*(stri-'0');quan*=10;if(i+1)%WEISHU=0)data j+ =s; s=0; quan=1; if(i%WEISHU!=0) data j+ =s;data 0 =j-1;/ 从键盘输入数据并暂存入一个字符数组void input (char *str,unsigned short *data)printf(
22、" 请输入一个正整数: n") ;scanf("%s",str);revert(str) ;/ 逆置stoi(str,data) ;/ 分组并转换/ 对两个数实现乘法运算unsigned short * multiply (unsigned short *a,unsigned short *b)unsigned short *p,i,j,base=1;unsigned int temp;for(i=1;i<=WEISHU;i+) / 计算相应的基base*=10;/ 给乘积的存放准备空间p=(unsigned short *)malloc(a0+b0+1)*sizeof(unsigned short);if(p=NULL)return NULL;/ 内存分配不成功,无法进行运算elsep0=a0+b0;/ 对存放乘积的空间进行初始化for(i=1;i<=p0;i+)pi=0;/ 进行乘法运算for(i=1;i<=b0;i+)for(j=1;j<=a0;j+)temp=bi*aj+pj+i-1;pj+i-1=temp%base;pj+i=pj+i+temp/base;return p;/ 输出void output (unsigned short
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兴安职业技术学院《代数方法选讲》2023-2024学年第二学期期末试卷
- 佳木斯大学《晋唐书法专题》2023-2024学年第二学期期末试卷
- 浙江省杭州市临安区锦城第二初级中学2025届初三下学期开学调研试题英语试题含答案
- 宁夏建设职业技术学院《团体心理活动设计》2023-2024学年第二学期期末试卷
- 吉林省海门市重点名校2025届初三毕业生第一次教学质量监测英语试题含答案
- 硅冶炼企业的安全生产与事故防范考核试卷
- 咖啡馆行业知识产权战略制定考核试卷
- 工作生活两不误考核试卷
- 煤气化技术的能源供需关系研究考核试卷
- 摩托车雨衣与防雨装备使用考核试卷
- 公司金融课件(完整版)
- 二次发酵法制作面包论文
- 堤防工程设计规范
- 高处作业审批表
- 接地网状态评估课件
- 英语口译基础教程--Unit-7-10
- 国家开放大学电大本科《儿童心理学》网络课形考任务话题讨论答案(第二套)
- 《淮阴师范学院二级学院经费核拨管理办法(试行)》
- 诺基亚LTE FDD设备技术说明(2)
- 清筛车挖掘输送装置
- 实名核验(法人)业务办理表
评论
0/150
提交评论