c语言课后答案_电子科技大学出版社

合集下载

数据结构c语言描述第二版答案耿国华西安电子科技大学

数据结构c语言描述第二版答案耿国华西安电子科技大学

第1章绪论2.(1)×(2)×(3)√3.(1)A(2)C(3)C5.计算下列程序中x=x+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;【解答】x=x+1的语句频度为:T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/66.编写算法,求一元多项式p n(x)=a0+a1x+a2x2+…….+a n x n的值p n(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。

注意:本题中的输入为a i(i=0,1,…n)、x和n,输出为P n(x0)。

算法的输入和输出采用下列方法(1)通过参数表中的参数显式传递(2)通过全局变量隐式传递。

讨论两种方法的优缺点,并在算法中以你认为较好的一种实现输入输出。

【解答】(1)通过参数表中的参数显式传递优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。

缺点:形参须与实参对应,且返回值数量有限。

(2)通过全局变量隐式传递优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗缺点:函数通用性降低,移植性差算法如下:通过全局变量隐式传递参数PolyValue(){ int i,n;float x,a[],p;printf(“\nn=”);scanf(“%f”,&n);printf(“\nx=”);scanf(“%f”,&x);for(i=0;i<n;i++)scanf(“%f ”,&a[i]); /*执行次数:n次*/p=a[0];for(i=1;i<=n;i++){ p=p+a[i]*x; /*执行次数:n次*/x=x*x;}printf(“%f”,p);}算法的时间复杂度:T(n)=O(n)通过参数表中的参数显式传递float PolyValue(float a[ ], float x, int n){float p,s;int i;p=x;s=a[0];for(i=1;i<=n;i++){s=s+a[i]*p; /*执行次数:n次*/p=p*x;}return(p);}算法的时间复杂度:T(n)=O(n)第2章线性表习题1.填空:(1)在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。

电子科技大学14秋《C语言(专科)》在线作业1答案

电子科技大学14秋《C语言(专科)》在线作业1答案

14秋《C语言(专科)》在线作业1
一,单选题
1. 有以下程序段typedefstructnode{intdata;structnode*next;}*NODE;NODEp;以下叙述中正确的是()。

A. p是指向structnode结构体变量的指针的指针
B. NODEp;语句出错
C. p是指向structnode结构变量的指针
D. p是structnode结构变量
正确答案:C
2. 对函数的正确描述()
A. 在C语言中可以嵌套定义函数
B. 自定义函数和调用函数可以不在一个源文件中
C. 函数定义都是平行的,独立的
D. 不能嵌套调用函数
正确答案:C
3. 以下选项中,当x为大于1的奇数时,值为0的表达式是()。

A. x%2==1
B. x/2
C. x%2!=0
D. x%2==0
正确答案:D
4. 在C语言中,下面那一个不是正确的概念()
A. 所有循环语句都要求至少要执行一次循环体
B. goto和if语句能构成循环语句
C. 循环过程只能包含,不能交叉
D. 循环体可以是一条语句
正确答案:A
5. 一个C程序的执行是从()
A. C程序的main函数开始,到main函数结束
B. 本程序的第一个函数开始,到本程序最后一个函数结束
C. 本程序的main函数开始,到本程序文件的最后一个函数结束
D. 本程序的第一个函数开始,到本程序main函数结束
正确答案:A
6. 若有定义:intw[3][5];,则以下不能正确表示该数组元素的表达式是()。

A. *(*w+3)
B. *(w+1)[4]
C. *(*(w+1))。

c语言课后答案_电子科技大学出版社

c语言课后答案_电子科技大学出版社
}
2、
main( )
{
float c, f ;
printf(“请输入一个华氏温度:\n”) ;
scanf(“%f”, &f) ;
c=*(f-32) ;
printf(“摄氏温度为:%\n”, c) ;
}
第四章循环程序设计
一、选择题
二、填空题
1.585858
2.0
3.18
4.8921
5.20,0
6.6
7.1,3,2
}
8.#include ""
main()
{int i,j,uppn,lown,dign,span,othn;
/*uppn,lown,dign,span,othn分别存放英文大写字母、小写字母、数字、空格和其他字符的个数*/
char text[3][80];
uppn=lown=dign=span=othn=0;
8.Year%400==0
year%100!=0
count++
三、编程题
1.
main()
{
long a;
scanf(“%ld”,&a);
if (a>=10000&&a<=99999)
printf(“这是个五位数”);
else if (a>=1000&&a<=9999)
printf(“这是个四位数”);
2.顺序结构,分支结构,循环结构
3.所谓算法就是为解决一个问题而采取的方法和步骤。
算法的特性:有穷性、确定性、输入、输出、可行性。
表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示;(4)用伪代码表示;(5)用计算机语言表示。

C语言程序设计教程 课后习题参考答案

C语言程序设计教程 课后习题参考答案
}
else if( carType == 2 ) //富康
{
if( distance < 3 )
totalMoney = 8.0;
else
totalMoney = 8 + fukang * (distance – 3);
}
else if( carType == 3 ) //富康
{
if( distance < 3 )
(3) 7BAB4BAB1BC
(4) ABABABC
(5) ******
******
******
******
4.
(1) a != b
(2) n / 10
(3) scanf(“%d”, &a);
5.(3)行int fac = 1, sum = 0;
6.
(1)
#include <stdio.h>
main( )
r = 2.5;
h = 3.5;
v = 3.14*r*r*h;
printf(“v=%lf\n”, v);
}
(2)
#include <stdio.h>
main( )
{
char ch;
ch = getchar( );
printf(“%c\n”, ch + 32);
}
(3)
#include <stdio.h>
scanf("%d", &carType);
printf("请输入您乘车的总路程:");
scanf("%lf", &distance);
if( carType == 1)//夏利

(完整版)数据结构_c语言描述(第二版)答案_耿国华_西安电子科技大学

(完整版)数据结构_c语言描述(第二版)答案_耿国华_西安电子科技大学

第1章绪论2.(1)×(2)×(3)√3.(1)A(2)C(3)C5.计算下列程序中x=x+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;【解答】x=x+1的语句频度为:T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/66.编写算法,求一元多项式p n(x)=a0+a1x+a2x2+…….+a n x n的值p n(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。

注意:本题中的输入为a i(i=0,1,…n)、x和n,输出为P n(x0)。

算法的输入和输出采用下列方法(1)通过参数表中的参数显式传递(2)通过全局变量隐式传递。

讨论两种方法的优缺点,并在算法中以你认为较好的一种实现输入输出。

【解答】(1)通过参数表中的参数显式传递优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。

缺点:形参须与实参对应,且返回值数量有限。

(2)通过全局变量隐式传递优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗缺点:函数通用性降低,移植性差算法如下:通过全局变量隐式传递参数PolyValue(){ int i,n;float x,a[],p;printf(“\nn=”);scanf(“%f”,&n);printf(“\nx=”);scanf(“%f”,&x);for(i=0;i<n;i++)scanf(“%f ”,&a[i]); /*执行次数:n次*/p=a[0];for(i=1;i<=n;i++){ p=p+a[i]*x; /*执行次数:n次*/x=x*x;}printf(“%f”,p);}算法的时间复杂度:T(n)=O(n)通过参数表中的参数显式传递float PolyValue(float a[ ], float x, int n){float p,s;int i;p=x;s=a[0];for(i=1;i<=n;i++){s=s+a[i]*p; /*执行次数:n次*/p=p*x;}return(p);}算法的时间复杂度:T(n)=O(n)第2章线性表习题1.填空:(1)在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。

C++课后习题答案(电大,李宁主编)【范本模板】

C++课后习题答案(电大,李宁主编)【范本模板】

第一章C++语言概述自测题P21。

1—1 CP8 1。

2-1 形式参数表 1.2-2 main 1。

2—3 ;1。

2-4 } 1.2—5 main 1.2-6 显示器输出流1。

2-7 键盘输入流1。

2—8 头文件 1.2—9 int f( );1.2—10 124 1。

2-11 × 1。

2—12 ×1.2-13 √ 1。

2—14 √ 1.2—15 ×1。

2—16 √ 1。

2-17 ABCFG 1.2-18 D1.2—19 DP11 1。

3—1 OBJ 1。

3—2 source.cpp习题一(P12)1—11.C 2.类型修饰符3.main4.语句以分号(;)结束5.{6.<〈7.〉〉8..h 9.source.obj10.Main 11.char *Hi(const char *); 12.331-21.√2.√3.×4.×5.√6.×7.√8.×1-31.ABFI 2.D 3.ABCD 4.B1—4# include 〈iostream。

h>void main( ){cout <<”C++语言程序设计"<〈endl;}1—5#include <iostream。

h〉void main(){int i,j,k;cout <<"请输入3个整数:";cin 〉>i>>j>>k;cout <<endl〈〈i〈〈”+”<〈j<<”+”〈〈k<〈”=”〈<i+j+k〈<endl;}第二章基本数据类型与表达式自测题P152。

1—1 常量变量 2.1-2 存储格式所能实施的操作P18 2。

2—1 √ 2.2—2 × 2.2-3 8 (常量123456789123L超过了长整型表示的2。

c语言课后答案-电子科技大学出版社Word版

c语言课后答案-电子科技大学出版社Word版
有一个空瓶C
将A中的醋倒入C
将B中的酱油倒入A
将C中的醋倒入B
2.输入一个数放在a中
max = a
以下步骤重复9次:
输入一个数放在a中
如果a>max,max=a
打印max的值
3.如果a<b
temp=a
a=b
b=temp
如果c>a
temp = a
a=c
c=temp
否则
如果c>b
temp=b
b=c
c=temp
2.顺序结构,分支结构,循环结构
3.所谓算法就是为解决一个问题而采取的方法和步骤。
算法的特性:有穷性、确定性、输入、输出、可行性。
表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示;(4)用伪代码表示;(5)用计算机语言表示。
二、算法
1.瓶子A里盛有醋
瓶子B里盛有酱油
int g,s,b;//个位、十位、百位
printf("水仙花数有:\n");
for(a=100;i<=999;a++)
{g=a%10;
s=a/10%10;
b=a/100;
if (a==g*g*g+s*s*s+b*b*b)
printf("%d ",a);
}
printf("\n");
}
4、
main()
}
2.main()
{
int a,b,c;
scanf(“%d%d%d”,&a,&b,&c);
printf(“sum=%d”,a+b+c);

C语言程序设计实验答案解析

C语言程序设计实验答案解析

-前言-/*非常感谢度娘以及各位网上C语言高手的支持,才能让敝人完成此文档的整理。

本文档集合了本人、度娘、众网友的力量,其中代码的正确率约为90%(不正确的有标注)。

为回报度娘及众网友的帮助,本文档免费下载。

*//*配“电子科技大学出版社(周信东主编)”的C语言程序设计实验*//*努力吧,骚年以及学妹们!*//*整理ed by 口玉刀一 of GUET.*/=====================实验一 C语言程序初步=====================1.----------------------------已知a=5,b=4,c=6,求出s并换行#include"stdio.h"main(){int a,b,c,s;a=5;b=4;c=6;s=(a+b+c)/3;printf("a=%d,b=%d,c=%d\n,s=%d",a,b,c,s);}2.-------------------------------输入一个数字求他的平方#include<stdio.h>main(){int r,s;scanf("%d",&r);s=r*r;printf("s=%d\n",s);}3.--------------------------------(1)#include<stdio.h>main(){printf(" *\n");printf("***\n");printf(" *\n");}(2)#include<stdio.h>{int v;int a,b,c; //a,b,c aer sides,v is volume of cubea=3;b=3;c=5;v=a*b*c;printf("v=%d\n",v);}=================================实验二数据类型、运算符和表达式=================================1.(1)--------------------------------------------------//总觉得打印结果怪怪的,DO YOU THINK SO?main(){char s1='3',s2='4',s3='5';int c1=101,c2=102;printf("3%c\t4%c\t5%c\n",s1,s2,s3); //3%c为输出3和%cprintf("s1=%d\ts2=%d\ts3=%d\n",s1,s2,s3);//注意哦,s1,s2,s3是char!而%d:输入输出为整形 %ld 长整型 %hd短整型 %hu无符号整形 %u %lu%s:输入输出为字符串 %c字符%f:输入输出为浮点型 %lf双精度浮点型printf("c1=%d\t~%c\n",c1,c1); //换码符'\t',表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置printf("c2=%d\t~%c\n",c2,c2); //注意c1,c2的类型}(2)//运行结果为8.300000 %是求余数先运算x-y,把结果转换为int型的有利于四则运算main(){float x=8.3,y=4.2,s;int a=7;s=x+a%5*(int)(x-y)%2/3;printf("s=%f",s);}main(){int i,j,p,q;i=3;j=6;p=i++;q=--j;printf("%d,%d,%d,%d\n",i,j,p,q);p=i--+3;q=++j-4;printf("%d,%d,%d,%d",i,j,p,q);}(4)main(){int m=15,n=9,s;m*=3+2;printf("%d",m);n+=n-=n*=n;printf("%d",n);printf("%d\n",(s=6*5,m+n+s));printf("%d\n",s);}2.---------------------------------------------------- (1)#include<stdio.h>#define MM 40main(){int a=3,b=6,t;t=MM/(3+6);printf("%d%d",t,MM);}//原来printf语句打成了print,printf语句中少了一个%d.(2)#include<stdio.h>{int m;double x;scanf("%d",&m);x=3.14*m*m;printf("%f",x);}//注意分号,%f转义(3)main(){int m=8,n=5;printf("%d",m*=m-n);printf("%d,%d,%d",m=m+1,n-1,m+n);}3.---------------------------------------------------- main(){int a=9,b=5;a+=b;b=a-b;a-=b;printf("%d%d",a,b);}4.---------------------------------------------------- //4.输入a,b,c三个变量,计算数学公式(a*b)/cmain(){int a,b,d;float s,c;scanf("%d%d%f",&a,&b,&c);d=a*b;s=d/c;printf("%f",s);}=================================实验三顺序结构和输入输出方法=================================1.---------------------------------------------------(1)main(){int m=345,t;float n=2.56;t=2.56*100;printf("m=%d,n*100=%d\n",m,t);}(2)main(){int a,b,c,s,v;scanf("%d%d%d",&a,&b,&c);s=a*b;v=a*b*c;printf("%d,%d,%d\n",a,b,c);printf("s=%d,v=%d\n",s,v);}2.----------------------------------------------------(1)main(){int m,n;float x=3.5,y=6.2;scanf("%d,%d",&m,&n);printf("%6d,%6d",m,n); /*每个数的输出宽度为6,两个数之间逗号建个。

桂林电子科技大学 C语言 程序设计 习题 答案(周信东) 实验2 顺序结构与逻辑运算

桂林电子科技大学 C语言 程序设计 习题 答案(周信东) 实验2 顺序结构与逻辑运算

桂林电子科技大学 C语言程序设计习题答案(周信东)实验2 顺序结构与逻辑运算成绩:良评语:继续努力... 批改时间:2021-11-16 10:51:55 批改老师:实验2 顺序结构与逻辑运算学号:姓名:实验日期:2021-10-301. 实验目的和要求(1)掌握数据输入/输出函数的使用,能正确使用各种格式转换符。

(2)熟悉顺序结构程序中语句的执行过程,并学会基本调试程序方法。

(3)能够正确使用逻辑运算符和逻辑表达式。

(4)学会运用逻辑表达式或关系表达式等表示条件。

(5)熟练掌握if语句和switch语句,掌握条件表达式构成的选择结构。

(6)熟练掌握跟踪调试程序,针对具体数据组织输入测试数据,观察程序运行能否得到预期的输出结果。

(7)学会编写简单程序。

2. 实验内容:实验指导书中的实验三和实验四3. 实验步骤及结果实验三部分:3-1-1 该程序正确的源程序代码(或窗口截图):程序运行结果画面如下:3-1-2该程序正确的源程序代码(或窗口截图):程序运行结果画面如下:3-2-1该程序完整的源程序代码(或窗口截图):程序运行结果画面如下:3-2-2该程序完整的源程序代码(或窗口截图):程序运行结果画面如下:3-3 注意:这道程序我们不按书中提示进行,而在VC环境下进行调试。

语法错误和逻辑错误的区别何在?语法错误是指违背了程序的语法规则,比如增添了某个符号,或者少了头文件,且无法通过编译器的编译,更无法运行。

逻辑错误是指在语法正确的前提下算法上的错误,能够运行,但结果往往不对,且很难发现。

如何启动单步调试?单击菜单栏“组建”下的“开始调试”,单击“STEP INTO”,也可以按快捷键F11,使每条语句单独执行。

要使程序运行到“ss=(k…”这一行暂停下来,该如何操作?怎样终止调试状态(程序复位)?单击调试菜单中的“stept over”或按快捷键F10。

单步调试状态下,向下运行一条语句的操作方法(分两种情况回答,第一种,跟踪到自定义函数内部,第2种,不跟踪到自定义函数内部):1. 单击调试菜单中的Step into 进入到自定义函数内部。

电子科技大学19秋《C语言》在线作业1答案

电子科技大学19秋《C语言》在线作业1答案

电子科技大学19秋《C语言》在线作业1试卷总分:100 得分:100【题目】下面程序的运行结果是()【题目】main()【题目】{inta[6],i;for(i=1;i6;i++)【题目】{a[i]=9*(i-2+4*(i3))%5;printf("%2d",a[i]);}}[A.]—40404[B.]—40403[C.]一40443[D.]一40440[分析以上题目,并完成作答]正确答案:C【题目】enum color{red,green,yellow=5,white,black}定义了一枚举类型。

编译程序为值表中各标识符分配的枚举值依次为()[A.]1、2、3、4、5[B.]0、1、5、2、3[C.]0、1、5、6、7[D.]3、4、5、6、7[分析以上题目,并完成作答]正确答案:C【题目】下面程序段的循环次数是()【题目】intk=2;【题目】while(k==0)printf(″%d″,k);【题目】k--;printf(″\n″);[A.]0次[B.]1次[C.]2次[D.]无限次[分析以上题目,并完成作答]正确答案:A【题目】若运行以下程序时,从键盘输入ADescriptorCR(CR表示回车),则下面程序的运行结果是()【题目】#includestdio.h【题目】main()【题目】{charc;intv0=0,v1=0,v2=0; 【题目】do【题目】{switch(c=getchar())【题目】{case'a':【题目】case'A':【题目】case'e':【题目】case'E':【题目】case'i':【题目】case'I':【题目】case'o':【题目】case'O':【题目】case'u':【题目】case'U':vl+=1;【题目】de[A.]v0=7,v1=4,v2=7[B.]v0=8,v1=4,v2=8[C.]v0=11,v1=4,v2=11[D.]v0=12,vl=4,v2=12[分析以上题目,并完成作答]正确答案:D【题目】main函数的正确说明形式是()[A.]main(intargc,char*argv)[B.]main(intabc,char**abv)[C.]main(intargc,charargv)[D.])main(intc,charv[])[分析以上题目,并完成作答]正确答案:B【题目】若有定义:inta[2][3],则对a数组的第i行j列元素地址的正确引用为()[A.]*(a[i]+j)[B.](a+i)[C.]*(a+j)[D.]a[i]+j[分析以上题目,并完成作答]正确答案:A【题目】下面程序的功能是计算正整数2345的各位数字平方和,请选择填空()【题目】#includestdio.h【题目】main()【题目】{intn,sum=0;【题目】n=2345【题目】do{sum=sum+(n%10)*(n%10);【题目】n=【】;【题目】}while(n);【题目】printf("sum=%d",sum);}[A.]n/1000[B.]n/100[C.]n/10[D.]n%10[分析以上题目,并完成作答]正确答案:C【题目】下述关于条件语句的描述中错误的是()[A.]if语句中只有一个else子句[B.]if语句中可以有多个elseif子句[C.]if语句中if体内不能有switch语句[D.]if语句的if体中可以是循环语句[分析以上题目,并完成作答]正确答案:C【题目】以下符合C语言语法的赋值表达式是()[A.]d=9+e+f=d+9[B.]d=9+e,f=d+9[C.]d=9+e,e++,d+9[D.]d=9+e++=d+7[分析以上题目,并完成作答]正确答案:B【题目】若有说明:char*language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"};【题目】则表达式*language[1]*language[3]比较的是()[A.]字符F和字符P[B.]字符串BAS1C和字符串JAVA[C.]字符B和字符J[D.]字符串FORTRAN和字符串PASCAL[分析以上题目,并完成作答]正确答案:C【题目】在下面C语言的函数说明语句中,正确的是()[A.]int fun(int , int);[B.]int fun(int x,y);[C.]int fun(x,y);[D.]int fun(int x; int y);[E.]int fun(int x,int y);[分析以上题目,并完成作答]正确答案:AE【题目】在函数调用过程中,下列说法正确的是()[A.]形式参数和实在参数各占一个独立的存储单元[B.]形式参数和实在参数存储空间都是在函数调用时分配的[C.])在函数的执行过程中,形参变量值的改变不会影响实参值的改变[D.]函数调用结束时,临时存储区被撤消[E.]在函数调用过程中,实在参数与形式参数在个数、类型上必须匹配[分析以上题目,并完成作答]正确答案:ACDE【题目】在定义函数时,函数的存储类型可以()[A.]是static[B.]是auto[C.]是register[D.]是extern[E.]省略[分析以上题目,并完成作答]正确答案:ADE【题目】下列符号中可以用作自定义函数名的是()[A.]int[C.]INT[D.]Getchar[E.]typedef[分析以上题目,并完成作答]正确答案:BCD【题目】以下哪些是关于指针数组的正确描述()[A.]int (*a)[4];[B.]int *a[4];[C.]指针数组每个元素都是指针变量[D.]若int a[4][4]; int *b[]={a[0],a[1],a[2],a[3]}; 则b是指针数组[E.]指针数组与指向数组的指针是等价的[分析以上题目,并完成作答]正确答案:BCD【题目】以数组名作函数参数时,数据传递的方向是“双向的”,因此我们可以说,在此情况下,函数带回的返回值可能不止一个。

电子科技大学14秋《C语言(专科)》在线作业3答案

电子科技大学14秋《C语言(专科)》在线作业3答案

14秋《C语言(专科)》在线作业3一,单选题1. 若有说明int(*p)[3];则以下正确的描述()A. p是一个指针数组B. p是一个指针,它只能指向一个包含3个int类型元素的数组C. p是一个指针,它可以指向一个一维数组中的任意元素D. (*p)[3]与*p[3]等价正确答案:B2. 若有语句:taticcharx[]="12345"; staticchary[]={'1','2','3','4','5'}; 则下面那一个是正确的描述。

()A. x数组和y数组的长度相同B. x数组长度大于y数组长度C. x数组长度小于y数组长度D. x数组等价于y数组正确答案:B3. 若已定义了如下的共用体类型变量x,则x所占用的内存字节数为()(设在16位pc机的环境下)uniondata {inti; charch; doublef;}x;A. 7B. 11C. 8D. 10正确答案:C4. 设fp为指向某二进制文件的指针,且已经读到此文件末尾,则函数feof(fp)的返回值为()。

A. EOFB. 非0值C. 0D. NULL正确答案:B5. 有以下程序段:intk=0; while(k=1)k++; while循环执行的次数是()。

A. 无限次B. 有语法错,不能执行C. 一次也不执行D. 执行1次正确答案:A6. 已知intb;则对指针变量p正确的说明和初始化是:()A. int*p=b;B. intp=b;。

(word完整版)C语言程序设计课后习题1-8参考答案

(word完整版)C语言程序设计课后习题1-8参考答案

C语言程序设计课后习题1—8参考答案习题1参考答案一、简答题1、冯诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?答:冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。

运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。

数据运算包括算术运算和逻辑运算。

控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的.存储器是计算机中具有记忆能力的部件,用来存放程序和数据.输入设备是用来输入程序和数据的部件。

输出设备正好与输入设备相反,是用来输出结果的部件。

2、简述计算机的工作原理。

答:计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。

整个过程由控制器进行控制。

3、计算机软件系统分为哪几类?答:软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统软件和应用软件。

系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。

这类软件一般与具体应用无关,是在系统一级上提供的服务。

系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。

另一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处理程序等。

在操作系统的基础上运行。

4、什么叫软件?说明软件与硬件之间的相互关系。

答:软件是指计算机程序及有关程序的技术文档资料。

两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。

在不太严格的情况下,认为程序就是软件。

硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作.在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。

电子科技大学出版社 乔保军版cc++第五章 作业

电子科技大学出版社 乔保军版cc++第五章 作业

第五章作业第一题什么是函数?答:函数是实现特定功能的代码段,每个函数可以实现一个特定的功能程序通过调用不同的函数来实现对数据的不同的处理第二题函数如何分类?每一类函数的特点是什么?答:○1从程序员的角度来看函数分为系统函数和自定义函数系统函数是系统提供给程序员使用的特定函数叫做库函数库函数在使用是在预编译时在工程中包含进去头文件即可而自定义函数是程序员在编写软件时满足特定功能时自己编写的满足特定功能的函○2从函数自身属性的角度来看函数一般分为有参函数和无参函数有参函数在调用时需要传递进来一个或者多个数据而无参函数在调用时不需要传递进函数内数据一般无参函数只是用来实现一些简单的功能ps:函数也可以分为又返回数据的函数和无返回值的函数他们的区别和命名一样有返回值函数会在函数调用结束后返回一个数据而无返回值函数则不会返回数据pps:有参函数和无参函数并不和有无返回值冲突一个有参函数既可以返回数据也可以不返回数据反正亦然。

第三题函数在使用时包括几个方面??答:函数使用时包括三个方面 1.函数的声明 2.函数的调用 3.函数的主题代码段的定义如何区别函数的声明和函数的定义答:函数的声明一般在main函数之前以便于main函数的调用而且函数的声明和函数定义不同是函数声明时在声明语句后面有“;”号作为结束而函数的定义后面没有分号作为结尾的ps:有时候函数的声明和函数的定义在一起即即函数的声明后面就是函数的定义在一起放着第五题函数的参数传递有几种类型,分别是什么?答:函数的参数的传递可以分为1.传递数据可以传递各种类型的数据 2.传递指针可以传递指针类型 3.传递数组传递数组作为参数ps:用数组作为传递的参数时在声明时数组的声明类型如所示声明时的数组类型应该和你要传递的数组类型一致且函数调用时如图所示只需要将函数名传递即可而不是传递array[]pps:在调用数组时如果在函数内部改变了数组成员的值那么main函数中数组的值也被改变因为数组名就是指向数组的一个指针。

数据结构_c语言描述(第二版)答案_耿国华_西安电子科技大学(完整资料).doc

数据结构_c语言描述(第二版)答案_耿国华_西安电子科技大学(完整资料).doc

【最新整理,下载后即可编辑】第1章 绪 论2.(1)×(2)×(3)√3.(1)A (2)C (3)C5.计算下列程序中x=x+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++) x=x+1;【解答】x=x+1的语句频度为:T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n )=n(n+1)(n+2)/66.编写算法,求 一元多项式p n (x)=a 0+a 1x+a 2x 2+…….+a n x n 的值p n (x 0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。

注意:本题中的输入为a i (i=0,1,…n)、x 和n,输出为P n (x 0)。

算法的输入和输出采用下列方法(1)通过参数表中的参数显式传递(2)通过全局变量隐式传递。

讨论两种方法的优缺点,并在算法中以你认为较好的一种实现输入输出。

【解答】(1)通过参数表中的参数显式传递优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。

缺点:形参须与实参对应,且返回值数量有限。

(2)通过全局变量隐式传递优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗缺点:函数通用性降低,移植性差算法如下:通过全局变量隐式传递参数PolyValue(){ int i,n;float x,a[],p;printf(“\nn=”);scanf(“%f”,&n);printf(“\nx=”);scanf(“%f”,&x);for(i=0;i<n;i++)scanf(“%f ”,&a[i]); /*执行次数:n次*/p=a[0];for(i=1;i<=n;i++){ p=p+a[i]*x; /*执行次数:n次*/x=x*x;}printf(“%f”,p);}算法的时间复杂度:T(n)=O(n)通过参数表中的参数显式传递float PolyValue(float a[ ], float x, int n){float p,s;int i;p=x;s=a[0];for(i=1;i<=n;i++){s=s+a[i]*p; /*执行次数:n次*/p=p*x;}return(p);}算法的时间复杂度:T(n)=O(n)第2章线性表习题1.填空:(1)在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。

电子科技大学14秋《C语言》在线作业2答案

电子科技大学14秋《C语言》在线作业2答案

14秋《C语言》在线作业2一,单选题1. 设变量a b c d 和y都已经正确定义并赋值,若有以下if 语句: if(a<b) if(c==d) y=0; else y=1; 给语句所表示的含义是( )A. y=0 a<b且c=d; y=1 a>=bB. y=0 a<b且c=d; y=1 a>=b 且c!=dC. y=0 a<b且c=d; y=1 a<b 且c!=dD. y=0 a<b且c=d; y=1 c!=d?正确答案:C2. 以下正确的叙述是( )A. 在C程序中,每行中只能写一条语句B. 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C. 在C程序中,无论是整数还是实数,都能被准确无误地表示D. 在C程序中,%是只能用于整数运算的运算符?正确答案:D3. 有以下程序: #include <string.h> main() {char p[ ]={‘a’,’b’,’c’},q[10]={‘a’,’b’,’c’}; printf(“%d%d\n”,strlen(p),strlen(q)); } 以下叙述中正确的是()A. 在给p和q数组置初值时,系统回自动添加字符串结束符,故输出的长度都为3B. 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C. 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D.正确答案:B4. 标准库函数fgets(s,n,f)的功能是( )A. 从文件f中读取长度为n的字符串存入s中B. 从文件f中读取长度小于n的字符串存入s中C. 从文件f中读取n个字符串存入s中D. 从文件f中读取长度为n-1的字符串存入s中?正确答案:B5. 若i为整型变量,则以下循环执行次数是( ): for (i=2;i==0;) printf("%d",i-- );A. 无限次B. 0次C. 1 次。

电子科技大学14秋《C语言》在线作业1答案

电子科技大学14秋《C语言》在线作业1答案

14秋《C语言》在线作业1一,单选题1. putchar函数可以向终端输出一个( )A. 整型变量表达式值B. 实型变量值C. 字符串D. 字符或字符型变量值?正确答案:D2. C语言规定:在一个源程序中,main函数的位置是( )A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后?正确答案:C3. 有以下程序,其中函数f的功能是将多个字符串按字典顺序排序#include<string.h> void f(char *p[],int n) { char *t; int i,j; for(i=0; i<n-1; i++) for(j=i+1;j<n; j++) if(strcmp(p[i],p[j])>0){t = p[i];p[i]=p[j];p[j] =t;} } main( ) { char *p[5] ={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”}A. 2B正确答案:D4. 若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为( )A. *(a[i]+j)B. (a+i)C. *(a+j)D. a[i]+j?正确答案:A5. 以下描述中正确的是( )A. 由于do~while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B. do~while循环由do开始,用while结束,在while(表达式) 后面不能写分号C. 在do~while循环体中,一定要有能使while后表达式值变为零("假")的操作D. do~while循环中,根据情况可以省略while?正确答案:C。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c语言程序设计教程答案第一章C语言概述一、简答题1.(1)语言简洁、紧凑,使用方便、灵活;(2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制语句;(5)语法限制不太严格,程序设计自由度大;(6)C 语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。

2.顺序结构,分支结构,循环结构3.所谓算法就是为解决一个问题而采取的方法和步骤。

算法的特性:有穷性、确定性、输入、输出、可行性。

表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示;(4)用伪代码表示;(5)用计算机语言表示。

二、算法1.瓶子A里盛有醋瓶子B里盛有酱油有一个空瓶C将A中的醋倒入C将B中的酱油倒入A将C中的醋倒入B 2.输入一个数放在a中max = a以下步骤重复9次:输入一个数放在a中如果a>max,max=a打印max的值3.如果a<btemp=aa=bb=temp如果 c>atemp = aa=cc=temp否则如果c>btemp=bb=cc=temp打印a,b,c的值4.i=1sum=0以下程序循环100遍:sum=sum+ii=i+1打印sum的值5.如果(n除以3的余数为0 并且n除以5的余数为0)n能够同时被3和5整除否则n不能够同时被3和5整除6.i=101以下语句循环50遍:j=2flag=1当j<(i除以2的整数部分)时循环以下语句:如果i除以j的余数为零flag=0退出该循环如果flag==1打印i的值i=i+27.如果m<ntemp=mm=nn=tempi=n做以下循环,直到m,n能够被i整除:如果m能够被i整除并且n能够被i整除i即是m和n的最大公约数跳出循环否则i=i-1打印i的值8.data=b*b—4*a*c如果data>0否则如果data=0x1=x2=—b/2否则无实数解三、编程题1.main(){printf(“##############################\n”);printf(“How do you do?\n”);printf(“##############################\n”);}2.main(){int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“sum=%d”,a+b+c);}第二章数据类型与表达式一、单项选择题1. B2. C3. A4. A5. D6. B7.A8.C9.D二、写出下列程序的运行结果1.aabb cc abcAN2.ab97983. 9,11,9,104.a=2,b=3,c=25.s1=2.500000s2=3三、编程题main(){char c1='c',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);}第三章顺序程序设计选择题1)B 2)D 3)D 4)A 5)A6)B 7)B 8)A 9)D 10)C 11)D 12)A填空题1)b 2)261 3)25 21 37 4)abc 5)5.0,4,c=3 6)3编程题#define PI 3.1415926main( ){float h, r, l, sv, sz ;printf(“请输入圆的半径r,圆柱高h:\n”) ;scanf(“%f,%f”,&r, &h) ;l=2* PI *r ;s= PI *r*r ;sv=3.0/4.0* PI *r*r*r ;sz= PI *r*r*h ;printf(“圆周长为:l=%6.2f, 圆面积为:s=%6.2f\n”, l, s) ;printf(“求体积为:sv=%6.2f, 圆柱体积为:sz=%6.2f\n”, sv, sz) ;}2、main( ){float c, f ;printf(“请输入一个华氏温度:\n”) ;scanf(“%f”, &f) ;c=5.0/9.0*(f-32) ;printf(“摄氏温度为:%6.2f\n”, c) ;}第四章循环程序设计一、选择题1.D2.D3.D4.C5.D6.A7.B8.B9.A 10.D.11.B 12.A 13.B14.C 15.C 16.A 17.A 18.B 19.D 20.D 21.A二、填空题1.5858582.03.184.89215.20,06.67.1,3,28.Year%400==0year%100!=0count++三、编程题1.main(){long a;scanf(“%ld”,&a);if (a>=10000&&a<=99999) printf(“这是个五位数”);else if (a>=1000&&a<=9999) printf(“这是个四位数”);else if (a>=100&&a<=999) printf(“这是个三位数”);else if (a>=10&&a<=99) printf(“这是个二位数”);else if (a>=0&&a<=9)printf(“这是个一位数”);elseprintf(“输入错误”);}3.main(){int a;int g,s,b;//个位、十位、百位printf("水仙花数有:\n");for(a=100;i<=999;a++){g=a%10;s=a/10%10;b=a/100;if (a==g*g*g+s*s*s+b*b*b) printf("%d ",a);}printf("\n");}4、main(){int i,n;printf("input n:");scanf("%d",&n);printf("\n%d=",n);for(i=2;i<=n;i++){while(i!=n)if(n%i==0){printf("%d*",i);n/=i;}else break;}printf("%d\n",n);}5、#include “stdio.h”main(){char c;int w,x,y,z;w=x=y=z=0;while((c=getchar())!=’\n’){if((c>’a’&&c<’z’)||(c>’A’&&c<’Z’)) w++;else if (c==’ ’)x++;else if (c>’0’&&c<’9’)y++;else z++;}printf(“英文字母个数:%d\n”,w);printf(“空格个数:%d\n”,x);printf(“数字个数:%d\n”,y);printf(“其他字母个数:%d\n”,z);}6、main(){float h=100,t=100;int j;for(j=1;j<10;j++){t=t/2;h=h+t*2;}printf(“共经过:%f 米\n”,h);printf(“第十次反弹%f 米\n”,t/2);}第五章数组一、单项选择题1. B2. A3. C4. C5. D6. B7.C8.B9.C 10. B二、写出下列程序的运行结果1.S=3682.*************************3.S1=18S2=104.!margorP5.数字0的出现次数是:3 数字1的出现次数是:2 数字2的出现次数是:2 数字3的出现次数是:2 数字4的出现次数是:0 数字5的出现次数是:1 数字6的出现次数是:1 数字7的出现次数是:1 数字8的出现次数是:1 数字9的出现次数是:1 三、编程题1.#include "stdio.h"main(){int a[11];int i,j,t;printf("input 10 number:\n");for (i=1;i<11;i++)scanf("%d",&a[i]);printf("\n");for (i=1;i<=9;i++)for (j=1;j<=10-i;j++)if (a[j]<a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("the sorted number is:\n"); for (i=1;i<11;i++)printf("%4d",a[i]);}2.#include "stdio.h"main(){int a[11],i,b;printf("imput 10 sorted number:\n"); for (i=0;i<10;i++)scanf("%d",&a[i]);printf("input an integer:\n");scanf("%d",&b);for (i=9;i>=0&&a[i]>b;i--)a[i+1]=a[i];a[i+1]=b;printf("sorted numbers:\n");for (i=0;i<11;i++)printf("%5d",a[i]);}3.#include "stdio.h"main(){int a[5],i,j,t;printf("input 5 integer:\n");for (i=0;i<5;i++) /*输入5个整数*/scanf("%d",&a[i]);for (i=0,j=4;i<j;i++,j--) /*逆序存放*/{t=a[i];a[i]=a[j];a[j]=t;}for (i=0;i<5;i++) /*逆序存放后重新输出*/printf("%5d",a[i]);}4.#include "stdio.h"main(){int i,j,a[10][10]={{1},{1,1}};for (i=2;i<10;i++) /*给二维数组每个元素赋值*/{a[i][0]=1;for (j=1;j<=i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for (i=0;i<10;i++) /*输出二维数组*/{for (j=0;j<=i;j++)printf("%-5d",a[i][j]);printf("\n");}}5.#include "stdio.h"main(){int a[3][4],i,j,max,row,col;printf("input 3*4 matrix:\n");for (i=0;i<3;i++) /*输入3*4矩阵*/ for (j=0;j<4;j++)scanf("%d",&a[i][j]);max=a[0][0]; row=0; col=0;for (i=0;i<3;i++) /*寻找矩阵中的最大值及其行列号*/for (j=0;j<4;j++)if (max<a[i][j]){max=a[i][j]; row=i, col=j;}printf("\n数组中最大的数是%d,其行号是%d,列号是%d\n",max,row,col);}6.#define N 3#define M 4#include "stdio.h"main(){int a[N][M],i,j,k,max,row,col;printf("input %d*%d matrix: \n",N,M);for (i=0;i<N;i++) /*输入二维矩阵*/ for (j=0;j<M;j++)scanf("%d",&a[i][j]);for (i=0;i<N;i++) /*求鞍点*/{max=a[i][0]; row=i; col=0;for(j=1;j<M;j++) /*求矩阵中每一行的最大值及其所行列号*/if (max<a[i][j]){max=a[i][j]; col=j;}for (k=0;k<N;k++) /*判断每一行的最大值在其所在列是否最大*/if (a[k][col]<max)break;if (k==N) /*得到鞍点*/{printf("the point is %d,row=%d,col=%d\n",max,row,col);break;}}if (i==N) /*没有鞍点*/printf("no point\n");}7.#include "stdio.h"main(){int num=0,word=0;/*word=0表示未出现单词,如出现单词就置word为1.num用来统计单词个数*/char c;printf("please input a string :\n");while ((c=getchar())!='\n')if (c==' ')word=0;else if (word==0){word=1; num++;}printf("There are %d words in the line\n",num);}8.#include "stdio.h"main(){int i,j,uppn,lown,dign,span,othn;/*uppn,lown,dign,span,othn分别存放英文大写字母、小写字母、数字、空格和其他字符的个数*/char text[3][80];uppn=lown=dign=span=othn=0;for(i=0;i<3;i++){gets(text[i]);for(j=0;j<80&&text[i][j]!='\0';j++){if(text[i][j]>='A'&&text[i][j]<='Z')uppn++;else if(text[i][j]>='a'&&text[i][j]<='z')lown++;else if(text[i][j]>='0'&&text[i][j]<='9')dign++;else if(text[i][j]==' ')span++;elseothn++;}}for(i=0;i<3;i++)printf("%s\n",text[i]);printf("uppn=%d\n",uppn);printf("lown=%d\n",lown);printf("dign=%d\n",dign);printf("span=%d\n",span);printf("othn=%d\n",othn);}9.#include "stdio.h"main(){int i,j;char str1[20],str2[20];printf("input two strings:\n");gets(str1);gets(str2);j=strlen(str1); /*求字符串1的长度*/for (i=0;str2[i]!='\0';i++,j++) /*字符串合并*/str1[j]=str2[i];str1[j]='\0'; /*加上字符串结束标志*/puts(str1);}10.#include "stdio.h"main(){int i,n;char str1[20],str2[20];printf("input two strings:(no more than 20 characters)\n");gets(str1); gets(str2);n=strlen(str1)<strlen(str2)?strlen(str1):strlen(str2); /*n中存放较短字符串的长度*/for (i=0;i<n&&str1[i]==str2[i];i++);printf("%d\n",str1[i]-str2[i]);}第六章函数与编译预处理一、单项选择题1. C2. B3. B4. B5. A6. B7.A8.C9.D 10. A二、写出下列程序的运行结果1.92.4,B8,B3.-4.0000004.a=6,b=55.48三、编程题1.main(){ int prime(int n);int n;printf("input n(n>0):\n");scanf("%d",&n);if (prime(n))printf("%d is a sushu\n",n);else printf("%d is not a sushu\n",n); }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);}2.#define N 3 convert(int array[3][3]) { int i,j,t;for (i=0;i<N-1;i++)for (j=i+1;j<N;j++){t=array[i][j];array[i][j]=array[j][i]; array[j][i]=t;}}main(){int i,j;int a[N][N];printf("input a:\n");for (i=0;i<N;i++)for (j=0;j<N;j++) scanf("%d",&a[i][j]); printf("Array a:\n"); for (i=0;i<N;i++) {for (j=0;j<N;j++) printf("%5d",a[i][j]); printf("\n");}convert(a);printf("a de zhuanzhi is:\n");for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%5d",a[i][j]);printf("\n");}}3. #include <stdio.h>#include <string.h>main(){char str[100];printf("input a string:\n") ;gets(str);inverse(str);printf("the reversed string is:%s\n",str); }inverse(char str[]){char t;int i,j;for (i=0,j=strlen(str)-1;i<j;i++,j--) {t=str[i];str[i]=str[j];str[j]=t;}}4. #include <stdio.h>concat(char str1[],char str2[]) { int i=0,j;while (str1[i]!='\0')i++;for (j=0;str2[j]!='\0';i++,j++)str1[i]=str2[j];str1[i]='\0';}main(){char str1[100],str2[100];gets(str1);gets(str2);concat(str1,str2);puts(str1);}5. main(){char str[80];printf("input a string (4 ge shu zi zi fu):\n"); scanf("%s",str);insert(str);printf("result is:\n%s\n",str);}insert(char str[]){int i;for (i=strlen(str);i>0;i--){str[2*i]=str[i];str[2*i-1]=' ';}}6. #include "stdio.h"int i,ndight,nwhite,nletter,nother;count(char str[]){ndight=nwhite=nletter=nother=0;for (i=0;str[i]!='\0';i++)if (str[i]>='0'&&str[i]<='9')ndight++;else if ((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')) nletter++;else if (str[i]==' ')nwhite++;else nother++;}main(){char text[80];printf("input a string:\n");gets(text);count(text);printf("ndight=%d,nletter=%d,nwhite=%d,nother=%d\n",n dight,nletter,nwhite,nother);}7. #define N 10#include <stdio.h>sort(char str[]){int i,j;char t;for (i=1;i<N;i++)for (j=0;j<N-i;j++)if (str[j]>str[j+1]){t=str[j];str[j]=str[j+1] ;str[j+1]=t;} }main(){char str[N];int i ;printf("Input 10 ge zi fu:\n"); gets(str);sort(str);printf("The sorted result:\n") ;for(i=0;i<N;i++)printf("%c",str[i]);}8.这题较复杂#include <stdio.h>#include <string.h>#define N 10void input_e(int num[],char name[N][8]){int i;for (i=0;i<N;i++){ printf("input gong hao:");scanf("%d",&num[i]);printf("input name:");getchar();gets(name[i]);}for (i=0;i<N;i++)printf("%5d%10s\n",num[i],name[i]);}void sort(int num[],char name[N][8]) /*选择法排序*/ {int i,j,min,temp1;char temp2[8];for (i=0;i<N-1;i++){min=i;for (j=i+1;j<N;j++)if (num[j]<num[min]) min=j;temp1=num[i];strcpy(temp2,name[i]);num[i]=num[min];strcpy(name[i],name[min]);num[min]=temp1;strcpy(name[min],temp2);}printf("the sorted result:\n");for (i=0;i<N;i++)printf("%5d%10s\n",num[i],name[i]);}void search(int n,int num[],char name[N][8]) /*折半查找法*/{int top,bott,mid,find;find=0;top=0;bott=N-1;if ((n<num[0])||(n>num[N-1]))find=-1;while ((find==0)&&(top<=bott)){mid=(bott+top)/2;if (n==num[mid]){find=1; printf("%d name is:%s\n",n,name[mid]);}else if (n<num[mid])bott=mid-1;else top=mid+1;}if ((find==-1)||(find==0))printf("%d is not found.\n",n);}main(){int num[N],number,c,flag;char name[N][8];input_e(num,name);sort(num,name);for (flag=1;flag;){printf("please input chazhao de gonghao:"); /*输入查找的工号*/scanf("%d",&number);search(number,num,name);printf("continue Y/N?"); /*是否继续查找*/getchar();c=getchar();if (c=='N'||c=='n')flag=0;}}9. #include "stdio.h"#define MAX 10main(){char str[MAX];char c;int i;i=0;printf("input number(16 jinzhi): "); /*输入一个十六进制的数*/while((c=getchar())!='\n'&&i<MAX){ str[i]=c;i++;}str[i]='\0';printf("result is :%d\n",htod(str));}int htod(char s[]){int i,n;n=0;for(i=0;s[i]!='\0';i++){if (s[i]>='0'&&s[i]<='9')n=n*16+s[i]-'0';if (s[i]>='a'&&s[i]<='f')n=n*16+s[i]-'a'+10;if (s[i]>='A'&&s[i]<='F')n=n*16+s[i]-'A'+10;}return(n);}10. #define SWAP(a,b) t=a;a=b;b=t main(){int a,b,t;printf("input a,b:") ;scanf("%d,%d",&a,&b);SWAP(a,b);printf("result:a=%d,b=%d\n",a,b);}11. #define SURPLUS(a,b) ((a)%(b)) main(){int a,b;printf("input a,b:");scanf("%d,%d",&a,&b);printf("result is: %d\n",SURPLUS(a,b)); }12. main(){int a,b,c;printf("input a,b,c:");scanf("%d,%d,%d",&a,&b,&c);printf("max=%d\n",max(a,b,c));}int max(int x,int y,int z){int t;t=(x>y ? x : y);return(t>z?t:z);}#define MAX(x,y) ((x)>(y)?(x):(y)) main(){int a,b,c;printf("input a,b,c:");scanf("%d,%d,%d",&a,&b,&c);printf("max=%d\n",MAX(MAX(a,b),c));}13. #include "stdio.h"#define CHANGE 1#define MAX 80main(){char str[MAX];int i;printf("input a string:\n");gets(str);#if (CHANGE){ for (i=0;str[i]!='\0';i++)if (str[i]>='a'&&str[i]<'z'||str[i]>='A'&&str[i]<'Z') str[i]=str[i]+1;else if (str[i]=='z'||str[i]=='Z')str[i]=str[i]-25;}#endifprintf("%s\n",str);}第七章指针一、选择题1)A 2)D 3)D 4)C 5)B 6)B 7)B 8)C 9)B 10)C 11)A 12)A 13)A 14)C 15)B 16)A 17)C 18)B 19)D 20)B二、阅读下面程序,写出程序运行结果1)abcdeedcba 2)1113151719 3)(TurboC中是11,97,11 )(VisualC是9,9 7,11)4)3 6 5)6385三、编程题1、main( ){ int a[10],i,temp,*p=a;printf("Please input array a:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("array a:\n");for(i=0;i<10;i++)printf("%4d",a[i]);for(i=0;i<5;i++){ temp=p[i];p[i]=p[10-i-1];p[10-i-1]=temp;}printf("\n Now array a:\n");for(i=0;i<10;i++)printf("%4d",a[i]);}2、main( ){ int a[3][3],*p,i,j;printf("please input matrix:\n"); for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);p=&a[0][0];move(p);printf("\n Now matrix:\n");for(i=0;i<3;i++){ for(j=0;j<3;j++)printf("%4d",a[i][j]);printf("\n");}}move(int *q){ int i,j,t;for(i=0;i<3;i++)for(j=i;j<3;j++){ t=*(q+3*i+j);*(q+3*i+j)=*(q+3*j+i);*(q+3*j+i)=t;}}3、#include <stdlib.h>#include <alloc.h>#include <string.h>#include <stdio.h>main( ){int binary();void insert();char*temp,*ptr1[6]={"BASIC","DATA","PASCAL","SQL","USE"} ;int i;ptr1[5]=malloc(20);printf("\n");printf("original string:\n");for(i=0;i<5;i++)printf("%s\n",ptr1[i]);printf("input search string:\n"); temp=malloc(20);gets(temp);i=binary(ptr1,temp,5);printf("i=%d\n",i);insert(ptr1,temp,5,i);printf("output strings:\n");for(i=0;i<6;i++)printf("%s\n",ptr1[i]);}int binary(char *ptr[],char *str,int n) {int hig,low,mid;low=0;hig=n-1;if(strcmp(str,ptr[0])<0) return(0);if(strcmp(str,ptr[hig])>0) return(n);while(low<=hig){mid=(low+hig)/2;if(strcmp(str,ptr[mid])<0)hig=mid-1;else if(strcmp(str,ptr[mid])>0)low=mid+1;else return(mid);}return(low);}void insert(char *ptr[],char *str,int n,int i) {int j;for(j=n;j>i;j--)strcpy(ptr[j],ptr[j-1]);strcpy(ptr[i],str);}4、main( ){ int i;char *p[6],str[6][20];for(i=0;i<6;i++)p[i]=str[i];printf("Input 6 strings:\n"); for(i=0;i<6;i++)scanf("%s",p[i]);sort(p);printf("Now the strings:\n"); for(i=0;i<6;i++)printf("%s\n",p[i]);}sort(char *q[ ]){ int i,j;char *t;for(i=0;i<5;i++)for(j=0;j<5-i;j++)if(strcmp(*(q+j),*(q+j+1))>0) { t=*(q+j);*(q+j)=*(q+j+1);*(q+j+1)=t;}}5、main( ){ int m;char str1[20],str2[20],*p1,*p2; printf("please input two strings:\n"); scanf("%s",str1);scanf("%s",str2);p1=str1;p2=str2;m=stringcmp(p1,p2);printf("result is %d:\n",m);}stringcmp(char *p1,char *p2){ int i=0;while(*(p1+i)==*(p2+i))if(*(p1+(i++))=='\0') return(0); return((*p1+i)-*(p2+i));}6、main( ){ char str1[30],str2[30],str3[100]; int i=0,j=0,k=0;printf("please input two strings:\n"); scanf("%s",str1);scanf("%s",str2);while(str1[i]!='\0' && str2[j]!='\0'){ str3[k++]=str1[i++];str3[k++]=str2[j++];}while(str1[i]!='\0')str3[k++]=str1[i++];while(str2[j]!='\0')str3[k++]=str2[j++];str3[k]='\0';printf("\n%s\n",str3);}第八章结构体一、选择题1、C2、B3、C4、D5、B6、A7、D8、C9、C 10、B二、填空题1、342、03、514、10,x5、364041三、编程题1、struct complex{float x; /*实部*/float y; /*虚部*/}main(){struct complex c1={5,3},c2={2,6}; float t1,t2;t1=c1.x*c2.x - c1.y*c2.y;t2=c1.x*2.y + c1.y*c2.x;printf(“The two complexs product is:”); printf(“%.2f%+.2f i\n”,t1,t2);}2. struct student{char name[10]; /*姓名*/int number; /*学号*/float x; /*成绩*/float y; /*成绩*/}main( ){struct student s[45];int i;void max();void average();void sort();for (i=0;i<45;i++)scanf(“%s%d%f%d”,s[i].name,&s[i].number,&s[i].x,&s[i]. y);/*输入学生的姓名、学号、两门课程成绩*/max(s,45);average(s,45);sort(s,45);}void max(struct student *a,int n){float temp;char na[10];int i ,num;temp=a[0].x+a[0].y;for (i=1;i<n;i++)if(temp<a[i].x+a[i].y) /*求总分最高的学生姓名、学号*/{temp=a[i].x+a[i].y;strcmp(na,a[i].name);num=a[i].number;}printf(“%s,%d”,na,num);}void average(struct student *b,int n){float aver1,aver2,s1,s2;int i ;s1=s2=0;for(i=0;i<45;i++) /*求每门课程的总成绩*/ {s1+=b[i].x;s2+=b[i].y;}aver1=s1/45;aver2=s2/45;for(i=0;i<45;i++)if(b[i].x<aver1&&b[i].y<aver2)/*输出两门课程都低于平均成绩的学生*/printf(“%s,%d\n”,b[i].name,b[i].nu mber);}void sort(struct student *c,int n){float t;int i,j ;struct student temp;for (i=0;i<n-1;i++) /*改进的选择法排序可参考课本P89页*/{k=i ;for(j=i+1;j<n;j++)if(c[k].x<c[j].x)k=j;if(k!=i){temp=c[i];c[i]=c[k];c[k]=temp;}for(i=0;i<n;i++)printf(“%s,%.2f\n”,c[i].n,c[i].x);}3. typedef struct Ljian{int pname;int wnum;struct Ljian *next;}Part;/*用户自定义零件结构体类型*/# include “stdio.h”main( ){int n=1;Part *head,*p1,*p2;head=NULL;p1=( Part * ) malloc (sizeof(struct Ljian));/*创建第一个结点*/scanf(“%d%d”,&p1->pname,&p1->wnum);p1->next=NULL;while(n<=10) /*将结点加入链表*/ {if(n==1)head=p1; /*是第一个结点,作表头*/ elsep2->next=p1; /*不是第一个结点,作表尾*/ p2=p1;p1=( Part *) malloc(sizeof(struct Ljian));/*开辟下一个结点*/scanf(“%d%d”,&p1->pname,&p1->wnum);p1->next=NULL;n++;}}4.#include<stdlib.h>#include<stdio.h>#include<conio.h>#define LEN sizeof(struct student)typedef struct student{ long num; /*学号*/float score; /*成绩*/struct student *next;} STU; /*用户自定义学生结构体类型*/STU *Create ( ) /*创建链表* / {int n=0;STU *p1,*p2,*head;head=NULL;p1=(STU *)malloc(LEN); /*创建第一个结点*/scanf("%ld,%f",&p1->num,&p1->score);p1->next=NULL;while(p1->num!=0) /*将结点加入链表*/{++n;if(n==1) /*是第一个结点,作表头*/head=p1;else /*不是第一个结点,作表尾*/p2->next=p1;p2=p1;p1=(STU *)malloc(LEN); /*开辟下一个结点*/scanf("%ld,%f",&p1->num,&p1->score);p1->next=NULL;}free(p1); /*释放最后一个结点所占的内存*/return (head); /*返回链表的头指针*/}void print(STU *head) /*输出链表* /。

相关文档
最新文档