c语言第五次作业

合集下载

第五次C语言作业

第五次C语言作业

第五次C语言作业60页第一题:#include<stdio.h>int main(void){int i,j,n,x,a[10];printf("输入的数据个数n:");scanf("%d",&n);printf("输入%d个整数:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);printf("输入要插入的整数:");scanf("%d",&x);for(i=0;i<n;i++){if(x>a[i]) continue;j=n-1;while(j>=i){a[j+1]=a[j];j--;}a[i]=x;break;}if(i ==n)a[n]=x;for(i=0;i<n+1;i++)printf("%d",a[i]);putchar('\n');return 0;}第五题:#include <stdio.h>void main(){int a[10],n,i,p,q,max,min;int temp=0;printf("Input n:");scanf("%d",&n);printf("Input %d integers:",n); for(i=0;i<n;i++)scanf("%d",&a[i]);min=0;max=1;for(p=1;p<n;p++){if(a[min]>a[p])min=p;}temp=a[0];a[0]=a[min];a[min]=temp;for(q=2;q<n;q++){if(a[max]<a[q])max=q;}temp=a[n-1];a[n-1]=a[max];a[max]=temp;printf("After swapped:");for(i=0;i<n;i++)printf("%d",a[i]);printf("\n");}第六题:#include <stdio.h>void main(){int a[10],N,i,j ,med,p,temp; printf("请输入数据的个数N:"); scanf("%d",&N);printf("输入%d个整数:",N);for( i = 0 ; i < N ; i++)scanf("%d",&a[i]);printf("原始数据为:\n");for( i = 0 ; i < N ; i++)printf("%d ",a[i]);for(i=0;i<N-1;i++){ p=i;for(j=i+1;j<N;j++)if(a[j]>a[p]) p=j;if(p!=i){med=a[p];a[p]=a[i];a[i]=med;}}printf("\n排序后的数据为:\n"); for(i=0; i<N; i++)printf("%d ",a[i]);printf("\n");}69页第四题:#include<stdio.h>void main(){int i,j,n,a[5][5],m=1;printf("Input n:");scanf("%d",&n);printf("Input array:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)scanf("%d",&a[i][j]);}for(i=0;i<n;i++){for(j=0;j<i;j++){if(a[i][j]!=0){printf("NO\n");m=0;break;}}}if(m)printf("YES\n");}70页第六题:#include <stdio.h>int main(void){int flag, i, j, k, row, col, n;int a[6][6];printf("Input n:");scanf("%d",&n);printf("Input array:\n");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);flag=0;for(i = 0; i < n; i++){col=0;for(j = 0; j < n; j++)if(a[i][j]>a[i][col])col=j;for(k=0;k<n;k++){if(a[k][col]<a[i][col])break;}if(k==n){flag=1;row=i;break;}}if(flag != 0)printf("a[%d][%d] = %d\n", row, col,a[row][col]);elseprintf("NO\n");return 0;}75页第四题:#include<stdio.h>void main(){char a[80];int i,j;printf("Input a string:");for(i=0;i<80;i++){scanf("%c",&a[i]);if(a[i]=='\n')break;}j=i;for(i=0;i<j;i++){if(a[i]>='A'&&a[i]<='Z')a[i]=155-a[i];}printf("After relaced:");for(i=0;i<j;i++)printf("%c",a[i]);printf("\n");}。

C语言程序设计第五次作业——循环结构(1)

C语言程序设计第五次作业——循环结构(1)

C语⾔程序设计第五次作业——循环结构(1)(⼀)改错题输出华⽒摄⽒温度转换表:输⼊两个整数lower和upper,输出⼀张华⽒摄⽒温度转换表,华⽒温度的取值范围是{lower,upper},每次增加2℉。

计算公式如下:c = 5×(f-32)/9其中,c表⽰摄⽒温度,f表⽰华⽒温度。

输⼊输出样例1: Enter lower:32 Enter upper:35 fahr celsius 32 0.0 34 1.1输⼊输出样例2: Enter lower:40 Enter upper:30 fahr celsius源程序(有错误的程序)#include <stdio.h>int main(void){int fahr , lower, upper; /* fahr表⽰华⽒度 */double celsius; /* celsius表⽰摄⽒度 */printf("Enter lower:");scanf("%d",&lower);printf("Enter upper:");scanf("%d",&upper);printf("fahr celsius\n"); /* 显⽰表头 *//* 温度转换 */for (fahr = lower , fahr <= upper, fahr ++) ;celsius = 5 /9 * (fahr - 32.0);printf("%3.0f %6.1f\n", fahr, celsius);return 0;}对源程序进⾏编译,结果如下:错误信息1:错误原因:for语句后⾯加了分号。

改正⽅法:将分号去掉。

错误信息2:错误原因:for语句下没有加“{}“改正⽅法:在for语句下加上“{}”错误信息3:错误原因:发现for语句内语句⽤逗号隔开了。

C语言 课后作业题

C语言 课后作业题

C语言作业题【输出形式】用户在下一行显示输出结果【样例输入】3.47【样例输出】3【样例说明】与输入值3.47接近的整数为3和4,3.47比3.5小,舍掉小数部分,结果为3。

【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:c0104.c。

当前编程题:第一次作业--- 计算空格换行个数5. 【问题描述】编写一程序,分别计算所输入的字符串中空格,换行符的个数。

【输入形式】输入可以是键盘上的任意字符。

【输出形式】分别输出空格,换行符的个数,输出的结果一行显示,数字之间以空格格开。

【输入样例】bb ss pp=fz【输出样例】2 1【样例说明】字符b与s之间有一个空格,s与p之间有一个空格,p与f之间有一个换行。

【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:c0105.c。

当前编程题:第一次作业--- 整数组合(选做题)6. 【问题描述】假设unsigned short类型占16位,x、y、z都是short类型。

编写一程序,从键盘输入x,y 的值(十进制形式),然后将x的高8位作为z的高8位,y的高8位作为z的低8位,最后输出z的值(十进制形式)。

【输入形式】以十进制形式输入x和y的值,以空格隔开。

【输出形式】以十进制形式在新的一行上输出z值。

【输入样例】840 2177【输出样例】776【样例说明】840的二进制形式为:0000 0011 0100 10002177的二进制形式为:0000 1000 1000 0001将840的高8位作为结果的高8位,2177的高8位作为结果的低8位,所以结果为:0000 0011 0000 1000,即十进制形式为:776【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:c0106.c。

当前编程题:第二次作业--- 数字排序1. 【问题描述】编写一个程序,将输入的三个数从小到大排列出来。

