2013c语言第5次作业答案

合集下载

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语言课后练习题答案第五章

作业四:简单程序设计1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。

如果字符串长度大于5,则输出按方式(B);如果字符串长度小于5,则输出按方式(C)。

(5分)(重要)A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出C) 右对齐输出该字符串,左补空格 D) 输出错误信息2.阅读以下程序,当输入数据的形式为:25,13,10<CR>(注:<CR>表示回车),则正确的输出结果为(D)。

(5分)main(){ int x,y,z;scanf(“%d%d%d”,&x,&y,&z);要和这里一样printf(“x+y+z=%d\n”,x+y+z);}A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定值3.根据下面的程序及数据的输入和输出形式,程序中输入数据的正确形式应该为(WXY)。

(5分)main(){ char ch1,ch2,ch3;scanf(“%c%c%c”,&ch1,&ch2,&ch3);printf(“%c%c%c”,ch1,ch2,ch3);}4.以下的输出结果是(x=1,y=2*sum*=310 Squard is : 100)。

(5分)main(){ int x=1,y=2;printf(“x=%d y=%d * sum * =%d\n”,x,y,x+y);printf(“10 Squared is : %d\n”,10*10);}5.若a=3,b=4,c=5,x=,y=,z=,u=51274,n=128765,c1=’a’,c2=’b’,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。

要求输出的结果如下:(20分)a= 3 b= 4 c= 5x=,y=,z=x+y= y+z= z+x=u= 51274 n= 128765c1=’a’ or 97(ascll)c2=’b’ or 98(ascll)main(){ int a=3,b=4,c=5;float x=,y=,z=;unsigned u=51274;long n=128765;char c1=’a’,c2=’b’;printf(“a=%d b=%d c=%d\n”,a,b,c);printf(“x=%f ,y=%f, z=%f\n”,x,y,z);printf(“x+y=% y+z=%.2f z+x=%.2f\n”,x+y,y+z,z+x); printf(“u=%u n=%9ld \n”,u,n);printf(“c1=’%c’or %d (asc11) \n”,c1,c1);printf(“c2=’%c’or %d (asc11) \n”,c2,c2);}6.请写出下面程序的输出结果。

C语言程序设计(科学出版社)第5章 课后习题参考答案

C语言程序设计(科学出版社)第5章 课后习题参考答案

第5章习题参考答案2填空题(1)32(2)4(3)str1[7]= '\0';(4)for(i=0;i<6;i++) gets(a[i]);(5)strcpy(web, "");(6)int *p=a;(7)5(8)1(9)*(p+6)或*(s+6)4程序阅读题(1)6(2)str(3)60(4)bcdefgacdefgabdefgabc(5)a1e25程序填空题(1)# include <math.h> scanf("%f", &a[i]) s=0; x=a[0] fabs(a[i]-s) (2)scanf("%d",&n) a[i][i]=1 a[i-1][j-1] printf("\n")(3)b[i]!='\0' strcpy puts(b)(4)p=a[0]; 或p=&a[0][0]; *p六、编程题1、使用数组和指针2种方法来处理。

