c语言程序设计教程 郭浩志,C语言程序设计教程答案杨路明郭浩志

习题 11、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法描述2、c 语言程序的结构如下:1、c 语言程序由函数组成,每个程序必须具有一个 main 函数作为程序的主控函数。2、“/*“与“*/“之间的内容构成 c 语言程序的注释部分。3、用预处理命令#include 可以包含有关文件的信息。4、大小写字母在 c 语言中是有区别的。5、除 main 函数和标准库函数以外,用户可以自己编写函数,程序一般由多个函数组成,这些函数制定实际所需要做的工作。例如:void main(){int a,b,c,s;a=8;b=12;c=6;s=a+b*c;printf(“s=%d\n“,s);}3、c 语言的特点:1、c 语言具有结构语言的特点,程序之间很容易实现段的共享;2、c 语言的主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译成代码,以实现程序的模块化。3、c 语言运算符丰富,运算包含的范围很广;4、c 语言数据类型丰富。5、c 语言允许直接访问物理地址,即可直接对硬件进行操作,实现汇编语言的大部分功能;6、c 语言语法限制不太严格,程序设计自由度大,这样是 c 语言能够减少对程序员的束缚;7、用 c 语言编程,生成的目标代码质量高,程序执行效率高,可移植性好;4、合法标识符:AB12、leed_3、EF3_3、_762、PAS、XYZ43K2不合法标识符:a*b2、8stu、D.K.Jon、if、ave#xy、#_DT5 、C.D5、F2:将当前编辑器中文件存盘. F10:调用主菜单.F4:程序运行到光标所在行. Ctrl+F9:当前编辑环境下,进行编译、连接且运行程序;Alt+F5:将窗口切换到 DOS 下,查看程序运行结果6、 (1): ********************welcome youvery good********************(2): please input three number;5,7,8max number is:87、main8 、User screen、Alt+F59、标识符必须是字母或下划线开头,大小写字母含义不同。由数字、字母和下划线组成;关键字是一种语言中规定具有特定含义的标识符。关键字不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。10、选择主菜单 File 项下拉子菜单中 Save 项或直接按 F2 键存盘。习题 21、符合 C 语法规定的常数为:0x1e、“ab\n“、1.e52、(1):错误如下:int x,y=5,z=5,aver;x=7;aver = (x+y+x)/3;结果如下:AVER=5(2):错误如下:char c1='a',c2='b',c3='c';printf(“a=%db=\'%c\'\“end\“\n“,a,b);结果如下:a=3b='A'“end“aabcc abc3、4、(1):9,11,9,10(2):3,1,0,0(3):11,19,31,15、(1):0(2):0(3):9.500000(4):90(5):10(6):10(7):65(8):4(9):4.500000(10):1(11):0(12):20(13):06、(5)7、求 x 的绝对值8、c>(max=a>b?a:b)?c:max;9、B10、D习题 31、输入函数 scanf 的参数错误,应该为: scanf(“%f“,2、|1234 1234 |3、ff104、1,3,15、原字符串左边加空格再加字符串本省,字符个数总和为 5 个6、scanf(“%d,%d,%c,%c“,7、printf(“a+b=%d\n“,a+b);printf(“a-b=%d\n“,a-b);printf(“a*b=%d\n“,a*b);printf(“a/b=%d\n“,a/b);printf(“(float)a/b=%f\n“,(float)a/b);printf(“a%b=%d\n“,a%b);8、void main(){float r;float s,c;printf(“please input the number:“);scanf(“%f“,if(r>=0){s = 3.14*r*r;c = 2*3.14*r;printf(“s = %f, c = %f\n“,s,c);}elseprintf(“you input number is error!“);}9、void main(){int n;printf(“please input the number:“);scanf(“%d“,if(n>=100 Area = sqrt(s*(s-a)*(s-b)*(s-c));printf(“%f\n“,Area);}elseprintf(“you input the number is error!\n“);}习题 41: 02: 203: (x20)||(xvoid main(){ char a,b,t1,t2;scanf(“%c,%c“,t1=a>b?a:b;t2=avoid main(){ int temp1=0,temp2=0,x,y,i=1;printf(“Please input (x,y): “);scanf(“%d,%d“,while((i*y) shang=%d,yushu=%d“,x,y,temp2,x-y*temp2);getch();}9、#includevoid main(){ float x,y,m=0,n=0;scanf(“%f,%f“,n=(x-2)*(x-2);m=(y-2)*(y-2);if((m+n)void main(){ int temp=0,month,year;printf(“Please input (year,month): “);scanf(“%d,%d“,if((year%400==0)||(year%4==0if(month==2){ if(temp)printf(“%d year %d month have 29 “,year,month);else printf(“%d year %d month have 28 “,year,month);}else if(month%2==0)printf(“%d year %d month have 30 “,year,month);else printf(“%d year %d month have 31 “,year,month);getch();}11、switch(a/10){ case 5:m=4;break;case 4:m=3;break;case 3:m=2;break;case 2:m=1;break;default:m=5; }12、方法一:#includevoid main(){ int x,y;scanf(“%d“,if(x-5)y=x-1;else if(x==0)y=x;else if(x>0scanf(“%d“,if(x-5){ if(x==0)y=x;else if(x>0scanf(“%d“,if(x-5){ if(x==0)i=1;else if(x>0}printf(“the %d years later complete!\n“,count);}6、void main(){int i,temp=0,bit=0;for(i = 1 ; i int main(void){int steps = 29, i = 1;while ( steps % 7 ){steps = (30 * ++i) - 1;}printf(“Total steps: %d\n“, steps);return 0;}8、main(){int i,j,k,n;printf(“the narcissus number is:\n“);for(n=100;n=nleftlong k = 1;float e = 1;n = 1;clrscr();while ( fabs(1.0/k) >= 0.000001){n++;e = e+ 1.0/k;k = k * n;}printf(“%f\n“,e);}15、#include “math.h“main(){float x0,x1,x2,f0,f1,f2;x1=-10;f1=2*x1*x1*x1-4*x1*x1+3*x1;x2=10;f2=2*x2*x2*x2-4*x2*x2+3*x2;do{ x0=(x1+x2)/2;f0=2*x0*x0*x0-4*x0*x0+3*x0;if((f0*f1)1e-6);printf(“______2*x*x*x-4*x*x+3*x=0______\n“);printf(“the root is %f\n“,x0);}习题 61、#includeint divisor(int a,int b){ int r;while((r=a%b)!=0){ a=b;b=r;}return b;}int multiple(int a,int b){ int d;d=divisor(a,b);return a*b/d;}void main(){ int a,b,c,d;printf(“intput (a,b): “);scanf(“%d,%d“,c=divisor(a,b);d=multiple(a,b);printf(“\ndivisor=%d\t\tmultiple=%d“,c,d);}2、#includevoid tongji(char a[]){ int b[3]={0,0,0},i=0;while(a[i]!='\0'){ if((a[i]=65)||(a[i]=97))b[0]++;else if(a[i]=48) b[1]++;elseb[2]++;i++;}printf(“zimu have: %d; shuzi have: %d; qita have: %d“,b[0],b[1],b[2]);getch();}void main(){ char a[100];printf(“Please input a string: “);gets(a);tongji(a);}3、#includeint flower(int n){ int x=0,i,j,k;i=(n%10); j= (n/10%10);k=(n/100);x=i*i*i+j*j*j+k*k*k;if(x==n) return 1;else return 0;}void main(){ int i,n;printf(“Please intput n: “);scanf(“%d“,if(n>999||n#define SWAP(a,b) t=b;b=a;a=t;main(){ float x,y,t;printf(“Enter two number (x,y): “);scanf(“%f,%f“,SWAP(x,y);printf(“\n\nExchanged:x=%f,y=%f“,x,y);getch();}5、#includeint fib(int n){ int p;if(n==0) p=0;else if(n==1) p=1;else p=fib(n-1)+fib(n-2);return p;}void main(){ int n;printf(“Please input fib: “);scanf(“%d“,printf(“\n\nfibonacci=%d“,fib(n));}6、#includelong fac(int n){ long f;if(n==0) f=1;else f=n*fac(n-1);return f;}void main(){ int m,n;long f;printf(“Please input (m,n): “);scanf(“%ld,%ld“,f=fac(n+m)+fac(n);printf(“\n\nfibonacci=%ld“,f);}7、#includevoid list(){ int i,j;for(i=1;iint he(int n){ int i,s=0;for(i=1;i%d “,i,j);}}9、#include#define max 100struct work{ long sid;char name[15];}worker[max];int size=0;struct work *set_list(){ do{ printf(“\n\nPlease input (sid,name): “);scanf(“%ld,%s“,size++;}while(worker[size-1].sid!=0);return worker;}void paixu(struct work a[]){ int i,j,k;long t;char v[15];for(i=0;ia[j].sid)k=j;if(k!=i){ t=a[i].sid; a[i].sid=a[j].sid; a[j].sid=t;strcpy(v,a[i].name);strcpy(a[i].name,a[j].name);strcpy(a[j].name,v);}}for(i=0;ifloat jiecheng(int n){ long s=1;int i;for(i=1;i=0 a[k]=temp break k#define max 100void main(){float a[max],s=0,average=0;int i,n;printf(“Please input N: “); /*输入要处理元素的个数*/scanf(“%d“,printf(“\nPlease input %d ge shu: “,n); /*输入90,85,92,77,80,62*/for(i=0;iaverage)printf(“%.2f “,a[i]); /*输出 90.00 ,85.00 ,92.00*/}5、/*题目:编写程序,输入一组整数,将他们排序后由小到大输出。*/#include#define max 100void main(){int a[max],j,i,k=0,t=0,n=0;printf(“Please input N: “); /*输入要处理元素的个数*/scanf(“%d“,for(i=0;ia[j])k=j;if(k!=i) /*元素排序前下标与排序后下标不符,则交换其值*/{ t=a[i];a[i]=a[k];a[k]=t;}}printf(“\n\n“);for(i=0;i#includevoid main(){int d[4][4]={{0,0,0,0}},i,j;clrscr();printf(“\nPlease input 16 num: “);for(i=0;id[j][i]) /*左下角元素大于右上角元素则交换*/d[j][i]=d[i][j];for(i=0;i=i)printf(“\t%d“,d[i][j]);/*为了使位数不同的数输出依然保持三角型*/elseprintf(“\t“);}}7、*题目:输入一个 3x4 的二维数组,然后分别按行和按列输出。*/#include#includevoid main(){int d[3][4]={{0,0,0,0}},i,j;printf(“Please input 12 num: “);for(i=0;i#includevoid main(){ char s1[50],s2[50];int i=0,j=0,t=0;printf(“Input one: “);gets(s1);while(s1[i]!='\0') i++; /*统计 s1 中字符个数*/printf(“\n\nInput second: “);gets(s2); while(s2[j]!='\0') j++; /*统计 s2 中字符个数*/for(t=0;t#include#define MAX 100void main(){char str[MAX];int i=0,flage=0;int count=0;printf(“\nPlease input a string: “);gets(str);while(str[i]){ if(str[i]=='a')flage=1;else if(str[i]=='b'){if(flage==1){ count++;flage=0;}}else flage=0;i++;}printf(“the double char \“ab\“ count is %d\n“,count);}10、#include /*相对于第一种方法,这种方法能把同为最大的字符串全部打印出来。*/#includeint paixu(int a[],int n) /*构造对长度为 n 的数组排序的函数*/{int i,j,t,k,temp;for(i=0;ia[j])k=j;if(k!=i){ t=a[i];a[i]=a[k];a[k]=t;}}temp=a[n-1];return temp; /*返回最大字符串的长度的值 */}void main(){char str1[50],str2[50],str3[50],str4[50],str5[50],str6[50];char str7[50],str8[50],str9[50],str10[50];int count[10]={0},temp[10]={0},i,j;int paixu(int a[],int n);for(i=1;ivoid main(){int a[100],b[100],c[100],i,m,n,j,k,temp=0,s;printf(“\nm = “);scanf(“%d“, /*确定 M 的个数*/printf(“\nn = “);scanf(“%d“, /*确定 N 的个数*/printf(“\nPlease input m ge shu: “);for(s=0;sb[j]) i--; k++; }if(j==n) /*b[]处理到完*/{ for(;;) /*把 b[]数组接到 c[]后面*/{ if(i==0) /*如果 a[]处理完,结束。并做标记temp=1*/{ c[k]=a[i];temp=1;break; } c[k]=a[i];i--;k++;}}if(temp==1) break;/*标记 temp=1,全部处理结束*/}for(s=0;s=*q; q++(2) ivoid fun(char *str,char c){ char *p;for(p=str;*p!='\0';p++)if(*p!=c)*str++=*p;*str='\0';}void main(){ char str[80],c;printf(“\nPlease input a string: “);gets(str);printf(“\n\nPlease input delete char: “);scanf(“%c“,fun(str,c);puts(str);getch();}5、/*从键盘输入单词,每个单词之间用空格隔开,“.”号结束输入,*//*将每个单词的第一个字母转化成大写字母。*/#include#includechar zhuanhua(char c) /*定义将小写字母转化为大写字母的函数 */{ char C;if(c>='a'p1=data;printf(“\nInput 8 number: “);for(i=0;ivoid main(){ int m,n,i;char a[100],b[100],*p,*q;printf(“Please input a string: “);gets(a);p=a;q=b;printf(“\n\nPlease input m and n(like 1,1): “);scanf(“%d,%d“,if( (strlen(a)>=m) /*指针指向第一个要复制的字符 */for(i=0;ivoid main(){int a[100],temp1=0,temp2=0,max=0,min=0,k;printf(“\nPlease input 8 ge shu: “);for(k=0;ka[max])max=k; /*用标记 max 最大值的下标*/}if(min==0){ if(max==7){ temp1=a[0]; a[0]=a[7];a[7]=temp1; }else{ temp2=a[7];a[7]=a[min];a[0]=a[max];a[max]=temp2;}}else if(max==0){ if(min!=7){ temp2=a[7]; a[7]=a[min];a[min]=temp2;}}else{ if(min==7){ temp1=a[0];a[0]=a[max];a[max]=temp1;}else if(max==7){ temp2=a[7];a[7]=a[min];a[min]=a[0];a[0]=temp2;}else{ temp1=a[0];temp2=a[7];a[0]=a[max];a[7]=a[min];a[min]=temp2;a[max]=temp1;}}for(k=0;k#includeint *paixu(int data[],int n){ int i,*p1,*p2,temp;p1=data;for(p1=data;p1='0')a[i]=a[i]*10+t;p++;if((*p)>'9'||(*p)struct students{char sid[100];char name[100];float score[3];}student;void main(){ int i; float j;printf(“\nPlease input sid: “);scanf(“%s“,student.sid);printf(“\nPlease input name: “);scanf(“%s“,student.name);printf(“\nPlease input 3 score:(like1,1,1) “);/*输入逗号隔开*/scanf(“%f,%f,%f“,printf(“\nsid = %s“,student.sid);printf(“\nname = %s“,student.name);j=(student.score[0]+student.score[1]+student.score[2])/3.0;printf(“\naverage = %.2f“,j);getch();}3、#include#include#define F sizeof(student)#define NULL 0typedef struct scores{ int english;int math;int c_language;int all;}TP;typedef struct students{ char sid[15];char name[15];TP score;struct students *next;}student;student *input(){ student *head,*p1,*p2;int n=0; char ch;clrscr();head=(student *)malloc(F);head->next=NULL;do{ n++;printf(“\n\nPlease input %d student message: \n\n“,n);printf(“\t%d student sid: “,n);p1=(student *)malloc(F);p1->next=NULL;scanf(“%s“,p1->sid);printf(“\n\t%d student name: “,n);scanf(“%s“,p1->name);printf(“\n\t%d student scores(englesh,math,c_language): “,n);scanf(“%d,%d,%d“,p1->score.all=p1->score.english+p1->score.math+p1->score.c_language;if(n==1){ head->next=p1;p2=p1; }else{ p2->next=p1;p2=p1;}printf(“\n\n\t\t\tContinue or back (press y/n): “);ch=getch();}while(ch=='y'||ch=='Y');return head;}void average1(student *head){ student *p; int j;clrscr();p=head->next;while(p){ j=p->score.all/3;printf(“\n\nname: %s\taverage: %d“,p->name,j);p=p->next;}printf(“\n\n\nPress eny key return.“);getch();}void average2(student *head){student *p;int n=0,temp1=0,temp2=0,temp3=0;p=head->next;while(p){ temp1+=p->score.english;temp2+=p->score.math;temp3+=p->score.c_language;p=p->next;n++;}printf(“\n\naverage english is : %d\naverage math is : %d\naverage c_language is : %d\t“,temp1/n,temp2/n,temp3/n);}student *sort(student *head){ student *head1,*p,*q,*r; int temp1=0,temp2=0,temp3=0,temp4; char s[15],n[15];head1=head;for(p=head1->next;p->next!=NULL;p=p->next){ r=p;for(q=p->next;q;q=q->next)if(q->score.all>r->score.all)r=q;if(r!=p){ strcpy(s,p->sid);strcpy(n,p->name);temp1=p->score.english;temp2=p->score.math;temp3=p->score.c_language;temp4=p->score.all;strcpy(p->sid,r->sid);strcpy(p->name,r->name);p->score.english=r->score.english;p->score.math=r->score.math;

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值