【输入形式】用户在第一行输入三个数字,每个数字用空格分开。

C语言第五六次作业

C语言第五六次作业
C语言作业解析
——第四弹
。。原来真正变态的是这两作业哇~ 原本是做完第五次作业等大家数分期中考完以后给大家,结果 直接出了第六次。就顺便做了。买一送一还包邮哦亲~ 虽然这两次作业比较难。理解起来困难无比。。不过考试的时 候不会有这么变态的题目啦~放心
当前编程题:11级第五次作业---凸多边形面积1. 【问题描述】给出平面上一组顶点的坐标,计算出它们所围成的凸多 边形的面积。 【输入形式】从标准输入读取顶点坐标。格式为:第一行是点的个数 N(3≤N≤15),后面紧接着N行,每行两个数字 (由空格隔开),分 别表示该点的X、Y坐标(0≤X,Y≤32767)。所有点的坐标互不相同, 且按顺时针次序给出。 输入数据确保该多边形是一个凸多边形。 【输出形式】向标准输出打印一个浮点数,是该多边形的面积。该浮 点数保留两位小数。 【输入样例】 4 3 3 3 0 1 0 1 2 【输出样例】 5.00 【样例说明】输入数据表示了如图所示的四边形。其面积为5.00。 提示:求三角形面积可用海伦公式,求平方根可用<math.h>头文件中 定义的sqrt函数。 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为: points.c。
当前编程题:11级第五次作业---求两组整数的异或集 3.【问题描述】从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素 不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序 输出(即两组整数集“异或”)。 【输入形式】首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上 输入第二组整数,以一个空格分隔,行末有回车换行。 【输出形式】按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现 的整数,以一个空格分隔各个整数)。 【样例输入】 5 1 4 32 8 7 9 -6 5 2 87 10 1 【样例输出】 87 32 10 9 8 7 4 2 -6 【样例说明】第一组整数为5 1 4 32 8 7 9 -6,第二组整数分别为 5 2 87 10 1。将第一组和第二组整数合并(去掉在两组整数中都出现的整数5 和1),并从大到小顺序排序后结果为87 32 10 9 8 7 4 2 -6。 【评分标准】该题要求输出两组整数的异或集,共有5个测试点,提交程序文件名 为xor.c。

c程序设计作业(5)[修改版]

c程序设计作业(5)[修改版]

第一篇:c程序设计作业(5)1、分析下面程序:# include int main() { char c1,c2;c1=97;c2=98;printf("c1=%c,c2=%c\n"c1,c2);printf("c1=%d,c2=%d\n",c1,c2);return 0; } (1)运行时会输出什么信息?为什么?(2)如果将程序第4,5行改为c1=197; c2=198; 运行时会输出什么信息?为什么?(3)如果将程序第3行改为int c1,c2; 运行时会输出什么信息?为什么?答:(1)程序运行不了,因为程序存在错误。

正确的程序为:#include int main() {char c1,c2;c1=97;c2=98;printf("c1=%c,c2=%c\n",c1,c2);printf("c1=%d,c2=%d\n",c1,c2);return 0; }(2)如果将程序第4,5行改为c1=197; c2=198;运行时会输出:(3)如果将程序第3行改为int c1,c2; 运行时会输出:因为int表示整型,%c是输出字符,a的ASCLL代码是97,b的是98,所以输出c1=a,c2=b.%d是表示输出十进制整型,所以输出c1=97,c2=982、用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。

问在键盘上如何输入?#include int main() {int a,b;float x,y;char c1,c2;scanf("a=%db=%d",&a,&b);scanf("%f%e",&a,&y);scanf("%c%c",&c1,&c2);return 0; } 答:输入如图:输出如图:第二篇:C程序设计课程作业(4分)C语言是解释性语言纠错得分:0知识点:C语言概述收起解析答案错误解析C语言程序设计/C语言概述(4分)C语言程序中,一个文件中的函数可以引用另一个文件中的函数和变量纠错知识点:文件收起解析答案正确解析C语言程序设计/文件(4分)下面是对s的初始化,其中不正确的是( ) A. char s[5]={'abc'} B. char s[5]={'a','b','c'} C. char s[5]=''D. char s[5]='abcde'纠错得分:0知识点:数组收起解析答案D解析C语言程序设计/数组/字符数组初始化(4分)函数ftell的作用是( ) A. 取得当前文件指针的位置,该位置为相对于文件开头的位移量表示B. 取得当前文件指针的位置,该位置为相对于文件末尾的位移量表示C. 出错时返回值为0D. 以上叙述都不正确纠错得分:0知识点:文件收起解析答案A解析C语言程序设计/文件/文件的定位(4分)表达式a A. &,纠错知识点:位运算收起解析答案D解析C语言程序设计/位运算/位运算符优先级(4分)若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( ) A. scanf('%d%lx,%le',&x,&y,&z) B. scanf('%2d*%d%lf',&x,&y,&z) C. scanf('%x%*d%o',&x,&y)D. scanf('%x%o%6.2f',&x,&y,&z)纠错得分:0知识点:顺序程序设计收起解析答案D解析C语言程序设计/顺序程序设计/整型和实型数据的格式输入(4分)写出下面程序的输出结果( )main(){intx;x=-3+4*5-6;printf('%d',x);x=3+4%5-6;printf('%d',x);x=-3*4%6/5;printf('%d',x);x=(7+6)%5/2;printf('%d',x);}A. 11 1 0 1B. 11 -3 2 1C. 12 -3 2 1D. 11 1 2 1纠错得分:0知识点:顺序程序设计收起解析答案A解析C语言程序设计/顺序程序设计/整型变量的输出格式综合(4分)C语言中while和do while循环的主要区别是( ) A. do-while的循环至少无条件执行一次B. while循环控制条件比do-while的循环控制条件严格C. do-while允许从外部转入到循环体内D. do-while的循环体不能是复合语句纠错得分:0知识点:循环程序设计收起解析答案A解析C语言程序设计/循环程序设计/while语句与do-while语句(4分)C语言规定,函数返回值的类型是由( )所决定。

c语言作业

c语言作业

1、用下面的scanf函数输入数据,使a=10, b=20, c1='A', c2='a', x=1.5, y=-3.75, z=67.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f,%f", &a,&b,&c1,&c2,&x,&y,&z);2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf函数输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字第三次作业1、有3个整数a,b,c,由键盘输入,输出其中最大的数。

2、有一个函数:x x<1y= 2x-1 1<=x<103x-11 x>=10写一段程序,输入x,输出y的值。