方法一(使用数组)#include <stdio.h>void main(){ int i=0,a[10],t;printf("Enter the 10 number=\n");for(i=0; i<10; i++)scanf("%d",&a[i]);for(i=0;i<5;i++){ t=a[i];a[i]=a[9-i];a[9-i]=t;}for(i=0; i<10; i++)printf("%d ",a[i]);printf("\n");}方法二(使用指针)#include <stdio.h>void main(){ int i=0,a[10],t,*p,*q;printf("Enter the 10 number=\n");for(p=a; p<a+10; p++)scanf("%d",p);p=a;q=a+9;for(;p<q;p++,q--){ t=*p;*p=*q;*q=t;}for(p=a; p<a+10; p++)printf("%d ",*p);printf("\n");}2、方法一(使用数组)#include <stdio.h>main(){int i, j, t, n, a[11]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};for(i=0;i<10;i++)printf("%d ", a[i]);printf("\n");printf("Enter the Move n=?");scanf("%d", &n);for(i=1; i<=n; i++){t=a[10];for(j=9;j>=0;j--) a[j+1]=a[j];a[0]=t;}for(i=0; i<=10; i++)printf("%d ", a[i]);getch();}方法二(使用指针)#include <stdio.h>void main(){ int i,t, n, a[11]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10},*p=a;for(;p<a+11;p++)printf("%d ", *p);printf("\n");printf("Enter the Move n=?");scanf("%d", &n);for(i=1; i<=n; i++){p=a+10;t=*p;for(;p>a;p--) *p=*(p-1);*p=t;}for(p=a;p<a+11;p++)printf("%d ", *p);}3、#include <stdio.h>#include <stdlib.h>main(){int a[100], b[100], i, j, p, n=0, t;randomize();for(i=0; i<100; i++){a[i]=random(100);if(a[i]%2==0) b[n++]=a[i]; }for(i=0; i<n-1; i++){p=i;for(j=i+1; j<n; j++)if(b[j]>b[p]) p=j;t=b[p]; b[p]=b[i]; b[i]=t; }for(i=0; i<n; i++){printf("%d ", b[i]);if(i%10==9) printf("\n"); }getch();}4、#include <stdio.h>#include <stdlib.h>#define N 50main(){int a[N], i, j,p,t; randomize();for(i=0; i<N; i++){a[i]=random(100);for(j=0;j<i;j++)if(a[i]==a[j]){ i--;break;}}for(i=0; i<N-1; i++){p=i;for(j=i+1; j<N; j++)if(a[j]>a[p]) p=j;t=a[p]; a[p]=a[i]; a[i]=t;}for(i=0; i<N; i++){printf("%d ", a[i]);if(i%10==9) printf("\n");}}5、#include <stdio.h>#define N 10void main(){int i;float a[N],s=0.0,x0=0.0;for(i=0;i<N;i++){ scanf("%f",&a[i]);x0+=a[i];}x0/=N;for(i=0;i<N;i++)s+=(a[i]-x0)*(a[i]-x0);printf("%10.6f", s);}6、#define N 4#define M 3void main(){ int i,j,sum,a[N][M+1],max,p;printf("input score\n");for(i=0;i<N;i++) /*i代表学生序号*/{ sum=0; /*每位学生成绩输入前,其总成绩赋初值0*/ for(j=0;j<M;j++) /*j代表课程代号*/{ scanf("%d",&a[i][j]); /*输入第i号学生第j门课程的成绩*/ sum=sum+a[i][j]; /*累加求总成绩*/}a[i][M]=sum; /*求第i个学生的总成绩放到a[i][M]*/ }max=a[0][M];p=0;for(i=1;i<N;i++) /*查找总成绩最高的学生*/if(a[i][M]>max) p=i;printf("No.%d Total score:%d\n",p+1,a[p][M]);}7、#include <stdio.h>void main(){int a[5][6];int i, j, mi, mj;for(i=0; i<5; i++)for(j=0; j<6; j++){printf("input a[%d][%d]:", i, j);scanf("%d", &a[i][j]);}mi=0; mj=0;for(i=0; i<5; i++){for(j=0; j<6; j++){if(a[i][j]<a[mi][mj]) { mi=i; mj=j; }printf("%d ",a[i][j]);}printf("\n");}printf("min=%d ",a[mi][mj]);}8、#include <stdio.h>#include <math.h>void main(){float a[5][6];int i, j, max;printf("Enter array a=?\n" );for(i=0; i<5; i++)for(j=0; j<6; j++)scanf("%f", &a[i][j]);for(i=0; i<5; i++){ max=a[i][0];for(j=0; j<6; j++) /*查找第i行中绝对值最大的元素*/if(fabs(a[i][j])>fabs(max)) max=a[i][j];for(j=0; j<6; j++) /*第i行中所有元素除以绝对值最大的元素*/{ a[i][j]=a[i][j]/max;printf("%8.4", a[i][j]);}printf(" -----max =%8.4\n",max);}}9、#include <stdio.h>#include <string.h>#define N 20main(){char str[N][15],st[15],*p=st;int i, j;for(i=0; i<N; i++)scanf("%s", str[i]);for(i=0; i<N; i++)for(j=0; j<N-i-1; j++)if(strcmp(str[j],str[j+1])>0){strcpy(p,str[j]);strcpy(str[j],str[j+1]);strcpy(str[j+1],p);}for(i=0; i<N; i++)printf("%s\n", str[i]);}10、程序如下:#include <stdio.h>main(){int a[10], b[10], t;int n=0, m=0, i, j, f;printf("Input Array a, end with –1:");scanf("%d", &t);while(n<10 && t!=-1){ a[n++]=t; scanf("%d", &t); }printf("Input Array b, end with –1:");scanf("%d", &t);while(m<10 && t!=-1){ b[m++]=t; scanf("%d", &t); }for(i=0; i<n; i++) /* 打印只在数组a中出现的元素*/{f=1;for(j=0; j<m; j++)if(a[i]==b[j]) {f=0; break;}if(f) printf("%d", a[i]);}for(i=0; i<m; i++) /* 打印只在数组b中出现的元素*/{f=1;for(j=0; j<n; j++)if(b[i]==a[j]) {f=0; break;}if(f) printf("%d", b[i]);}}11、#include <stdio.h>main(){char str[81];int i=-1;printf("Input:");scanf("%s", str);while(++i<80 && str[i]!= '\0')if(str[i]== '$') str[i]= 'S';puts(str);}12、#include <stdio.h>void main(){ char x[80],y[26]; int i,j,ny=0;gets(x);for(i=0;x[i]!='\0';i++)if(x[i]>='A'&&x[i]<='Z') {for(j=0;j<ny;j++)if(y[j]==x[i]) break;if(j==ny) { y[ny]=x[i]; ny++; }}for(i=0;i<ny;i++)printf("%c ",y[i]);printf("\n");}13、#include <stdio.h>void main(){ int m, bin[32],j;scanf("%d",&m);for(j=0;m!=0;j++){bin[j]= m%2;m=m/2;}for(;j!=0;j--)printf("%d", bin[j-1] );}14、#include <stdio.h>#include <string.h>#include <ctype.h>void main(){ char s[80];int i=0;gets(s);while(s[i]!='\0')if(isdigit(s[i])) strcpy (s+i,s+i+1);else i++;puts(s);}15、void main(){int a,b,c;int *p1,*p2,*p3,*t;printf("\nPlease input three integers:\n"); scanf("%d,%d,%d",&a,&b,&c);p1=&a,p2=&b,p3=&c;if(*p1>*p2)t=p1,p1=p2,p2=t;if(*p1>*p3)t=p1,p1=p3,p3=t;if(*p2>*p3)t=p2,p2=p3,p3=t;printf("new order:\n");printf("%d,%d,%d",*p1,*p2,*p3);}16、void main(){char st[80],ss[20],sp[20],*a=st,*b=ss,*t=sp; int i,n,m,p=-1;printf("\nPlease input two string:\n");gets(a);gets(b);n=strlen(a);m=strlen(b);for(i=0;i<=n-m+1;i++){a=st+i;strncpy(t,a,m); /*将字符指针a指向的字符串取前m个字符复制到t所指的字符串中*/if(strcmp(b,t)==0){p=i;break;}}if(p==-1)printf("%d",p);elseprintf("%d",p+1); /*因数组下标从0开始,所以输出p+1*/getch();}17、#include <string.h>void main(){char st[80],*p=st,ch;printf("Enter a string\n");gets(p);while(*p!='\0'){ ch=*p;if(ch>='A' && ch<='Z')ch='A'+('Z'-ch);else if(ch>='a' && ch<='z')ch='a'+('z'-ch);*p=ch; /*转换后的字符替换原字符*/p++; /*指针指向下一个字符*/} /*指针指向字符串首字符*/p=st;puts(p);getch();}18、#include <string.h>void main(){char st[80],*p=st,ch;long k=0;printf("Enter a string\n");gets(p);strupr(p);while(*p!='\0'){ ch=*p;if(ch>='0' && ch<='9' || ch>='A' && ch<='F')p++;elsestrcpy(p,p+1); /*滤去所有的非十六进制字符*/ }p=st;while(*p!='\0') /*将十六制数转换成十进数*/{ ch=*p;if(ch>='0' && ch<='9' )k=16*k+(ch-'0');else if(ch>='A' && ch<='F')k=16*k+(10+ch-'A');p++;}printf("%ld\n",k);}。

