2015-2016(1)-C-编程作业-参考答案-第4章
- 格式:doc
- 大小:45.00 KB
- 文档页数:5
第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); // 存活期存款。
第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); // 存活期存款。
第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); // 存活期存款。
第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;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;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;}#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);{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];elsej++;}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];elsej++;}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();。
西安邮电大学—windows编程答案P21:第1章作业参考答案1-5.什么是MSDN?在Visual C++中有哪几种方法可以启动MSDN?答:MSDN是Microsoft Developer Network的简称,即微软开发者帮助网络。
MSDN帮助系统是一个HTML格式的帮助文件,它所包含的内容非常丰富,包含了有关Windows的编程原理、方法和应用实例等内容。
在Visual C++中有三种方法可以启动MSDN:1)执行Help|Contents命令;2)Search工具栏按钮;3)单击F1键快速获取相关内容的帮助:如在源文件编辑器中用光标把一个需要查询的单词全选上,或单击一条出错提示信息,按F1键出现MSDN的“索引”页面。
1-6.Visual C++中项目的含义是什么?一个项目由哪些文件组成?在Visual C++ IDE中,把实现程序设计功能的一组相互关联的C++源文件、资源文件以及支撑这些文件的类的集合称为一个项目。
项目用项目文件DSP(Developer Studio Project)来描述,文件名后缀为.dsp。
一个项目至少包含一个项目文件。
另外还包含的源文件、资源文件和其它文件。
1-10.Windows资源主要包括哪些?Visual C++ IDE提供了哪些资源编辑器?Windows资源主要包括对话框、菜单、工具条、位图、图标、字符串、快捷键等。
Visual C++ IDE提供了对话框编辑器、菜单编辑器、工具条编辑器、图像编辑器、快捷键编辑器、字符串表编辑器、版本信息编辑器等。
1-16.Build MiniBar工具栏主要完成什么功能?它与Build工具栏有何不同?Build MiniBar工具栏中主要包括了项目的、编译、链接运行和调试运行等操作命令。
它比Build工具栏少了项目名列表框和版本类别列表框。
第4章作业P167:4-1.Visual C++ IDE提供了哪些类型的程序向导?最常用的向导有哪几个?Visual C++ IDE提供了下列主要向导类型:Datebase Project:创建数据库项目MFC ActiveX Control Wizard:创建基于MFC的ActiveX控件MFC AppWizard[dll]:创建基于MFC的动态链接库MFC AppWizard[exe]:创建基于MFC的应用程序(最常用)New Database Wizard:在SQL服务器上创建一个SQL Server 数据库Win32 Application:创建Win32应用程序,可不使用MFC,采用SDK方法编程Win32 Console Application:创建DOS下的Win32控制台应用程序,采用C++或C语言进行编程Win32 Dynamic-link Library:创建Win32动态链接库,采用SDK方法Win32 Static Library:创建Win32静态链接库,采用SDK方法最常用的向导有:MFC AppWizard应用程序向导;Win32 Console Application 基于控制台的应用程序向导。
第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程序设计1-5章测试题(04级)姓名____一、选择题:(每题3分,共60分)1、C语言提供合法的数据类型关键字是( d )A)double B)short C)integer D)char2、下列不属于字符型常量的是(b )A)‘A’B)“B”C)‘\n’ D)‘D’3、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 a 。
A)必须为字母或下划线。
B)必须为下划线。
C)必须为字母 D)可以是字母、数字和下划线中的任一种字符。
4、若有定义:int a = 7; float x = 2.5 , y = 4.7 ;则表达式 x + a % 3 * (int) (x + y) % 2/4 的值是 d 。
A) 2.750000 B) 0.00000 C) 3.500000 D) 2.5000005、设int a,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是 ( d)A)2,1,2 B)2,0,3 C)2,2,3 D)2,1,36、下列运符中优先级最高的是( b )A)&& B) ++ C) ?: D)!=7、若x、I、j和k都是int型变量,则计算下面表达式后,x的值是( c )x=(I=4,j=16,k=32)A) 4 B) 16 C) 32 D) 528、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(b)A) 7 B) 8 C) 6 D) 29、C语言规定:在一个源程序中,main函数的位置( c )A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后10、一个C语言程序是由( b )A)一个主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成11、下面程序中的输出语句,a的值是( c),输出结果是(b)A)65 B)20 C)15 D)10#include <stdio.h>void main(){ int a;printf("%d\n",(a=3*5,a*4,a+5)); }12、下面不正确的字符串常量是( a )A) ‘bac’B) “12’123”C)”0”D) “”13、以下不符合C语言语法的赋值语句是(D)A) i++; B) i=i=5; C) k=(2*4,k*4); D) y=float(i);14、若有以下定义:char a; int b;float c; double d;则表达式a*b+d-c值的类型为(D)A) float B) int C) char D) double15、下列可以用作变量名的是( b )A)1 B)al )int D)*p16、C语言中最简单的数据类型包括()A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型分析:本题考查的知识点为C语言里的最基本的数据类型。
第一章走进C世界一.简单回答以下问题1.什么是一般意义上的程序?什么是计算机程序?一般意义上的程序是指完成某任务的一种既定方式和过程,可以理解为完成某任务的一系列动作的执行过程的描述。
让计算机按照人的意志工作,人告诉计算机工作的步骤是计算机程序,人们描述(编制)计算机程序的工作被称为程序设计。
2.为什么我们编写好的程序需要经过编译、连接才能运行?需要有一个翻译器,把C语言翻译成能被计算机理解的程序形式——二进制的机器指令。
C语言才能被计算机运行,把高级语言程序翻译成机器指令程序的过程称为程序编译。
我们在程序中还用到了许多C语言的标准库函数,如printf等。
它的实现程序并不是我们自己编写的,我们只是使用了系统提供的程序代码。
因此所有经编译预处理“#include <stdio.h>”等命令才能使用的系统库函数,必须把“库函数”的处理过程连接到经编译生成的目标程序中,生成可执行程序,并对所有机器指令程序重新排定地址,才可由计算机运行,最终得到结果。
三.下面程序在已知底和高的情况下计算三角形面积,请找找看有几处错误:void main( ); /* 多了分号*/{int bottom, high, area; /* bottom表示底, high表示高, area表示面积这里少了“*/”bottom = 4 /* 少了分号*/High = 6; /* H大写了*/area = botton*high/2; /* botton拼写错误*/print("The area is %d\n", area) ; /* print拼写错误*/实验1.编写一个程序,在屏幕上显示如下形状。
# include <stdio.h> /* 编译预处理命令*/void main( ) /* 主函数*/{printf(" ****** \n"); /* 调用printf函数输出*/printf(" ****** \n"); /* 调用printf函数输出*/printf("****** \n"); /* 调用printf函数输出*/}2.编写一个程序,在屏幕上显示如下形状。
c程序设计第四版课后习题答案由于我无法提供具体的《C程序设计》第四版课后习题答案,因为这些答案可能受版权保护,并且我也无法访问到书籍的具体内容。
但我可以提供一些通用的解题策略和建议,帮助学生更好地理解和解决C语言编程问题。
在解决C程序设计习题时,可以遵循以下步骤:1. 理解题目要求:仔细阅读题目,明确题目要求你做什么,需要实现哪些功能。
2. 分析问题:将问题分解成更小的部分,考虑每个部分如何实现。
3. 设计算法:根据问题的分析结果,设计一个算法来解决问题。
这可能包括选择数据结构、确定循环和条件语句的使用等。
4. 编写代码:根据设计的算法,开始编写代码。
在编写过程中,注意代码的可读性和效率。
5. 测试和调试:编写完代码后,进行测试以确保代码能够正确运行并解决题目。
如果发现错误,使用调试工具或打印语句来找出问题所在并修正。
6. 优化代码:在确保代码能够正确运行的基础上,考虑代码的优化,比如减少内存使用、提高运行速度等。
7. 复习和总结:完成习题后,回顾解题过程,总结学到的知识点和技巧。
解决C语言编程问题时,以下几点建议可能会有所帮助:- 熟悉C语言的基本语法:了解变量声明、数据类型、运算符、控制结构等基础知识。
- 掌握数组和指针的使用:数组和指针是C语言中非常重要的概念,理解它们对于解决许多编程问题至关重要。
- 学习使用标准库函数:C语言提供了丰富的标准库函数,合理使用这些函数可以简化编程任务。
- 练习编写函数:将代码分解成函数有助于提高代码的可读性和可维护性。
- 注意内存管理:在C语言中,程序员需要手动管理内存,因此了解如何正确分配和释放内存是非常重要的。
最后,不断练习和实践是提高编程能力的关键。
通过解决各种类型的编程问题,你可以加深对C语言的理解,并提高解决问题的能力。
希望这些建议能够帮助你更好地学习和掌握C程序设计。
如果你有具体的编程问题或需要帮助,请随时提问。
第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构101.5运行C程序的步骤与方法12 1.6程序设计的任务14欧阳家百(2021.03.07)1-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章算法——程序的灵魂16 2.1什么是算法16 2.2简单的算法举例17 2.3算法的特性21 2.4怎样表示一个算法22 2.4.1用自然语言表示算法22 2.4.2用流程图表示算法22 2.4.3三种基本结构和改进的流程图26 2.4.4用N S流程图表示算法282.4.5用伪代码表示算法31 2.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.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); // 存活期存款。
目录第1章C语言程序设计概述 (1)第2章C语言的基本数据类型与表达式 (2)第3章C语言程序的控制结构 (3)第1节顺序结构程序设计 (3)第2节选择结构程序设计 (6)第3节循环结构程序设计 (15)第4章函数及预处理命令 (22)第1章C语言程序设计概述一、选择题二、填空题1、一_、主、主2、.C 、.OBJ 、.EXE3、“{”、“}”、变量说明、执行语句4、主函数5、/* 、*/、运行三、编程题1、(1) 解:#include “stdio.h”void main(){printf(“ProgrammingLanguage\n”); }(2) 解:#include “stdio.h”void main(){printf("***************\n");printf("\n");printf(" Welcome \n"); printf("\n");printf("***************\n");}2、解main(){ int a,b,x,y,m,n;a=25;b=5;x=a+b; y=a-b; m=a*b; n=a/b;printf(“x=%d,y=%d,m=%d,n=%d\n”,x,y,m,n);}第2章C语言的基本数据类型与表达式一、选择题二、填空题1、_ 十、八、十六2、int 、float、double3、34、-165、16、 27、10、 68、99、‘f’10、(m/10%10)*100+m/100*10+m%10 11、3.500000 12、 113、 414、1.500000 、 6.70000015、1 、-2 、1 、4三、程序分析题1、1112、4,33、14、11,19,30,15、65,896、a=%d,b=%d第3章C语言程序的控制结构第1节顺序结构程序设计一、选择题二、填空题1、_a=5.0,4,c=32、03、b、b、 b4、-145、未指明变量k的地址、格式控制符与变量类型不匹配6、scanf(“%d%f%f%c%c”,&a,&b,&x,&c1,&c2);3 6.5 12.6aA7、A B <CR>8、10 15 109、123 、45.000000 10、不确定值11、261 12、1613、2,1三、程序分析题1、 4 、52、203、无正确值4、x=98 y=765.000000 z=4321.0000005、8796、10 , A , 10四、编程题1、解#include “stdio.h”main(){float c,f;printf("请输入一个华氏温度\n");scanf("%f",&f);c=5.0/9.0*(f-32);printf("摄氏温度为:%6.2f\n",c);}2、解#include “stdio.h”main(){int a,b,c,x;printf("请输入一个三位整数:");scanf("%d",&x);a=x/100;b=x/10%10;c=x%10;printf("输出结果:%d%d%d\n",c,b,a);}3、#include <stdio.h>main(){int hour,min,tran;printf("Enter time:");scanf("%d%d",&hour,&min);printf("before:%dh%dmm\n",hour,min);tran=hour*60+min;printf("after:%dmin\n",tran);}4、#include <stdio.h>main(){int a,n,i;float p,result=1;printf("Input a,n,p:");scanf("%d,%d,%f",&a,&n,&p);for(i=1;i<=n;i++)result=result*(1+p); //求(1+p)的n次方result=a*result-a;printf("\n到期利息为:%f\n",result);}5、#include <stdio.h>#define PI 3.14159main(){float r,h,l,s,v;printf("Input r,h:");scanf("%f,%f",&r,&h);l=2*PI*r;s=PI*r*r;v=PI*r*r*h;printf("r=%f,h=%f\nl=%f,s=%f,v=%f\n",r,h,l,s,v);}6、#include<stdio.h>void main(){ int a,b;long c;scanf("%d%d",&a,&b);c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10; /*将a数的十位和个位数依次在c 数个位和十位上, b数的十位和个位数依次放在c数的百位和千位*/printf("The result is:%ld\n",c);}第2节选择结构程序设计一、选择题二、填空题1、&& || !2、x>2&&x<3||x<-103、y%2==14、x<z||y<z5、((x<0&&(y<0))||((x<0)&&(z<0))||((y<0)&&(z<0))6、17、08、19、0 10、0 11、012、113、014、[1] __ y<z ___ [2] ___ x<z ___[3] x<y15.[1] __ c=c+5____[2] ____ c=c-21_16、[1] __ u,v ____[2] __ x>y _____[3] u>z17、[1] ____ y%4==0&&y%100!=0 _[2] __ f=0____18、[1]gz<850 [2] (gz>=850)&&(gz<1500)[3] (gz>=1500)&&(gz<2000) [4] rfgz=gz-gz*0.015[5] rfgz=gz-gz*0.020019、[1] __10_____[2] ____9 ___[3] 11三、程序分析题1、 1,12、 1,03、5858584、your¥3.0yuan/xiaoshi5、2nd class postage is 14p6、 F7、 4:05 PM8、 b=29、 0.60000010、a=2,b=1 11、 passwarm四、编程题1、#include “stdio.h”void main(){int n;printf(“Input a number:\n”);scanf(“%d”,&n);if((n%5==0)&&( n%7==0)) printf(“yes\n”);else printf(“no\n”);}2、#include “stdio.h”void main(){int a,b;printf(“Input two number:\n”);scanf(“%d%d”,&a,&b);if(a*a+b*b>100) printf(“%d\n”,(a*a+b*b)/100); else printf(“%d\n”,a+b);}3、main(){float x;int y;printf("\n input x:");scanf("%f",&x);switch(x<0){case 1:y=-1;break;case 0:switch(x==0){case 1:y=0;break;default:y=1;}}printf("\n y=%d",y);}4、#include <stdio.h>#include <math.h>main(){float x,y;printf("Input x:");scanf("%f",&x);if(x<0)y=x*x*x;else if(x==0)y=0;elsey=sqrt(x);printf("x=%f,y=%f\n",x,y); }5、#include <stdio.h>main(){int n,n1,n2,n3,n4,n5,nn;printf("Enter n(n>=0 && n<99999):");scanf("%d",&n);if(n>=10000&&n<=99999){printf("n是5位数\n");n1=n%10;n2=(n/10)%10;n3=(n/100)%10;n4=(n/1000)%10;n5=n/10000;printf("n每一位上的数字是(从高到低)%d,%d,%d,%d,%d\n",n5,n4,n3,n2,n1);nn=n1*10000+n2*1000+n3*100+n4*10+n5;printf("n的逆序数为%d\n",nn);}if(n>=1000&&n<=9999){printf("n是4位数\n");n1=n%10;n2=(n/10)%10;n3=(n/100)%10;n4=n/1000;printf("n每一位上的数字是(从高到低)%d,%d,%d,%d\n",n4,n3,n2,n1);nn=n1*1000+n2*100+n3*10+n4;printf("n的逆序数为%d\n",nn);}if(n>=100&&n<=999){printf("n是3位数\n");n1=n%10;n2=(n/10)%10;n3=n/100;printf("n每一位上的数字是(从高到低)%d,%d,%d\n",n3,n2,n1);nn=n1*100+n2*10+n3;printf("n的逆序数为%d\n",nn);}if(n>=10&&n<=99){printf("n是2位数\n");n1=n%10;n2=n/10;printf("n每一位上的数字是(从高到低)%d,%d\n",n2,n1);nn=n1*10+n2;printf("n的逆序数为%d\n",nn);}if(n>=0&&n<=9){printf("n是1位数\n");printf("n每一位上的数字是(从高到低)%d\n",n);nn=n;printf("n的逆序数为%d\n",nn);}}6、#include <stdio.h>main(){float i,r;printf("Input i(万元):");scanf("%f",&i);if(i<=10)r=i*0.1;else if(i<=20)r=10*0.1+(i-10)*0.075;else if(i<=40)r=10*0.1+10*0.075+(i-20)*0.05;else if(i<=60)r=10*0.1+10*0.075+20*0.05+(i-40)*0.03;else if(i<=100)r=10*0.1+10*0.075+20*0.05+20*0.03+(i-60)*0.015;elser=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(i-100)*0.01;printf("i=%f,r=%f\n",i,r);}7、#include <stdio.h>#include <math.h>void main(){ double s=0.0;int i,n;scanf("%d",&n);for(i=0; i<n;i++)if(i%5==0 && i%11==0)s=s+i;s=sqrt(s);p rintf("s=%f\n",s); }8、#include <stdio.h>main(){ int n,g,sh;printf("Enter a two-digit number:");scanf("%d",&n);printf("You entered the number ");if(n>=10 && n<=19)switch(n){ case 10:printf("ten\n");break;case 11: printf(" eleven\n");break;case 12:printf("twelve\n");break;case 13:printf("thirteen\n");break; case 14:printf("fourteen\n");break; case 15:printf("fifteen\n");break; case 16:printf("sixteen\n");break; case 17:printf("seventeen\n");break; case 18:printf("eighteen\n");break;case 19:printf("nineteen\n");break;}else{g=n%10;sh=n/10;switch(sh){case 2: printf("twenty");break;case 3:printf("thirty");break;case 4:printf("fourty");break;case 5:printf("fifty");break;case 6:printf("sixty");break;case 7:printf("seventy");break;case 8:printf("eighty");break;case 9:printf("ninety");break;}switch(g){case 0:printf("\n");break;case 1:printf("-one\n");break;case 2:printf("-two\n");break;case 3:printf("-three\n");break;case 4:printf("-four\n");break;case 5:printf("-five\n");break;case 6:printf("-six\n");break;case 7:printf("-seven\n");break;case 8:printf("-eight\n");break;case 9:printf("-nine\n");break;}}}第3节循环结构程序设计一、选择题二、填空题1.[1] ____ x>=0_______ [2] ____ x<amin ___________ 2.[1] _____ c!=`\n`__ [2]c>=`0`&&c<=`9`__ 3.[1] ______ x1 ______ [2] ______ x1/2-2_______ 4.[1] __ r=m;m=n;n=r;[2] ____ m%n ________ _____ 5.[1] __ i%3==2&&i%5==3&&i%7==2 _[2] ____ j%5==0____ 6.[1] _____ n%10 ______ [2] _____ max=t ____ 7.[1] _______ i<x ______8.[1] ________2*x+y*4==90____9.[1] ___ t=t*i _________ [2] ______ t=-t/i _______ 10.[1] ____ m=n __ [2] _____ m ___ [3] ____ m=m/10______ 11.[1] ____ m=0,i=1_____ [2] ___ m=m+i _________ 12.[1] _____ k ____ [2] ___ k/10_____13.[1] _____ break ___ [2] ____ i= =11或i>=11__________ 14.[1] _____ i<=9 ____ [2] ______ j%3!=0____15、[1]b=i+1 16、[1]t>eps [2] 2.0*s17、[1] (ch=getchar()) [2] front!=' ' [3] ch三、程序分析题1、172、6689773、0111224、s=35、3,1,-1,3,1,-1,3,1,-1四、编程题1、#include “stdio.h”void main(){ int k,s=0;scanf("%d",&k);while(k>0){ if(k%3==0&&k%7!=0)s++ ;scanf("%d",&k);}printf("s=%d\n",s);}2、#include “stdio.h”void main( ){ int sum,n,i,s=0;for(n=200;n<=500;n++){ sum=0;for(i=1;i<=n/2;i++)if(n%i==0) sum+=i;if(sum= =n)s=s+n; }printf(“s=%d\n”,s); }3、#include "stdio.h"void main(){ int n,x=1;for(n=9;n>=1;n--)x=2*(x+1);printf("n=%d",x);}4、#include "stdio.h"void main(){ int x,y,z;for(x=1;x<=19;x++)for(y=1;y<=33;y++)for(z=1;z<=99;z++)if((x+y+z==100)&&(5*x+3*y+z/3==100))printf("X=%d,Y=%d,Z=%d\n",x,y,z);}5. main(){int i,n=0;for(i=100;i<=600;i++){a=i/100;b=i%100/10;c=i%10;if((b+c)%10==a)n++; }printf(“n=%d\n”,n);}6、#include <stdio.h>void main(){int i,sum=0,a,b,c;for(i=123;i<433;i++){a=i/100;b=i/10%10;c=i%10;if(a!=b&&a!=c&&b!=c&&(a>0)&&(a<5)&&b>0&&b<5&&c>0&&c<5) {sum++;printf("%d ",i);}}printf("\n%d\n",sum);}7、输出9*9口诀表。
C语言习题答案习题1(参考答案)1.程序与算法的概念及二者的区别是什么?程序:为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。
算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。
通俗地讲,就是计算机解题的步骤。
算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。
2.简述程序设计语言发展的过程程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。
一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。
3.简述高级程序设计语言中面向过程与面向对象的概念。
“面向过程”是一种以过程为中心的编程思想。
首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。
一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。
“面向对象”是一种以事物为中心的编程思想。
面向对象的方法主要是将事物对象化,对象包括属性与行为。
面向过程与面向对象的区别:在面向过程的程序设计中,程序员把精力放在计算机具体执行操作的过程上,编程关注的是如何使用函数去实现既定的功能;而在面向对象的程序设计中,技术人员将注意力集中在对象上,把对象看做程序运行时的基本成分。
编程关注的是如何把相关的功能(包括函数和数据)有组织地捆绑到一个对象身上。
4.C语言程序的特点是什么?(1)C语言非常紧凑、简洁,使用方便、灵活,有32个关键字,有9种流程控制语句。
(2)C语言运算符丰富,共有45个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。
(3)数据类型丰富。
C语言的数据类型有整型、实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之C语言提供了功能强大的控制结构,因而使用C语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。
第1 章程序设计和C语言11.1 什么是计算机程序 11.2 什么是计算机语言 11.3C 语言的发展及其特点 31.4 最简单的C语言程序 51.4.1 最简单的C语言程序举例 6 1.4.2C 语言程序的结构101.5 运行C程序的步骤与方法12 1.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 三种基本结构和改进的流程图26 2.4.4 用N 流程图表示算法282.4.5 用伪代码表示算法312.4.6 用计算机语言表示算法321.7结构化程序设计方法34习题36第章最简单的 C 程序设计——顺序程序设计37 1.4.3顺序程序设计举例371.4.4数据的表现形式及其运算392.5 常量和变量392.6 数据类型422.7 整型数据442.8 字符型数据472.9 浮点型数据492.10 怎样确定常量的类型512.11 运算符和表达式521.4.5C 语句572.4.7C 语句的作用和分类572.4.8 最基本的语句——赋值语句591.4.6数据的输入输出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); // 存活期存款。
第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用流程图表示算法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语言第4章-选择-编程作业-参考答案1、输入一个字符,判断是字母、数字或是其他字符?参考答案1:用if-else if 实现#include <stdio.h>int main(){char c;printf("请输入一个字符:\n");c=getchar(); // 输入一个字符给字符变量c if((c>='a' && c<='z') || (c>='A' && c<='Z')) // 判断是字母printf("%c 是一个字母\n",c);else if((c>='0' && c<='9')) // 判断是数字printf("%c 是一个数字\n",c);elseprintf("是其他字符\n"); // 其余的是其他字符return 0;}参考答案2:用if 实现#include <stdio.h>int main(){char c;printf("请输入一个字符:\n");c=getchar(); // 输入一个字符给字符变量cif((c>='a' && c<='z') || (c>='A' && c<='Z'))printf("%c 是一个字母\n",c);if((c>='0' && c<='9'))printf("%c 是一个数字\n",c);if(!((c>='a' && c<='z')|| (c>='A' && c<='Z'))&&!((c>='0' && c<='9')))printf("是其他字符\n"); //不是字母和数字的是其他字符return 0;}2、编写程序,判断一个整数是否既是2的倍数、又是3的倍数。
参考答案1:简单直接#include <stdio.h>int main(){int zh_shu;printf("请输入一个整数:\n");scanf("%d",&zh_shu); // 输入一个数if((zh_shu%2==0)&&(zh_shu%3==0)) // 整数同时能整除2和3printf("%d是2和3的倍数\n",zh_shu);elseprintf("%d不是2或3的倍数\n",zh_shu);return 0;}参考答案2:if里嵌套if-else#include <stdio.h>int main(){int zh_shu;printf("请输入一个整数:\n");scanf("%d",&zh_shu); // 输入一个数if(zh_shu%2==0)if(zh_shu%3==0) printf("%d同时是2和3的倍数\n",zh_shu);else printf("%d是2的倍数,%d不是3的倍数\n",zh_shu,zh_shu);else printf("%d不是2的倍数\n",zh_shu);return 0;}3、输入三角形三边,编写程序判断三角形的种类:等腰三角形、等边三角形或一般三角形。
#include <stdio.h>int main(){int a,b,c;printf("请输入三角形的三边长:\n");scanf("%d%d%d",&a,&b,&c); // 输入三边长if(a+b>c&&a+c>b&&b+c>a) // 三边长构成三角形的条件{if(a==b&&b==c)printf("这是一个等边三角形\n");else if(a==b||b==c||c==a)printf("这是一个等腰三角形\n");elseprintf("这是一个普通三角形\n");}else printf("这不是一个三角形\n");return 0;}4、习题9(参考教材配套答案)#include <stdio.h>#include <math.h>int main(){int num,indiv,ten,hundred,thousand,ten_thousand,place; //分别代表个位,十位,百位,千位,万位和位数printf("请输入一个整数(0-99999):");scanf("%d",&num);if (num>9999) place=5;else if (num>999) place=4;else if (num>99) place=3;else if (num>9) place=2;else place=1;printf("位数:%d\n",place);printf("每位数字为:");ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10); switch(place){case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);printf("\n反序数字为:");printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);break;case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);printf("\n反序数字为:");printf("%d%d%d%d\n",indiv,ten,hundred,thousand); break;case 3:printf("%d,%d,%d",hundred,ten,indiv);printf("\n反序数字为:");printf("%d%d%d\n",indiv,ten,hundred);break;case 2:printf("%d,%d",ten,indiv);printf("\n反序数字为:");printf("%d%d\n",indiv,ten);break;case 1:printf("%d",indiv);printf("\n反序数字为:");printf("%d\n",indiv);break;}return 0;}5、习题10 (参考教材配套答案)参考答案1:if-else if#include <stdio.h>int main(){int i;double bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+100000*0.05;bon6=bon4+100000*0.03;bon10=bon6+400000*0.015;printf("请输入利润i:");scanf("%d",&i);if (i<=100000)bonus=i*0.1;else if (i<=200000)bonus=bon1+(i-100000)*0.075;else if (i<=400000)bonus=bon2+(i-200000)*0.05;else if (i<=600000)bonus=bon4+(i-400000)*0.03;else if (i<=1000000)bonus=bon6+(i-600000)*0.015;elsebonus=bon10+(i-1000000)*0.01;printf("奖金是: %10.2f\n",bonus);return 0;}参考答案2:switch-case实现#include <stdio.h>int main(){int i;double bonus,bon1,bon2,bon4,bon6,bon10;int branch;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;printf("请输入利润i:");scanf("%d",&i);branch=i/100000;if (branch>10) branch=10;switch(branch){ case 0:bonus=i*0.1;break;case 1:bonus=bon1+(i-100000)*0.075;break;case 2:case 3: bonus=bon2+(i-200000)*0.05;break;case 4:case 5: bonus=bon4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9: bonus=bon6+(i-600000)*0.015;break;case 10: bonus=bon10+(i-1000000)*0.01;}printf("奖金是%10.2f\n",bonus);return 0;}。