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语言 课后作业题

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语言第五次上机作业参考答案

第五次上机作业:(请用指针实现)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语言课后作业50(附参考答案)

1.输入一个不超过五位的正整数,输出其逆数。
例如输入12345,输出应为54321。
#include<stdio.h>main(){int s[5];int n,j;printf("请输入一个正的五位数");scanf("%d",&n);s[0]=n%10;printf("%d",s[0]);s[1]=(n%100-s[0])/10;printf("%d",s[1]);s[2]=(n%1000-s[0]-s[1])/100;printf("%d",s[2]);s[3]=(n%10000-s[0]-s[1]-s[2])/1000;printf("%d",s[3]);s[4]=(n%100000-s[0]-s[1]-s[2]-s[3])/10000;printf("%d",s[4]);printf("输出逆转后的5位数");for(j=0;j<=4;j++){printf("%d",s[j]);}}2.计算1+2+3…+n的值,n是从键盘输入的自然数。
#include <stdio.h>main(){int n;int i;printf("请输入一个自然数:");scanf("%d",&n);i=n*(n+1)/2;printf("输出1-n的自然数之和:%d\n",i);}3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。
#include <stdio.h>#define naxx 10main(){int s[naxx];int a[naxx];int i=0;int j=0;int l=0;int sum=0;int k;printf("请输入:");for(i=0;i<naxx;i++){scanf("%d",&s[i]);}for(j=0;j<naxx;j++){ if(s[j]>0){a[l]=s[j];sum+=a[l];l++;}}for(i=0;i<l;i++){ printf("%d\n",a[i]);}printf("输入数之和%d\n",sum);}4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各元素的值。
C语言第五章习题带答案