C语言课后练习题答案第五章

C语言课后练习题答案第五章

作业四:简单程序设计1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。

如果字符串长度大于5,则输出按方式(B);如果字符串长度小于5,则输出按方式(C)。

(5分)(重要)A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出C) 右对齐输出该字符串,左补空格 D) 输出错误信息2.阅读以下程序,当输入数据的形式为:25,13,10<CR>(注:<CR>表示回车),则正确的输出结果为(D)。

(5分)main(){ int x,y,z;scanf(“%d%d%d”,&x,&y,&z);要和这里一样printf(“x+y+z=%d\n”,x+y+z);}A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定值3.根据下面的程序及数据的输入和输出形式,程序中输入数据的正确形式应该为(WXY)。

(5分)main(){ char ch1,ch2,ch3;scanf(“%c%c%c”,&ch1,&ch2,&ch3);printf(“%c%c%c”,ch1,ch2,ch3);}4.以下的输出结果是(x=1,y=2*sum*=310 Squard is : 100)。

(5分)main(){ int x=1,y=2;printf(“x=%d y=%d * sum * =%d\n”,x,y,x+y);printf(“10 Squared is : %d\n”,10*10);}5.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2 =’b’,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。

要求输出的结果如下:(20分)a= 3 b= 4 c= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3.6 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1=’a’ or 97(ascll)c2=’b’ or 98(ascll)main(){ int a=3,b=4,c=5;float x=1.2,y=2.4,z=-3.6;unsigned u=51274;long n=128765;char c1=’a’,c2=’b’;printf(“a=%d b=%d c=%d\n”,a,b,c);printf(“x=%f ,y=%f, z=%f\n”,x,y,z);printf(“x+y=%3.1f y+z=%.2f z+x=%.2f\n”,x+y,y+z,z+x); printf(“u=%u n=%9ld \n”,u,n);printf(“c1=’%c’or %d (asc11) \n”,c1,c1);printf(“c2=’%c’or %d (asc11) \n”,c2,c2);}6.请写出下面程序的输出结果。

