C语言设计应用 答案_第1页
C语言设计应用 答案_第2页
C语言设计应用 答案_第3页
C语言设计应用 答案_第4页
C语言设计应用 答案_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计及应用--PAGE190-《C语言程序设计及应用》课后习题参考答案单元1开发平台一、单项选择题1.C2.D3.A4.B5.D二、编程题参照本章程序,编写一个C语言程序,在屏幕上输出以下信息:我的好伙伴——C语言#include<stdio.h>voidmain(){printf("我的好伙伴——C语言;\n");}单元2变量与表达式一、单项选择题1.A2.D3.C4.D5.B6.C二、编写程序编写一个C语言程序,计算R1上的电流值。图中:R1=12.5Ω,R2=6Ω,R3=5Ω,R4=7Ω,电压U=33V。程序要求将变量的类型定义为单精度实型。#include<stdio.h>voidmain(){

//定义电阻与电压

floatR1=12.5,R2=6.0,R3=5.0,R4=7.0;

floatU=33;

//计算总电阻

floatR5=R3+R4;

//计算R3与R4串联后的电阻

floatR6=(R2*R5)/(R2+R5);//计算R2和R5并联后的电阻

floatR=R1+R6;

//计算总电阻(R1和R6串联)

floatA=U/R;

//计算电流(U/R)