3、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。

90分以上为A,80-89分为B,70-79为C,60-69为D,60分以下为E。

4、给一个不多于5位的正整数,输出这个数是几位数。

第四次作业1、给一个不多于5位的正整数,要求:a.求出它是几位数;+b.分别输出每一位数字;c.按逆序输出各位数字,例如:原数为321,应输出123。

2、教材P112页第5.8题(if语句解法创建一个独立文件,switch语句解法创建一个独立文件第五次作业1、输入两个正整数m和n,求其最大公约数和最小公倍数。

(经典题)2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数,并输出。

3、求s=a+aa+aaa+aaaa+....+(a...a)之值,其中a是一个数字,n表示a的位数。

1、输入两个字符串,使用指针p将两个字符串按次序复制到数组c中。

例:输入“zhe"和"jiang",将"zhejiang"保存在数组c中。

大连理工c语言第五次上机作业参考答案

大连理工c语言第五次上机作业参考答案

第五次上机作业:(请用指针实现)1.数据移位有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m 个数变成最前面的m个数,如图所示。

编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数和输出调整后的n个数。

SAMPLE OUTPUTnInput n(n<=10):10Input 10 integers:Output the original:Output the shifted:#include <>#define N 10void shift(int a[ ],int n,int m);void main( ){ int i,n,m;int a[N];printf("Input n(n<=10):");scanf("%d",&n);printf("Input %d integers:\n",n);for(i=0;i<n;i++)scanf("%d",a+i);printf("Output the original:\n");for(i=0;i<n;i++)printf("%d ",*(a+i));printf("\n");printf("Input m(m<=%d):",n);scanf("%d",&m);shift(a,n,m);printf("Output the shifted:\n");for(i=0;i<n;i++)printf("%d ",*(a+i));printf("\n");}void shift(int a[ ],int n,int m){ int i,j,t;for(i=0;i<m;i++){ t=a[n-1];for(j=n-2;j>=0;j--)a[j+1]=a[j];a[0]=t;}}2.字符串排序在主函数中输入10个不等长的字符串放入二维字符数组中,编写函数sort()利用指针数组对其排序,在主函数中输出排好序的字符串。

C语言上机作业试题5套含答案

C语言上机作业试题5套含答案

第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。

程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。

例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。

例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。

(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。

)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。

方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。

例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。

⏹A说:不是我。

⏹B说:是C。

⏹C说:是D。

⏹D说:他乱说。

已知三个人说的是实话,一个人说的是谎话。

此刻要依照这些信息,找出做了好事的人。

C语言第五章习题及答案

C语言第五章习题及答案

第五章习题答案一、选择题1) 有以下程序#include <stdio.h>main(){ int n=2,k=0;while(k++&&n++>2);printf("%d %d\n",k,n);}程序运行后的输出结果是A)0 2 B)1 3 C)5 7 D)1 22)有以下程序:main(){ int k=5;while(--k) printf("%d",k-=3);printf("\n");}执行后的输出结果是()。

A)1 B)2 C)4 D)死循环3)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”y=%d\n”,y);}程序执行后的输出结果是A)y=0 B)y= -1 C)y=1 D)while构成无限循环4) 若变量已正确定义,有以下程序段i=0;do printf("%d,",i);while(i++);printf("%d\n",i)其输出结果是A)0,0 B)0,1 C)1,1 D)程序进入无限循环5)有以下程序:main(){ int i;for(i=1;i<=40;i++){ if(i++%5==0)if(++i%8==0) printf("%d",i); }printf("\n");}执行后的输出结果是()。

A)5 B)24 C)32 D)406) 有以下程序#includes <stdio.h>main(){ int a=1,b=2;for(;a<8;a++) {b+=a; a+=2;}printf ("%d,%d\n",a,b);}程序运行后的输出结果是(A)9,18 (B)8,11 (C)7,11 (D)10,147) 有以下程序#include<stdio.h>main(){int y=9;for( ; y>0;y--)if(y%3= =0) printf("%d",--y);}程序的运行结果是A)741 B)963 C)852 D)8754218) 一下程序段中的变量已正确定义for(i=0;i<4;i++,j++)for(k=1;k<3;k++); printf("*");程序段的输出结果是A)******** B)**** C)** D)*9) 有以下程序#iinclude <stdio.h>main(){ int i,j;for(i=3; i>=1; i--){ for (j=1;j<=2;j++) printf(“%d”,i+j);printf(“\n”);}}程序的运行结果是()A) 2 3 4 B) 4 3 2 C) 2 3 D) 4 53 4 5 5 4 3 3 4 3 44 5 2 3 答案:D 10)有以下程序main(){int i,j;for(i=1;i<4;i++){for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j);printf(“\n”);}}程序运行后的输出结果是A) 1*1=1 1*2=2 1*3=3 B) 1*1=1 1*2=2 1*3=32*1=2 2*2=4 2*2=4 2*3=63*1=3 3*3=9C) 1*1=1 D) 1*1=11*2=2 2*2=4 2*1=2 2*2=41*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=911) 有以下程序#include<stdio.h>main(){int i,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++) m=m%j;printf("%d\n",m);}程序的运行结果是A)0 B)1 C)2 D)312) 有以下程序#include <stdio.h>main(){ int i=5;do{ if (i%3= =1)if (i%5= =2){printf(“*%d”,i); break; }i++;}while(i!=0);printf(“\n”);}程序的运行结果是A)*7 B)*3*5 C) *5 D)*2*6 答案:A13) 有以下程序#include <stdio.h>main(){ int c=0,k;for(k=1;k<3;k++)switch(k){ default:c+=k;case 2:c++;break;case 4:c+=2;break;}printf("%d\n",c);}程序运行后的输出结果是A)3 B)5 C)7 D)914) 设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A)n=0;while((ch=getchar())!='\n')n++;B)n=0;while(getchar()!='\n')n++;C)for(n=0;getchar()!='\n';n++);D)n=0;for(ch=getchar();ch!='\n';n++);15)有以下程序#includemain(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11 B)7,1 C)7,11 D)6,116) 要求通过while循环不断读入字符,当读入字母N时结束循环。

《C语言学习与应用》课后习题及答案05

《C语言学习与应用》课后习题及答案05

学习任务五 参考答案 问题5-1:输入正方形的边长,求面积的函数解法,请将代码补充完整。

#include "stdio.h"double fun(double);void main(){ double a,area;printf("请输入正方形的边长:");scanf("%lf",&a);area=fun(a);printf("area=%lf\n",area);}double fun(double x){double s;s=x*x;return s;}问题5-2:模仿应用举例5-2,编写一个函数isprime(int a)判断a是否为素数,并在主函数中输出100以内的非素数之和。