大连理工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次(第七章函数)-题目与答案

第五次实验题目-第七章函数教学目标31.一元二次方程的系数:a、b、c由主函数输入,编写函数求方程的根。

#include <stdio.h>#include <math.h>void root(double a, double b, double c){ double delta,x1,x2,m,n;if (fabs(a) <= 1e-6){if (fabs(b) <= 1e-6)puts("Not an equation");elseprintf("x=%.2lf",-c/b);return;}else{delta=b*b - 4*a*c;m = -b / (2*a);n = sqrt(fabs(delta)) / (2*a);x1 = m + n;x2 = m - n;if (fabs(delta) <= 1e-6)printf("x1=%.2lf, x2=%.2lf", x1, x1);else if (delta < 0)printf("x1=%.2lf+%.2lfi, x2=%.2lf-%.2lfi",m,n,m,n);elseprintf("x1=%.2lf, x2=%.2lf", x1, x2);}}int main( ){ double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);root(a,b,c);return 0;}教学目标32.输入一串字符,统计其中英文字母的个数,编写统计英文字母个数的函数。

#include<stdio.h>int numberOfLetter(char str[]) {int i=0;int num = 0;//统计字母个数while (str[i]!=’\0’) {if ((str[i]>='A'&& str[i]<='Z')||( str[i]>='a'&& str[i]<='z')) num++;i++;}return num;}int main( ) {char str[100];int letterNum;printf("Enter a string: ");gets(str);letterNum = numberOfLetter(str);printf("Number of letters is %d.\n", letterNum);return 0;}教学目标33. 求100以内所有素数的和。

C语言第五章习题带答案

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语言学习与应用》课后习题及答案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语言程序设计实验五  参考答案
5-2、以下程序的功能:输出3—1000之间的素数。选择合适的内容填入空白处,并调试运行程序。
答案:
#include<stdio.h>
void main()
{
int i,j,num=0;
for(i=3;i<=1000;i++)
{
for(j=2;j<=1000;j++)
if(i%2==0)
break;
5-4从键盘输入一个整数n,计算2n+1与++n之和。要求计算两数之和用函数实现。
答案:
#include<stdio.h>
void main()
{
int a;
int sum(int n);
printf("input n:\n");
scanf("%d",&a);
sum(a);
}
int sum(int n)
if(i%2!=0)
{
printf("%5d",i);
num++;
if(num%10==0)
printf("\n");
}
}
printf("\n");
}
*************************************************************************************************************实验三*******************************************
c语言程序设计实验五参考答案实验解答实验五参考答案编程语言c语言吧c语言答案

新编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语言第五章习题及答案

第五章习题答案一、选择题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)8) 一下程序段中的变量已正确定义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 答案:D10)有以下程序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=9 11) 有以下程序#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语言第五章课后答案