练习5-1答案一、选择题1.合法的数组说明语句是( B )。
A.int a[]="string"; B.int a[]={0,1,2,3,4,5};C.char a="string"; D.char a[5]={'0', '1', '2', '3', '4', '5'}; 2.以下对一维整型数组a的说明正确的是( D )。
A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10scanf("%d", &n); int a[SIZE];int a[n];3.已知:int a[10];,则对a数组元素的正确引用是( D )。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]4.以下对一维数组a进行正确初始化的语句是( C )。
A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={};C.int a[]={0}; D.int a[2]={10, 9, 8};5.对以下说明语句的正确理解是( B )。
int a[10]={6, 7, 8, 9, 10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确二、填空题6.求所有不超过200的N值,N的平方是具有对称性质的回文数。
所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。
例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。
#include <stdio.h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③) printf("%2d:%10d %10d\n", ++count, n, n*n);}}则①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。
C语言第五章习题带答案-2012.10.30更新范文

练习5-1答案一、选择题1.合法的数组说明语句是( B )。
A.int a[]="string"; B.int a[]={0,1,2,3,4,5};C.char a="string"; D.char a[5]={'0', '1', '2', '3', '4', '5'}; 2.以下对一维整型数组a的说明正确的是( D )。
A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10scanf("%d", &n); int a[SIZE];int a[n];3.已知:int a[10];,则对a数组元素的正确引用是( D )。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]4.以下对一维数组a进行正确初始化的语句是( C )。
A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={};C.int a[]={0}; D.int a[2]={10, 9, 8};5.对以下说明语句的正确理解是( B )。
int a[10]={6, 7, 8, 9, 10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确二、填空题6.求所有不超过200的N值,N的平方是具有对称性质的回文数。
所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和都是回文数。
例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。
#include <stdio.h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①m[i]=a%10;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②t*=10;}if ( ③k==n*n ) printf("%2d:%10d %10d\n", ++count, n, n*n);}}则①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。
C语言程序设计 苏小红版 第五六单元 答案

printf("该方程不是一元二次方程.\n"); } else if(b*b-4*a*c>0) {
d=sqrt(b*b-4*a*c); x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a); printf("x1=%f,x2=%f\n",x1,x2); } else if(b*b-4*a*c==0)
#include<stdio.h> #include<math.h> main() {
float a,b,c,s,area; printf("请输入三边长:"); scanf("%f,%f,%f",&a,&b,&c); s=(a+b+c)/2; area=(float)sqrt(s*(s-a)*(s-b)*(s-c)); if((a+b>c)&&(a+c>b)&&(b+c>a)) {
printf("%d 年是闰年\n",year); } else {
printf("%d 年不是闰年\n",year); } }
5.7 #include<stdio.h> main() {
char ch; printf("请输入一个字母:"); ch=getchar(); if((ch>=65)&&(ch<=90)) {
int a,b; printf("请输入一个整数:"); scanf("%d",&a); b=a%2; if(b==0) {
C语言作业及参考答案

C语言及实验作业参考做法分支程序设计1.输入4个整数,按从小到大的顺序输出2.根据月份判断季节。
输入月份,输出春/夏/秋/冬。
要求用switch语言实现3.学生学习两门课:必修课成绩为course1,选修课成绩为course2,若两门都及格,打印pass,必修课不及格,打印fail4.从键盘输入一个年份,判该年是否是闰年,是闰年就输出yes,否则输出no 5.从键盘输入一个字符,判断该字符是数字字符、大写字母、小写字母、空格还是其他字符。
6.商店卖西瓜,10斤以上每斤0.8元, 8斤以上每斤0.6元, 6斤以上每斤0.4元,4斤以上每斤0.3元, 4斤以下每斤0.15元,输入西瓜重量和所付的钱数,输出应付的货款和应找的钱数循环程序设计1.从键盘上输入10个整数,计算这些整数的和2.水仙花数。
一个3位数,若其各位数字之和等于它本身,这个数就称为水仙花数.输出所有的水仙花数。
(如153)#include<stdio.h>int main()//方法一{ int num,bai,shi,ge;for(num=100; num<1000; num++){bai=num/100;shi=num/10%10;ge=num%10;if(num==bai*bai*bai+shi*shi*shi+ge*ge*ge)printf("%d\n",num);}return 0;}//方法二int main(){int i,j,k;for(i=1; i<10; i++)for(j=0; j<10; j++)for(k=0; k<10; k++)if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("%d\n",100*i+j*10+k);return 0;}3.计算分数序列2/1,3/2,5/3,8/5,13/8,21/13,.....前20项之和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
——第四弹
。。原来真正变态的是这两作业哇~ 原本是做完第五次作业等大家数分期中考完以后给大家,结果 直接出了第六次。就顺便做了。买一送一还包邮哦亲~ 虽然这两次作业比较难。理解起来困难无比。。不过考试的时 候不会有这么变态的题目啦~放心
当前编程题: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。
本题解析:
求异或,同时降序输出。那么将问题简化后 可以发现如果将两个数组中的数都读进同一个数 组然后降序排序若是数组中存在相同元素则不输 出,若只出现一次则输出。那么结果与题目要求 就相同了。
for (i=0;i<sum;i++) for (j=i+1;j<sum;j++) if (a[i]<a[j]) #include<stdio.h> { int main() k=a[i]; { a[i]=a[j]; int a[100]; a[j]=k; int i,j,k; } /*降序排序*/ int sum=0; a[sum]=5257;/*保证a[sum]不与前面的数相同*/ char ch; int flag=0;/*flag表示已经输出了多少数,若为0 int tot=0; 则不需要先输出空格,否则输出空格与前面输出 scanf("%d",&a[sum++]); 的数字隔开*/ while (1) for (i=0;i<sum;i++) { { if (i==0) if (a[i]!=a[i+1]) ch=getchar(); { if (flag) printf(" "); if (ch=='\n') tot+=1; printf("%d",a[i]); if (tot==2) break; flag++; scanf("%d",&a[sum++]); } } /*这里是进行读入,由于一共 if (i!=0) if ((a[i]!=a[i+1])&&(a[i]!=a[i-1])) 有两行那么每读完一个数就读入一 { if (flag) printf(" "); 个字符判断这个字符是不是换行符, printf("%d",a[i]); 当出现两个换行符的时候读入结束 flag++; */ } } }
当前编程题:11级第五次作业---最长升序子串 5.【问题描述】输入一行字符串,该字符串只由小写英文字母a-z组成,且 其中的字符可以重复,最长不超过10000个字符。 从该字符串中按顺序挑选出若干字符(不一定相邻)组成一个新串,称为 “子串”。如果子串中每两个相邻的字符或者相等,或者后一个比前一个 大,则称为“升序子串”。编程求出输入字符串的最长升序子串的长度。 例如,由输入字符串abdbch可以构成的升序子串有:abd、abch、bbch、 abbch等。其中最长的升序子串是abbch,其长度为5。 【输入形式】从标准输入读取一行字符串,该串不含空格,以回车符结束。 【输出形式】向标准输出打印一个正整数,是字符串中最长的升序子串的 长度,在行末要输出一个回车符。 【输入样例】abdbch 【输出样例】5 【样例说明】abdbch中最长子串是abbch,长度是5。 【评分标准】结果完全正确得20分,每个测试点4分。上传c语言源程序为 up.c。
本题解析: 这个题是把凸n边形面积分成n-2个三 角形面积和来做的。用海伦公式 S=sqrt(p*(p-a)*(p-b)*(p-c))
P=(a+b+c)/2 a,b,c为三边长
例如n边形点为a1a2…an 那 S=∑(Sa1akak+1) (2≤K≤N-1) 边长则为两点间距离。
#include<stdio.h> #include<math.h> int main() { int n; float x[15],y[15]; int i; float dx,dy; float tot=0; float a,b,c,p; scanf("%d",&n); for (i=0;i<n;i++) scanf("%f%f",&x[i],&y[i]);
本题解析: 这道题是从出现作业为止最难得题目。涉及 到一些动态规划的思想。(我只想到这一种做法, 欢迎大家有简单做法的来分享~) 用f[i][j]表示到字符串s中的第i个字符为止最高 位为j(用1-26分别代替’a‟-‟z‟)的最长字串的字符 数。 动态转移方程为: F[i][j]=F[i-1][j] (s[i]≠j) F[i][j]=max(f[i-1][k])+1 (1≤k≤j) (s[i]=j) 这个题目不是很好讲清楚,如果想透彻的理解的 话可以来找我(中408 JRC)不过。。不保证一定能
for (i=0;i<sum;i++) { if (s[i]<10) s[i]+='0'; else s[i]+='a'-1; } if (!flag) { for (i=sum;i>0;i--) s[i]=s[i-1]; s[0]='-'; } } int main() { int n,b; char s[100]; scanf("%d%d",&n,&b); itob(n,s,b); printf("%s",s); return 0; }
#include<stdio.h> #include<string.h> void itob(int n,char s[],int b) { int flag=1; int sum=0; int i,j; char ch; if (n<0) {flag=0;n=-n;} memset(s,„\0‟,sizeof(s));/*数组初始化*/ while (n>0)/*不断除b取余*/ { s[sum++]=n%b; n=n/b; } for (i=0,j=sum-1;i<j;i++,j--) /*将数字倒序存放*/ {ch=s[i];s[i]=s[j];s[j]=ch;}
当前编程题:11级第五次作业---整数的N进制字符串表示 【问题描述】编写函数itob(n,s,b),用于把整数n转换成以b为基的字符串 并存储到s中. 编写程序,使用函数itob(n,s,b)将输入的整数n,转换成 字符串s,将s输出.转换后的字符串从最高的非零位开始输出。如果n 为负数,则输出的字符串的第一个字符为’-’。b为大于1小于37的任 意自然数值。当b=2时,输出字符只可能是’0’和’1’;当b=16时, 输出字符串中可能含有字符为’0’-’9’,’a’-’f’(字母以小写输出)。b 还可以是其它数值。比如输入n=33,b=17,则输出33的17进制值为 "1g"。 【输入形式】控制台输入整数n和b,其中n可以为负数。n和b以空格 分隔. 【输出形式】控制台输出转化后的字符串s. 【样例输入】5 2 【样例输出】101 【样例说明】5的二进制就是101 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为: itob.c
当前编程题:11级第五次作业---字符串中字符排序 4.【问题描述】编写一个程序,从键盘接收一个字符串,然后按照字符 顺序从小到大进行排序,并删除重复的字符。 【输入形式】用户在第一行输入一个字符串。 【输出形式】程序按照字符(ASCII)顺序从小到大排序字符串,并删除 重复的字符进行输出。 【样例输入】badacgegfacb 【样例输出】abcdefg 【样例说明】用户输入字符串badacgegfacb,程序对其进行按从小到 大(ASCII)顺序排序,并删除重复的字符,最后输出为abcdefg 【评分标准】结果完全正确得20分,每个测试点4分。提交源程序名为 stringsort.c