#include "stdio.h"#include "math.h" //包含数学函数的头文件int isprime(int a){int i;for(i=2;i<=sqrt(a);i++)if(a%i==0)return 0;return 1;}void main(){int i,s=0;for(i=1;i<=100;i++)if(isprime(i)==0)s=s+i;printf("s=%d\n",s);getchar();}程序执行结果:s=3989编程训练5-1-1 输入两个整数,输出较大数,只由main函数实现#include "stdio.h"void main(){int x,y,max;printf("请输入两个整数:\n");scanf("%d%d",&x,&y);if(x>y)max=x;elsemax=y;printf("较大值是:%d\n",max);}编程训练5-1-2 建一个无参数的函数,将主函数中的代码全部转移到自定义函数中,#include "stdio.h"void fmax() //自定义函数{ // 将原来主函数中的内容全部搬来.int x,y,max;while(1){printf("请输入两个整数:\n");scanf("%d%d",&x,&y);if(x>y)max=x;elsemax=y;printf("较大值是:%d\n",max);}}void main(){fmax(); //主函数中仅一条函数调用语句}编程训练5-1-3 编写带参数的函数。

新编C语言程序设计教程练习五参考答案

新编C语言程序设计教程练习五参考答案

练习55.1 计算循环体的执行次数并上机验证。

1. int i = 0;2. short i = 1;while(1) while(i > 0){ {++i; ++i;printf("%d\n", i); printf("%d\n", i);} }3. short i = 1;4. char c = 'a';while(i * i >= 0) while(c >= 0){ {++i; --c;printf("d\n", i); printf("%c\n", c)} }答:1.表达式1恒真,因此循环体会执行无数次。

2.在数学上,变量i的初值为1,每次自增1后会一直大于0,也就是说表达式i > 0恒真,但是,计算机中整型构成一个环,short型变量的取值范围为-32768~32767,当变量i的值自增到32767后再加1就变成了-32768,表达式i 〉0为假,循环退出,因此循环体执行了32767次。

3.表达式i * i >= 0恒真,因此循环体会执行无数次。

4.字符型变量c的值为97号字符’a’,因此从97至0,循环体共执行了98次。

5.2 画出例5-2的程序流程图。

5.3 整数n为几时1.0/n小于10-5。

答:5.4 编程输出整数n的阶乘。

(n! = n * (n-1) * … * 2 * 1)答:与例5-2相同的:0的阶乘等于1,此程序能正确输出吗?for结构的程序。

还可以用:与前面两个程序相比,少用了一个变量。

5.5 编程输出一个正整数各位上数字中零的个数,正整数由用户输入。

5.6 编程输出正整数各位上数字中的最大数。

或者(注意体会两者的区别)5.7 以小僧的人数为循环变量求解例5-4。

答:注意:在用穷举法解决此类问题时要防止因四舍五入而出错的情况。

如此题中设大僧每人2个馍,小僧4人一个馍,则问题应该无解,但用例5-4的算法求解时程序却会给出错误的结果。

北航大一上c语言第四五六七八次作业

北航大一上c语言第四五六七八次作业

3. 字母频率统计【问题描述】编写程序从标准输入中读入一段英文,统计其中小写字母出现次数,并以柱状图的形式显示其出现次数。

【输入形式】在标准输入上输入一段英文文章(可能有一行,也可能有多行),在新的一行的开头输入ctrl+z键表示结束。

【输出形式】在屏幕上依次输出表示每个小写字母出现次数的柱状图(以“*”字符表示柱状图,空白处用空格字符表示,某个小写字母出现多少次,就显示多少“*”字符;柱状图的高度以出现最多的字母次数为准),在最后一行依次输出26个小写字母。

【样例输入】The computing world has undergone arevolution since the publication ofThe C Programming Language in 1978.【样例输出】【样例说明】在输入的英文短文中,小写字母a出现了6次,所以其上输出了6个字符"*"。

出现次数最多的是字母n,所以柱状图的高度为9个字符。

字母j没有出现,所以其上都为空格字符。

【评分标准】该题要求输出柱状图表示的字母出现次数,共有5个测试点。

上传C语言文件名为bar.c。

【输入形式】从标准输入读取顶点坐标。

格式为:第一行是点的个数N(3≤N≤15),后面紧接着N 行,每行两个数字(由空格隔开),分别表示该点的X、Y坐标(0≤X,Y≤32767)。

所有点的坐标互不相同,且按顺时针次序给出。

输入数据确保该多边形是一个凸多边形。

【输出形式】向标准输出打印一个浮点数,是该多边形的面积。

该浮点数保留两位小数。

【输入样例】 43 330101 2【输出样例】5.00【样例说明】输入数据表示了如图所示的四边形。

其面积为5.00。

提示:求三角形面积可用海伦公式,求平方根可用<math.h>头文件中定义的sqrt函数。

【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:points.c。

C语言第5次实训题目及参考答案

C语言第5次实训题目及参考答案

C语言第5次实训题目及参考答案1、用for循环语句求n!,输出运算结果。

(n是一个不确定的值,可通过scanf()函数输入)参考代码:#includevoid main(){int i,sum=1,n;scanf ("%d",&n);for (i=1;i<=n;i++)sum*=i;printf("%d\n",sum);}2、输入n个整数,求这n个数之中的偶数平均值,并输出。

参考代码:#includevoid main(){int i,n,c,sum=0,count=0,aver;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&c);if(c%2==0){sum=sum+c;count++;}}aver=sum/count;printf("偶数的平均值是%d\n",aver);}3、输入一串字符,直到输入一个*号为止,统计并输出其中的字母个数和数字字符个数。

参考代码:#includevoid main(){int zm=0,sz=0; /*zm用于记录字母个数(包括大小写字母),sz 用于记录数字个数*/char c;for(;;){c=getchar();if(c=='*') break;else{if(c>='A'&&c<='Z') zm++;else if(c>='a'&&c<='z') zm++;else if(c>='0'&&c<='9') sz++;}}printf("字母个数有%d,数字个数有%d\n",zm,sz); }(4、5题任选一题)4、输出九九乘法表。

C语言各章作业及练习题

C语言各章作业及练习题