printf("电路的电流为:%f",A);//电路的电流为:2.000000}单元3字符型数据一单项选择题1.C2.D3.D4.B5.D二、编写程序1.将用户输入的小写字母转换为大写字母。#include<stdio.h>intmain(){chara;printf("请输入小写字母:");scanf("%c",&a);printf("您输入的小写字母为:%c\n",a);//大写字母与小写字母ASCII码相差32a-=32;printf("转换后的大写字母为:%c",a);return0;}2.编写程序实现对键盘接收字符的加密与解密运算,加密规则为:采用输入字符的后一个字符替换(例如:输入为a,输出为b)。#include<stdio.h>intmain(void){chara;printf("请输入字符:");scanf("%c",&a);printf("输入的字符为:%c\n",a);//加密过程a+=1;printf("加密后的字符为:%c\n",a);//解密过程a-=1;printf("解密后的字符为:%c",a);return0;}单元4顺序结构程序设计一、单项选择题1.C2.A3.C4.C5.B二、编写程序1.从键盘输入一学生的数学、英语、计算机三门课程的成绩,计算该学生的总成绩和平均成绩。#include<stdio.h>intmain(){ intmath,english,computer,sum=0; floataver; scanf("%d%d%d",&math,&english,&computer); sum=math+english+computer; aver=sum/3.0; printf("sum=%daver=%.2f\n",sum,aver); return0;}2.帮水果店老板算账。假设苹果5.5元/斤,芒果9元/斤,龙眼15元/斤。根据顾客购买的各水果重量,计算并输出该顾客应付金额,再输入顾客付款金额,计算并输出应找的金额。#include<stdio.h>intmain(){ floatwApple,wMango,wLongan,payable,payment; scanf("%f%f%f",&wApple,&wMango,&wLongan); printf("应付金额:"); payable=wApple*5.5+wMango*9+wLongan*15; printf("%.2f\n",payable); printf("顾客付款:"); scanf("%f",&payment); printf("找零:%.2f\n",payable-payment); return0;}3.分解数字。输入一个四位整数,将该数的千位、百位、十位、各位上的数字分离出来,并求各位数字之和。#include<stdio.h>intmain(){ intnum,kilobit,hundreds,tens,units,sum=0; scanf("%d",&num); kilobit=num/1000; hundreds=num/100%10; tens=num/10%10; units=num%10; sum=kilobit+hundreds+tens+units; printf("%d%d%d%dsum=%d\n",kilobit,hundreds,tens,units,sum); return0;}单元5选择结构程序设计一、单项选择题1.B2.C3.D4.A5.D二、编写程序输入任意一个年份,判断其是否是闰年。#include<stdio.h>intmain(){ charch; ch=getchar(); if(ch>='A'&&ch<='Z'){ putchar(ch+32); }else{ putchar(ch-32); } return0;}给一百分制成绩,输出其对应的等级。90~100:A等,80~89:B等,70~79:C等,60~69:D等,0~59:E等。(采用if语句和switch语句分别编写)#include<stdio.h>intmain(){ intscore; chargrade; scanf("%d",&score); if(score<0||score>100){ printf("无效成绩,运行结束。\n"); return0; } switch(score/10){ case9: case10:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break; default:grade='E'; } printf("%d对应的等级为:%c\n",score,grade); return0;}根据一个人的体重(单位:kg)和身高(单位:m)计算出他的体指数(BMI),BMI=体重(kg)/身高(m)的平方。如果BMI<18.5,则体重过低;如果18.5≤BMI<24,则体重正常;如果24≤BMI<28,则体重超重;如果BMI≥28,则属于肥胖。从键盘输入一个人的体重和身高,计算出他的BMI数据,并输出他的BMI属于哪一种情况。#include<stdio.h>intmain(){ floatweight,height,BMI; scanf("%f%f",&weight,&height); BMI=weight/(height*height); if(BMI<18.5){ printf("体重过低\n"); }elseif(BMI<24){ printf("体重正常\n"); }elseif(BMI<28){ printf("体重超重\n"); }else{ printf("属于肥胖\n"); } return0;}单元6循环结构程序设计一、选择题1.B2.B3.C4.A5.B二、编写程序求s=1-1/2+1/3-1/4+…+1/49-1/50的值。#include<stdio.h>intmain(){ doubles=0; inti,sign=1; for(i=1;i<=50;i++){ s=s+sign*1.0/i; sign=-sign; } printf("s=%lf\n",s); return0;}从键盘输入任一正整数,输出其各位数字之和以及它是一个几位数。#include<stdio.h>intmain(){ intnum,r,count=0,sum=0; scanf("%d",&num); while(num>0){ r=num%10; sum=sum+r; count++; num=num/10; } printf("sum=%d是一个%d位数\n",sum,count); return0;}输出能被7整除而且百位、十位、各位上数字都不相同的三位数。#include<stdio.h>intmain(){ intnum,h,t,u,count=0; for(num=100;num<1000;num++){ if(num%7==0){ h=num/100; t=num/10%10; u=num%10; if(h!=t&&t!=u){ printf("%d\t",num); count++; } } } printf("\n共有%d个满足条件的数。\n",count); return0;}编程输出Fibonacci数列1123581321……数列的前30项,要求每行输出5个数。#include<stdio.h>intmain(){ intf1=1,f2=1,f,i; printf("%d\t%d\t",f1,f2); for(i=3;i<=30;i++){ f=f1+f2; printf("%d\t",f); if(i%5==0)printf("\n"); f1=f2; f2=f; } return0;}A、B、C、D代表一位的十进制数字,并存在ABCD-CDC=ABC的数学关系,编程求出A、B、C、D的值。#include<stdio.h>intmain(){ intnum,A,B,C,D; for(num=1000;num<10000;num++){ A=num/1000; B=num%1000/100; C=num%100/10; D=num%10; if(num-(C*100+D*10+C)==A*100+B*10+C){ printf("%d\n",num); } } return0;}单元7数组一、选择题1.D2.D3.B4.A5.B二、编写程序输入10个数存放于数组num中,然后将num[0]与num[9]交换、num[1]与num[8]交换、……、num[4]与num[5]交换,输出交换值后的数组。#include<stdio.h>voidmain(){ intnum[10],t; for(inti=0;i<10;i++){ scanf("%d",&num[i]); } for(inti=0;i<10;i++){ printf("%3d",num[i]); } putchar('\n'); for(inti=0;i<5;i++){ t=num[i]; num[i]=num[9-i]; num[9-i]=t; } for(inti=0;i<10;i++){ printf("%3d",num[i]); }}随机产生10个1~100之间的整数存放于数组a中,将这些数据按降序排列。再从键盘输入一个整数,将这个整数插入到a数组中使得数组中的整数仍然按降序排列。#include<stdio.h>#include<math.h>voidmain(){ intnum[11],t,a; for(inti=0;i<10;i++){ num[i]=(int)(1+rand()%100); } for(inti=0;i<10;i++){ printf("%4d",num[i]); } putchar('\n'); //降序排列 for(inti=0;i<10;i++){ for(intj=0;j<9-i;j++){ if(num[j]<num[j+1]){t=num[j];num[j]=num[j+1];num[j+1]=t; } } } for(inti=0;i<10;i++){ printf("%4d",num[i]); } putchar('\n'); scanf("%d",&a);//输入一个整数 //插入该正数 for(inti=9;i>=0;i--) { if(a>num[i]) { num[i+1]=num[i]; } else { num[i+1]=a; break; } }putchar('\n'); for(inti=0;i<11;i++){ printf("%4d",num[i]); }}从键盘输入任意字符串,再从键盘输入另一个字符,统计该字符在字符串中出现的次数。voidmain(){ charstring[81]; charch; intcount=0; gets(string); putchar('\n'); ch=getchar(); for(inti=0;string[i]!='\0';i++){ if(string[i]==ch){ count++; } } putchar('\n'); printf("%c出现的次数=%d",ch,count); }字符串加密。将字符串中的英文字母转换成其后面的第二个字母,其余字符不变,即A→C,B→D,……,Y→A,Z→B,小写字母类推。输出转换后的字符串。#include<stdio.h>voidmain(){ charstring[81]; gets(string); putchar('\n'); puts(string); for(inti=0;string[i]!='\0';i++){ if((string[i]>='A'&&string[i]<='Z')||(string[i]>='a'&&string[i]<='z')){ if(string[i]=='Y'||string[i]=='y'||string[i]=='Z'||string[i]=='z') string[i]=string[i]-24; else string[i]=string[i]+2; } } putchar('\n');puts(string);}输入一个英文句子,统计句子中英文单词的个数,假设单词之间用空格隔开。#include<stdio.h>voidmain(){ charstring[32]; inti,num=0,word=0; charc; printf("请输入一句英文:"); gets(string); for(i=0;(c=string[i])!='\0';i++) if(c=='') word=0; elseif(word==0){ word=1; num++; } printf("有%d个单词",num); return0;}计算M×N二维数组两对角线元素之和。#include<stdio.h>voidmain(void){intm=10,n=10,i,j,sum;sum=0;inta[m][n];for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);if(i==j||i+j==n-1)sum+=a[i][j];}}printf("sum=%d\n",sum);}7.输出如下矩阵的数据。123456234561345612456123561234612345#include<stdio.h>voidmain(){ inta[6][6]={1,2,3,4,5,6}; //构造矩阵后面5行 for(inti=1;i<=5;i++){ for(intj=0;j<5;j++){ a[i][j]=a[i-1][j+1]; } a[i][5]=a[i-1][0]; } for(inti=0;i<6;i++){ for(intj=0;j<6;j++){ printf("%2d",a[i][j]); } printf("\n"); }}单元8函数选择题1.B2.C3.A4.B5.C6.C7.A8.D9.A10B二、编写程序1.编写一个函数,有一个char型参数,若传入的参数是小写字母,则将它转换成大写字母返回,否则返回参数原始值。#include<stdio.h>charchange(charch){ if(ch>'a'&&ch<='z') returnch-32; else returnch;}voidmain(){ charch; scanf("%c",ch); putchar(change(ch));}2.编写一个函数,利用静态变量,统计该函数被调用的次数。#include<stdio.h>voidfun(){staticintcount;count++;printf("我被调用了%d次\n",count);}voidmain(){fun();fun();fun();}3.编写一个程序,在自定义函数中计算出全局数组中前n个数据的平均值,并在主函数中进行输出。#include<stdio.h>floatavg(floata[],intn){floats=0;for(inti=0;i<n;i++){s=s+a[i];}returns/n;}voidmain(){floata[]={1,2,3,4,5,6,7,8,9,10};intn=5;printf("前%d个数的平均值是:%.2f",n,avg(a,n));}4.编写一个程序,输入任意正整数n,计算出1+1/2+1/3+…+1/(n-1)+1/n的值。#include<stdio.h>voidmain(){intn;floats=0;scanf("%d",&n);for(inti=1;i<=n;i++){s=1.0/i+s;}printf("s=%.2f",s);}5.编写一个程序,输入任意正整数n,找出它的最大质因数。#include<stdio.h>#include<math.h>//判断x是否是素数boolisPrime(intx){ intm=(int)sqrt(x+0.5); for(inti=2;i<=m;i++){ if(x%i==0)returnfalse; } returntrue;}voidmain(){ intn; scanf("%d",&n); for(inti=n;i>1;i--){ if(n%i==0&&isPrime(i)){ printf("%d\n",i); break; } }}单元9编译预处理单项选择题1.A2.D3.C4.B5.C6.C编写程序用#define定义一个比较大小的函数#include<stdlib.h>#include<stdio.h>//使用宏定义来定义一个比较两个值大小的函数#defineMAX(a,b)((a>b)?a:b)intmain(){intnum1=5;intnum2=8;//调用MAX宏来获取最大值fprintf("%d\n",MAX(num1,num2));return0;}单元10指针一、选择题1.D2.D 3.B4.B5.C6.C7.C8.C9.B10.D二、编写程序1.编写程序,输入10个整数存入一个一维数组中,再按逆序重新存放后输出。voidmain(){inta[10],i,*p,t;p=a;for(i=0;i<10;i++)scanf(“%d”,p+i);for(i=0,p=a+9;i<4;i++,p—){t=a[i];a[i]=*p;*p=t;}for(p=a;p<p+10;p++)printf(“%4d”,*p);}2.输入一行字符,统计其中的字母、数字、空格以及其他字符的个数。voidmain(){chars[100],*p=s;inta=0,b=0,c=0,d=0;gets(s);for(;*p!=‘\0’;p++)if(((*p>=‘a’)&&(*p>=‘z’))||((*p>=‘A’)&&(*p<=‘Z’)))a++;elseif((*p>=‘0’)&&(*p<=‘9’))b++;elseif(*p==‘‘)c++;elsed++;printf(“字母有%d个,数字有%d个,空格有%d个,其他字符有%d个。”,a,b,c,d);}3.输入一个二维实型数组,输出其中的最大值、最小值和平均值。voidmain(){floata[3][4],*p,max,min,average=0;inti,j;p=a[0];for(i=0;i<2;i++)for(j=0;j<3;j++)scanf(“%f”,*(p+i)+j);max=min=p[0][0];for(;p<p+12;p++){if(*p>max)max=*p;if(*p<min)min=*p;average+=*p;}average/=12;printf(“最大值:%.2f,最小值:%.2f,平均值:%.2f\n”,max,min,average);}单元11结构体和共用体一、选择题C2.A 3.B4.C5.C6.D7.A8.B9.B10.D编写程序1.编写程序输入一个学生记录,记录包含学号、姓名、性别和成绩信息,从键盘输入这些数据,并且显示出来。#include<stdio.h>structstudent{intno;charname[20];charsex[2];floatscore;}stu1;voidmain(){printf("*********请输入该学生的学号、姓名、性别和成绩:\n");scanf("%d%s%s%f",&stu1.no,,stu1.sex,&stu1.score);printf("学号:%d\n姓名:%s\n性别:%s\n成绩:%f\n",stu1.no,,stu1.sex,stu1.score);}2.一个班有30名学生,每个学生的数据包括学号、姓名、性别、及2门课的成绩,现从键盘上输入这些数据,并且要求:(1)输出每个学生2门课的平均分。(2)输出每门课的全班平均分。(3)输出姓名为”zhangliang”的学生的2门课的成绩。#include<stdio.h>#include<string.h>#defineN2voidInput_Info();voidscore_avg();voideveryStu_avgScore();voidscore_zhangliang();voidmain(){Input_Info();score_avg();everyStu_avgScore();score_zhangliang();}structstudent{intno;charname[20];charsex[2];floatscore1;floatscore2;}stu[N];voidInput_Info(){inti;printf("*************输入该班所有人的信息:(学号、姓名、性别、数学成绩、英语成绩,并用空格隔开)\n");//printf("学号\t姓名\t性别\t数学\t英语");for(i=0;i<N;i++){printf("请输入第%d个人的信息:\n",i);scanf("%d%s%s%f%f",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2);}}voideveryStu_avgScore()//(1)输出每个学生2门课的平均分。{floatoneself_avg[N]={0.0f};inti;for(i=0;i<N;i++)oneself_avg[i]=(stu[i].score1+stu[i].score2)/2;for(i=0;i<N;i++)printf("第%d个学生的两门课平均分为%5.2f\n",i,oneself_avg[i]);}voidscore_avg()//(2)输出每门课的全班平均分{floatsum1=0.0f,avg1,sum2=0.0f,avg2;inti;for(i=0;i<N;i++){sum1+=stu[i].score1;sum2+=stu[i].score2;}avg1=(sum1)/2;avg2=(sum2)/2;printf("该班的数学平均成绩为%5.2f,英语平均分为%5.2f\n",avg1,avg2);}voidscore_zhangliang()//(3)输出姓名为”zhangliang”的学生的2门课的成绩。{inti;for(i=0;i<N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论