C语言第五章课后答案
return 0;
}
xt5-5
#include <stdio.h>
int main()
{
int a,n,i=1,sn=0,tn=0;
printf("a,n=:");
scanf("%d,%d",&a,&n);
while (i<=n)
{
tn=tn+a; /*赋值后的tn为i个a组成数的值*/
sn=sn+tn; /*赋值后的sn为多项式前i项之和*/
if (n>8) printf(",%d",k9);
if (n>9) printf(",%d",k10);
printf("\n");
}
}
return 0;
}
xt5-9-2
#include <stdio.h>
int main()
{int m,s,i;
for (m=2;m<1000;m++)
{s=0;
for (i=1;i<m;i++)
count++; // count累加1
}
pi=pi*4; //多项式的和pi乘以4,才是π的近似值
printf("pi=%10.8f\n",pi); //输出π的近似值
printf("count=%d\n",count); //输出循环次数
return 0;
}
xt5-3
#include <stdio.h>
{x0=x1;
x1=(x0+a/x0)/2;

c语言程序设计第五版习题答案解析

c语言程序设计第五版习题答案解析

c语言程序设计第五版习题答案解析首先,值得指出的是,《C语言程序设计》是一本经典的编程教材,它通过系统性的介绍和练习,帮助读者掌握C语言编程的基本原理和技巧。

而针对这本书中的习题,我们将逐一进行解答和解析,以便读者更好地理解和掌握其中的知识。

1. 第一章:C语言概述在第一章中,主要介绍了C语言的历史背景、特点和发展。

对于习题的解答,我们可以通过提问的方式帮助读者思考和回顾所学内容,例如:“C语言为什么被广泛应用于系统软件开发?”、“C语言的起源是什么?”2. 第二章:数据类型、运算符和表达式在第二章中,主要介绍C语言中的数据类型、运算符和表达式。

习题部分则涵盖了类型转换、算术运算、逻辑运算等内容。

针对这些习题,我们可以给出详细的解答步骤和原理解析,让读者了解C语言中各种运算符的优先级和使用规则。

3. 第三章:控制结构第三章主要介绍了C语言中的分支结构和循环结构。

针对习题部分,我们可以详细解答条件语句、循环语句的使用和注意事项,同时提供一些实际例子和应用场景,让读者更好地理解和掌握这些知识点。

4. 第四章:函数与程序结构在第四章中,重点介绍了函数的定义、调用和参数传递等。

针对习题,我们可以通过编写代码的方式,给出函数的实际应用案例,并解释其中的关键代码部分,帮助读者理解函数的作用和使用方法。

5. 第五章:指针与数组第五章主要介绍了C语言中指针和数组的概念和用法。

对于习题解答,我们可以给出指针和数组的定义、操作方法,并通过实例演示指针和数组在实际编程中的应用。

6. 第六章:字符输入输出第六章主要讲解了C语言中字符输入输出的函数和特点。

在解答习题时,我们可以提供一些常见的字符输入输出问题,并给出详细的解决思路和代码示例。

7. 第七章:类型第七章主要介绍了C语言中的类型定义和使用。

对于习题解答,我们可以通过解析代码和理论知识的结合,帮助读者理解类型的定义和使用场景。

8. 第八章:运算符和表达式在第八章中,主要介绍了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语言程序设计》教材习题答案第5章

《C语言程序设计》教材习题答案第5章

《C语言程序设计》教材习题答案第5章一、选择题1.设有程序段”int k=10;while(k=0)k=k-1;”,则下面叙述正确的是D 循环体语句一次也不执行2.设有程序段”int x=0,s=0;while(!x!=0)s+=++x;printf(“%d”,s);”则A 运行程序段后输出13.若有语句”int x=3;do{printf(“%d\n”,x-=2);}while(!(--x));”,则该程序段C 输出的是1和-24.下面循环语句中,错误的是D int a=1,b=2;do b--while(b= =0);5.已知”int i=5;”,下列do…while循环语句的循环次数为C 5do{printf(“%d\n”,i--);}while(i!=0);6.循环语句”for(int i=0,j=10;i=j=10;i++,j--)”的循环次数是D 无限7.循环语句”while(int i=0;)i--;”的循环次数是A 08.下述有关break语句的描述中,不正确的是C break语句用于if 语句的内嵌语句内,它结束该if语句9.下面关于循环语句的描述中,错误的是B 循环体内必须同时出现break语句和continue语句10.以下不是死循环的是 D for(;(c=getchar()!=’\n’);)printf(“%c”,c);11.执行语句”for(i=0;i++<3;);”后,变量i的值为C 412.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C 循环4次13.与语句”while(!x);”等价的语句是A while(x= =0);14.执行下列程序段后a的值为B 2int a=1,b=10;do{b-=a;a++;}while(b--<0)二、编程题1.读入用户输入的6个整数并显示其平均值。

#includemain(){float sum=0;int tmp;int i;for(i=0;i<6;i++){printf("输入第%d个数:",i+1);scanf("%d",&tmp);sum=sum+tmp;}printf("平均值是:%f",sum/6);}2.先读入一个正整数n,然后计算并显示前n个偶数的和。

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语言 大学 第5章课后答案

c语言 大学 第5章课后答案

第5章数组大家在前面的章节中已经碰到过这样的例子:求两个整数中的较小的那个,或者求三个整数中的最小数。

那么大家想一下,如果题目中要求大家找出10个整数中的最小数呢,甚至100个整数中的最小数呢?在计算机应用领域中,也常常遇到这类处理大量数据的问题,其特点也是:数据量很大,数据之间存在一定的内在关系。

那么,对于这样的一组数据,计算机如果用前面讲过的简单变量来处理就很不方便,甚至不能处理。

考虑上面的求出10个整数中的最小数,先要设10个变量a1,a2,a3……a10,然后这10个变量之间又要相互比较,求出最小数。

显然是非常麻烦,要是成千上万个数据,是不是还要设一万个变量呢?为了解决这一问题,C语言引入了一个重要的数据结构——数组,它是具有相同数据类型的变量集合,这些变量具有相同的名字,但用不同的下标表明数据的位置,我们称这些变量为数组元素。

将数组与循环结合起来,可以有效地处理大批量的数据,大大提高了工作效率,十分方便。

本章介绍在C语言中怎样定义和使用数组,包括一维数组,二维数组和字符串。

5.1一维数组5.1.1一维数组的定义和引用例5-1要求从键盘中输入10个互不相同的整数,求其中的最小数并输出。

10 #include "stdio.h"20 main()30 {40 int a[10]; /*定义数组a*/50 int i,min; /*定义变量i和min*/60 for(i=0;i<=9;i++) /*循环10次*/70 scanf("%d",&a[i]); /*从键盘输入数给数组元素赋值*/80 for(i=0;i<=9;i++) /*循环10次*/90 printf("%d\t",a[i]); /*输出数组元素的值*/100 min=a[0]; /*给min变量赋初值*/110 for(i=1;i<=9;i++) /*循环9次*/120 if(min>a[i])130 min=a[i]; /*比较min与数组中的每个数的大小,将较小的赋给min */140 printf("The min is %d\n",min); /*输出最小值*/ 150 }该程序的流程图如图5-1所示。

C语言实验报告实验五参考答案

C语言实验报告实验五参考答案

C语言实验报告实验五参考答案实验五一维数值数组(参考答案)1、设计程序sy5-1.c,计算n门课程的平均分。

例如:若有5门课程的成绩是:90.5.72.80.61.5.55,则平均分是:71.80.算法分析:先求n门课的成绩总和,(累加求和),再用累和除以课程数。

参考答案:includevoid main()double score[30]。

sum=0,aver;int n,i;printf("Inputn:");scanf("%d",&n);printf("请依次输入%d门课程的成绩",n);for(i=0;i<n;i++)scanf("%lf",&score[i]);sum=sum+score[i];aver=sum/n;printf( "\nAverage scoreis: %5.2f\n"。

aver);运行结果:2、设计步伐sy5-2.c,对输入的10个整数按倒序寄存后输出成效。

算法阐发:利用“半数交流”算法,最前面的元素和末了面的元素交流,逐步向中央挨近。

可利用两个下标变量i和XXX。

参考答案:includeint main()int a[10]={1,2,3,4,5,6,7,8,9,10};int i,j,t;for( i=0,j=9.i<j。

i++,j--)//逐一向中,交换。

直到已没有元素没交换t=a[i]。

a[i]=a[j]。

a[j]=t;}// a[i]-数组前端的数,a[j]-数组后端的数printf("交流后数组元素是:");for(i=0;i<10;i++)printf("%5d",a[i]);//%5d,5透露表现宽度printf("\n");//输出完所有的数后换行return 0;运行结果:3、设计程序sy5-3.c,输入10个整数,找出其中的最大数及其所在的下标。

