c语言习题编程课后习题为什么我老是不会做呢?

c语言课本课后习题答案 - 下载频道 - CSDN.NET
&&&&c语言课本课后习题答案
&c语言课本课后习题答案
word文档,c语言答案,C语言课后题编程答案编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
#include&stdio.h&
printf(“560分钟可转换成%d小时%d分钟”,h,m);
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 传优质资源可以获取积分,详细见。选择完成有奖的任务,可以获取积分。选择购买VIP会员服务,无需积分下载资源。评价资源返积分:第一次绑定手机,将获50下载积分及100论坛可用分。论坛可用分兑换下载积分。
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
课程资源下载排行
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
c语言课本课后习题答案
所需积分:1
剩余积分:
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000我正在学c语言,现在有道关于链表的编程题,我不会做,哪位高手会做,谢谢啦!题目如下:
我正在学c语言,现在有道关于链表的编程题,我不会做,哪位高手会做,谢谢啦!题目如下:
建立一个有序链表,然后有序输出;再再该链表中插入一个数使链表仍然有序,再输出;最后,删除该数字,再输出。。。题目就是这样,至于链表中的元素,你们可以随便添,只要有序就行。。谢谢了
//看我的这个比较简单点 !#include &stdio.h&#include &stdlib.h&typedef struct node{&&&&&& struct node *} NNode *creatLinklist(){&&&&&& Node *pfirst,*p,*&&& pfirst = p = pnext = NULL;&&& pfirst = (Node *)malloc(sizeof(Node));&&& pfirst-&data = -111;&&& pfirst-&next = NULL;&&& p =&&& for (i=0;i&10;i++)&&& {&&&&&&& pnext= (Node *)malloc(sizeof(Node));
&&&&&&& p-&next =&&&&&&& pnext-&data=i*i;&&&&&&& pnext-&next=NULL;&&&&&&& //p-&next =&&&&&&& p=&&& }&&&}void visit(Node *p){&&& printf("遍历链表:\n");&&& while (p != NULL)&&& {&&&&&&& printf("-&%d",p-&data);&&&&&&& p=p-&
&&& }&&& printf("\n");}void delNode(Node *p,int e){&&& Node *pP&&& printf("1.删除链表中值为e的节点:\n");&&& while ((p != NULL)&&(p-&data != e))&&& {&&&&&&& pPrevious=p;&&&&&&& p=p-&&&& }&&& if (p != NULL)&&& {&&&&&&& pPrevious-&next = p-&&&&&&&& printf("删除链表中值为%d的节点成功!\n",e);
&&& }&&& else&&&&&&& printf("链表中找不到值为%d的节点,删除失败!\n",e);&&&&&&& free(p);
}void addNode(Node *p,int e,int k){&&& Node *p2;&&& p2=(Node *)malloc(sizeof(Node));&&& p2-&data=k;&&& p2-&next=NULL;&&& printf("2.在值为%d的节点后面插入值为%d的节点:\n",e,k);&&& while ((p != NULL)&&(p-&data != e))&&& {&&&&&&& p=p-&&&& }&&& if (p != NULL)&&& {&&&&&&& p2-&next=p-&&&&&&&& p-&next=p2;&&&&&&& printf("在值为%d的节点后面插入值为%d的节点成功!\n",e,k);&&& }&&& else&&&&&&& printf("链表中没有值为%d的节点\n",e);}int find(Node *p,int e){&&&&&& printf("3.在链表p中查找值为e的节点,若找到返回其位置,若不在则返回-1:\n");&&& for (i=1;p != NULL &&p-&data !=i++)&&& {&&&&&&& p=p-&&&& }&&& if (p != NULL)&&& {&&&&&&& printf("链表中值为%d的节点位置在:",e);&&&&&&&&&& }&&& else&&&&&&& return -1;
}int&main(){&&& Node *&&&&&& pfirst=creatLinklist();&&& visit(pfirst);&&& delNode(pfirst,12);&&& visit(pfirst);&&& addNode(pfirst,9,10);&&& visit(pfirst);&&& i=find(pfirst,64);&&& printf("%d\n",i);&&& return 0;}
你看我的链表吧。是最基础的,链表是很复杂的,但是入门知识还是很简单的,只不过把指针和结构体综合了一下!
他为什么说删除失败。。。
还有,你那个遍历链表是什么意思啊?
遍历链表就是把链表中
数据域(在此链表中是data)显示出来,就是查看链表内容,删除失败是我在条用删除链表节点的函数的时候传值过去的是链表节点中没有的数据,你换一个链表节点中有的数据就删除成功了。
其他回答 (1)
#include &stdlib.h&#include &stdio.h&& #include &conio.h&& #include &time.h&
#define N 29000l#define TRUE 1#define FALSE 0
int a[N+1]={1,49,38,65,97,76,13,27,49,100,20};&&&& void insertSort(int a[],long n)/*对于长度为n的数字a[1..n]插入排序,a[0]作为监视哨*/{&&& long i,j;&&&&&& for (i=0;i&=n;i++)&&& {&&&&&&& a[0]=a[i];/*0作为监视哨*/&&&&&&& j=i-1;&&&&&&& x=a[i];&&&&&&& while (a[j]&=x)&&&&&&& {&&&&&&&&&&& a[j+1]=a[j];&&&&&&&&&&& j--;&&&&&&& }&&&&&&& a[j+1]=x;&&& }}
void selectSort(int a[],long n)/*对于长度为n的数a[0..n-1]选择排序*/{& int i,j,k,x;&& for(i=0;i&n;i++)&& {& k=i;&&&&& for(j=i+1;j&=n;j++)&&&&&&&& if(a[j]&a[k])& k=j;&&&&& if(i!=k)&&&&& {& x=a[i];&&&&&&&& a[i]=a[k];&&&&&&&& a[k]=x;&&&&& }&& }}
void swap(int *x,int *y){&&&&&& t=*x;&&& *x=*y;&&& *y=t;}
void bubbleSort(int a[],long n)/*对于长度为n的数a[0..n-1]冒泡排序*/{&&& long i,j,k;&&& int exchanged=TRUE;&&& i=1; &&& while ( i & n && exchanged)&&& {&&&&&&& exchanged =FALSE;&&& /*标志置为0,假定未交换*/&&&&&&& for (j=n-1; j&=i;& j-- )&&&&&&&&&&& if ( a[j-1] & a[j] ) &&&&&&&&&&& {&&&&& /*逆序*/&&&&&&&&&&&&&&& swap( &a[j-1], &a[j] ); /*交换*/&&&&&&&&&&&&&&&&& exchanged = TRUE;&& /*标志置为1,有交换*/&&&&&&&&&&& }&&&&&&& i++;&&& }
void shellSort(int a[],long n)/*对于长度为n的数a[0..n-1]选择排序*/{&&& long i,j;&&& long dd=n;&&&&&& while (dd&1)&&& {&&&&&&& dd=dd/2;&&&&&&& i=0;&&&&&&& while(i+dd&n)&&&&&&& {/*对a[i] a[i+dd] a[i+2dd]...穿梭排序*/&&&&&&&&&&& if(a[i+dd]&a[i])&&&&&&&&&&& {&&& &&&&&&&&&&&&&&& j=i+&&&&&&&&&&&&&&& while(j&dd-1 && a[j]&a[j-dd])&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& swap(&a[j],&a[j-dd]);&&&&&&&&&&&&&&&&&&& j=j-&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&&&&&& i++;&&&&&&& }&&& }}
void quickSort(int a[],long low,long high)/*对于长度为n的数a[0..n-1]快速排序*/{&&& long i,j,k;&&&
&&& if (low&=high)&&&&&&&&&& x=a[low];&&& i=&&& j=&&& while(i&j)&&& {&&&&&&& while(i&j && a[j]&=x)&&&&&&&&&&& j--;&&&&&&& swap(&a[i],&a[j]);&&&&&&& &&&&&&& while(i&j && a[i]&=x)&&&&&&&&&&& i++;&&&&&&& swap(&a[i],&a[j]);&&& }/*i=j 并且a[i]是中间元素*/&&& quickSort(a,low,i-1);&&& quickSort(a,i+1,high);}
void chuansuoSort(int a[],long n)/*对于长度为n的数字a[0..n-1]排序*/{&&& long i,j;&&&&&& for (i=0;i&=n-1;i++)&&&&&&& if(a[i]&a[i-1])&&&&&&& {&&&&&&&&&&& j=i;&&&&&&&&&&& while(j&0 && a[j]&a[j-1])&&&&&&&&&&& {&&&&&&&&&&&&&&& swap(&a[j],&a[j-1]);&&&&&&&&&&&&&&& j--;&&&&&&&&&&& }&&&&&&& }&&& }
void Merge(int a[], int b[], long low, long mid, long high) {/* 将有序的记录序列 a[low..mid] 和 a[mid+1..high]&&&&& 归并为有序的记录序列 b[low..high]*/&&& long i,j,k,t;&&& i=&&& k=&&& j=mid+1;&&& while (i&=mid && j&=high)&&& {&&&&&&& if (a[i]&=a[j])&&&&&&& {&&&&&&&&&&& b[k]=a[i];&&&&&&&&&&& i++;&&&&&&& }&&&&&&& else&&&&&&& {&&&&&&&&&&& b[k]=a[j];&&&&&&&&&&& j++;&&&&&&& }&&&&&&& k++;&&& }&&& for (t=i;t&=t++)&&& {&&&&&&& b[k]=a[t];&&&&&&& k++;&&& }&&& for (t=j;t&=t++)&&& {&&&&&&& b[k]=a[t];&&&&&&& k++;&&& }}
void mergeSort(int a[],int b[],long low,long high){&&&&&& int c[N];&&& if (low==high)&&& {&&&&&&& b[low]=a[low];&&&&&&&&&& }&&&
&mid=(low+high)/2;&&& mergeSort(a,c,low,mid);&&& mergeSort(a,c,mid+1,high);&&& Merge(c,b,low,mid,high);}
void list(int a[],long n){&&& long&&&& printf("\nthe list is:\n");&&& for (i=0;i&n;i++)&&& {&&&&&&& printf("%5d ",a[i]);&&&&&&& if ( (i+1)%10==0)&&&&&&& printf("\n");&&& }&&& printf("\n");}
char verify(int a[],long n){&&& &&&&&&& for (i=0;i&n-1;i++)/* 从0开始& */&&&&&&& if (a[i]&a[i+1])&&&&&&&&&&& return FALSE;&&& return TRUE;}
void init(int a[],long n){&&&&&& for (i=0;i&n;i++)&&&&&&& a[i]=rand( ) %10000;}
select(){& system("cls");&&& /*运行前清屏*/& printf("& \n\n\n");
& printf("&&&&&&&& ******************** Welcome to my menu&& *******************&& \n");& printf("&&&&&&&& # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #&& \n");& printf("&&&&&&&& ||&&&&&&&&&&&&&&&&&&& 1&Bubble&& Sort&&&&&&&&&&&&&&&&&&&&&& || \n");& printf("&&&&&&&& ||&&&&&&&&&&&&&&&&&&& 2&Insert&& Sort&&&&&&&&&&&&&&&&&&&&&& || \n");& printf("&&&&&&&& ||&&&&&&&&&&&&&&&&&&& 3&Select&& Sort&&&&&&&&&&&&&&&&&&&&&& || \n");& printf("&&&&&&&& ||&&&&&&&&&&&&&&&&&&& 4&Quick&&& Sort&&&&&&&&&&&&&&&&&&&&&& || \n");& printf("&&&&&&&& ||&&&&&&&&&&&&&&&&&&& 5&Shell&&& Sort&&&&&&&&&&&&&&&&&&&&&& || \n");& printf("&&&&&&&& ||&&&&&&&&&&&&&&&&&&& 6&Chuansuo Sort&&&&&&&&&&&&&&&&&&&&&& || \n");& printf("&&&&&&&& ||&&&&&&&&&&&&&&&&&&& 7&Merge&&& Sort&&&&&&&&&&&&&&&&&&&&&& || \n");& printf("&&&&&&&& ||&&&&&&&&&&&&&&&&&&& 0&exit&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& || \n");& printf("&&&&&&&&& #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #&&& \n");& printf("&&&&&&&& #&&&&&&&&&&&&& ***********************************&&&&&&&&& #&& \n");& printf("&&&&&&&&& #&&&&&&&&&&& **&&&&&&&&& kong zhi liang&&&&&&&& **&&&&&&& #&&& \n");& printf("&&&&&&&& #&&&&&&&&&&& ***& 08 Electronic Commerce Class 5 ***&&&&&&& #&& \n");& printf("&&&&&&&&& #&&&&&&&&& ****&&&& number:&&&& &&&&& ****&&&&& #&&& \n");& printf("&&&&&&&& # --------------------------------------------------------- #&& \n");& printf("\n\t\t\t&&&& Enter your choice (0~7):");}
main(){&& printf("\n\n\n\n\n\n\n\n\n\n\t\tpress any key enter landing interface......");& /*按任意键进入登陆界面*/& getch();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /*输出上一步的结果*/& clrscr();
& for(;;)&&& {&&&&& select();&&&&& scanf("%d",&c);&& switch(c)&&&& {&&&&& case 1: { clrscr();&&&&&&&&&&&&&&& init(a,N);&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&& printf("Press any key start Bubble Sort!\n");&&&&&&&&&&&&&&& getch();&&&&&&&&&&&&&&& bubbleSort(a,N);&&&&&&&&&&&&&&& printf("After sort:");&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&& if (verify(a,N))&&&&&&&&&&&&&&&&&&& printf("Bubble Sort successfully!!\n");&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& printf("Sort failure!!\n");&&&&&&&&&&&&&&& printf("\n\n\t\tpress any key return menu......");&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&& case 2: { clrscr();&&&&&&&&&&&&&&&&& init(a,N);&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& printf("Press any key start Insert Sort!\n");&&&&&&&&&&&&&&&&& getch();&&&&&&&&&&&&&&&&& insertSort(a,N);&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& if (verify(a,N))&&&&&&&&&&&&&&&&&&&&& printf("Sort successfully!!\n");&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&& printf("Sort failure!!\n");&&&&&&&&&&&&&&&&& printf("\n\n\t\tpress any key return menu......");&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&& case 3: {& clrscr();&&&&&&&&&&&&&&&&& init(a,N);&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& printf("Press any key start select sort!\n");&&&&&&&&&&&&&&&&& getch();&&&&&&&&&&&&&&&&& selectSort(a,N);&&&&&&&&&&&&&&&&& printf("After sort:");&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& if (verify(a,N))&&&&&&&&&&&&&&&&&&&&& printf("Sort successfully!!\n");&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&& printf("Sort failure!!\n");&&&&&&&&&&&&&&&&& printf("\n\n\t\tpress any key return menu......");&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&& case 4: { clrscr();&&&&&&&&&&&&&&&&& init(a,N);&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& printf("Press any key start Quick Sort!\n");&&&&&&&&&&&&&&&&& getch();&&&&&&&&&&&&&&&&& quickSort(a,0,N-1);&&&&&&&&&&&&&&&&& printf("After sort:\n");&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& if (verify(a,N))&&&&&&&&&&&&&&&&&&&&& printf("Quick Sort successfully!!\n");&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&& printf("Sort failure!!\n");&&&&&&&&&&&&&&&&& printf("\n\n\t\tpress any key return menu......");&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&& case 5: { clrscr();&&&&&&&&&&&&&&&& init(a,N);&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&& printf("Press any key start Shell Sort!\n");&&&&&&&&&&&&&&&& getch();&&&&&&&&&&&&&&&& shellSort(a,N);&&&&&&&&&&&&&&&& printf("After sort:");&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&& if (verify(a,N))&&&&&&&&&&&&&&&&&&&& printf("Shell Sort successfully!!\n");&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&& printf("Sort failure!!\n");&&&&&&&&&&&&&&&& printf("\n\n\t\tpress any key return menu......");&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&& case 6:& { clrscr();&&&&&&&&&&&&&&&&& init(a,N);&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& printf("Press any key start Chuansuo Sort!\n");&&&&&&&&&&&&&&&&& getch();&&&&&&&&&&&&&&&&& chuansuoSort(a,N);&&&&&&&&&&&&&&&&& printf("After sort:");&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& if (verify(a,N))&&&&&&&&&&&&&&&&& printf(" Sort successfully!!\n");&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&& printf("Sort failure!!\n");&&&&&&&&&&&&&&&&& printf("\n\n\t\tpress any key return menu......");&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&& case 7:& { clrscr();&&&&&&&&&&&&&&&&& init(a,N);&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& printf("Press any key start Heap Sort!\n");&&&&&&&&&&&&&&&&& getch();&&&&&&&&&&&&&&&&& mergeSort(a,a,0,N-1);&&&&&&&&&&&&&&&&& printf("After sort:\n");&&&&&&&&&&&&&&&&& list(a,N);&&&&&&&&&&&&&&&&& if (verify(a,N))&&&&&&&&&&&&&&&&&&&&& printf("Sort successfully!!\n");&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&& printf("Sort failure!!\n");&&&&&&&&&&&&&&&&& printf("\n\n\t\tpress any key return menu......");&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&& case 0 : {exit(0);}&&&&& default :{ clrscr();&&&&&&&&&&&&&&& printf("\n\n\n\n\n\n\n\n\t\t\tYou input a wrong number!!!");&&&&&&&&&&&&&&& printf("\n\n\n\t\t\tpress any key return menu......");&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&& } getch();}&getch();}
你这个也太复杂了吧、、大学C语言好像没讲这些。。在、请你弄简单点好吗
我都是大学生,我都要学这些呢,我还不是计算机专业的,这算复杂吗?
相关知识等待您来回答
编程领域专家您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
2014年高教c语言程序设计(2011版)课后编程题答案.doc30页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:100 &&
你可能关注的文档:
··········
··········
第三章 顺序结构
3.30?编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。 ※程序如下※ main ?
? ?int?hour,? ?hour 560/60;? ?minute 560%60;? ?printf "hour %d,minute %d",hour,
3.31?编写程序,输入两个整数:,求出它们的商数和余数并进行输出。 ※程序如下※ #include
? ?int?num1,num2,i,j;?/*?定义变量?i-商,j-余数?*/ ?printf "input?num1?and?num2:\n" ;? ?scanf "%d%d",&num1,&num2 ;? ?i n?
3.32?编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数, ?对小数点后第二位数进行四舍五入,最后输出结果。 ※程序如下※ main ?
? ?double?a,b,c,average 0;? ?printf "input?a,b,c double :\n" ;? ?scanf "%lf%lf%lf",&a,&b,&? ?average
a+b+c /3;? ?average average*10;? ?average average+0.5;? ?? ?average average/10;? ?printf "average %lf",
3.33?编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b, ?把b中原来的值给c,把c中的值给a。 ※程序如下※ main ?
? ?int?a,b,c,t 0;? ?printf "input?a?b?c:\n" ;? ?scanf "%d%d%d",&a,&b,&? ?? ?printf "a %d?b %d?c %d",a,b,
第四章 选择结构
4.21?当a 0时,请将以下语句改写成switch语句。 ?if ?a 30? ?m 1; ?else?if ?a 40? ?m 2; ?else?if ?a 50? ?m 3; ?else?if ?a 60? ?m 4; ?else?m 5; 程序如下 main
?int?a; ?printf "Enter?a:\n" ; ?scanf "%d",& ?switch a/10
?case?0: ?case?1: ?case?2:?printf "m 1" ;?break?; ?case?3:?printf "m 2" ;?break?;? ?case?4:?printf "m 3" ;?break?; ?case?5:?printf "m 4" ;?break?; ?default:?printf "m 5" ;? ?
4.22?编写程序,输入一位学生的生日(年:y0、月:m0、日:d0);并输入当前的日 ?期(年:y1、月:m1、日:d1);输出该生的实足年龄。 ※程序如下
正在加载中,请稍后...70《全国计算机等级考试二级教程――C语言程序设计》课后习题详细答案-第3页
上亿文档资料,等你来发现
70《全国计算机等级考试二级教程――C语言程序设计》课后习题详细答案-3
ch=getchar();;(2)在本题中循环体内需要把读入的所有数字字符转;(3)要把输入的一串数字字符转换成一个整数,首先;①把当前读入的一个字符转换成一个一位整数,这可由;②把d中的一位数归并到n的低位中,这可用语句“n;if(ch&=′0′&&c;if语句后一对括号中的判断表达式可以调用字符函数;if(isdigit(ch)){
ch=getchar();}(2) 在本题中循环体内需要把读入的所有数字字符转换成一个整数。若用变量n来存放这个整数,为了保证有效的存放,应当把它定义成long类型。(3) 要把输入的一串数字字符转换成一个整数,首先需要判断当前读入的字符是否是数字字符,若不是则什么也不做;若是,则进行以下操作:① 把当前读入的一个字符转换成一个一位整数,这可由语句“d=ch-′0′; ”来实现,在这里d是一个整型变量;② 把d中的一位数归并到n的低位中,这可用语句“n=n*10+d;”来实现。这里所述的操作可由以下语句来完成:if(ch&=′0′&&ch&=′9′){ d=ch-′0′; n=n*10+d; }if语句后一对括号中的判断表达式可以调用字符函数isdigit来实现:if( isdigit(ch) ) { d=ch-′0′; n=n*10+d; }if子句的两个语句可以合并成:n=n*10+ch-′0′;。(4) 把(3)中的语句放入循环中:ch=getchar();while(ch![KG-*2]=′\n′){
if(ch&=′0′&&ch&=′9′) n=n*10+ ch-′0′;ch=getchar();}(5) 请自己写出定义语句并赋初值。注意,最后输出n时,应当使用格式说明%ld,而不能使用%d。6.22【分析与解答】(1) 行数的统计可通过统计输入的′\n′符的个数来完成。(2) 统计的过程应当放在一个while循环体中;判断循环是否进行的条件可以用:((ch=getchar())==EOF)。若用整型变量n作为计数器对′\n′符进行统计,只要读入的字符是′\n′,则n增1。如:while((ch=getchar())![KG-*2]=EOF)if(ch==′\n′)n++;(3) EOF是在stdio.h中预定义了的标识符,在TURBO C的环境下,键入Ctrl+Z(即按住键盘上的Ctrl键,同时按字母Z键)后,敲Enter键,即输入了EOF。6.23【分析与解答】(1) 本题要求的操作同样可在while循环中完成:while((ch=getchar())!=′\n′){
}(2) 若用整型变量n作为计数器对小写字母进行统计,只要读入的字符是小写字母,则n增1。如:if(ch&=′a′ && ch&=′z′)n++;(3) 在退出循环后,输出n的值。(4) 请自己完善程序。6.24【分析与解答】(1) 若图案的行数输入到变量L中。(2) 按要求L决定了图形的行数,因此可通过循环来实现L行的输出:for(i=1; i&=L; i++)循环体中的“??”号,代表输出L行的操作。(3) 假定ch中存放了一个字符,我们知道,通过以下循环可以在一行上输出n个字符: for(j=1; j&=n; j++)putchar(ch);putchar(′\n′);注意,在循环后putchar(′\n′);语句不可少,它用以换行。(4) 现在应当解决如何按要求给出每行输出的字符。由图分析,行数(或行号)为1时输出字符A,行数为2时输出字母B??若输出的字母放在变量ch中,行号取决于外循环的控制变量i,则输出的字母和行号的关系可用表达式:ch=′A′+i-1来表示。当i为1时ch中被赋予字母A,当i为2时ch中被赋予了字母B,其他依此类推。因此,在此表达式后,利用(3)中的循环就解决了各行上输出的字母。(5) 按要求每行输出的字母的个数不同,第二行输出3个字母,第三行输出5个字母,第四行输出7个字母??(3)中for循环体的执行次数取决于n的值,也就是说n的值决定了每行输出字母的个数。其实,n的值与行号有着密切的关系:n=2*i-1,当i为1时n的值是1、当i的2时n的值是3、当i的3时n的值是5、当i的4时n的值是7。因此在(3) 中for循环之前可用此表达式求出n的值。(6) 总结以上分析,我们可得到以下的程序段:for(i=1; i&=L; i++){
ch=′A′+i-1;n=2*i-1;for(j=1; j&=n; j++)putchar(ch);putchar(′\n′);}若所用的变量都已正确定义,通过输入L的值为5,则程序段在第一列起有以下的输出结果: ABBBCCCCCDDDDDDDEEEEEEEEE和题目的要求比较已趋接近,不同的是在每行没有适当的缩进。(7) 现在来解决每行的缩进问题。由题中给出的图形可知,若指定输出5行,第一行缩进5个空格,第二行则缩进4个空格,第三行则缩进3个空格,第四行则缩进2个空格,第五行则缩进1个空格。这同样可以由以下的for循环来实现:for(k=L; k&=i; k--)putchar(′ ′);把此循环放在i控制的循环体内、输出每行字符的循环之前即可。(8) 请读者自己补充有关的include行、语句和变量的定义,以完成整个程序。注意,如果有能力可在某些地方作些简化。第七章
函数习题分析与解答一、选择题7.1 【参考答案】
C)7.2 【参考答案】
C)7.3 【参考答案】
B)7.4【参考答案】
C)7.5【参考答案】
A)7.6【参考答案】
D)7.7【参考答案】
A)二、填空题7.8【参考答案】
127.9【参考答案】
9.0(或9.000000)7.10【参考答案】
47.11【参考答案】
[2] s7.12【参考答案】
[2] z*x7.13【参考答案】
[4] f(k)三、程序调试和编程题7.14
【分析与解答】(1) fun函数判断传给形参n的数是否为素数,若是函数返回1,否则返回0。(2) 函数的原意是用变量yes作为判断n是否为素数的标志,是素数,其值为1,否则为0。而所给函数的实际流程却不能实现这一功能,例如,若n的值为15(明显不是素数)时,在for循环中,当k的值为3时,就会执行if子句,yes得0,但for循环并没有终止,接着k为4时就会执行else子句,又使yes得1,由此可见此程序段并不能准确地判断一个数是否为素数;最后确定yes为何值的是for循环的终止值n/2,当n为15时,k的值为n/2等于7,在循环体内将又一次执行else子句,使yes得1,这时循环结束,函数返回1。由此可见所给fun函数不能起到预想的作用。(3) 由上分析可知,对于n的值为15时而言,问题是在一旦yes的值为0,已判断n中的值不是素数时,没有及时退出循环,返回0;因此,若在if子句中添加一条语句:就能解决这一问题,把if语句改写如下:if(n%k==0){ yes=0; }else
yes=1;(4) 在所给fun函数中,当n的值为2、3时(都是素数),因为n/2的值为1(大于k中的2),所以不会进入for循环,而直接执行return语句,细心的读者应该可以发现,这时yes没有赋过值,也就是说,返回的是一个不确定的值,这将会导致错误;因此,应当在定义语句中给yes赋初值1:int
k, yes=1;至此fun函数能正确运行。(5) 总结:因为一旦if语句中的表达式:n%k==0的值为1(即可被某数整除),则可以确定n不是素数,因此即可返回,不必再执行函数其他部分,if子句可改成:if(n%k==0){ yes=0; }else
yes=1;也可简化成:if (n%k==0) return
yes=1;又可进一步不用变量yes,并去掉else,简化成(请参考例7.4):for(
k=2; k&=n/2; k++)if(n%k==0) return
1;7.15【分析与解答】(1) 若用整型变量c存放余数,则求a被b除后的余数可用表达式:c=a%b。(2) 本题要求编写函数mymod用以求a被b除后的余数即:c=mymod( a,b );(3) 只要把a%b作为函数值返回即可完成操作(请参考例7.1):int
}(4) 总结:本题在算法上十分简单,只是要求读者能够掌握编写函数的基本知识。7.16【分析与解答】(1) 本题所要采用的算法是累加。分析可见,所有累加项的分子都是1,而分母部分逐项增1;只是累加项的符号交叉变化。因此处理好符号的变化是完成操作的关键之一。(2) 若函数名为funa,传送到函数的参数是整型值,假定形参命名为n;函数的返回值应当是浮点型,为此函数的首部可以是:double
n )(3) 接着写函数体。累加放在一个for循环中来完成,若循环控制变量为k,可利用循环控制变量作为累加项t的分母,累加值放在add中:for( k=1; k&=n; k++){
……t=s*1.0/k;add=add+t;}此处,s用作符号变量,在1和-1之间交叉变化,乘以1.0/k后,t的值也将按要求变化符号。注意,表达式1.0/k不可以写成1/k,因为每一项的绝对值必定是小于1的小数。(4) 现在需要确定s的值。最简单的可用表达式:s=-s来实现(请参考例5.2),若赋值号右边s中的值为-1,则赋值号左边s中的值就得1;若赋值号右边s中的值为1,则赋值号左边s中的值就会得-1;则每循环一次就使s改变了一次符号。当然还可有多种方法。把以上表达式添加到循环体中:for( k=1; k&=n; k++){
s=-s;t=s*1.0/k;add=add+t;}(5) 最后注意应当给各变量赋以适当的初值,并返回函数值。(6) 请编写主函数。当传给形参的值为10时,函数的返回值应当是:0.645635。(7) 总结:本题的算法并不复杂,但是需要读者掌握编写函数的基本知识。掌握需要传入函。 数的参数及其类型,掌握需要返回的值及其类型。在此基础上,其他方面与先前在主函数中编写的程序没有什么区别。7.17
【分析与解答】(1) 此题与7.18相似。函数的返回值为浮点型,函数只有一个形参,为整型。(2) 函数的基本算法是累加,只是除第一项外其余各项都用减法;每一项的分子都是1,分母部分为k2,k的值逐项增1,由2变化到m。因此,算法可以用一个循环来实现。(3) 当m的值为12时,函数值应是:0.435023。7.18【分析与解答】(1) 若函数取名为fun,按题意,x作为形参,由调用函数传入,其类型不应当用整型;表达式x2-5x+4的值作为函数值返回,函数值的类型应为浮点型。因此,很容易写出函数: double
fun( double
x*x-5*x+4;
}(2) 若在调用函数时,x和y2已正确定义,且x已有确定的值,则可用以下函数调用语句得到y2的值:y2=fun( x+15 );(3) 同样,若在调用函数时,x和y3已正确定义,且x已有确定的值,则可用以下函数调用语句得到y3的值:y3=fun( sin(x) );注意,因为在程序中调用了C语言提供的库函数sin,因此应当在程序的最前面包含以下命令行:#include
″math.h″(4) 参考(2) 和(3) 应不难写出求y1的语句,请读者自己完成。(5) y1的值应是:-2.0。当x的值为5时,y2的值应是:304.0。当x的值为0.5时,y3的值应是:1.832721。(6) 总结:① 本题已给出了函数需要求值的表达式,读者只需确定函数的类型和形参的类型,就可以写出函数,就像例7.1中求两数之和的函数一样简单。② 在给定了函数之后,调用函数时,函数的实参应当是一个与形参类型一致的任意合法的 表达式。例如,可以是常量、算术表达式,也可以是函数等。就像例7.1中求两数之和的add函数一样,可以用add( 3,4 );来求3+4;当x、y有确定值时,可以用add( x*x,y*y);来求x2+y2;当x、y有确定值时,可以用add( sin(x+y),cos(x+y));来求sin(x+y)+cos(x+y),这同样可以通过add( sin(add(x,y)),cos((add(x,y)) );来求得。第八章
指针习题分析与解答一、选择题8.1【参考答案】
A)8.2【参考答案】
B)8.3【参考答案】
B)8.4【参考答案】
C)8.5【参考答案】
B)8.6【参考答案】
B)8.7【参考答案】
C)8.8【参考答案】
D)8.9 【参考答案】
B)8.10【参考答案】
C)8.11【参考答案】
C)8.12【参考答案】
C)二、填空题8.13【参考答案】
1108.14【参考答案】
18.15【参考答案】
char *p, *p=ch,
p=& scanf(“%c/n”p,); ch=*p; p=& printf(“%c/n”,*p);8.16【参考答案】
*s=*(p+3), *(s-2),50, *s=*(a+1), 2, 10,20,30,40三、编程题8.17【分析与解答】(1) 若函数名为fun,按题意,函数不返回函数值;函数的形参需要接受传送过来的两个浮点数,因此需要有两个double类型的形参;另外要把它们的和值与差值,通过形参传送回去,这就要求有两个double类型的形参指针,接受传送过来的地址,以便通过指针把和值与差值传送给所指的主函数中的变量。因此函数的首部应当是:包含各类专业文献、应用写作文书、幼儿教育、小学教育、中学教育、专业论文、高等教育、70《全国计算机等级考试二级教程――C语言程序设计》课后习题详细答案等内容。 
 《全国计算机等级考试二级教程――C语言程序设计》习题分析与解答(二)--3 4 5_IT/计算机_专业资料。国家二级 c 官方答案《全国计算机等级考试二级教程――C 语言...   全国计算机等级考试二级教程――《C语言程序设计》课后题及参考答案_其它考试_资格考试/认证_教育专区。全国计算机等级考试二级教程――《C语言程序设计》课后题及参考...   《全国计算机等级考试二级教程――C 语言程序设计》课后题及参考答案 目 录 第一章、第二章、第三章、第四章、第五章、第六章、第七章、第八章、第九章、 ...   《全国计算机等级考试二级教程――C语言程序设计》题目及解答_工学_高等教育_教育专区。今日推荐 116份文档 2014一级建造师考试 一级建造师《建设工程项目管理》 ...  全国计算机等级考试二级教程--C语言程序设计课后习题答案_IT认证_资格考试/认证_教育专区 暂无评价|0人阅读|0次下载|举报文档 全国计算机等级考试二级教程--C语言...   C语言程序设计》课后习题详细答案_IT认证_资格考试/认证_教育专区。《全国计算机等级考试二级教程――C语言程序设计》《全国计算机等级考试二级教程――C 语言程序设计...   普通高等教育教材――C语言程序设计教程――课后习题答案_IT/计算机_专业资料。... 全国计算机等级考试二级... 37页 免费 C语言程序设计教程课后习... 20页 ...   全国计算机等级考试二级教程――C语言程序设计(2008年版)高等教育出版社【第三章参考答案】_IT认证_资格考试/认证_教育专区。关于C语言,用于初学者...  全国计算机等级考试二级教程――C语言程序设计(2008年版)高等教育出版社【第四章参考答案】_理学_高等教育_教育专区。用于C语言一、选择题 4.1 4.6 A A 4.2...

我要回帖

更多关于 c语言复习题 的文章

 

随机推荐