《C语言程序设计》江宝钏著实验八答案
《C语言程序设计》课后习题答案(第四版)
第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>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章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float 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;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
C语言程序设计实验指导书参考答案_第二版
C 语言程序设计 上机实验指导与习题(第二版) 参考答案(仅供教师内部参考)来自华南农业大学目 录
上机实验 ................................................................................................................................................................... 1 实验 1 C 语言程序初步 .................................................................................................................................... 1 一、实验目的............................................................................................................................................ 1 二、实验内容.................................................................................................................................
c语言程序设计,江宝钏著,实验九
宁波大学实验报告学号姓名专业土木建设类5班学院阳明学院2016年 6月 10 日}2.程序改写题#include<>struct{int year;int month;int day;}date;int main(){int days(int year,int month,int day);int day_sum;printf("Input year,month,day:");scanf("%d,%d,%d",&,&,&;day_sum=days,,;printf("%d/%d is the %dth day in %d",,,day_sum,; return 0;}int days(int year,int month,int day){int sum=0,i;int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; for(i=1;i<month;i++){sum=sum+a[i];}sum=sum+day;if((year%1==0&&year%100!=0||year%400==0)&&month>=3){sum+=1;}return sum;}3.一般编程题(1)#include<>struct z{c har a[30];i nt r;};void main(){struct z z1={"通信工程",32},z2={"电子信息科学与工程",35},z3={"自动化",44},z4={"光电信息工程",28};printf("%s专业,报名人数%d\n",,;printf("%s专业,报名人数%d\n",,;printf("%s专业,报名人数%d\n",,;printf("%s专业,报名人数%d\n",,;}(2)#include ""#include <>#define SIZE 3struct student{int score[3];float average;} stud[SIZE];void input(){int i;for(i=0;i<SIZE;i++){printf("第%d个学生的成绩:\n",i+1);scanf("%d%d%d",&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);}}void calaverage(){int i;for(i=0;i<SIZE;i++){stud[i].average=(stud[i].score[0]+stud[i].score[1]+stud[i].score[2])/;}}void sortput(){int i,j;struct student temp;for(i=0;i<SIZE;i++){for(j=0;j<SIZE-i-1;j++){if(stud[j].average<stud[j+1].average)temp=stud[j];stud[j]=stud[j+1];stud[j+1]=temp;}}}void output(){int i;printf("\n");for(i=0;i<SIZE;i++)printf("%d %d %d %\n",stud[i].score[0],stud[i].score[1],stud[i].score[2], stud[i].average);}void main(){input();calaverage();sortput();output();}实验心得、遇到的问题与解决的方法:结构体的使用,可以让我们可以将多个变量当作一个整体。
《C语言程序设计》(江宝钏著)实验八答案
江宝钏实验八3.一般编程题1.用指针法统计10个数中正数、负数和零的个数,并分别求正数的总和,负数的总和。
#include <stdio.h>void main(){int a[10];int i,*p,sum1,sum2,c1,c2,c3;printf("输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);c1=c2=c3=0;sum1=sum2=0;for(p=a;p<(a+10);p++){if(*p<0){ sum1+=*p;c1++;}if(*p==0){ c2++;}if(*p>0) {sum2+=*p;c3++;}}printf("正数,负数的和:%d %d\n",sum2,sum1);printf("正数、零、负数的个数:%d %d %d \n",c3,c2,c1);}4.较难编程题1.输入一行字符,开始用一个指针指向这行字符的开头,并依次向后移,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include <stdio.h>#include <string.h>#define N 100void main(){char *p;char str[N];int c1,c2,c3,c4,i;printf("input a string:");gets(str);i=strlen(str);c1=c2=c3=c4=0;for(p=str;p<str+i;p++){if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z') c1++;if(*p==' ')c2++;if(*p>='0'&&*p<='9')c3++;elsec4++;}printf("字母个数:%d\n",c1);printf("空格个数:%d\n",c2);printf("数字个数:%d\n",c3);printf("其他字符个数:%d",c4);}。
(完整版)《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语言程序设计实验与习题指导课后程序设计答案
P18(1)#include<stdio.h>int main(void){int celsius,fahr;fahr=150;celsius=5*fahr/9-5*32/9;printf("fahr=%d,celsius=%d\n",fahr,celsius);return 0;}(2)#include<stdio.h>int main(void){int celsius,fahr;celsius=26;fahr=9*celsius/5+32;printf("celsius=%d,fahr=%d\n",celsius,fahr);return 0;}(3)#include<stdio.h>int main(void){int average,math,eng,comp;math=87;eng=72;comp=93;average=(math+eng+comp)/3;printf("math=%d,eng=%d,comp=%d,average=%d\n",math,eng,comp, average);return 0;}(4)#include<stdio.h>int main(void){int n,a,b,c;n=152;c=n%10;b=(n/10)%10;a=n/100;printf("整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n",n,c,b,a);return 0;}P27(1)#include<stdio.h>#include<math.h>int main(void){int celsius,fahr;printf("Enter celsius:");scanf("%d",&celsius);fahr=9*celsius/5+32;printf("fahr%d\n",fahr);return 0;}(2)#include<stdio.h>#include<math.h>int main(void){int money,year;double rate,interest;printf("Enter money,year,rate:");scanf("%d%d%lf",&money,&year,&rate);interest=money*pow(1+rate,year)-money;printf("interest=%.2f\n",interest);return 0;}(3)#include<stdio.h>#include<math.h>int main(void){double x,y;printf("Enter x:");scanf("%lf",&x);if(x<0){y=pow(x+1,2)+2*x+1/x;}else{y=sqrt(x);}printf("y=f(%f)=%.2f\n",x,y);return 0;}(4)#include<stdio.h>int main(void){int x,y;printf("Enter num1:");scanf("%d",&x);printf("Enter num2:");scanf("%d",&y);printf("%d+%d=%d\n",x,y,x+y);printf("%d-%d=%d\n",x,y,x-y);printf("%d*%d=%d\n",x,y,x*y);printf("%d/%d=%d\n",x,y,x/y);printf("%d%%%d=%d\n",x,y,x%y);return 0;}10的阶乘#include<stdio.h>int main(void){int i,n,product;printf("Enter n:");scanf("%d",&n);product=1;for(i=1;i<=n;i++){product=product*i;}printf("product=%d\n",product);return 0;}。
《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语言程序设计(江宝钏著)清华大学出版社第9章习题答案(1)
C语言程序设计(江宝钏著)清华大学出版社第9章习题答案(1)习题9 答案第5 题:#includevoid infoinput(struct student* st,int num);void levelcount(struct student* st,int num);//定义一个结构student 表示学生基本情况struct student{char stuno[20];char stuname[20];double cgrade;char gradelevel;};int main(){struct student ss[100]; //根据题意,一个班学生人数不超过100 个int snum=0;while (snum<=0||snum>100){printf("请输入班级的学生数n<=100:");scanf("%d",&snum);}infoinput(ss,snum);levelcount(ss,snum);return 0;}//输入基本数据void infoinput(struct student* st,int num){int i=0;while(i<num){< bdsfid="89" p=""></num){<>printf("请输入学生%1d 的学号、姓名、计算机成绩:",i+1);scanf("%s%s%lf",st[i].stuno,st[i].stuname,&st[i].cgrade); while (st[i].cgrade<0||st[i].cgrade>100){printf("请输入学生%1d 的计算机成绩[0-100]:",i+1);scanf("%lf",&st[i].cgrade);}if (st[i].cgrade>=90) st[i].gradelevel='A';else if(st[i].cgrade>=70) st[i].gradelevel='B';else if(st[i].cgrade>=60) st[i].gradelevel='C';else st[i].gradelevel='D';i++;}}//统计等级人数void levelcount(struct student* st,int num){int levelA=0,levelB=0,levelC=0,levelD=0;int i;for(i=0;i<num;i++){< bdsfid="107" p=""></num;i++){<> switch (st[i].gradelevel){case 'A':levelA++;break;case 'B':levelB++;break;case 'C':levelC++;break;case 'D':levelD++;break;};}printf("统计结果:A:%d 人,B:%d 人,C:%d 人,D:%d 人\n",levelA,levelB,levelC,levelD);}第6 题:#include#includevoid finit();void fcreat();void fdelete();void fupdate();void ffind();//定义日期struct date{int year;int month;int day;};//定义一个结构student 表示学生基本情况struct llist{char name[20];struct date birthday;char homeno[10];char mobileno[20];};struct llist addlist[50];//如果不用链表做,假设://通讯录每个位置记录一个联系人信息//如果某位置联系人姓名信息为空,表示该位置无联系人int main(){int menuno=0;while (1){printf("\n 请选择操作功能:\n");printf("[1]新建:\n");printf("[2]删除:\n");printf("[3]修改:\n");printf("[4]查询:\n");printf("[5]退出:\n");scanf("%d",&menuno);switch(menuno){case 1:fcreat();break;case 2:fdelete();break;case 3:fupdate();break;case 4:ffind();break;case 5:return 0;default:printf("错误选项,请重新选择!\n");};}return 0;}void finit(){int i;for(i=0;i<50;i++) {strcpy(addlist[i].name,"");addlist[i].birthday.year=0;addlist[i].birthday.month=0;addlist[i].birthday.day=0;strcpy(addlist[i].homeno,"");strcpy(addlist[i].mobileno,"");}}void fcreat(){int i;char oname[20];int oyear;int omonth;int oday;char ohomeno[10];char omobileno[20];printf("请输入联系人信息姓名、出生年、月、日、家庭电话、手机号:\n"); scanf("%s%d%d%d%s%s",oname,&oyear,&omonth,&oday,oho meno,omobileno); for(i=0;i<50;i++) {if (strlen(addlist[i].name)==0) {strcpy(addlist[i].name,oname);addlist[i].birthday.year=oyear;addlist[i].birthday.month=omonth;addlist[i].birthday.day=oday;strcpy(addlist[i].homeno,ohomeno);strcpy(addlist[i].mobileno,omobileno);printf("已增加新联系人\n");break;}}if (i>=50) printf("通讯录满,无法增加新联系人\n");void fdelete(){int i;char oname[20];printf("请输入联系人姓名:\n");scanf("%s",oname);for(i=0;i<50;i++) {if (strcmp(addlist[i].name,oname)==0) {strcpy(addlist[i].name,"");addlist[i].birthday.year=0;addlist[i].birthday.month=0;addlist[i].birthday.day=0;strcpy(addlist[i].homeno,"");strcpy(addlist[i].mobileno,"");printf("已删除该联系人%s\n",oname);break;}if (i>=50) printf("无该联系人,无法删除\n");}void fupdate(){int i;char oname[20];char nname[20];int nyear;int nmonth;int nday;char nhomeno[10];char nmobileno[20];printf("请输入联系人姓名:\n");scanf("%s",oname);printf("请输入联系人信息姓名、出生年、月、日、家庭电话、手机号:\n"); scanf("%s%d%d%d%s%s",nname,&nyear,&nmonth,&nday,nho meno,nmobileno); for(i=0;i<50;i++) {if (strcmp(addlist[i].name,oname)==0) {strcpy(addlist[i].name,nname);addlist[i].birthday.year=nyear;addlist[i].birthday.month=nmonth;addlist[i].birthday.day=nday;strcpy(addlist[i].homeno,nhomeno);strcpy(addlist[i].mobileno,nmobileno);printf("已修改联系人%s\n",nname);break;}if (i>=50) printf("无该联系人,无法修改\n");void ffind(){int i;char oname[20];printf("请输入联系人姓名:\n");scanf("%s",oname);for(i=0;i<50;i++) {if (strcmp(addlist[i].name,oname)==0) {printf("姓名:%s",addlist[i].name);printf(" 出生日期:%1d 年%1d 月%1d 日",addlist[i].birthday.year,addlist[i].birthday.month,addlist[i].bi rthday.day); printf("家庭电话:%s",addlist[i].homeno);printf("手机:%s",addlist[i].mobileno);break;}}if (i>=50) printf("无该联系人\n");}第7 题:#includevoid salaryinput(struct salary* sl,int num);void salarylist(struct salary* sl,int num);struct salary{char id[20];char name[20];double base;double merit;double subsidiary;double insurance;double tax;double real;};int main(){struct salary ss[100]; //工资人数不超过100 个int snum=0;while (snum<=0||snum>100){printf("请输员工人数n<=100:");scanf("%d",&snum);}salaryinput(ss,snum);salarylist(ss,snum);return 0;void salaryinput(struct salary* sl,int num){int i=0;while(i<num){< bdsfid="279" p=""></num){<>printf("请输入员工%1d 的编号、姓名、基本工资、绩效工资、津贴工资、保险:\n",i+1); scanf("%s%s%lf%lf%lf%lf",sl[i].id,sl[i].name,&sl[i].base,&sl[i].meri t,&sl[i].su bsidiary,&sl[i].insurance);sl[i].tax=(sl[i].base+sl[i].merit+sl[i].subsidiary)*0.05;sl[i].real=(sl[i].base+sl[i].merit+sl[i].subsidiary-sl[i].insurance-sl[i].tax); i++;}}void salarylist(struct salary* sl,int num){int i;for(i=0;i<num;i++){< bdsfid="289" p=""></num;i++){<>printf("员工的编号、姓名、实发工资如下:",i+1);printf("%s %s %lf\n",sl[i].id,sl[i].name,sl[i].real);}}第8 题:#include#includevoid linkcreat();void linklist();struct Node{char data;struct Node *link;};Node *snode=NULL,*tmpnode,*lastnode;int main(){linkcreat();linklist();//最好增加一个释放链表的函数,为什么?return 0;}void linkcreat(){char c;lastnode=snode;printf("请输入一行字符:\n");while(scanf("%c",&c),c!='\n'){tmpnode=(Node*)malloc(sizeof(Node)); tmpnode->data=c;if (snode==NULL) snode=tmpnode;else lastnode->link=tmpnode; lastnode=tmpnode; }lastnode->link=NULL;}void linklist(){tmpnode=snode;while(tmpnode!=NULL){printf("%c",tmpnode->data); tmpnode=tmpnode->link; }printf("\n");}。
C语言程序设计课后答案
C语言程序设计课后答案C语言程序设计课后答案Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#第二章 C++简单程序设计2-10 执行完下列语句后,a、b、c三个变量的值为多少?a = 30;b = a++;c = ++a;解:a:32 ; b:30 ; c:32;2-13 写一条for语句,计数条件为n从100到200,步长为2;然后用while和do…while语句完成同样的循环。
解:for循环:for (int n = 100; n <= 200; n += 2);while循环:int x = 100;while (n <= 200)n += 2;do…while循环:int n = 100;do{n += 2;} while(n <= 200);2-17 修改下面这个程序中的错误,改正后它的运行结果是什么?#include <>void main()int iint j;i = 10; /* 给i赋值j = 20; /* 给j赋值 */cout << "i + j = << i + j; /* 输出结果 */return 0;}解:改正:#include <>int main(){int i;int j;i = 10; n";cout << "You are: " << yourAge << " years old\n"; myAge++; .\n";cout << "I am: " << myAge << " years old.\n";cout << "You are: " << yourAge << " years old\n"; cout << "Another year passes\n";cout << "I am: " << myAge++ << " years old.\n"; cout << "You are: " << ++yourAge << " years old\n"; cout << "Let's print it again.\n";cout << "I am: " << myAge << " years old.\n";cout << "You are: " << yourAge << " years old\n"; return 0;}解:程序运行输出:I am 39 years oldYou are 39 years oldOne year passesI am 40 years oldYou are 40 years oldAnother year passesI am 40 years oldYou are 41 years oldLet's print it againI am 41 years oldYou are 41 years old2-28 编写一个完整的程序,实现功能:向用户提问"现在正在下雨吗?",提示用户输入Y或N。
C语言程序设计第四版第八章答案
第八章指针8.1输入三个整数,按由小到大的顺序输出。
main(){ int a,b,c,*p1,*p2,*p3,t;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("%d,%d,%d\n",*p1,*p2,*p3);}或main(){int a,b,c,*p1,*p2,*p3,t;scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;if(a>b){t=*p1;*p1=*p2;*p2=t;}if(a>c){t=*p1;*p1=*p3;*p3=t;}if(b>c){t=*p2;*p2=*p3;*p3=t;}printf("%d,%d,%d\n",a,b,c);}8.2输入三个字符串,按由小到大的顺序输出#define N 3#define M 20main(){char str0[N][M],str1[M],*p,*q;int i,l,m,n;q=str0;for(;p<q+N;p++)gets(p);l=strcmp(q,q+1);if(l>0){strcpy(str1,q);strcpy(q,q+1);strcpy(q+1,str1);} m=strcmp(q,q+2);if(m>0){strcpy(str1,q);strcpy(q,q+2);strcpy(q+2,str1);} n=strcmp(q+1,q+2);if(n>0){strcpy(str1,q);strcpy(q+1,q+2);strcpy(q+2,q+1);}for(p=q;p<q+N;p++)puts(p);}8.3输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
《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答案
习题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语言程序设计》课后习题答案(第四版)
第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>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章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float 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;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
【程序设计】《C语言程序设计》(江宝钏著)实验二答案【精品资料】
2.5 实验二编写几个简单的C程序一、实验目的与要求1.掌握C语言基本数据类型的概念,理解数据类型与运算的关系。
2.掌握简单变量的定义,算术表达式和赋值表达式的使用。
3.掌握基本输出语句的使用。
4.进一步熟悉C程序的编辑、编译、连接和运行的过程。
5.掌握简单C程序查错方法,编写几个简单程序。
6.实验4学时二、实验内容1.程序验证或填空(1)编译和运行下面程序,查看执行的结果:#include<stdio.h>int main(void){int si=-1;float f=5;double df=3;printf("si = %d, f = %f, df = %lf\n", si,f,df);return 0;}若把输出语句中的格式控制中的格式说明符的顺序改变一下,会有什么结果?再把%lf修改为%f,运行会有什么结果?Si=-1,f=5.00000,df=3.000000当顺序变为printf("si = %f, f = %lf, f = %d\n", si,f,df);时结果为si=-0.000000 f=0.000000 df=1074266112当把%lf修改为%f时即 printf("si = %f, f = %f, f = %d\n", si,f,df);结果为si=-0.000000 f=0.000000 df=1074266112(2)分析程序,并上机运行验证运行结果#include “stdio.h”void main( ){ printf(“\t*\n”);printf(“\t\b* * *\n”);printf(“\t\b\b * * * * *\n”);}Tab * 换行Tab 取消tab * * * 换行Tab 取消tab 退格 * * * * * 换行(3) 运行程序,并分析结果。
#include “stdio.h”void main( ){ int a=10,x=5,y=6;a+=a*=6;x=y++;y=++x;a=x+++y;printf(“%d,%d,%d\n”,a,x,y);}14,8,7 以下绿色部分为对结果的分析#include “stdio.h”void main( ){ int a=10,x=5,y=6;a+=a*=6; 此步对结果无影响\\x=y++; \\x=y y=y+1 此时x=6,y=7\\y=++x; \\x=x+1 y=x 此时 x=7 y=7\\a=x+++y; \\a=x+y x=x+1 此时 x=8 y=7 a=14\\ printf(“%d,%d,%d\n”,a,x,y);}(4)不用第3个变量,实现将二个数进行对调,请填空。
c语言程序设计实验指导书答案
c语言程序设计实验指导书答案C语言程序设计实验指导书是帮助学生理解和掌握C语言编程技能的重要工具。
本指导书旨在通过一系列实验,引导学生从基础语法到高级编程技巧,逐步提高编程能力。
以下是一些实验题目和相应的答案示例,以供参考。
实验一:C语言基础语法实验目的:- 熟悉C语言的基本语法结构。
- 掌握变量声明、数据类型和运算符的使用。
实验内容:1. 编写一个程序,输入两个整数,输出它们的和、差、积和商。
实验答案:```c#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("和是:%d\n", num1 + num2);printf("差是:%d\n", num1 - num2);printf("积是:%d\n", num1 * num2);if (num2 != 0) {printf("商是:%d\n", num1 / num2);} else {printf("除数不能为0。
\n");}return 0;}```实验二:控制结构实验目的:- 掌握条件语句和循环语句的使用。
实验内容:1. 使用循环语句计算1到100的和。
实验答案:```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}printf("1到100的和是:%d\n", sum); return 0;}```实验三:数组和字符串- 掌握数组和字符串的声明、初始化和使用。
实验内容:1. 编写一个程序,输入一个字符串,然后反转该字符串并输出。
《C语言程序设计》课后习题答案第八章
8.1 编写两个函数,分别求两个证书的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个整数由键盘输入。
void main(){ int Mgy(int x,int y);int Mgb(int z);int a,b,mgy,mgb;printf("请输入两个数:\n");scanf("%d,%d",&a,&b);mgy=Mgy(a,b);mgb=Mgb(a,b,mgy);printf("两个数的最大公约数为%d,最小公倍数为%d\n",mgy,mgb);}int Mgy(int x,int y){ int r,temp;if(x<y){ temp=x;x=y;y=temp;}while(x%y!=0){ r=x%y;x=y;y=r;}return y;}int Mgb(int x,int y,int z){ return (x*y/z);}8.2 求方程ax²+bx+c=0的根,用三个函数分别求当b²-4ac大于零、等于零和小于零时的根,8.3编写一个判素数的函数,在主函数输入一个整数,输出是否是素数的信息。
#include<math.h>void main(){ int Isprime(int a);int m,temp=0;printf("请输入一个数:\n");scanf("%d",&m);temp=Isprime(m);if(temp==0) printf("%d不是素数。
\n",m);else printf("%d是素数。
\n",m);}int Isprime(int a){ int i,k,flag;if(a==0||a==1) flag=0;else{ k=sqrt(a);for(i=2;i<=k;i++)if(a%i==0) flag=0; }return flag; }8.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一格空8.9编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符8.10 写一个函数,输入一行字符,将此字符串中最长的单词输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江宝钏实验八
3.一般编程题
1.用指针法统计10个数中正数、负数与零的个数,并分别求正数的总与,负数的总与。
#include <stdio、h>
void main()
{
int a[10];
int i,*p,sum1,sum2,c1,c2,c3;
printf("输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
c1=c2=c3=0;sum1=sum2=0;
for(p=a;p<(a+10);p++)
{
if(*p<0){ sum1+=*p;c1++;}
if(*p==0){ c2++;}
if(*p>0) {sum2+=*p;c3++;}
}
printf("正数,负数的与:%d %d\n",sum2,sum1);
printf("正数、零、负数的个数:%d %d %d \n",c3,c2,c1);
}
4.较难编程题
1.输入一行字符,开始用一个指针指向这行字符的开头,并依次向后移,分别统计出其中英
文字母、空格、数字与其它字符的个数。
#include <stdio、h>
#include <string、h>
#define N 100
void main()
{
char *p;
char str[N];
int c1,c2,c3,c4,i;
printf("input a string:");
gets(str);
i=strlen(str);
c1=c2=c3=c4=0;
for(p=str;p<str+i;p++)
{
if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z') c1++;
if(*p==' ')
c2++;
if(*p>='0'&&*p<='9')
c3++;
else
c4++;
}
printf("字母个数:%d\n",c1);
printf("空格个数:%d\n",c2);
printf("数字个数:%d\n",c3);
printf("其她字符个数:%d",c4);
}。