第二章作业题答案1 进制转换(1)7A.3D (或者7A.3DH)(2)01001011.01010111,4B.57 (二进制最前面的“0”可以省去;十六进制也可4B.57H)2 码制转换(1)原码:01010; 真值:+0.1010(2)原码:10110; 真值:-0.01103 设某机器字长为8位:(1)-1(2)-2-7(还可以进一步计算为:-0.0078125)4.浮点数转换为二进制:(A27F)16= (1010001001111111)2阶码补码为:E补=101000,则阶码真值E = -11000 = -24;尾数补码:M补= 1.001111111,尾数真值M = - 0.110000001;则(A27F)16的十进制真值为:- (2-1+2-2+2-9) x 2-24 = -(2-25+2-26+2-33)上面的结果还可以进一步化简写成分数或小数,只写到这一步也可以。

5将十进制数-7.25转换为IEEE754短浮点格式:(1)转换为二进制:(-7.25)10=(-111.01)2(2)规格化:(-111.01)2 = (-1.1101)2 x22(3)计算阶码(移码表示):E移= 127+2 = (129)10 = (10000001) 2(4)短浮点格式:(11000000111010000000000000000000)2 = (C0E80000)166.(1) 1000H,1006H(2) 1002H,2374H(3) E529H7 设当前堆栈状态如图3所示,按字编址,下列各小题分别执行,写出结果:(1)(SP) = 1003H, (R0) = 32H(2)(SP) = 1001H,(R0)=1000H,存储单元1000H~1002H的值分别是30H、1000H、32H。

第六章作业题一、选择题1.某字符显示器,分辨率为25x80,则第2行第5列(序号均从0开始)字符的代码,应存放在基本显示缓存的第()单元中(从0号单元开始)。

C语言程序设计作业五(指针,文件)

C语言程序设计作业五(指针,文件)

C语言程序设计作业五1.对于类型相同的指针变量,不能进行哪种运算?(单选)A. +B. -C. =D. = =2. 若有以下说明和语句,且0<=i<10, 则下面哪个是对数组元素的错误引用?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i;p=a;A. *(a+i)B. a[p-a]C. p+iD. *(&a[i])3. 若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素地址的正确表示?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i;p=a;A. &(a+1)B. a++C. &pD. &p[i]4. 以下程序的输出结果是___。

#include <stdio.h>main(){int a[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}A. 0,5B. 1,5C. 0,6D. 1,65. 以下程序的输出结果是哪一项?(单选)#include <stdio.h>main(){int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;for(i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);}A. 输出项不合法B. 6C. 8D. 126. 如果有以下的定义:(多选)struct person{char name[20];int age;char sex;};struct person a={"xiao min",20,'m'},*p=&a;则对字符串"li ning"的引用方式可以是下面哪些?A. (*p).nameB. C. D. p->name7. 下面哪些定义的结构在内存分配是等价的。

c语言第五六章课后题

c语言第五六章课后题