C语言第五六次作业

C语言第五六次作业

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

C语言第5次作业及答案
1:[论述题]8,已知公鸡每只5元,母鸡每只3元,小鸡一元3只,现有100元买鸡100只,问其中公鸡、母鸡、小鸡各多少只?编程求解。

参考答案:8,提示:此题与上题类似,实际是求一个不定方程组,令公鸡有x只,母鸡
有y只,小鸡z只,进行C语言求解。

此题还有另外一些限制:只有100元,所以公鸡不超过20只,母鸡不超过33只。

考虑这些限制可以提高程序运行效率
#include
void main()
{
int x,y,z,j=0;
printf("Folleing are possible plans to buy 100 fowls with 100 Yuan.\n");
for(x=0;x<=20;x++) /*外层循环控制鸡翁数*/
for(y=0;y<=33;y++) /*内层循环控制鸡母数y在0~33变化*/
{
z=100-x-y; /*内外层循环控制下,鸡雏数z的值受x,y的值的制约*/
if(z%3==0&&5*x+3*y+z/3==100)
/*验证取z值的合理性及得到一组解的合理性*/ printf("%2d:cock=%2d hen=%2d chicken=%2d\n",++j,x,y,z);
}
}
2:[论述题]7,一个笼子中有鸡兔各若干只,已知共有50只脚,20张嘴,问笼中各有鸡多少只,兔多少只?编程实现求解。

