《C语言程序设计》(江宝钏著)实验七答案复习进程

合集下载

《C语言程序设计》课件 《C语言程序设计》参考答案

《C语言程序设计》课件 《C语言程序设计》参考答案

《C语言程序设计》教材参考答案包括各单元:一.随堂练习二.本章自测第1章一.随堂练习【随堂练习1-1】1.根据上述示例模仿编程,输入正方形的边长,计算其面积。

#include <stdio.h>void main( ){ int a,s; //数据准备,边长a,面积sprintf("请输入正方形的边长:");scanf("%d",&a); //数据输入s=a*a; //数据计算printf("该正方形的面积为:%d.\n",s);}【随堂练习1-2】1.下面哪些标识符属于合法的用户自定义标识符:Main、void、_num、my$、a*、N4、3m、a-2答:合法的用户自定义标识符是:Main、_num、N42.结合【例1.2】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。

答:关键字:void、int预定义标识符:include、main、printf、scanf用户自定义标识符:a、b、c3.分析【例1.2】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函数体语句(说明语句、可执行语句)。

答:函数首部:void main( ),其中函数返回值类型为void、函数名为main、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c;,其余为可执行语句。

【随堂练习1-3】1.在VC++6.0环境中完成【例1.2】程序开发过程。

(略)2.查阅【例1.2】所对应的工程文件夹,了解相关文件的含义。

工程文件夹中:.CPP:用C/C++语言编写的源代码文件。

.DSP:VC开发环境生成的工程文件,VC4及以前版本使用MAK文件来定义工程。

项目文件,文本格式。

.DSW:VC开发环境生成的WorkSpace文件,用来把多个工程组织到一个WorkSpace中。

(完整版)《C语言程序设计》课后习题答案(第四版)谭浩强(可编辑修改word版)

(完整版)《C语言程序设计》课后习题答案(第四版)谭浩强(可编辑修改word版)