第五章作业:5-1、N-S流程图输入xx > 0 ?Ture False输出x 输出- x#include <stdio.h>main(){const double eps=1e-8; /*定义eps,用于输入的实数和0比大小*/ float a;printf("input a number:");scanf("%f",&a);if(a>0 || fabs(a)<=eps) /*该实数大于等于0*/{ printf("|%f|=%f\n",a,a); }else /*该实数小于0*/{ printf("|%f|=%f\n",a,-a);}}结果:5-2、传统流程图#include <stdio.h>main(){int x,m;printf("input a intanger:");scanf("%d",&x);输入整数xx > 0 ?m = x % 2m = x % 2m= = 0?输出x为偶数输出x为奇数输入错误结束开始if(x>=0){m=x%2; /*取余运算,判断余数是否为0*/if(0==m){ printf("%d是偶数\n",x);}else{ printf("%d是奇数\n",x);}}else /*提示输入为负数*/{ printf("输入错误,%d为负数\n",x);}}结果:5-3、传统流程图#include <stdio.h>#include <math.h>main(){float a,b,c,l,s;printf("input three sides:");scanf("%f,%f,%f",&a,&b,&c);if(a+b>c && a+c>b && b+c>a) /*构成三角形的条件*/{l=(a+b+c)/2;开 始输入3条边a ,b ,ca+b>c && b+c>a&& a+c>b?l=(a+b+c)/2S=sqrt(l*(l-a)*(l-b)*(l-c))输出不是三角形输出面积s 结 束s=sqrt(l*(l-a)*(l-b)*(l-c));printf("三角形的面积是%.3f\n",s);}else{ printf("不能构成三角形\n"); }}结果:5-4、#include <stdio.h>#include <math.h>main(){float m,s; /*定义本金,利息和*/int n; /*定义期限*/printf("输入本金、期限:");scanf("%f,%d",&m,&n);switch (n){case 1: /*存储年限为1年*/ s=m*pow(1+0.0225,n);printf("本金和=%.3f\n",s);break;case 2: /*存储年限为2年*/ s=m*pow(1+0.0243,n);printf("本金和=%.3f\n",s);break;case 3: /*存储年限为3年*/ s=m*pow(1+0.0270,n);printf("本金和=%.3f\n",s);break;case 5: /*存储年限为5年*/s=m*pow(1+0.0288,n);printf("本金和=%.3f\n",s);break;case 8: /*存储年限为8年*/ s=m*pow(1+0.03,n);printf("本金和=%.3f\n",s);break;default: /*提示输入错误*/printf("输入的期限有误");break;}}结果:5-5、#include <stdio.h>main(){int year,flag;printf("Enter the year:");scanf("%d",&year);if(year%100==0 && year%400==0 || year%4==0)flag=1;elseflag=0;if(flag==1)printf("%d is a leap year!\n",year);elseprintf("%d is not a leap year!\n",year);}5-6、#include <stdio.h>main(){int year,flag;printf("Enter the year:");scanf("%d",&year);(year%100==0 && year%400==0 || year%4==0)? (flag=1):(flag=0);if(flag==1)printf("%d is a leap year!\n",year);elseprintf("%d is not a leap year!\n",year);}5-7、#include <stdio.h>main(){char ch; /*定义输入的字符*/int m; /*定义该字符的ASCII值*/printf("input a string and press Enter :");ch=getchar(); /*获取该字符*/if(ch>='A' && ch<='Z') /*若为大写字符,则转化为小写*/{m=ch+32;printf("%c 的小写字母:%c\n",ch,m);}else if(ch>='a' && ch<='z') /*若为小写字符,则转化为大写并算出ASCII值*/ {m=ch-32;printf("%c 的大写字母为:%c,其ASCII值为:%d\n",ch,m,m);}else /*若输入的不是字母,则只输出ASCII值*/{printf("%c的ASCII值为:%d\n",ch,ch);}}结果:5-8、#include <stdio.h>main(){char ch;printf("input a string and press Enter :");ch=getchar(); /*获取该字符*/if(ch>='A' && ch<='Z') /*判断为大写*/{ printf("%c为大写字母\n",ch); }else if(ch>='a' && ch<='z') /*判断为小写*/{ printf("%c为小写字母\n",ch); }else if(ch==' ') /*判断为空格*/{ printf("%c为空格\n",ch); }else if(ch>='0' && ch<='9') /*判断为数字*/{ printf("%c是数字字符\n",ch);}else /*判断为其他字符*/ { printf("%c是其他字符\n",ch);}}结果:5-9#include <stdio.h>main(){int score;printf("input the score:");scanf("%d",&score);if(score>100 || score<0) /*判断师傅输入大于100的数或负数*/ { printf("成绩输入错误\n");}else{if(score>=90){ printf("score:%d-------grade:%c\n",score,'A');}else if(score>=80){ printf("score:%d-------grade:%c\n",score,'B');}else if(score>=70){ printf("score:%d-------grade:%c\n",score,'C');}else if(score>=60){ printf("score:%d-------grade:%c\n",score,'D');}else{ printf("score:%d-------grade:%c\n",score,'E');}}}结果:5-10、#include <stdio.h>main(){int year,month,flag=1; /*定义年份、月份、标识变量flag*/printf("输入年份:");scanf("%d",&year);if(year%400==0 || year%100!=0 && year%4==0) /*若为润年,flag=0,平年,flag=1*/ { flag=0;}printf("输入月份:");scanf("%d",&month);switch (month){case 1: /*1,3,5,7,8,10,12月为31天*/case 3:case 5:case 7:case 8:case 10:case 12:printf("%d年的%d月有31天\n",year,month);break;case 2: /*2月需要判断润年和平年的情况*/if(0==flag){ printf("%d年的%d月有29天\n",year,month); }else{ printf("%d年的%d月有28天\n",year,month);}break;case 4: /*4,6,9,11月为30天*/case 6:case 9:case 11:printf("%d年的%d月有31天\n",year,month);break;default: /*若输入非1~12的月份,提示输入错误*/ printf("月份输入错误\n");}}结果:第六章作业6-1(1)分析:这是一个二重嵌套循环,I=1,j=1,打出1个空格和6个*I=2,j=1和2,做2次循环打出2个空格和6个* I=3,j=1,2,3,做3次循环打出3个空格和6个* I=4,j=1,2,3,4,做4次循环打出4个空格和6个*结果6-1(2)分析:开始:k=4,n=0第一次循环n<4,n%2==0,n=n+1=1;第二次循环n<k,1%2==1,k=k-1=3,n=n+1=2; 第三次循环n<k,2%2==0,n=n+1=3;第四次循环n<k不成立结束:输出n=3,k=3结果:6-1(3)分析:开始: k=4,n=0;第一次循环:0<4,0%2==0,break,结束:输出k=4,n=0;结果:6-2(1)计算1+3+5+7+.......+99+101的值#include <stdio.h>main(){int i,sum = 0;for (i=1;i<=101;i=i+2){sum=sum+i;}printf("sum=%d\n",sum);}结果:(2)计算1*2*3+3*4*5+……+99*100*101 #include <stdio.h>main(){long i;long term,sum=0;for (i=1;i<=99;i=i+2){term=i*(i+1)*(i+2);sum=sum+term;}printf("sum=%ld\n",sum);}结果:(3)计算a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入#include <stdio.h>main(){long term=0,sum=0;int a,i,n;printf("input a,n:");scanf("%d,%d",&a,&n);for(i=1;i<=n;i++){term=10*term+a; /*将相邻的数乘以10,再加上之前的数*/sum=sum+term;}printf("sum=%ld\n",sum);}结果:(4)计算1-1/2+1/3-1/4+…+1/99-1/100+…,直到最后一项的绝对值小于1e-4为止#include <stdio.h>#include <math.h>main(){int n=1;float term=1.0,sign=1,sum=0;while (sign>=1e-4){term=pow(-1,n-1)*sign; /*计算每项因子*/sum=sum+term;sign=(float)1/(n+1); /*强制类型转换*/n++;}printf("sum=%f\n",sum);}结果:(5)利用sinx=x-x^3/3!+x^5/5!-x^7/7!+….,计算最后一项的绝对值小于10(-5)时为止,输出e的值并统计加的项数#include <stdio.h>#include <math.h>main(){int n=1,count=1;float x;double sum,term;printf("input x:");scanf("%f",&x);sum=x;term=x;do{term=(-1)*x*x*term/((n+1)*(n+2));sum=sum+term;n=n+2;count=count+1;}while(fabs(term)>1e-5);printf("sin(x)=%f,count=%d\n",sum,count);}结果:6-3#include <stdio.h>main(){int x=1,find=0;while(!find){if(x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0){printf("x=%d\n",x);find=1;}x++;}}错误分析:1、while后不能加分号,否则进入死循环;2、判等运算用的是双等号,不是单等号;3、不管是否找,x都要自增运算,所以x++放在if语句的外面。

c语言第五次作业

c语言第五次作业

第五次作业:函数1.自然数的计算编写自己的两个函数,分别求出两个整数的最大公约数和最小的公倍数。

编写一个程序,功能是能够由键盘输入两个整数,并能调用自己编写的函数,计算并输出这两个整数的最大公约数和最小公倍数。

程序代码:#include<stdio.h>void main(){intgreatest_common(intx,int y),lowest_common(intx,int y);inta,b,c,d;printf("please input two integer:");scanf("%d,%d",&a,&b);c=greatest_common(a,b);d=lowest_common(a,b);printf("最大公约数为%d,最小公倍数为%d\n",c,d);}intgreatest_common(intx,int y){inti,min;if (x>y)min=y;else min=x;for(i=min;i>=1;i--)if ((x%i==0)&&(y%i==0))return(i);}intlowest_common(intx,int y){inti,max;if (x>y)max=x;elsemax=y;for (i=max;;i++)if((i%x==0)&&(i%y==0))return (i);}2.字符串连接请使用字符数组,编写自己的字符串连接函数。

编写一个程序,功能是能够由键盘输入两个字符串,并能调用自己编写的字符串连接函数,输出新的字符串。

