C语言基础编程题.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 基础 编程
- 资源描述:
-
5-1 求幂之和 (15分) 本题要求编写程序,计算sum=2^1 + 2^2 + 2^3 + \cdots + 2^nsum=21+22+23+⋯+2n。可以调用pow函数求幂。 输入格式: 输入在一行中给出正整数nn(\le≤10)。 输出格式: 按照格式“result = 计算结果”输出。 输入样例: 5 输出样例: result = 62 #include<stdio.h> #include<math.h> int main() { int i,n,sum=0; scanf("%d",&n); for(i=1;i<=n;i++) { sum=sum+pow(2,i); } printf("result = %d\n",sum); return 0; } 5-2 近似求PI (15分) 本题要求编写程序,根据下式求\piπ的近似值,直到最后一项小于给定精度eps。 \frac{\pi}{2}=1+\frac{1!}{3}+\frac{2!}{3\times 5} + \frac{3!}{3\times 5\times 7}+ \cdots +\frac{i!}{3\times 5\times \cdots \times (2\times i+1)}+ \cdots2π=1+31!+3×52!+3×5×73!+⋯+3×5×⋯×(2×i+1)i!+⋯ 输入格式: 输入在一行中给出精度eps,可以使用以下语句来读输入: scanf("%le", &eps); 输出格式: 在一行,按照以下格式输出\piπ的近似值(保留小数点后5位): PI = 近似值 输入样例: 1E-5 输出样例: PI = 3.14158 #include<stdio.h> #include<math.h> int main() { double a=1,b=3,i=1,j=3; double eps,m=1,sum=0; scanf("%le", &eps); while(m>eps) { m=a/b; sum=sum+m; i=i+1; j=j+2; a=a*i; b=b*j; } printf("PI = %.5lf\n",2+2*sum); return 0; } 5-3 判断素数 (15分) 输入一个正整数m,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。 输入格式: 在一行中输入一个正整数m。 输出格式: 对每一组输入,在一行中输出结果并换行。 输入样例: 17 输出样例: YES #include<stdio.h> #include<math.h> int main() { int i,j,n; scanf("%d",&n); j=sqrt(n); for(i=2;i<=j;i++) if(n%i==0) break; if(i>=j && n!=1) printf("YES\n"); else printf("NO\n"); return 0; } 5-4 出生年 (15分) 以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不一样的年份。”也就是说,直到2013年才达到“4个数字都不一样”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不一样的年份”这句话。 输入格式: 输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。 输出格式: 根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不一样”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。 输入样例1: 1988 4 输出样例1: 25 2013 输入样例2: 1 2 输出样例2: 0 0001 #include<stdio.h> #include<string.h> int main() { int y,n,a,b,c,d,f[10],l=0; scanf("%d %d",&y,&n); for(int i=y;i<10000;i++) { a=i/1000; b=i/100%10; c=i%100/10; d=i%10; memset(f,0,sizeof(f)); f[a]=1; if(f[b]!=1) f[b]=1; if(f[c]!=1) f[c]=1; if(f[d]!=1) f[d]=1; int sum=0; for(int j=0;j<10;j++) { sum=sum+f[j]; } if(sum==n&&l==0) { printf("%d %04d\n",i-y,i); l++; } } return 0; } 5-5 计算函数P(n,x) (10分) 输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 输入一个整数n (n>=0)和一个双精度浮点数x,输出函数p(n,x)的值(保留2位小数)。 1 (n=0) x (n=1) ((2n-1)p(n-1,x)-(n-1)*p(n-2,x))/n (n>1) 例:括号是说明 输入样例: 3 (repeat=3) 0 0.9 (n=0,x=0.9) 1 -9.8 (n=1,x=-9.8) 10 1.7 (n=10,x=1.7) 输出样例: p(0,0.90)=1.00 p(1,-9.80)=-9.80 p(10,1.70)=3.05 · 时间限制:400ms · 存限制:64MB · 代码长度限制:16kB · 判题程序:系统默认 · 王秀 · 单位:大学 窗体顶端 题目判定 解题程序 窗体底端 #include<stdio.h> int main() { double p(int n,double x); int repeat,ri,n; double x,result; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d %lf",&n,&x); result=p(n,x); printf("p(%d,%.2lf)=%.2lf\n",n,x,result); } return 0; } double p(int n,double x) { double t; if(n==0) t=1; else if(n==1) t=x; else t=((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n; return t; } 5-6 在数组中查找指定元素 (10分) 输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 输入一个正整数 n (1<n<=10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应元素的最小下标,否则输出"Not found"。 要求定义并调用函数search(list, n, x),它的功能是在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数形参 list 的类型是整型指针,形参n和x的类型是int,函数的类型是int。 输出格式语句:printf("index = %d\n", ); 输入输出示例:括号为说明,无需输入输出 输入样例: 2 (repeat=2) 3 (n=3) 1 2 -6 2 (x=2) 5 (n=5) 1 2 2 5 4 0 (x=0) 输出样例: index = 1 Not found · 时间限制:400ms · 存限制:64MB · 代码长度限制:16kB · 判题程序:系统默认 · 王秀 · 单位:大学 窗体顶端 题目判定 窗体底端 #include<stdio.h> int main() { int search(int list[], int n, int x); int n,i,a[10],res,x,repeat,index,ri; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&x); res=search(a,n,x); if(res!=-1) printf("index = %d\n",res); else printf("Not found\n"); } return 0; } int search(int list[], int n, int x) { int i,q=-1; for(i=0;i<n;i++) { if(list[i]==x) { return i; } } return q; } 5-7 使用函数的选择法排序 (10分) 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n (1<n<=10),再输入 n 个整数存入数组 a 中,用选择法将数组 a 中的元素按升序排列,最后输出排序后的数组元素。 要求定义并调用函数 sort(a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参n的类型是int,函数的类型是void。 输出格式:数据直接以空格分隔,最后的一个数据后面没有空格。 输入输出示例:括号为说明,无需输入输出 输入样例: 3 (repeat=3) 4 (n=4) 5 1 7 6 3 (n=3) 1 2 3 5 (n=5) 5 4 3 2 1 输出样例: After sorted: 1 5 6 7 After sorted: 1 2 3 After sorted: 1 2 3 4 5 · 时间限制:400ms · 存限制:64MB · 代码长度限制:16kB · 判题程序:系统默认 · 王秀 · 单位:大学 窗体顶端 题目判定 解题程序 窗体底端 #include <stdio.h> #define MAXN 10 void sort( int a[], int n ); int main() { int i,n,x,j; int a[MAXN]; scanf("%d",&x); for(j=0;j<x;j++) { scanf("%d", &n); for( i=0; i<n; i++ ) scanf("%d", &a[i]); sort(a, n); printf("After sorted: "); for(i=0;i<n-1;i++) printf("%d ", a[i]); printf("%d",a[i]); printf("\n"); } return 0; } void sort(int a[],int n) { int i,x,j,temp; for(i=0;i<n-1;i++) { x=i; for(j=i+1;j<n;j++) if(a[j]<a[x]) x=j; if(x!=i) { temp=a[x]; a[x]=a[i]; a[i]=temp; } } } 5-8 求组合数 (15分) 本题要求编写程序,根据公式C^{m}_{n} = \frac{n!}{m!(n-m)!}Cnm=m!(n−m)!n!算出从nn个不同元素中取出mm个元素(m\le nm≤n)的组合数。 建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。 输入格式: 输入在一行中给出两个正整数mm和nn(m\le nm≤n),以空格分隔。 输出格式: 按照格式“result = 组合数计算结果”输出。题目保证结果在double类型围。 输入样例: 2 7 输出样例: result = 21 · 时间限制:400ms · 存限制:64MB · 代码长度限制:16kB · 判题程序:系统默认 · 颜晖 · 单位:大学城市学院 窗体顶端 题目判定 窗体底端 #include<stdio.h> int main() { double fact(int n); int m,n; double sum; scanf("%d %d",&m,&n); if(n>=m) sum=fact(n)/(fact(m)*fact(n-m)); printf("result = %.0lf\n",sum); return 0; } double fact(int n) { int i; double s=1; for(i=1;i<=n;i++) { s=s*i; } return s; } 5-9 判断数字字符 (10分) 编写函数,判断指定的字符是否是数字字符,如果是函数返回1,否则函数返回0.要求在主调函数中输入该字符,调用函数并输出判断结果。 输入格式: 在一行中给出1个字符。 输出格式: 对于给定输入的字符,输出判断结果yes或no。 输入样例: 6 输出样例: yes 输入样例: H 输出样例: no · 时间限制:400ms · 存限制:64MB · 代码长度限制:16kB · 判题程序:系统默认 · 玫瑰 · 单位:大学 窗体顶端 题目判定 解题程序 窗体底端 #include<stdio.h> int main() { void panduan(char ch); char ch; scanf("%c",&ch); panduan(ch); return 0; } void panduan(char ch) { if(ch>='0' && ch<='9') printf("yes\n"); else printf("no\n"); } 5-10 函数编程-分段函数 (15分) 编写函数,计算下面分段函数的值。 输入格式: 输入一个实数x的值 输出格式: 输出y的结果值 输入样例: 0 输出样例: y=-1.000000 输入样例: 3.5 输出样例: y=-8.619337 · 时间限制:400ms · 存限制:64MB · 代码长度限制:16kB · 判题程序:系统默认 · 玫瑰 · 单位:大学 窗体顶端 题目判定 解题程序 窗体底端 #include<stdio.h> #include<math.h> int main() { double x,y; scanf("%lf",&x); if(x<=-2) y=-exp(2*x+1)+3; else if(-2<x && x<=3) y=2*x-1; else if(x>3) y=2*log10(3*x+5)-11; printf("y=%lf\n",y); return 0; } 5-11 有理数比较 (10分) 本题要求编写程序,比较两个有理数的大小。 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形围的正整数。 输出格式: 在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系。其中“>>”表示“大于”,“<<”表示“小于”,“==”表示“等于”。 输入样例1: 1/2 3/4 输出样例1: 1/2 < 3/4 输入样例2: 6/8 3/4 输出样例2: 6/8 = 3/4 · 时间限制:400ms · 存限制:64MB · 代码长度限制:16kB · 判题程序:系统默认 · 乔林 · 单位:清华大学 窗体顶端 题目判定 窗体底端 #include<stdio.h> #include<math.h> int main() { double a1,a2,b1,b2; scanf("%lf/%lf %lf/%lf",&a1,&b1,&a2,&b2); if(a1/b1>a2/b2) printf("%.0lf/%.0lf > %.0lf/%.0lf\n",a1,b1,a2,b2); else if(a1/b1==a2/b2) printf("%.0lf/%.0lf = %.0lf/%.0lf\n",a1,b1,a2,b2); else if(a1/b1<a2/b2) printf("%.0lf/%.0lf < %.0lf/%.0lf\n",a1,b1,a2,b2); return 0; } 5-12 通讯录的录入与显示 (10分) 通讯录中的一条记录包含下述基本信息:朋友的、出生日期、性别、固定、移动。 本题要求编写程序,录入NN条记录,并且根据要求显示任意某条记录。 输入格式: 输入在第一行给出正整数NN(\le≤10);随后NN行,每行按照格式 生日 性别 固话 手机给出一条记录。其中是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话和手机均为不超过15位的连续数字,前面有可能出现+。 在通讯录记录输入完成后,最后一行给出正整数KK,并且随后给出KK个整数,表示要查询的记录编号(从0到N-1N−1顺序编号)。数字间以空格分隔。 输出格式: 对每一条要查询的记录编号,在一行中按照 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found。 输入样例: 3 Chris 1984/03/10 F + LaoLao 1967/11/30 F 0 +33 QiaoLin 1980/01/01 M 84172333 10086 2 1 7 输出样例: LaoLao 0 +33 F 1967/11/30 Not Found #include<stdio.h> #include<stdlib.h> struct list { char name[11]; char num[17]; char phone[17]; char sex[2]; char birthday[11]; }; struct list p[100]; int main() { int i=0;int j=0,N,K; scanf("%d",&N); for(i=0;i<N;i++) { scanf("%s %s %c %s %s",&p[i].name,&p[i].birthday,&p[i].sex,&p[i].num,&p[i].phone); } scanf ("%d", &K); int number; for (i=0;i<K;i++){ scanf ("%d",&number); if (number < N && number>=0) { printf("%s %s %s %s %s\n",p[number].name,p[number].num,p[number].phone,p[number].sex,p[number].birthday); } else { printf ("Not Found\n"); } } return 0; } 5-13 查找单价最高和最低的书籍 (10分) 编写程序,从键盘输入 n (n<10)本书的名称和定价并存入结构数组中,查找并输出其中定价最高和最低的书的名称和定价。 输出格式语句: printf("highest price: %.1f, %s\n", ); printf("lowest price: %.1f, %s\n",); 输入输出示例:括号为说明,无需输入输出 输入样例: 3 (n=3) Programming in C 21.5 Programming in VB 18.5 Programming in Delphi 25 输出样例: highest price: 25.0, Programming in Delphi lowest price: 18.5, Programming in VB #include<stdio.h> struct book { char a[100]; double b; }; int main() { int i,j,n; char k; struct book s[100],temp; scanf("%d", &n); for(i=0;i<n;i++) { scanf("%c",&k); gets(s[i].a); scanf("%lf",&s[i].b); } for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(s[j].b>s[i].b) {temp = s[i];s[i] = s[j];s[j] = temp;} printf("highest price: %0.1f, %s\n",s[0].b,s[0].a); printf("lowest price: %0.1f, %s\n",s[n-1].b,s[n-1].a); return 0; } 17 / 17展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




C语言基础编程题.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4497981.html