// 一次存 5 年期 // 先存 2 年期,到期后将本息再存 3 年期 // 先存 3 年期,到期后将本息再存 2 年期 // 存 1 年期,到期后将本息存再存 1 年期,连续存 5 次 // 存活期存款。活期利息每一季度结算一次
// 输出按第 1 方案得到的本息和 // 输出按第 2 方案得到的本息和 // 输出按第 3 方案得到的本息和 // 输出按第 4 方案得到的本息和 // 输出按第 5 方案得到的本息和
s=r*r*pi; sq=4*pi*r*r; vq=3.0/4.0*pi*r*r*r; vz=pi*r*r*h; printf("圆周长为: printf("圆面积为: printf("圆球表面积为: printf("圆球体积为: printf("圆柱体积为: return 0; }
//计算圆面积 s //计算圆球表面积 sq //计算圆球体积 vq //计算圆柱体积 vz l=%6.2f\n",l); s=%6.2f\n",s); sq=%6.2f\n",sq); v=%6.2f\n",vq); vz=%6.2f\n",vz);
3-2-2 #include <stdio.h> #include <math.h> int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072;
3-8 #include <stdio.h> int main() { char c1,c2; printf("请输入两个字符 c1,c2:"); c1=getchar(); c2=getchar(); printf("用 putchar 语句输出结果为:"); putchar(c1); putchar(c2); printf("\n"); printf("用 printf 语句输出结果为:"); ห้องสมุดไป่ตู้rintf("%c %c\n",c1,c2); return 0; }

《C语言程序设计》课后习题答案第四版谭浩强

《C语言程序设计》课后习题答案第四版谭浩强

第1章程序设计和C语言1什么是计算机程序1什么是计算机语言1语言的发展及其特点3最简单的C语言程序5最简单的C语言程序举例6语言程序的结构10运行C程序的步骤与方法12程序设计的任务141-5 #include <>int main ( ){ printf ("**************************\n\n"); printf(" Very Good!\n\n");printf ("**************************\n"); return 0;}1-6#include <>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂16什么是算法16简单的算法举例17算法的特性21怎样表示一个算法22用自然语言表示算法22用流程图表示算法22三种基本结构和改进的流程图26用N S流程图表示算法28用伪代码表示算法31用计算机语言表示算法32结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 顺序程序设计举例37数据的表现形式及其运算39常量和变量39数据类型42整型数据44字符型数据47浮点型数据49怎样确定常量的类型51运算符和表达式52语句57语句的作用和分类57最基本的语句——赋值语句59数据的输入输出65输入输出举例65有关数据输入输出的概念67用printf函数输出数据68用scanf函数输入数据75字符数据的输入输出78习题823-1 #include <>#include <>int main(){float p,r,n;r=;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <>#include <>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;r5=;r3=;r2=;r1=;r0=;p1=p*((1+r5)*5); #include <> #include <>int main(){float d=300000,p=6000,r=,m;m=log10(p/(p-d*r))/log10(1+r);printf("m=%\n",m);return 0;}3-4#include <>int main(){int c1,c2;c1=197;c2=198;printf("c1=%c,c2=%c\n",c1,c2);printf("c1=%d,c2=%d\n",c1,c2);return 0;}3-5#include <>int main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf("%f %e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); return 0;}3-6#include <>int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);return 0;}3-7#include <>int main (){float h,r,l,s,sq,vq,vz;float pi=;printf("请输入圆半径r,圆柱高h∶");scanf("%f,%f",&r,&h); #include <>int main(){ int x,y;printf("输入x:");scanf("%d",&x);if(x<1) /* x<1 */{ y=x;printf("x=%3d, y=x=%d\n" ,x,y);}else if(x<10) /* 1=<x<10 */ { y=2*x-1;printf("x=%d, y=2*x-1=%d\n",x,y);}else /* x>=10 */{ y=3*x-11;printf("x=%d, y=3*x-11=%d\n",x,y);}return 0;}4-7-1#include <>int main(){int x,y;printf("enter x:");scanf("%d",&x);y=-1;if(x!=0)if(x>0)y=1;elsey=0;printf("x=%d,y=%d\n",x,y);return 0;}4-7-2#include <>int main(){int x,y;printf("please enter x:");scanf("%d",&x);y=0;if(x>=0)if(x>0) y=1;else y=-1;printf("x=%d,y=%d\n",x,y);return 0;}4-8#include <>int main(){ float score;char grade;printf("请输入学生成绩:");scanf("%f",&score);while (score>100||score<0){printf("\n 输入有误,请重输");scanf("%f",&score);}switch((int)(score/10)){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0: grade='E';}printf("成绩是 %,相应的等级是%c\n ",score,grade);return 0;}4-9#include <>#include <>int main(){int num,indiv,ten,hundred,thousand,ten_thousand,place; .=%d\n",sn); return 0;}5-6#include <>int main(){double s=0,t=1;int n;for (n=1;n<=20;n++){t=t*n;s=s+t;}printf("1!+2!+...+20!=%\n",s);return 0;}5-7#include <>int main(){int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for (k=1;k<=n1;k++) /*计算1到100的和*/{s1=s1+k;}for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/ {s2=s2+k*k;}for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/ {s3=s3+1/k;}printf("sum=%\n",s1+s2+s3);return 0;}5-8#include <>int main(){int i,j,k,n;printf("parcissus numbers are ");for (n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if (n==i*i*i + j*j*j + k*k*k)printf("%d ",n);}printf("\n");return 0;}5-9-1#define M 1000 /*定义寻找范围*/#include <>int main(){int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;for (a=2;a<=M;a++) /* a是2-1000之间的整数,检查它是否完数 */{n=0; /* n用来累计a的因子的个数 */s=a; /* s用来存放尚未求出的因子之和,开始时等于a */for (i=1;i<a;i++) /* 检查i是否a的因子 */if (a%i==0) /* 如果i是a的因子 */{n++; /* n加1,表示新找到一个因子 */s=s-i; /* s减去已找到的因子,s的新值是尚未求出的因子之和 */ switch(n) /* 将找到的因子赋给k1...k9,或k10 */{case 1:k1=i; break; /* 找出的笫1个因子赋给k1 */case 2:k2=i; break; /* 找出的笫2个因子赋给k2 */case 3:k3=i; break; /* 找出的笫3个因子赋给k3 */case 4:k4=i; break; /* 找出的笫4个因子赋给k4 */case 5:k5=i; break; /* 找出的笫5个因子赋给k5 */case 6:k6=i; break; /* 找出的笫6个因子赋给k6 */case 7:k7=i; break; /* 找出的笫7个因子赋给k7 */case 8:k8=i; break; /* 找出的笫8个因子赋给k8 */case 9:k9=i; break; /*找出的笫9个因子赋给k9 */case 10:k10=i; break; /* 找出的笫10个因子赋给k10 */}}if (s==0){printf("%d ,Its factors are ",a);if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2个因子 */if (n>2) printf(",%d",k3); /* n>2表示至少有3个因子,故应再输出一个因子 */if (n>3) printf(",%d",k4); /* n>3表示至少有4个因子,故应再输出一个因子 */if (n>4) printf(",%d",k5); /* 以下类似 */if (n>5) printf(",%d",k6);if (n>6) printf(",%d",k7);if (n>7) printf(",%d",k8);if (n>8) printf(",%d",k9);if (n>9) printf(",%d",k10);printf("\n");}}return 0;}5-9-2#include <>int main(){int m,s,i;for (m=2;m<1000;m++){s=0;for (i=1;i<m;i++)if ((m%i)==0) s=s+i;if(s==m){printf("%d,its factors are ",m);for (i=1;i<m;i++)if (m%i==0) printf("%d ",i);printf("\n");}}return 0;}5-10#include <>int main(){int i,n=20;double a=2,b=1,s=0,t;for (i=1;i<=n;i++){s=s+a/b;t=a,a=a+b,b=t;}printf("sum=%\n",s);return 0;}5-11#include <>int main(){double sn=100,hn=sn/2;int n;for (n=2;n<=10;n++){sn=sn+2*hn; /*第n次落地时共经过的米数*/hn=hn/2; /*第n次反跳高度*/}printf("第10次落地时共经过%f米\n",sn);printf("第10次反弹%f米\n",hn);return 0;}5-12#include <>int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1;day--;}printf("total=%d\n",x1);return 0;}5-13#include <>#include <>int main(){float a,x0,x1;printf("enter a positive number:");scanf("%f",&a);x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);printf("The square root of % is %\n",a,x1); return 0;}5-14#include <>#include <>int main(){double x1,x0,f,f1;x1=;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("The root of equation is %\n",x1);return 0;}5-15#include <>#include <>int main(){float x0,x1,x2,fx0,fx1,fx2;do{printf("enter x1 & x2:");scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6;if ((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}}while(fabs (fx0)>=1e-5);printf("x=%\n",x0);return 0;}5-16#include <>int main(){int i,j,k;for (i=0;i<=3;i++){for (j=0;j<=2-i;j++)printf(" ");for (k=0;k<=2*i;k++)printf("*");printf("\n");}for (i=0;i<=2;i++){for (j=0;j<=i;j++)printf(" ");for (k=0;k<=4-2*i;k++)printf("*");printf("\n");}return 0;}5-17#include <>int main(){char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/for (i='x';i<='z';i++)for (j='x';j<='z';j++)if (i!=j)for (k='x';k<='z';k++)if (i!=k && j!=k)if (i!='x' && k!='x' && k!='z')printf("A--%c\nB--%c\nC--%c\n",i,j,k); return 0;}第6章利用数组处理批量数据142怎样定义和引用一维数组142怎样定义一维数组143怎样引用一维数组元素144一维数组的初始化145一维数组程序举例146怎样定义和引用二维数组148怎样定义二维数组149怎样引用二维数组的元素150二维数组的初始化151二维数组程序举例152字符数组154怎样定义字符数组154字符数组的初始化155怎样引用字符数组中的元素155字符串和字符串结束标志156字符数组的输入输出159使用字符串处理函数161字符数组应用举例165习题1686-1#include <>#include <>int main(){int i,j,n,a[101];for (i=1;i<=100;i++)a[i]=i;a[1]=0;for (i=2;i<sqrt(100);i++)for (j=i+1;j<=100;j++){if(a[i]!=0 && a[j]!=0)if (a[j]%a[i]==0)a[j]=0;}printf("\n");for (i=2,n=0;i<=100;i++){ if(a[i]!=0){printf("%5d",a[i]);n++;}if(n==10){printf("\n");n=0;}}printf("\n");return 0;}6-2#include <>int main(){int i,j,min,temp,a[11];printf("enter data:\n");for (i=1;i<=10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);}printf("\n");printf("The orginal numbers:\n"); for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");for (i=1;i<=9;i++){min=i;for (j=i+1;j<=10;j++)if (a[min]>a[j]) min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");return 0;}6-3#include <>int main(){int a[3][3],sum=0;int i,j;printf("enter data:\n");for (i=0;i<3;i++)for (j=0;j<3;j++)scanf("%3d",&a[i][j]);for (i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%6d\n",sum);return 0;}6-4#include <>int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j;printf("array a:\n");for (i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("insert data:");scanf("%d",&number);end=a[9];if (number>end)a[10]=number;else{for (i=0;i<10;i++){if (a[i]>number){temp1=a[i];a[i]=number;for (j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}printf("Now array a:\n");for (i=0;i<11;i++)printf("%5d",a[i]);printf("\n");return 0;}6-5#include <>#define N 5int main(){ int a[N],i,temp;printf("enter array a:\n");for (i=0;i<N;i++)scanf("%d",&a[i]);printf("array a:\n");for (i=0;i<N;i++)printf("%4d",a[i]);for (i=0;i<N/2;i++) n",number);;printf("continu or not(Y/N)");scanf(" %c",&c);if (c=='N'||c=='n')flag=0;}return 0;}6-10#include <>int main(){int i,j,upp,low,dig,spa,oth;char text[3][80];upp=low=dig=spa=oth=0;for (i=0;i<3;i++){ printf("please input line %d:\n",i+1);gets(text[i]);for (j=0;j<80 && text[i][j]!='\0';j++){if (text[i][j]>='A'&& text[i][j]<='Z') upp++;else if (text[i][j]>='a' && text[i][j]<='z')low++;else if (text[i][j]>='0' && text[i][j]<='9') dig++;else if (text[i][j]==' ')spa++;elseoth++;}}printf("\nupper case: %d\n",upp);printf("lower case: %d\n",low);printf("digit : %d\n",dig);printf("space : %d\n",spa);printf("other : %d\n",oth);return 0;}6-11#include <>int main(){ char a[5]={'*','*','*','*','*'};int i,j,k;char space=' ';for (i=0;i<5;i++){ printf("\n");printf(" ");for (j=1;j<=i;j++)printf("%c",space);for (k=0;k<5;k++)printf("%c",a[k]);}printf("\n");return 0;}6-12a-c#include <>int main(){ int j,n;char ch[80],tran[80];printf("input cipher code:");gets(ch);printf("\ncipher code :%s",ch);j=0;while (ch[j]!='\0'){ if ((ch[j]>='A') && (ch[j]<='Z'))tran[j]=155-ch[j];else if ((ch[j]>='a') && (ch[j]<='z')) tran[j]=219-ch[j];elsetran[j]=ch[j];j++;}n=j;printf("\noriginal text:");for (j=0;j<n;j++)putchar(tran[j]);printf("\n");return 0;}6-12b#include <>int main(){int j,n;char ch[80];printf("input cipher code:\n");gets(ch);printf("\ncipher code:%s\n",ch);j=0;while (ch[j]!='\0'){ if ((ch[j]>='A') && (ch[j]<='Z'))ch[j]=155-ch[j];else if ((ch[j]>='a') && (ch[j]<='z')) ch[j]=219-ch[j];elsech[j]=ch[j];j++;}n=j;printf("original text:");for (j=0;j<n;j++)putchar(ch[j]);printf("\n");return 0;}6-13#include <>int main(){ char s1[80],s2[40];int i=0,j=0;printf("input string1:");scanf("%s",s1);printf("input string2:");scanf("%s",s2);while (s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("\nThe new string is:%s\n",s1);return 0;}6-14#include <>int main(){ int i,resu;char s1[100],s2[100];printf("input string1:");gets(s1);printf("\ninput string2:");gets(s2);i=0;while ((s1[i]==s2[i]) && (s1[i]!='\0'))i++; if (s1[i]=='\0' && s2[i]=='\0')resu=0;elseresu=s1[i]-s2[i];printf("\nresult:%d.\n",resu);return 0;}6-15#include <>#include <>int main(){ char s1[80],s2[80];int i;printf("input s2:");scanf("%s",s2);for (i=0;i<=strlen(s2);i++)s1[i]=s2[i];printf("s1:%s\n",s1);return 0;}第7章用函数实现模块化程序设计170 为什么要用函数170怎样定义函数172为什么要定义函数172定义函数的方法173调用函数174函数调用的形式174函数调用时的数据传递175函数调用的过程177函数的返回值178对被调用函数的声明和函数原型179 函数的嵌套调用182函数的递归调用184数组作为函数参数192数组元素作函数实参193数组名作函数参数194多维数组名作函数参数197局部变量和全局变量199局部变量199全局变量200变量的存储方式和生存期204动态存储方式与静态存储方式204局部变量的存储类别205全局变量的存储类别208存储类别小结212关于变量的声明和定义214内部函数和外部函数215内部函数215外部函数215习题2187-1-1#include <>int main(){int hcf(int,int);int lcd(int,int,int); int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("",h);l=lcd(u,v,h);printf("",l);return 0;}int hcf(int u,int v){int t,r;if (v>u){t=u;u=v;v=t;}while ((r=u%v)!=0){u=v;v=r;}return(v);}int lcd(int u,int v,int h) {return(u*v/h);}7-1-2#include <>int Hcf,Lcd;int main(){void hcf(int,int);void lcd(int,int);int u,v;scanf("%d,%d",&u,&v);hcf(u,v);lcd(u,v);printf("",Hcf);printf("",Lcd);return 0;}void hcf(int u,int v){int t,r;if (v>u){t=u;u=v;v=t;}while ((r=u%v)!=0){u=v;v=r;}Hcf=v;}void lcd(int u,int v){Lcd=u*v/Hcf;}7-2#include <>#include <>float x1,x2,disc,p,q;int main(){void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;printf("input a,b,c:");scanf("%f,%f,%f",&a,&b,&c);printf("equation: %*x*x+%*x+%=0\n",a,b,c); disc=b*b-4*a*c;printf("root:\n");if (disc>0){greater_than_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}else if (disc==0){equal_to_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}else{smaller_than_zero(a,b);printf("x1=%f+%fi\tx2=%f-%fi\n",p,q,p,q);}return 0;}void greater_than_zero(float a,float b) {x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}void equal_to_zero(float a,float b){x1=x2=(-b)/(2*a);}void smaller_than_zero(float a,float b) {p=-b/(2*a);q=sqrt(-disc)/(2*a);}7-3#include <>int main(){int prime(int);int n;printf("input an integer:");scanf("%d",&n);if (prime(n))printf("%d is a prime.\n",n);elseprintf("%d is not a prime.\n",n); return 0;}int prime(int n){int flag=1,i;for (i=2;i<n/2 && flag==1;i++)if (n%i==0)flag=0;return(flag);}7-4#include <>#define N 3int array[N][N];int main(){ void convert(int array[][3]); int i,j;printf("input array:\n");for (i=0;i<N;i++)for (j=0;j<N;j++)scanf("%d",&array[i][j]); printf("\noriginal array :\n"); for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%5d",array[i][j]); printf("\n");}convert(array);printf("convert array:\n");for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%5d",array[i][j]); printf("\n");}return 0;}void convert(int array[][3]) {int i,j,t;for (i=0;i<N;i++)for (j=i+1;j<N;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}#include <>#include <>int main(){void inverse(char str[]);char str[100];printf("input string:");scanf("%s",str);inverse(str);printf("inverse string:%s\n",str);return 0;}void inverse(char str[]){char t;int i,j;for (i=0,j=strlen(str);i<(strlen(str)/2);i++,j--){t=str[i];str[i]=str[j-1];str[j-1]=t;}}7-6#include <>int main(){void concatenate(char string1[],char string2[],char string[]); char s1[100],s2[100],s[100];printf("input string1:");scanf("%s",s1);printf("input string2:");scanf("%s",s2);concatenate(s1,s2,s);printf("\nThe new string is %s\n",s);return 0;}void concatenate(char string1[],char string2[],char string[]) {int i,j;for (i=0;string1[i]!='\0';i++)string[i]=string1[i];for(j=0;string2[j]!='\0';j++)string[i+j]=string2[j];string[i+j]='\0';}7-7#include <>int main(){void cpy(char [],char []);char str[80],c[80];printf("input string:");gets(str);cpy(str,c);printf("The vowel letters are:%s\n",c);return 0;}void cpy(char s[],char c[]){ int i,j;for (i=0,j=0;s[i]!='\0';i++)if (s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'|| s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U'){c[j]=s[i];j++;}c[j]='\0';}7-8#include <>#include <>int main(){char str[80];void insert(char []);printf("input four digits:");scanf("%s",str);insert(str);return 0;}void insert(char str[]){int i;for (i=strlen(str);i>0;i--){str[2*i]=str[i];str[2*i-1]=' ';}printf("output:\n%s\n",str);7-9#include <>int letter,digit,space,others;int main(){void count(char []);char text[80];printf("input string:\n");gets(text);printf("string:");puts(text);letter=0;digit=0;space=0;others=0;count(text);printf("\nletter:%d\ndigit:%d\nspace:%d\nothers:%d\n",letter,digit,space,others );return 0;}void count(char str[]){int i;for (i=0;str[i]!='\0';i++)if ((str[i]>='a'&& str[i]<='z')||(str[i]>='A' && str[i]<='Z'))letter++;else if (str[i]>='0' && str [i]<='9')digit++;else if (str[i]==32)space++;elseothers++;}7-10#include <>#include <>int main(){int alphabetic(char);int longest(char []);int i;char line[100];printf("input one line:\n");gets(line);printf("The longest word is :");for (i=longest(line);alphabetic(line[i]);i++) printf("%c",line[i]);printf("\n");return 0;}int alphabetic(char c){if ((c>='a' && c<='z')||(c>='A'&&c<='z'))return(1);elsereturn(0);}int longest(char string[]){int len=0,i,length=0,flag=1,place=0,point;for (i=0;i<=strlen(string);i++)if (alphabetic(string[i]))if (flag){point=i;flag=0;}elselen++;else{flag=1;if (len>=length){length=len;place=point;len=0;}}return(place);}7-11#include <>#include <>#define N 10char str[N];int main(){void sort(char []);int i,flag;for (flag=1;flag==1;){printf("input string:\n");scanf("%s",&str);if (strlen(str)>N)printf("string too long,input again!"); elseflag=0;}sort(str);printf("string sorted:\n");for (i=0;i<N;i++)printf("%c",str[i]);printf("\n");return 0;}void sort(char str[]){int i,j;char t;for(j=1;j<N;j++)for (i=0;(i<N-j)&&(str[i]!='\0');i++)if(str[i]>str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}}7-12#include <>#include <>int main(){float solut(float a,float b,float c,float d); float a,b,c,d;printf("input a,b,c,d:");scanf("%f,%f,%f,%f",&a,&b,&c,&d);printf("x=%\n",solut(a,b,c,d));return 0;}float solut(float a,float b,float c,float d){float x=1,x0,f,f1;do{x0=x;f=((a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;}while(fabs(x-x0)>=1e-3);return(x);}7-13#include <>#define N 10#define M 5float score[N][M];float a_stu[N],a_cour[M];int r,c;int main(){ int i,j;float h;float s_var(void);float highest();void input_stu(void);void aver_stu(void);void aver_cour(void);input_stu();aver_stu();aver_cour();printf("\n NO. cour1 cour2 cour3 cour4 cour5 aver\n"); for(i=0;i<N;i++){printf("\n NO %2d ",i+1);for(j=0;j<M;j++)printf("%",score[i][j]);printf("%\n",a_stu[i]);}printf("\naverage:");for (j=0;j<M;j++)printf("%",a_cour[j]);printf("\n");h=highest();printf("highest:% NO. %2d course %2d\n",h,r,c);printf("variance %\n",s_var());return 0;}void input_stu(void){int i,j;for (i=0;i<N;i++){printf("\ninput score of student%2d:\n",i+1); for (j=0;j<M;j++)scanf("%f",&score[i][j]);}}void aver_stu(void){int i,j;float s;for (i=0;i<N;i++){for (j=0,s=0;j<M;j++)s+=score[i][j];a_stu[i]=s/;}}void aver_cour(void){int i,j;float s;for (j=0;j<M;j++){s=0;for (i=0;i<N;i++)s+=score[i][j];a_cour[j]=s/(float)N;}}float highest(){float high;int i,j;high=score[0][0];for (i=0;i<N;i++)for (j=0;j<M;j++)if (score[i][j]>high){high=score[i][j];r=i+1;c=j+1;}return(high);}float s_var(void){int i;float sumx,sumxn;sumx=;sumxn=;for (i=0;i<N;i++){sumx+=a_stu[i]*a_stu[i];sumxn+=a_stu[i];}return(sumx/N-(sumxn/N)*(sumxn/N));}7-*14#include <>#define N 10#define M 5float score[N][M];float a_stu[N],a_cour[M];int r,c;int main(){ int i,j;float h;float s_var(void);float highest();void input_stu(void);void aver_stu(void);void aver_cour(void);input_stu();aver_stu();aver_cour();printf("\n NO. cour1 cour2 cour3 cour4 cour5 aver\n"); for(i=0;i<N;i++){printf("\n NO %2d ",i+1);for(j=0;j<M;j++)printf("%",score[i][j]);printf("%\n",a_stu[i]);}printf("\naverage:");for (j=0;j<M;j++)printf("%",a_cour[j]);printf("\n");h=highest();printf("highest:% NO. %2d course %2d\n",h,r,c); printf("variance %\n",s_var());return 0;}void input_stu(void){int i,j;for (i=0;i<N;i++){printf("\ninput score of student%2d:\n",i+1);for (j=0;j<M;j++)scanf("%f",&score[i][j]);}}void aver_stu(void){int i,j;float s;for (i=0;i<N;i++){for (j=0,s=0;j<M;j++)s+=score[i][j];a_stu[i]=s/;}}void aver_cour(void){int i,j;float s;for (j=0;j<M;j++){s=0;for (i=0;i<N;i++)s+=score[i][j];a_cour[j]=s/(float)N;}}float highest(){float high;int i,j;high=score[0][0];for (i=0;i<N;i++)for (j=0;j<M;j++)if (score[i][j]>high){high=score[i][j];r=i+1;c=j+1;}return(high);}float s_var(void){int i;float sumx,sumxn;sumx=;sumxn=;for (i=0;i<N;i++){sumx+=a_stu[i]*a_stu[i];sumxn+=a_stu[i];}return(sumx/N-(sumxn/N)*(sumxn/N));}7-15#include <>#include <>#define N 10int main(){void input(int [],char name[][8]);void sort(int [],char name[][8]);void search(int ,int [],char name[][8]);int num[N],number,flag=1,c;char name[N][8];input(num,name);sort(num,name);while (flag==1){printf("\ninput number to look for:");scanf("%d",&number);search(number,num,name);printf("continue ot not(Y/N)");getchar();c=getchar();if (c=='N'||c=='n')。

《C语言程序设计》(江宝钏著)实验五答案培训资料

《C语言程序设计》(江宝钏著)实验五答案培训资料

《C语言程序设计》(江宝钏著)实验五答案5.4 实验五函数与预处理一、实验目的与要求1. 掌握C语言函数的定义方法、函数的声明及函数的调用方法。

2. 理解函数实参与形参的对应关系以及“值传递”的方式。

3. 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。

4. 掌握动态存储分配的方法。

5. 掌握宏定义和文件包含处理方法。

6. 实验4学时二、实验内容1.程序验证与改错题(1) 程序验证题①下面程序执行的结果是什么void swap(int x, int y){int temp;temp=x;x=y;y=temp;}void main(){int a,b;scanf(“%d%d”, &a,&b);if(a>b)swap(a, b);printf(“%d\t %d”, a,b);}思考:为什么a,b的值没有交换?答:修改后的函数为#include<stdio.h>void swap(int &x, int &y){int temp;temp=x;y=temp;}void main(){int a,b;scanf("%d%d",&a,&b);swap(a,b); //if语句被去掉//printf("%d\t %d\n", a,b);}因为调用函数中改变的是形参而非实参,加上&,其意义是改变实参的地址。

If语句中,只有当a>b时才交换a,b的值去掉后在任何情况下都交换a,b的值②调用函数fun计算:m=1+2+3+4+…+9+10,并输出结果。

请验证下面的程序是否符合题目要求。

#include”stdio.h”int fun(int n){int m, i;for (i=1; i<=n; i++){m+=i;}return m;}void main(){printf("m=%d\n", fun(10));}在上面程序的基础上,修改程序. 计算m=1-2+3-4+…+9-10。

《C语言程序设计实践教程》答案-完整版

《C语言程序设计实践教程》答案-完整版

4.2练习题一、选择题1.D2.B3.A4.B和D5.C6.A7.B二、填空题1.//或/* */2.主或main3.函数首部和函数体4.编译和连接5.公号5.2练习题一、选择题1.A2.D3.B4.B5.C6.C7.D8.A9.B10.B11.D12.B13.A或B14.C15.B17.D18.D19.C20.D21.B22.A23.D24.C25.C26.B27.C28.D29.A30.B二、填空题1.102,102.#define 宏名字符串3.14.n=15.-46.a=1,b= ,c=27.c=A8.n1=%d\nn2=%d9.a+b>c&&a+c>b&&b+c>a10.ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’11.712.013.1111000014.8,46.2练习题一、选择题1.A2.C3.D4.C5.A7.A8.D9.B10.C11.A12.A13.C14.B15.正确答案为:12345678二、填空题1.102.y=1 x%i==03.屏幕中间输出一个由星号组成的菱形4.15.136.(cx=getchar())!=-1 front=cx; 7.m%n8.49.*p px=&x py=&y三、读程序,写结果1.-12.3,1,-1,3.a=16,y=604.x=12,y=45.597.2练习题一、选择题1.B2.C3.C4.A5.D6.C8.D9.C10.D11.D12.D13.A14.B15.C16.B17.B18.A19.A20.D21.B22.D23.C24.D25.D26.C二、填空题1.‘a’02.a[k] a[k] a[k]3.0 64.A B C D EA5.1,66.k=p;7.i<j8.189.4,some string * test 10.you&me三、读程序,写结果1.5 4 8 2 02.10 24 15 6 3.love china! H w l 4.66 66 555.Front一、选择题1. A2. A3. B4. B5. B6. A7. D8. C9. A10. A11. A12. B13. B14. A15. B16. B17. C二、填空题1.122.Itis3.fun(n-1)*n fun(k)4.s[i]-t[i]5.n%m i-1 x[d]6.x=n x%10 x7.m=f(a,4)+f(b,4)-f(a+b,3)8.a=1,b=1三、读程序,写结果1.s=72.s=373.bij12一、选择题1. B2. C3. B4. D5. B6. A7. B8. D9. D10. B11. D12. A13. B14. C15. C16. C17. A18. D19. B20. D二、填空题1.b->day (*b).day2.DDBBCC3.zhang 170.000000wang 150.0000004.995.max=i min=i stud[max].name,stud[max].score stud[min].name,stud[min].score6.&r 1 feof(fp) break7.BBB AAA 1238.rewind三、读程序,写结果1.2002,shangxian2.32。

《C语言程序开发》实验报告和参考答案

《C语言程序开发》实验报告和参考答案

《C语言程序开发》实验报告和参考答案1实实验报告课程名称:C语言程序开发学生姓名:学生学号:专业班级:指导教师:实验日期:2目录实验一循环结构程序设计(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。

实验二数组及其应用(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

实验三函数及其应用(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。

问第4个学生岁数,他说比第3个学生大2岁。

问第3个学生,又说比第2个学生大2岁。

问第2个学生,说比第1个学生大2岁。

最后问第1个学生,他说是10岁。

请问第5个学生多大。

(二)用选择法对数组中10个整数按由小到大排序,一维数组名作函数参数。

实验四指针及其应用(一)将若干字符串按字母顺序(由小到大)输出。

(二)有a个学生,每个学生有b门课程的成绩。

要求在用户输入学生序号以后,能输出该学生的全部成绩。

用指针函数来实现。

3实验一循环结构程序设计实验题目:(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。

实验目的1.掌握循环语句的执行过程及用法2.初步掌握循环程序设计的基本技巧3.掌握用while语句,do-while语句和for语句实现循环的方法4.掌握多重循环的使用(一)实验步骤1.题目分析2.源程序代码3.运行结果(二)实验步骤:1.题目分析源程序代码3.运行结果4实验二数组及其应用实验题目:(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

实验目的1.掌握一维数组的定义及其元素的引用方法2.掌握利用一维数组实现一些常用算法的基本技巧3.掌握二维数组的定义及其应用4.掌握字符数组和字符串函数的使用5.掌握有关二维数组的基本编程技巧(一)实验步骤:1.题目分析2.源程序代码:3.运行结果(二)实验步骤:1.题目分析2.源程序代码3.运行结果5实验三函数及其应用实验题目:(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。

C语言程序设计实验实验指导书及答案

C语言程序设计实验实验指导书及答案

常熟理工学院电气与自动化工程学院《C语言程序设计》实验指导书实验一熟悉C程序运行环境班级学号姓名成绩一、实验目的1. 熟悉C语言Visual C++6.0调试环境。

2. 掌握C程序的编辑、调试及运行。

二、实验内容项目1. 调试并运行下面程序,并写出运行结果:#include <stdio.h>int main(){printf(“Good morning!\n”);printf(“Hello,world!\n”);return 0;}运行结果(注意,按照屏幕输出格式写):项目2. 调试并运行下面程序,并写出运行结果:#include <stdio.h>int main(){int a , b , sum; /*定义变量*/a=23; b=56; /*为变量赋值*/sum=a+b; /*计算两个变量的和*/printf(“sum is %d\n”,sum); /*输出计算结果*/return 0;}运行结果:2项目3. 调试并运行下面程序,并写出运行结果:#include <stdio.h>int max(int,int);int main(){int a , b , c; /*定义变量*/a=23; b=56; /*为变量赋值*/c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/return 0;}int max(int x,int y) /*定义max函数,函数值为整型*/ {int z; /*定义变量*/if(x>y)z=x;elsez=y;return(z); /*将z的值返回*/}运行结果:三、提高部分1.试想,如果求10个数中的最大者,则程序该如何编写。

程序代码运行结果:实验二数据及其运算班级学号姓名成绩一、实验目的1. 掌握C数据类型的概念、熟悉整型、字符型和实型基本类型的常量的用法;学会三种基本类型变量的定义、赋值和使用方法。

C语言程序设计教程第七章课后习题参考答案.doc

C语言程序设计教程第七章课后习题参考答案.doc
}
}
if(x>0)//不是对称矩阵
return 0;
return 1;
}
P198 6矩阵求和
#in clude<stdio.h>
#define M 3
#define N 3
void input(int a[][N],int m,int n);
void sum(int a[][N],int b[][N],int m, int n);
{
printf( ”%4d”,a[i]);
}
bubble_sort(a,N);
printf(”\n”);
} void bubble_sort(int a[],int n)
int i,j,tmp;
for(i=0;i<n-l;i++)
{
for(j=0;j<n-i-l;j++)
{
if(a[j]>a[j+l])
int main()
{
int a[N],i;
double x=0,y=0/z=0J=0,m=0,n=0;
for(i=0;i<N;i++)
{ a[i]=rand()%6+l;
if(a[i]==l)
x++;
if(a[i]==2)
y++;
if(a[i]==3)
z++;
if(a[i]==4)
I++;
if(a[i]==5)
}
}
198 4数组逆序存放(2)
#include<stdio.h>
void reverse(int a[],int n);

《C语言程序设计》(江宝钏著)实验四答案

《C语言程序设计》(江宝钏著)实验四答案

4.较难编程题
编程题 1 输出 1-999 之间的所有同构数。 (同构数:一个数出现在它的平方数的右端,这个数就 称为同构数,如 5 出现在 25 的右端,5 是同构数,25 出现在 625 右端,25 也是同构数。
答: #include<stdio.h> #include<math.h> void main() { int n=1000,k=100,m=10,i,a,b; for(i=10;i<n;i++)
二、实验内容
1. 程序验证题与改错题 (1)程序验证 从键盘输入一个整数,在屏幕上将其逆序数输入,例如输入 8193,输出 3918。 #include<stdio.h> void main() { int x,number; printf("请输入一个整数:"); scanf("%d",&x); do{ x=number%10; number=number/10; printf("%d", x); }while(number!=0); printf("\n"); } 答: #include<stdio.h> void main() { int x,number; printf("请输入一个整数:"); scanf("%d",&number); do{ x=number%10; number=number/10; printf("%d", x); }while(number!=0); printf("\n");
for(j=1;j<=i;j++) sum1*=j; sum2+=sum1; } printf("%d",sum2); } 3.一般编程题 编程题 1 用三种循环结构(while 语句、do-while 语句、for 语句) ,求 1000 以内奇数的和。 答: #include<stdio.h> void main() { int n=1000,i=1,j=1,k,sum1=0,sum2=0,sum3=0; while(i<=n) { sum1+=i; i++; i++; } printf("while 语句求得奇数和为 :%d\n",sum1); do{ sum2+=j; j++; j++; }while(j<=n); printf("do-while 语句求得奇数和为 :%d\n",sum2); for(k=1;k<=n;k++) { sum3+=k; k++; } printf("for 语句求得奇数和为 :%d\n",sum3); } 编程题 2现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责

C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题7 课后答案

C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题7 课后答案

6. /*输入 3 个数 a b c, 然后输入 0 或 1:若输入 0,这三个数按降序输出;若输入 1,这三个数按升序输出 */ #include<stdio.h> void main() {
double a,b,c, *p1=&a,*p2=&b,*p3=&c,*pt; int choice;
//输入 a b c printf(“Input a b c:”); scanf(“%lf%lf%lf”,&a,&b,&c); //输入选择 0 或 1 printf(“Input 0 or 1:”); scanf(“%d”,&choice);
//使 p1 指向 a,b,c 中的最大者
//此时,p2,p3 指向三个数中的次大或最小者,下面调整这两个指针,使 p2 指向次大者,p3 指向最小者
if( *p2<*p3) { pt=p2; p2=p3; p3=pt;}
}
//1:a b c 按升序输出,即让 p1 指向最小者,p2 指向次小者;p3 指向最大者
3. /*内存变化图”。*/
c1 ‘A’ char *p=&ch1, *q=&ch2;
p
c2 ‘B’ q
temp=*p; *p=*q; *q=temp;
temp ‘A’ c1 ‘B’ c2 ‘A’
p
q
4. /*找错误 */
double *p,*q;
p=3;
--error!应当改为 p=(int*)
//0:a b c 按降序输出,即让 p1 指向最大者,p2 指向次大者;p3 指向最小者
if( choice==0){
if( *p1<*p2 ) { pt=p1; p1=p2; p2=pt;}

《C语言程序设计》(江宝钏著)实验七答案

《C语言程序设计》(江宝钏著)实验七答案

7、4 实验七字符与字符串处理一、实验目得与要求1.掌握C语言字符型数据得概念,理解字符型与整型数据之间得关系。

2.掌握字符得输入与输出.3.掌握转义字符常量、字符串常量得使用.4.掌握字符、字符串与字符数组得输入与输出。

5.掌握字符串函数得使用\字符串数组得使用。

6.实验课时2学时二、实验内容1.程序改错题①调试下列程序,使之具有如下功能:任意输入两个字符串(如:"ningbo"与”china”),并存放在a,b两个数组中。

然后把较短得字符串放在a数组,较长得字符串放在b数组。

并输出.程序中得strlen就是库函数,功能就是求字符串得长度,它得原型保存在头文件"string、h"中.调试时注意库函数得调用方法,不同得字符串输入方法,通过错误提示发现程序中得错误。

提示发现程序中得错误。

#include <stdio、h>#include<string、h>void main(){char a[10],b[10],ch;int c,d,k;scanf("%s",&a);scanf("%s",&b);/*error*/printf(”a=%s,b=%s\n”,a,b);c=strlen(a);d=strlen(b);if(c>d){for(k=0;k<d;k++)/*error*/{ch=a[k];a[k]=b[k];b[k]=ch;}a[k]=’\0'; /* error*/}printf(”a=%s\n",a);printf(”b=%s\n",b);}答:#include〈stdio、h>#include<string、h>void main(){ﻩﻩchara[10],b[10],ch;int c,d,k;scanf("%s”,&a);scanf(”%s",&b);ﻩprintf("a=%s,b=%s\n",a,b);c=strlen(a);d=strlen(b);if(c>d){ﻩﻩfor(k=0;k〈c;k++)ﻩ{ﻩﻩﻩch=a[k];ﻩa[k]=b[k];ﻩb[k]=ch;ﻩ}ﻩa[k]='\0';ﻩb[k]='\0’;ﻩ}ﻩprintf(”a=%s\n",a);printf("b=%s\n",b);}②下列给定程序中,函数fun得功能就是:依次取出字符串中所有数字字符,形成新得字符串,并取代原字符串.请改正函数fun中得错误,使它能得出正确得结果。

C语言程序设计 (江宝钏 著) 清华大学出版社 习题7答案

C语言程序设计 (江宝钏 著) 清华大学出版社 习题7答案

习题7 答案一、程序阅读题1.D2.D3.B4.1,0,0,15.a1e1二、程序填空题1.这个题目不合适,不考虑了2.C A A B3.C D C4.A B三、编程题1.#include<stdio.h>#define NUM 5void main(){ int a[NUM],i,n;float sum=0,aver;printf("Enter Student Scores\n");for(i=0;i<NUM;i++){scanf("%d",&a[i]);sum=sum+a[i]; }aver=sum/NUM;n=0;printf("高于平均分的成绩:");for(i=0;i<NUM;i++)if(a[i]>aver){printf(" %d",a[i]);n++;}putchar('\n');printf("高于平均分数%f 的人数是:%d\n",aver,n); }2.#include<stdio.h>#define M 4#define N 3void main(){ int i,j,kmax,kmin,scores[M][N];int sum[M],max,min;for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&scores[i][j]);for(i=0;i<M;i++){sum[i]=0;for(j=1;j<N;j++)sum[i]=sum[i]+scores[i][j];}max=min=sum[0];kmax=kmin=0;for(i=0;i<M;i++){if(sum[i]>max) {max=sum[i];kmax=scores[i][0];}if(sum[i]<min) {min=sum[i];kmin=scores[i][0];}}printf("总分最高的学号=%d ,总分=%d\n",kmax,max); printf("总分最低的学号=%d ,总分=%d\n",kmin,min);}3.#include <stdio.h>#include <stdlib.h>#define M 5#define N 100void main( ){int a[M][M],sumr[M]={0},sumc[M]={0},sumd1=0,sumd2=0; int i,j;for(i=0;i<M;i++){for (j=0; j< M; j++){a[i][j]=rand()/N;printf("%15d",a[i][j]);sumr[i]+=a[i][j];sumc[j]+=a[i][j];}printf("\n");;sumd1+=a[i][i];sumd2+=a[i][M-i-1];}printf("\n");for(i=0; i<M; i++){printf("sumrow[%d]=%d",i,sumr[i]);printf("sumcol[%d]=%d\n",i,sumc[i]);}printf("sumdia1=%d sumdia2=%d\n",sumd1,sumd2);}4.#include <stdio.h>#include <stdlib.h>#define M 3void findmax(int a[][M],int ln[]) ;void outdata (int a[][M], int ln[]);void main( ){ int s[M][M]={{22,33,34},{90,91,66 },{30,1,56, }};int lnm[M]; /*存放每列最大值所在的行号*/findmax(s,lnm);outdata(s,lnm);}void findmax(int a[][M],int ln[]){ int i,j,t;for (i=0;i<M;i++){ t=0;for(j=1;j<M;j++)if(a[j][i]>a[t][i]) t=j;ln[i]=t;}}void outdata (int a[][M], int ln[]){ int i,j;for(i=0;i<M;i++){for(j=0;j<M;j++)printf("%8d",a[i][j]);printf("\n");}printf("\n max&line number\n");for(i=0;i<M;i++)printf("%3d: %2d\n",a[ln[i]][i],ln[i]);printf("\n");}5.参照例7-14(2)6.#define N 10#define M 10void main( ){ int i, j, k, m, n, flag1, flag2, a[N][M], max, maxj; printf(“\n 输入行数n:”);scanf(“%d”, &n); printf(“\n 输入列数m:”);scanf(“%d”, &m);for (i =0; i <n; i ++){ printf(“第%d 行?\n”, i);for(j=0;j<m;j++)scanf(“%d”,&a[i][j]);}for(i =0; i <n; i ++){ for(j=0;j<m;j++)printf(“%5d”,a[i][j]);printf(“\n”);}flag2=0;for(i =0; i <n; i ++){ max=a[i][0];for(j=0;j<m;j++)if(a[i][j]>max){ max=a[i][j];maxj=j;}for(k=0,flag1=1;k<n&&flag1;k++)if(max>a[k][maxj]) flag1=0;if(flag1){ printf(“\n 第%d 行,第%d 列的%d 是鞍点\n”, i,maxj,max); flag2=1;}}if(!flag2) printf(“\n 矩阵中无鞍点!\n”);7.#include <stdio.h>#define M 5#define N 3void main(){ int i,j,t;int a[M]={4,5,6,7,8 };for(j=1;j<=N;j++){t=a[M-1];for(i=M-1;i>=1;i--)a[i]=a[i-1];a[0]=t;}for(i=0;i<M;i++)printf(" %d",a[i]);printf("\n");}8.#include<stdio.h>#include<stdlib.h>#define SIZE 100void arrsort(int [],int );void main(){ int a[SIZE],b[SIZE];int i,j,t,n=0;for(i=0;i<SIZE;i++){t=rand()%100;if(t>=10){ a[i]=t;if(t%2==0) {b[n]=a[i]; n++ ;}}}j=0;for(i=0;i<n;i++){ printf(" %d",b[i]);j++;if(j%10==0) printf("\n");}putchar('\n');arrsort(b,n);}void arrsort(int b[],int n){ int i,j,p,t,k=0;for(j=0;j<n-1;j++){ p=j;for(i=j+1;i<n;i++)if(b[p]<b[i]) p=i;if(p!=j){t=b[j];b[j]=b[p];b[p]=t;}}printf("after sorted:\n");for(i=0;i<n;i++){ printf(" %d",b[i]);k++;if(k%10==0) printf("\n");}printf("\n");}9.#include <string>int ishuiwen(char s[]){ int i,j,k;for(i=0;j=(strlen(s)-1);i<j;i++,j--) if (s[i]==s[j]) k=1;else{ k=0; break;}return k;}10.#include<string.h>#include<stdio.h>void main(){ int i=0,c[52]={0},m=0;char str[80];printf("Input a string:\n");gets(str);while(str[i]!='\0'){if(str[i]>='A'&&str[i]<='Z') c[str[i]-'A']++; if(str[i]>='a'&&str[i]<='z') c[str[i]-'a'+26]++; i++;}for(i=0;i<26;i++)//if(c[i]){ if (m%5==0) putchar('\n');m++;printf("%c : %-d",i+'A',c[i]);}for(i=0;i<26;i++)//if(c[i+26]){ if (m%5==0) putchar('\n');m++;printf("%c : %-d",i+'a',c[i+26]);}}。

《C语言程序设计教程》习题参考答案

《C语言程序设计教程》习题参考答案

本文由huangwen199002贡献 doc文档可能在WAP端浏览体验不佳。

建议您优先选择TXT,或下载源文件到本机查看。

语言程序设计教程》 《C 语言程序设计教程》习题参考答案 默认分类 2007-09-10 12:38:44 阅读 6618 评论 13 【习题 1】 一、简答题(在课本中寻找答案,略) 1.1 C 程序的基本结构包括哪些内容? 1.2 如何定义标识符? 1.3 输入格式、输出格式的组成包括哪些内容? 1.4 C 语言函数分为哪两类? 1.5 计算表达式的值应该考虑哪些方面? 1.6 上机调试程序的步骤如何? 二、判断并改错 1.7 C 程序执行的入口是 main()函数,所以 main 函数必须放在程序的开头。

 错误:main 函数可以放在程序的任何位置。

并不限定在程序的开头。

 1.8 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。

 错误:不可以交叉出现,数据说明部分在执行语句部分的前面。

 1.9 编辑与编译不是一回事。

 错误:不是一回事。

编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则 生成目标程序。

 1.10 scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。

 正确 1.11 注释内容太多会影响程序的执行效率。

 错误:不会影响程序的执行效率。

因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容 不会编译到目标程序中。

 1.12 所有的数学公式可以直接出现在源程序中。

 错误:数学公式需要转换成 C 语言能够接受的公式才能出现在源程序中。

 三、编程题 1.13 在屏幕上输出自己名字的拼音。

 提示:中文名字叫“张三”,对应的拼音为“Zhang San”,输出用 printf()函数。

 1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。

 提示:定义圆的半径 r,圆的周长:2*3.14*r,输出结果保留 2 位小数可以用%.2f 1.15 输入两个整数,输出其中最大者。

C语言程序设计实验指导书参考答案[2]

C语言程序设计实验指导书参考答案[2]
C语言程序设计
上机实验指导与习题
参考答案
(仅供教师内部参考)
ห้องสมุดไป่ตู้
华南农业大学
目录
上机实验...................................................................................................................................................................1
二、实验内容
.........................................................................................................................................22
实验
...........................................................................................................................................1
二、实验内容
.........................................................................................................................................24
二、实验内容
.........................................................................................................................................24
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C语言程序设计》(江宝钏著)实验七答案7.4实验七字符与字符串处理一、实验目的与要求1. 掌握C语言字符型数据的概念,理解字符型与整型数据之间的关系2. 掌握字符的输入与输出。

3. 掌握转义字符常量、字符串常量的使用。

4. 掌握字符、字符串与字符数组的输入与输出。

5. 掌握字符串函数的使用字符串数组的使用。

6. 实验课时2学时二、实验内容1 .程序改错题①调试下列程序,使之具有如下功能:任意输入两个字符串(如:"ningbo"和"china"),并存放在a,b两个数组中。

然后把较短的字符串放在a 数组,较长的字符串放在b数组。

并输出。

程序中的strlen是库函数,功能是求字符串的长度,它的原型保存在头文件"stri ng.h"中。

调试时注意库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。

提示发现程序中的错误。

#i nclude <stdio.h>#i nclude<stri ng.h>void mai n(){char a[10],b[10],ch;int c,d,k;sca nf("%s",&a);scanf("%s",&b); /* error */ prin tf("a=%s,b=%s\n",a,b); c=strle n( a);d=strlen(b); if(c>d){ for(k=0;k<d;k++) /* error */{ ch=a[k];a[k]=b[k];b[k]=ch;}a[k]='\0'; /* error */}prin tf("a=%s\n",a);prin tf("b=%s\n",b);}答:#i nclude <stdio.h>#i nclude<stri ng.h>void mai n(){char a[10],b[10],ch;int c,d,k;sca nf("%s",&a);sca nf("%s",&b);prin tf("a=%s,b=%s\n",a,b); c=strle n( a);d=strle n(b); if(c>d){for(k=0; k<c;k++){ch=a[k]; a[k]=b[k]; b[k]=ch;}a[k]='\0';b[k]='\0';}prin tf("a=%s\n",a);prin tf("b=%s\n",b);}②下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。

请改正函数fun中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#i nclude <stdio.h>void fun( char *s){int i,j;for(i=0;j=0;s[j]!='\0';i++) /* error */if(s[i]>='0' && s[i]<='9')s[j++]=s[i];s[j]= 0” ; /* error */}void mai n(){char item[80];printf("\nEnter a string :");gets(item);printf("\n\nThe string is : %s\n”,item);fun( item);printf("\n\nThe string of changing is : %s\n",item);}答:#in clude <stdio.h>void fun( char *s){int i,j;for(i=0,j=0;s[i]!='\0';i++) 〃此句第一个分号改为逗号if(s[i]>='0'&&s[i]<='9'){s[j]=s[i];j++;}s[j]='\0'; //引号错误}void mai n(){char item[80];printf("\nEnter a string :");gets(item);printf("\n\nThe string is : %s\n",item);fun( item);printf("\n\nThe string of changing is : %s\n",item);}2. 一般编程题编程题1请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。

例如:字符串中原有的字符串为abcdefg,贝U调用该函数后,串中的内容为gfedcba注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#i nclude <stri ng.h>#in clude <stdio.h>#defi ne N 81void fun ( char s[]){/*请填写完整*/}void mai n(){ char a[N];printf ( "Enter a string :");gets ( a );printf ( "The orig inal stri ng is:");puts( a );fun( a );prin tf("\n");printf ( "The string after modified :");puts (a);}答:#include <string.h>#i nclude <stdio.h>#define N 81void fun ( char s[]){in t l,i,t;l=strle n(s);for(i=0;i<l/2;i++){t=s[i];s[i]=s[l-i-1];s[l-i-1]=t;}}void mai n(){ char a[N];printf ("请输入一串字符:"); gets ( a );prin tf("\n");printf ("未变换前 :"); puts( a );fun( a );prin tf("\n");printf ("变换后 :");puts (a);prin tf("\n");}答:#in clude<stdio.h>void mai n(){int x,i,j,a='A',b;printf("输入行数:\n");scan f("%d",& x);for(i=0;i<x;i++){for(j=0;j<x+i;j++){b=a+i;if(j<x-i-1)printf("");else prin tf("%c",b);编程题2请编写输入以下图案(1)(2)的程序,图案的行数由输入的值确定。

}prin tf("\n ”);}}3 •较难编程题编程题1编写程序:程序功能是从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,例如,若输入edcba,则应输出abcde。

#i nclude<stdio.h>#i ncludevstri ng.h>void mai n(){int i,j;char string[100], c;prin tf("Please in put a stri ng:");gets(stri ng);/*请填写完整*/printf("result:%s\n", string);}答:#i nclude<stdio.h>#i ncludevstri ng.h>void mai n(){int i,j,le n;char stri ng[100],c;prin tf("Please in put a stri ng:");gets(stri ng);len=strle n( stri ng);for(i=0;i<le n;i++){for(j=0;j<le n-i-1;j++){if(stri ng[j]>stri ng[j+1]){c=stri ng[j];stri ng[j]=stri ng[j+1];stri ng[j+1]=c;}}}printf("result:%s\n", string);}编程题2编写程序:程序功能是统计子串substr在母串str中出现的次数。

要求编写并调用函数fun的功能是:从str所指字符串中,找出substr所指子串的个数作为函数值返回。

例如,当str所指字符串中的内容为abcdabfab,substr所指字符串的内容为ab,则函数返回整数3。

#i nclude <stdio.h>coun t(char str[],char substr[]){/*请填写完整*/}void mai n(){char str[80],substr[80];int n;gets(str);gets(substr);printf("%d\n",count(str,substr)); }答:#i nclude <stdio.h>#i nclude<stri ng.h>coun t(char str[ ],char substr[]){int i,j,k,len1,len2,count=0;len 1=strle n( str);len 2=strle n( substr);for(i=0;i<le n1;i++){if(str[i]=substr[0]){k=0;for(j=0;j<le n2;j++){if(str[i+j]==substr[j])k++;elsebreak;} if(k==le n2) coun t++;}}retur n count;}void mai n(){char str[80],substr[80];int n;gets(str);gets(substr);prin tf("%d\n",cou nt(str,substr));}。

相关文档
最新文档