参考答案:7、提示:有嘴20张,有脚50只,考虑鸡有2只脚,兔有4只脚,鸡兔都只有一
张嘴,此题实际是计算一个二元一次方程组(令鸡有x只,兔有y只)
main()
{
int x,y;
for(x=1;x<20;x++)
{
y=20-x;
if(2*x+4*y==50)
printf("there are %d hens and %d rabbits\n”,x,y);
}
}
3:[论述题]6,统计用户输入的10个正自然数中有多少偶数。

参考答案:6、提示:用户输入的数用数组存放,用数组元素对2求模,为0则为偶数,统
计出偶数个数即可
main()
{
int a[10],n=0,i;
for(i=0;i<10;i++)
scanf("%d”,&a[i]);
for(i=0;i<10;i++)
if(a[i]%2==0)
n++;
printf("%d”,n);
}
4:[论述题]5,编写程序求得一维数组中的最大最小数,一维数组的值由用户输入。

参考答案:5、提示:使得一个变量max等于数组的第一个元素,然后把max依次和其
他元素进行比较,若max比某个元素小,则使max为此元素值,求得数组中最大数,最小数类似
main()
{
int a[10],max,min,i;
for(i=0;i<10;i++)
scanf("%d”,&a[i]);
max=min=a[0];
for(i=0;i<10;i++)
{
if(max
max=a[i];
else if(min>a[i])
min=a[i];
}
p irntf("max=%d,min=%d”,max,min);
}
5:[论述题]3,编写一个程序,使得该程序能够由用户输入一个数,并根据该用户输入的数值输出相应行数和列数的"*”。

(如,用户输入5,则输出5行,每行5个"*”)
参考答案:3,比较与第3题的区别后参照第3题编写实现
6:[论述题]2,编写程序,使用三种循环语句实现以下输出(*之间有一个空格):
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
参考答案:2、提示:使用循环嵌套可以实现。

第一层循环用于每行的输出,第二层循环
用于控制每行输出的"*”的个数,注意两层循环的标志量不能是相同的。

提供一种参考
main()
{
int n,j;
for(n=0;n<7;n++)
{
for(j=0;j<=n;j++)
printf("* ");
printf("\n”);
}
}
7:[论述题]1.编写一个程序,使得可以根据用户输入数值求下列分段函数的值。

(1) 当x<0时,y=-x;
(2) 当x>10时,y=3x+5;
(3) 当x为其他值时, y=2x-1。

参考答案:1、对于分段函数,使用if-else语句分情况求值即可
main()
{
int y,x;
scanf("%d”,&x);
if (x<0)
y=-x;
else if (x<=10)
y=2*x-1;
else
y=3*x+5;
}。

相关文档
最新文档