#include<stdio.h>#include<string.h>void main(){char link(char a[40],char b[20]);char str1[40]={"0"},str2[20];printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);printf("合并后的字符串为:\n");link(str1,str2);puts(str1);}char link(char a[40],char b[20]){inti,j;i=strlen(a);for(j=0;b[j]!=0;j++)a[i+j]=b[j];return(a[i]);}3. 三角函数请使用台劳级数编写自己的常用三角近似值计算函数,用于自己程序的调用。

C语言第五六次作业

C语言第五六次作业

当前编程题: 级第五次作业 级第五次作业---求两组整数的异或集 当前编程题:11级第五次作业 求两组整数的异或集 3.【问题描述】从标准输入中输入两组整数(每行不超过 个整数,每组整数中元素 【问题描述】从标准输入中输入两组整数 每行不超过 个整数, 每行不超过20个整数 不重复),合并两组整数 去掉在两组整数中都出现的整数, 合并两组整数, 不重复 合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序 输出(即两组整数集“异或” 输出(即两组整数集“异或”)。 输入形式】首先输入第一组整数,以一个空格分隔各个整数; 【输入形式】首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上 输入第二组整数,以一个空格分隔,行末有回车换行。 输入第二组整数,以一个空格分隔,行末有回车换行。 输出形式】按从大到小顺序排序输出合并后的整数集( 【输出形式】按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现 的整数,以一个空格分隔各个整数)。 的整数,以一个空格分隔各个整数)。 样例输入】 【样例输入】 5 1 4 32 8 7 9 -6 5 2 87 10 1 样例输出】 【样例输出】 87 32 10 9 8 7 4 2 -6 样例说明】第一组整数为5 【样例说明】第一组整数为 1 4 32 8 7 9 -6,第二组整数分别为 , 5 2 87 10 1。将第一组和第二组整数合并(去掉在两组整数中都出现的整数5 。将第一组和第二组整数合并(去掉在两组整数中都出现的整数 ),并从大到小顺序排序后结果为 和1),并从大到小顺序排序后结果为 ),并从大到小顺序排序后结果为87 32 10 9 8 7 4 2 -6。 。 评分标准】该题要求输出两组整数的异或集,共有5个测试点 个测试点, 【评分标准】该题要求输出两组整数的异或集,共有 个测试点,提交程序文件名 为xor.c。 。

C语言第5次作业简单程序设计

C语言第5次作业简单程序设计

C语言第5次作业简单程序设计单选题:1、以下程序段的输出结果是int a=1234;printf("%2d\n",a);A.12B.34C.1234D.提示出错、无结果学生答案: C参考答案: C2、若有说明语句:int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A.scanf("%d%d%d",&a,&b,*d);B.scanf("%d%d%d",&a,&b,&d);C.scanf("%d%d%d",a,b,d);D.scanf("%d%d%d",a,b,*d);学生答案: B参考答案: A3、以下合法的赋值语句是A.x=y=100B.d--;C.x+y;D.c=int(a+b);学生答案: D参考答案: B4、设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是printf("%d,%d\n",x--,--y);A.10,3B.9,3C.9,2D.10,2学生答案: D参考答案: D5、以下程序的输出结果是main(){ int a=3;printf("%d\n",(a+=a-=a*a));}}A.-6B.12C.0D.-12学生答案: D参考答案: D6、以下程序段的输出结果是char s[]="\\141\141abc\t";printf ("%d\n",strlen(s));A.9B.12C.13D.14学生答案: A参考答案: A7、下列程序执行后的输出结果是main(){ int x='f'; printf("%c \n",'A'+(x-'a'+1)); } A.GB.HC.ID.J学生答案: A参考答案: A8、下列程序执行后的输出结果是main(){ char x=0xFFFF; printf("%d \n",x--); }A.-32767B.FFFEC.-108D.-32768学生答案:参考答案: C9、请读程序int i =65536printf("%d\n",i);上面程序的输出结果是_____A.65535B.0C.有语法错误,无输出结果D.1学生答案: A参考答案: B10、以下定义和语句:char cl='b',c2='e';printf(″%d,%c\n″,c2-c1,c2-'a'+'A'); 则输出结果是:A.2,MB.3,EC.2,ED.输出项与对应的格式控制不一致,输出结果不确定学生答案: B 参考答案: B11、以下程序的输出结果是main( ){ int a=12,b=12;printf("%d%d\n",--a,++b);}A.10 10B.12 12C.11 10D.11 13学生答案: D参考答案: D12、以下程序的输出结果是_____main(){char str[12]={'s','t','r','i','n','g'};printf("%d\n",strlen(str));}A.6B.7C.11D.12学生答案: C参考答案: A13、语句:printf("%d \n",12&&12);的输出结果是________.A.12B.1C.24D.0参考答案: B14、以下程序的输出结果是main( ){ int k=17;printf("%d,%o,%x \n",k,k,k);}A.17,021,0x11B.17,17,17C.17,0x11,021D.17,21,11学生答案: D参考答案: D15、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A.c=b=a;B.(a=c)‖(b=c);C.(a=c)&&(b=c);D.a=c=b;学生答案: C参考答案: C16、执行下列程序段float f;int i;scanf("%3d%4d%f",&i,&f);输入为12345678765.43,则赋值结果为();A.i=123,f=45678765.43B.i=123,f=4.567876543e+7C.i=123,f=8765.43D.i=12345678765;f=0.43参考答案: C17、下面程序的输出是main(){int a=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%d%\n",k,a,b);}A.0 0 3B.0 1 2C. 1 0 3D. 1 1 2学生答案: C参考答案: C18、若有以下定义和语句:char s1[]=″12345″, s2[]=″1234″; printf(″%d\n″,strlen(strcpy(s1,s2))); 则输出结果是A.4B.5C.9D.10学生答案:参考答案: A19、执行下面程序中输出语句后,a的值是main(){int a;printf("%d\n",(a=3*5,a*4,a+5));}A.65B.20C.15D.10学生答案: B参考答案: B20、下面程序的输出是main(){int a=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%d%\n",k,a,b);}A.0 0 3B.0 1 2C. 1 0 3D. 1 1 2学生答案: C参考答案: C21、设有如下定义:int x=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是A.1B.0C.4D.3学生答案: D参考答案: D22、以下程序的输出结果是__main(){ int x=10 ,y=10;printf("%d%d\n",x--,--y);}A.10,10B.9,9C.9,10D.10,9学生答案: D参考答案: D23、读下列程序:#includemain(){float a,b,t;scanf(”%f,%f”,&a,&b);if(a>b)t=a;a=b;b=t;}prinff(”%5.2f,%5.2f'’,a,b);}运行时从键盘输入3.8和-3.4,则正确的输出结果是( )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五次作业:函数1.自然数的计算编写自己的两个函数,分别求出两个整数的最大公约数和最小的公倍数。

编写一个程序,功能是能够由键盘输入两个整数,并能调用自己编写的函数,计算并输出这两个整数的最大公约数和最小公倍数。

程序代码:#include<stdio.h>void main(){intgreatest_common(intx,int y),lowest_common(intx,int y);inta,b,c,d;printf("please input two integer:");scanf("%d,%d",&a,&b);c=greatest_common(a,b);d=lowest_common(a,b);printf("最大公约数为%d,最小公倍数为%d\n",c,d);}intgreatest_common(intx,int y){inti,min;if (x>y)min=y;else min=x;for(i=min;i>=1;i--)if ((x%i==0)&&(y%i==0))return(i);}intlowest_common(intx,int y){inti,max;if (x>y)max=x;elsemax=y;for (i=max;;i++)if((i%x==0)&&(i%y==0))return (i);}2.字符串连接请使用字符数组,编写自己的字符串连接函数。

编写一个程序,功能是能够由键盘输入两个字符串,并能调用自己编写的字符串连接函数,输出新的字符串。

#include<stdio.h>#include<string.h>void main(){char link(char a[40],char b[20]);char str1[40]={"0"},str2[20];printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);printf("合并后的字符串为:\n");link(str1,str2);puts(str1);}char link(char a[40],char b[20]){inti,j;i=strlen(a);for(j=0;b[j]!=0;j++)a[i+j]=b[j];return(a[i]);}3. 三角函数请使用台劳级数编写自己的常用三角近似值计算函数,用于自己程序的调用。

台劳级数为:...!7!5!3!1sin 753+-+-=x x x x x ...!6!4!2!1cos 6420+-+-=x x x x x 舍去的值由自己定义一个最小值。

请用自己的函数计算下面两个表达式的值,并且与VC++提供的标准函数之间的误差进行比较。

请输入结果。

● 2cos 1α-=y ,(o 60=α) ● x x x x y 22cos -cos sin sin *2⋅+=,(o 45=x )#include<stdio.h>#include<math.h>void main(){float s(float x),c(float x);float y1,y2,y3,y4,a=3.14159/3,b=3.14159/4;y1=sqrt((1-c(a))/2);y2=s(b)*(2*s(b)+c(b))-c(b)*c(b);printf("y1=%f,y2=%f\n",y1,y2);y3=sqrt((1-cos(a))/2);y4=sin(b)*(2*sin(b)+cos(b))-cos(b)*cos(b);printf("y1'=%f,y2'=%f\n",y3,y4);}float s(float x){int m=1,i=0;float a=0,b=1,t=0;while(m<=11){t=1./b*pow(x,m)*pow(-1,i);i++;a=a+t;m++;b*=m;m++;b*=m;}return(a);}float c(float x){float a=0,b=1,t=0;int m=0,i=0;while(m<=12){t=1./b*pow(x,m)*pow(-1,i);i++;a=a+t;m++;b*=m;m++;b*=m;}return(a);}4.弦截法解方程用弦截法求解方程f(x)=x3-5x2+16x-80=0的根。

要求使用和编写如下的函数:●float f(float x)代表f(x)=x3-5x2+16x-80的值●float xpoint(float x1, float x2) 来求出(x1,f(x1))与 (x2,f(x2))的连线与x轴的交点x坐标;●float root(float x1, float x2)用于求出 (x1,x2)区间的近似根。

要求使用的x1与x2的初始值分别为-10.5 和 20#include<stdio.h>#include<math.h>float f(float x)/*定义f函数,以实现f(x)=x3-5x2+16x-80 */{float y;y=((x-5.0)*x+16.0)*x-80.0;return (y);}float xpoint (float x1,float x2)/*定义xpoint函数,求出弦与x轴交点*/{float y;y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));return (y);}float root(float x1,float x2)/* 定义root函数,求近似根 */ {float x,y,y1;y1=f(x1);do{x=xpoint(x1,x2);y=f(x);if (y*y1>0) /*f(x)与f(x1)同符号 */{y1=y;x1=x;}else x2=x;}while (fabs(y)>=0.0002);return (x);}void main() /*主函数*/{float x1,x2,f1,f2,x;do{printf("input x1,x2:\n");scanf("%f,%f",&x1,&x2);f1=f(x1);f2=f(x2);}while(f1*f2>=0);x=root(x1,x2);printf("A root of equation is %8.4f\n",x);}5.最长单词编写一个自己的函数,能够将一个字符串中最长的单词查找出来。

编写一个程序,功能是能够由键盘输入一行字符,并能调用自己编写的最长单词查找函数,输出这个单词。

#include<stdio.h>#include<string.h>char longest(intn,charstr[100]){char a[100][100],b[100]={"0"};inti,j=0,k,max=0,m;int length;length=strlen(str);for(k=0,i=0,j=0;i<length;k++,i++){a[j][k]=str[i];if(str[i]==''){if(max<k){max=k;for(m=0;m<k;m++)b[m]=a[j][m];}j++;k=-1;continue;}}return(b[n]);}void main(){charstr[100],a[100]={"0"};inti;gets(str);for(i=0;a[i]!='';i++)a[i]=longest(i,str);puts(a);}6. 勒让德多项式用递归思想求n 阶勒让德多项式的值,该多项式为:121 0() 1((21)**()(1)*())/ 1n n n n p x x n n x p x n p x n n --=⎧⎪==⎨⎪--->⎩#include<stdio.h>void main(){int p(intn,int x);intn,x,y;printf("please input n,x:");scanf("%d,%d",&n,&x);if(n<0){printf("error!please input n,x:");scanf("%d,%d",&n,&x);}y=p(n,x);printf("y=%d\n",y);}int p(intn,int x){int y;if(n==0)y=1;else if(n==1)y=x;else y=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;return(y);}7.角夫猜想日本数学家角夫提出了如下的猜想:任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。

请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。

如●输入:请输入自然数n:30●输出:自然数n按照角夫猜想运算规则变化的各次结果:15 46 23 70 35106 53 160 80 40 20 10 5 16 8 。

(直到结果收敛,不再变化)#include<stdio.h>void main(){intn,y,i,k;int f(int x);for(i=0;;i++){printf("please input n=");scanf("%d",&n);if(n==0)break;while(n!=1){y=f(n);printf(" %d ",y);n=y;}printf("\n");}}int f(int x){int y;if(x%2==0)y=x/2;else if(x%2!=0)y=3*x+1;return(y);}8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。

相关文档
最新文档