华中科技大学标准C语言程序设计及应用习题标准答案

合集下载

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

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

C语言程序设计教程课后习题答案第一章C语言程序设计概述-习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2C语言程序的基本结构是怎样的?举一个例子说明。

答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。

3C语言有什么特点?答1、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。

4★指出合法与不合法的标识符命名。

答AB12--√ leed_3-- a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--×XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×5说明下列Turbo C热键的功能。

答F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序)Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。

6说明下列Turbo C方式下输入并运行下列程序,记录下运行结果。

①main(){printf("********************\n");printf(" welcome you \n");printf(" very good \n);printf("********************\n");}②main(){ int a,b,c,t;printf("please input three numbers;");scanf("%d,%d,%d",&a,&b,&c); /*教材S是错误的*/t=max(max(a,b),c);printf("max number is:%d\n",t);}int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);}答运行结果:********************welcome youvery good********************运行结果:please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/max number is:47一个C程序是由若干个函数构成的,其中有且只能有一个___函数。

《C语言程序设计》练习题及答案

《C语言程序设计》练习题及答案

《C语言程序设计》练习题及答案1. 单选题1. 设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是A. p=1;B. *q=2;C. q=p;D. *p=5;正确答案:D2. 设有int x=11;则表达式(x++*1/3)的值是A. 3B. 4C. 11D. 12正确答案:A3. 下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));}A. 3B. 4C. 1D. 2正确答案:A4. sizeof(float)是A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式正确答案:B5. 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是A. a=20000+20000;B. a=4000*10;C. a=30000+10000;D. a=4000L*10L正确答案:D6. 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n"));A. 5B. 14C. 8D. 输出项不合法,无正常输出正确答案:A7. 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为A. 4B. 16C. 32D. 52正确答案:C8. 下面能正确进行字符串赋值操作的是A. char s[5]={"ABCDE"};B. char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};C. char *s;s="ABCDE";D. char *s;char a; scanf("%s",&s);正确答案:C9.以下程序的输出结果是#include "stdio.h"void reverse(int a[],int n){int i,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0;reverse(b,8);for(i=6;i<10;i++) s+=b[i];printf("%d\n",s);}A. 22B. 10C. 34D. 30正确答案:A10. 以下不正确的叙述是A. 在C程序中,逗号运算符的优先级最低B. 在C程序中,APH和aph是两个不同的变量C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值正确答案:D2. 多选题11. 以下______是正确的转义字符。

标准C语言程序设计和应用——华中科技大学出版社第三章课后题

标准C语言程序设计和应用——华中科技大学出版社第三章课后题

1.比大小#include<stdio.h>main(){int a,b;int max;printf("Please enter 2 numbers:\n");scanf("%d%d",&a,&b);max=a>b?a:b;printf("The bigger one is %d",max);}2.三个整数比大小#include<stdio.h>main(){int a,b,c;int max,mid;printf("Please enter 3 numbers:\n");scanf("%d%d%d",&a,&b,&c);mid=a>b?a:b;max=mid>c?mid:c;printf("The biggest one is %d",max); }3.累加#include<stdio.h>main(){int i;int sum=0;for(i=1;i<101;i++){sum+=i;}printf("The answer is %d",sum);}4.计算通项公式中的每一项#include<stdio.h>main(){int an_2=10,an_1=-3;int an;int i,n;printf("请输入需要的项的个数:\n");scanf("%d",&n);printf("第1项:10\n");printf("第2项:-3\n");if(n<=2){printf("Error!");}else{for(i=3;i<=n;i++){an=3*an_1+an_2;an_2=an_1;an_1=an;printf("第%d项:\t%d\n",i,an);}}}5.判断奇偶数:#include<stdio.h>main(){int a;printf("Please enter a number:\n");scanf("%d",&a);if(a%2==0){printf("%d is an Even number!",a);}else{printf("%d is an Odd number!",a);}}6.求前n项和#include<stdio.h>main(){int an=8,bn=1,sum=0;int n;int i;printf("请输入你需要多少项的和:\n");scanf("%d",&n);for(i=1;i<=n;i++){printf("第%d项是%d\n",i,an);sum+=an;bn+=3;an+=bn;}printf("\n前%d项的和为%d",n,sum);}7.求分段函数的解:#include<stdio.h>main(){float x,y;printf("Please enter a number:\n");scanf("%f",&x);if(x<1.0){y=x;}else if((x>=1)&&(x<10)){y=2*x-1;}else{y=3*x-11;}printf("y=%.2f",y);}8.给出一个不多于5位的数,求出其位数,并逆序打印:#include<stdio.h>main(){int in,out,n;int wei=1;int a,b,c,d,e;int i;printf("Please enter a number:\n");scanf("%d",&in);n=in;if(a<99999){for(i=0;i<5;i++){n/=10;if(n>0){wei++;。

华中科技大学C++程序题集合1

华中科技大学C++程序题集合1

HUST C++程序设计题答案集1 致华科的小学弟小学妹,这篇文档是学长我辛辛苦苦刷到一百分的程序题(各种单枪匹马深夜作战),留着吧,将来写到不会的时候拿出来查查(具体方法:Ctrl + H,输入关键字查询,会有你想要的答案。

)当然,这里面的程序仅作参考,如果你有更好的想法,呃,就用你自己的吧。

祝学业有成。

你们的苦逼的学长XX/*------------------------------------------------------- 【程序设计】--------------------------------------------------------- 题目:定义一个日期类Date,包括年、月、日三个数据成员,以及一个判断闰年的成员函数输出结果见图:样张.JPG-------------------------------------------------------*/ #include <iostream>using namespace std;class Data {public:Data(){};Data(int,int,int);boolLeapYear();void Print();private:int year;int month;int day;};/**********Program**********/bool Data::LeapYear(){if((year%4==0&&year%100!=0)||(year%400==0))return 1;else return 0;}Data::Data(inty,intm,int d){year=y;month=m;day=d;}/********** End **********/void Data::Print(){cout<<year<<"/"<<month<<"/"<<day;if(LeapYear())cout<<" is a leap year"<<endl;elsecout<<" is not a leap year"<<endl;}void main(){Data d1(2012,8,9),d2(2009,12,8);d1.Print();d2.Print();}/*------------------------------------------------------- 【程序设计】---------------------------------------------------------题目:设计一个点类Point,再设计一个矩形类,矩形类使用Point类的两个坐标点作为矩形的对角顶点,并可以输出4个坐标值和面积。

华中科技大学标准C语言程序设计上机试题、答案及报告格式

华中科技大学标准C语言程序设计上机试题、答案及报告格式

《标准C语言程序设计》上机报告实验七指针及函数结构体初步程序设计专业:班级:学号:姓名:完成日期:1一、实验目的1.进一步理解指针的概念,掌握指针变量间接地址访问的本质;2.掌握利用指向数组的指针变量表示一维数组元素及元素地址的方法;3.掌握利用指向二维数组的行指针变量表示二维数组元素及其地址的方法;4.掌握字符串的指针和指向字符串的指针变量;5.掌握指针数组和二级指针;6.熟悉通过动态内存分配实现动态数组,并体会指针在其中的作用。

7.理解函数定义、原型和调用,掌握函数参数的传递(传值、传指针和传引用)二、实验内容及要求(鼓励一题多解)1.深入理解《上机实践训练教程》2.6实验六案例示范和有关概念文字描述中的知识点,给出你的理解。

定义指针时一定要给指针分配好应有的类型和内存空间,防止出现野指针,造成程序不能运行甚至系统崩溃。

数组名不能作为左值,它实际上是一个常量指针,不能通过str=“comrade”给字符数组str赋值。

2.输入每个学生的姓名和线性代数、通信原理和C语言课程成绩,统计每人的平均值,并按平均值降序排列,输出排列后的名次、姓名、课程名(成绩)和平均值。

(注:平均值相同者按姓名的字母表顺序排列)(要求用结构体数据类型实现)#include <stdio.h>#include <math.h>#include <stdlib.h>#define N 3struct student{int rank;char name[20];double score[3];double aver;};void input(struct student *p,int n);void sort(struct student *p,int n);double average (struct student *p,int n);void output(struct student *p,int n,double aver);void main(){struct student stu[N];double aver;input(stu,N);sort(stu,N);aver=average(stu,N);output(stu,N,aver);}void input(struct student *p,int n){int i,j;double a;char str[20];for(i=0;i<n;i++,p++){printf("请输入考生姓名:\n");gets(p->name);printf("请依次输入学生线性代数、通信原理、c语言分数:\n");for(a=0,j=0;j<3;j++){gets(str);p->score[j]=atof(str);a+=p->score[j];}p->aver=a/3;}return;}void sort(struct student *p,int n){struct student temp;int i,j;for(i=0;i<n-1;i++){for(j=0;j<n-1-i;j++){if(p[j].aver<p[j+1].aver){temp=p[j];p[j]=p[j+1];p[j+1]=temp;}}}}double average(struct student *p,int n){int i;double temp;for(i=0,temp=0;i<n;i++)temp=temp+p[i].aver;return temp/n;}void output(struct student *p,int n,double aver){int i;printf("姓名线性代数通信原理c语言平均分\n");printf("-----------------------------------------\n");for(i=0;i<n;i++){printf("%-10s%8.2lf%8.2lf%8.2lf%8.2lf\n",p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].aver);}}运行结果:3.利用指向指针的指针方法对N个整数排序并输出。

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案C语言程序设计是计算机科学与技术专业的核心课程之一,它不仅教授了编程语言的基本知识,还培养了学生的逻辑思维能力和问题解决能力。

课后习题是巩固课堂学习内容的重要手段,以下是一些C语言程序设计的典型课后习题及答案。

习题1:基本数据类型编写一个程序,输入一个整数和一个浮点数,然后输出它们的和。

```c#include <stdio.h>int main() {int a;float b, sum;printf("请输入一个整数:");scanf("%d", &a);printf("请输入一个浮点数:");scanf("%f", &b);sum = a + b;printf("它们的和是:%f\n", sum);return 0;}```习题2:条件语句编写一个程序,根据输入的成绩判断学生的等级。

```c#include <stdio.h>int main() {float score;printf("请输入学生的成绩:");scanf("%f", &score);if (score >= 90) {printf("等级:A\n");} else if (score >= 80) {printf("等级:B\n");} else if (score >= 70) {printf("等级:C\n");} else if (score >= 60) {printf("等级:D\n");} else {printf("等级:F\n");}return 0;}```习题3:循环结构编写一个程序,计算1到100的整数之和。

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

C语言程序设计课后习题参考答案
【习题2-22】:x>-5&&x<5
x>5||x<-5
四、编写程序题
【习题2-23】
main()
{
float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
表达式不是独立存在的,它存在于其他表达式、语句、函数参数里,表达式后面加上一个分号,就变成表达式语句,如
i=i+1(是表达式,不是语句)
i=i+l;(是语句)
表达式能构成语句是C语言的一个特色。其实“函数调用语句”也是属于表达式语句,因为函数调用也属于表达式的一种,只是为了便于理解和使用,我们把“函数调用语句”和“表达式语句”分开来说明。由于C程序中大多数语句是表达式语句(包括函数调用语句),所以有人把C语言称作“表达式语言”。
三、
【习题3-12】~【习题3-19】:如图3-12至图3-19所示。
3-123-133-14
其中的符号“→”表示“倒给”,例如“A→C”“将A瓶中的液体倒给C瓶”。
3-153-163-17
3-183-19
四、编写程序题
【习题3-20】:
#include <stdio.h>
main()
{int x,y;
bon4=bon2+200000*0.05; /*利润为40万元时的奖金*/
bon6=bon4+200000*0.03; /*利润为60万元时的奖金*/
bon10=bon6+400000*0.015; /*利润为100万元时的奖金*/

华中科技大学标准C语言程序设计及应用习题答案

华中科技大学标准C语言程序设计及应用习题答案

第二章一.选择题1.C2.B D3.A4.A5. D6.C7.D8.C9.A 10.D 11.B 12.D 13.C 14.D 15.A16.B 17.A 18.B 100011 001111二.判断题1.错2.错3.错4.错三.填空题1. B 662. n1=%d\nn2=%d\n3. 0四.计算1(1)x|y = 0x002f(2)x^y = 0x0026(3)x&y = 0x0009;(4)~x+~y = 0xffc6(5)x<<=3 0x0068(6)y>>=4 0x00022(1)6(2)50(3)1(4)–16(5)1(6)203(1)0(2)1(3)1(4)4(5)8(6)14(1)12(2)0(3)1(4)27(6)6(7)24(8)27(9)–295(1)0(2)1(3)1(4)–3(5)2五.程序分析题程序1b=20 a=3600程序2第三章一.填空题1.s=62.963.(1) scanf("%c",&c);(2) c-32 更好的答案:c-('a'-'A')2.1main(){int a,b;printf("please input a & b:");scanf("%d%d",&a,&b);printf("\nmax is %d\n",(a>b)?a:b);}2.2int max(int x,int y);main(){int a,b,c,max;printf("please input a & b & c:");scanf("%d%d%d",&a,&b,&c);max=a>b?a:b;max=c>max?c:max;printf("\nmax is %d\n",max);}2.3{int i=0,sum=0;while(i<=100){sum+=i;i++;}printf("1+2+3+......+100=%d\n",sum);}2.4main(){int i;int a=10,b=-3;int c;printf("%6d%6d",a,b);for(i=2;i<10;i++){c=3*b+a;printf("%6d",c);a=b;b=c;}printf("\n");}2.5main(){int i;while(1){printf("please input a data(0:exit):");scanf("%d",&i);if(i==0)break;if(i%2==0)printf("the data %d is a even number.\n",i);elseprintf("the data %d is a odd number.\n",i); }}2.6#include <stdio.h>main(){int i;int a=8,b=1;int sum=0;for(i=0;i<10;i++){b+=3;sum += a;a+=b;printf("a%8d b:%8d\n",a,b);}printf("The Sum Of Is:%d\n",sum);}2.7#include <stdio.h>main(){float x,y;printf("please input x:");scanf("%f",&x);if(x<1.0)y=x;else if(x<10)y=2*x-1;elsey=3*x-11;printf("y=%f\n",y);}2.8#include <stdio.h>main(){long a,i,b,a1;while(1){printf("please input data(1-99999):");scanf("%ld",&a);printf("a:%ld\n",a);if(a<=0||a>=100000)break;i=0;a1=0;while(a!=0){b=a%10;printf("%8d",b);a/=10;i++;a1=a1*10+b;}printf("\n i:%ld a1:%ld\n",i,a1);}}2.9#include <stdio.h>#include <time.h>#include <stdlib.h>main(){int a,b,i,k=0;randomize();a=random(1001);/*create a random data(0-1000)*/ for(i=0;i<20;i++){printf("please guess a number:");scanf("%d",&b);if(a>b){k++;printf("\n%d:Smaller,guess again!\n",k);}else if(a<b){k++;printf("\n%d:Bigger,guess again!\n",k);}else{printf("\nYou guess right,congraturation!") ;printf("\nYou have guessed %d times",k);break;}}if(k==20)printf("\nsorry,you failed!");}2.10#include <stdio.h>main(){int a,b,c;int num;for(a=0;a<10;a++){for(b=0;b<10;b++){for(c=1;c<10;c++){num=a*100+b*10+c;if((num%3==0)&&(a==5||b==5||c==5))printf("%8d",num);}}}printf("\n\n\n");}2.11#include <stdio.h>main(){int i;int a,b;printf("please input a,b:");scanf("%d%d",&a,&b);for(i=a<b?a:b;i>0;i--){if(a%i==0&&b%i==0){printf("The max=%d",i);break;}}for(i=a>b?a:b;i>0;i++){if(i%a==0&&i%b==0){printf("\nThe min=%d",i);break;}}2.12#include <stdio.h>main(){int a,k=0;printf("please input data:");scanf("%d",&a);while(a%2==0){a=a/2;k++;}printf("\nthe number of factor(2) is %d",k); }2.13main(){long i,t=1;long sum=0;for(i=1;i<=10;i++){t*=i;sum+=t;printf("%ld!=%ld\n",i,t);}printf("sum:%ld\n",sum);}2.14#include <stdio.h>void main(){int i,x=0;for(i=9;i>=1;i--){x=2*(x+1);}printf("The first day:%d",x);}2.15#include <stdio.h>#define PI 3.141593main(){float r,h;float v;printf("please input r,h:");scanf("%f%f",&r,&h);v=1.0/3*PI*r*r*h;printf("V=%.2f",v);}2.16#include<stdio.h>#include<math.h>main(){long int sn=0;long int m=0,t=0;int a,n,i;printf("please input a n:");scanf("%d%d",&a,&n);for(i=0;i<n;i++){m=m*10+a;sn+=m;}printf("a+aa+aaa+...+aa...a=%ld\n\n",sn); }2.17#include <stdio.h>main(){int k;printf("please input k:");do{scanf("%d",&k);if(k>=0&&k<=6)break;}while(1);switch(k){case 0:printf("Sunday.\n");break;case 1:printf("Monday.\n");break;case 2:printf("Tuesday.\n");break;case 3:printf("Wednesday.\n");break;case 4:printf("Thursday.\n");break;case 5:printf("Friday.\n");break;case 6:printf("Saturday.\n");break;}}2.18#include <stdio.h>main(){int i;double x,a,b=1,sum=1;printf("please input x:");scanf("%lf",&x);a=x;for(i=1;a/b>=1e-6;i++){sum=sum+a/b;a=a*x;b=(i+1)*b;}printf("\nsum=%lf",sum);}2.19#include <stdio.h>#include <math.h>main(){float a,x1,x2;printf("input a:");scanf("%f",&a);x1=1.0;while(1){x2=1.0/2*(x1+a/x1);if(fabs(x2-x1)<1e-5)break;x1=x2;}printf("sqrt(a)=%f",x2);}第四章写出下列程序输出结果1.no 1 a=1no 1 a=0no 1 a=1no 1 a=02.a=0 b=0 c=0a=1 b=0 c=0a=2 b=0 c=03.main:x=5,y=1,n=1func:x=6,y=21,n=11main:x=5,y=1,n=11func:x=8,y=31,n=21第五章1.D2.D3.C4.65.CDABC6.(1)j+=2(2)a[i]<a[j]7.(1)s[i++]!='\0'(2)s[i-1]8.D9.B10.6(同题4)11.s[i]>='0'&&s[i]<='9'12. (1)'\0' (2)str1[i]-str2[i]5.1#include<stdio.h>int fun();int fun(){int a[3][3],sum;int i,j;sum=0;/*error*/for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d",&a[i][j]);/*error*/}for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%d\n",sum);}void main(){fun();}5.2#include <stdio.h>void main( void ){float Num[10];float Input,GetNum[11];int i,j;float a=6;for(i=0; i<10; i++){Num[i]=a;a=a+7.5;}Loop1: printf("Please input a Number(0-80) Input=");scanf("%f",&Input);if((Input<0)||(Input>70)==1)goto Loop1;for(i=0; i<10; i++ ){if(Input<Num[i])goto Loop2;}Loop2: for(j=0; j<i; j++ )GetNum[j]=Num[j];GetNum[j]=Input;for(j=i; j<=10; j++,i++)GetNum[j+1]=Num[i];for(j=0; j<11; j++ )printf("%3.3f ",GetNum[j]);}5.3#include "stdio.h"#include "stdlib.h"main(){int a1,a2,a3,a4,a5,a6,a7,a8,a9;int a[3];int i;for(;;){for (i=0;i<3;i++){a[i]=rand()%3;}while((a[0]!=a[1]) && (a[0]!=a[2]) && (a[1]!=a[2]))/*get three different numbers 0,1,2*/{a1=a[0]+1;/*divide 1~9 into three groups,a1~a3,a4~a6,a7~a9*/a2=a[1]+1;a3=a[2]+1;a4=a1+3;a5=a2+3;a6=a3+3;a7=a1+6;a8=a2+6;a9=a3+6;/* make sure that each line and each row is made up with three members in different group.*//* such as: a9 a1 a5a2 a6 a7a4 a8 a3 */if(((a1+a5+a9) == (a2+a6+a7)) && ((a1+a5+a9) == (a3+a4+a8))&& ((a1+a6+a8) == (a5+a7+a3)) && ((a1+a5+a9) == (a2+a4+a9))){printf("%d %d %d\n%d %d %d\n%d %d %d\n",a9,a1,a5,a2,a6,a7,a4,a8,a3);return;}}}}5.4#include <stdio.h>void main(void){char input1[100],input2[100],input3[100];int i,Eng=0,eng=0,num=0,blank=0,other=0;printf("Input 3 rows of character,each row don't exceed 80 characters:\n");gets(input1);printf("The second row:\n");gets(input2);printf("The third row:\n");gets(input3);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop1;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)Eng++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)eng++;else if(('0'<=input1[i])&&(input1[i]<='9')==1)num++;else if(input1[i]==32)blank++;else other++;}/*test the second row*/Loop1: for(i=0; i<100; i++){if(input2[i]=='\0')goto Loop2;else if(('A'<=input2[i])&&(input2[i]<='Z')==1)Eng++;else if(('a'<=input2[i])&&(input2[i]<='z')==1)eng++;else if(('0'<=input2[i])&&(input2[i]<='9')==1)num++;else if(input2[i]==32)blank++;else other++;}/*test the third row*/Loop2: for(i=0; i<100; i++){if(input3[i]=='\0')goto Loop3;else if(('A'<=input3[i])&&(input3[i]<='Z')==1)Eng++;else if(('a'<=input3[i])&&(input3[i]<='z')==1)eng++;else if(('0'<=input3[i])&&(input3[i]<='9')==1)num++;else if(input3[i]==32)blank++;else other++;}Loop3: printf("Upper english character:%d\nLower english character:%d\nNumber:%d\nBlank:%d\nOthercharacters:%d\n",Eng,eng,num,blank,other);}5.5#include <stdio.h>void main(void){char str1[80],str2[40];int i,j,k;/*Input two string*/printf("Please input the first string\n str1=");gets(str1);printf("Please input the second string\n str2=");gets(str2);/*Get the end of str1*/for(i=0; i<80; i++){if(str1[i]=='\0')break;}/*Copy str2 to str1*/for(j=i,k=0; str2[k]!='\0';k++,j++)str1[j]=str2[k];str1[i+k]='\0';puts(str1);}5.6#include <stdio.h>struct student{char name[20];int score;}stu[5],stu1;void main(void){ int i,j;printf("Input student's score and name(5),seperate using the character of ',' :\n");for(i=0; i<5; i++)scanf("%d,%s",&stu[i].score,&stu[i].name);/*sorting*/for(i=0; i<5; i++)for(j=0; j<4-i; j++)if(stu[j].score>stu[j+1].score){stu1=stu[j];stu[j]=stu[j+1];stu[j+1]=stu1;} printf("After sotred,score and name:\n");for(i=0; i<5; i++)printf("%d,%s\n",stu[i].score,stu[i].name); }5.7#include<stdio.h>main(){ int a[3][3],i,j,m,n,o,p;printf("Please input a 3*3 shuzu:\n");for (i=0;i<=2;i++)for (j=0;j<=2;j++)scanf("%d",&a[i][j]);for (i=0;i<=2;i++){ m=(a[i][0]>a[i][1])? a[i][0]:a[i][1];n=(m>a[i][2])? m: a[i][2];}for (j=0;j<=2;j++){ o=(a[0][j]<a[1][j])? a[0][j]:a[1][j];p=(o<a[2][j])? o: a[2][j];}if (n==p)printf("Andian is %d\\n",p);elseprintf("There is no andian.\\n"); }5.8#include <stdio.h>void main(void){ int a[4][3],b[3][4],i,j;for(i=0; i<4; i++){ for(j=0; j<3; j++)scanf("%d",&a[i][j]);}for(i=0; i<4; i++){printf("\n");for(j=0; j<3; j++)printf("%5d ",a[i][j]);}for(i=0; i<4; i++){for(j=0; j<3; j++)b[j][i]=a[i][j];}printf("\n");for(i=0; i<3; i++){printf("\n");for(j=0; j<4; j++)printf("%5d ",b[i][j]);}}5.9#include <stdio.h>#include<math.h>void main(void){ char str[6];int i,j=0,m=0,n=0;gets(str);while(str[j]!='\0') j++;for(i=j-1;i>=0;i--){m=(str[i]-'0')*(pow(8,j-i-1));n+=m;}printf("shijinzhi %d",n);}5.10#include <stdio.h>void main(void){char input1[100];int i,num=0,blank=0;printf("Please input a row character:\n");gets(input1);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)num++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)num++;else if (input1[i]==32)blank++;}Loop: printf("Character:%d\nBlank:%d\n",num,blank);}第六章一、选择题1.D :p中记录的是a的地址,*p访问地址a的值2.D :指针数组3.D:指针可以进行是否相等判断,空指针可以进行指针变量初始化,指针可以偏移;4.C:5.C、D:a[5]不存在,若*&a[4]则正确;C,D正确;6.D:7.B:8.B:二、填空题1.*(p+3) 2 222.cdefgbcdefgabcdefg73.6385三、程序分析题1.p = s[0] ;错误,应改为:p = s;或p = &s[0];2.int x , *p;错误,应改为:double x, *p;3.*p = x ;错误,应改为:p = &x ;4.声明顺序错误;应该改为:void main(void){int a;int *p = &a;a = 10;printf(“%d\n”,*p);}2.3#include <stdio.h>#include <string.h>main(){char ch[2][5] = {"6937","8254"},*p[2]; int i,j,s=0;for(i=0;i<2;i++)p[i] = ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s = 10*s + p[i][j] - '0';printf("%d\n",s);}4.1#include <stdio.h>#include <string.h>main(){int count = 0;char str1[100],str2[100];char *p1,*p2;printf("please enter string 1:");gets(str1);printf("please enter string 2:");gets(str2);printf("str1:%s\n",str1);printf("str2:%s\n",str2);p1 = str1;p2 = str2;while(*p1!='\0'&&*p2!='\0'){if(*p1++==*p2++)count++;}printf("count:%d\n",count);}4.2#include <stdio.h>#include <string.h>main(){int i,j,k;int a[3];int temp;printf("please enter array a[3]:"); scanf("%d%d%d",&a[0],&a[1],&a[2]); for(i=0;i<2;i++){k = i;for(j= i+1;j<3;j++){if(a[j]<a[i])k = j;}if(k!=i){temp = a[i];a[i] = a[k];a[k] = temp;}}for(i=0;i<3;i++)printf("%d\t",a[i]);printf("\n");}4.3#include <stdio.h>#include <string.h>#define N 100main(){char s1[N], s2[N],*p;int m;printf("please enter string1:");gets(s1);p = s1;printf("enter m:");scanf("%d",&m);strcpy(s2,p+m);printf("string2:%s\n",s2);}4.4#include <stdio.h>#include <string.h>main(){char s[100]="iuiui012asdd90k890y098kkkk1234",*p; char data[100][100]={{0}};int count=0;int i;p = s;/*printf("please enter a string:");gets(p);*/printf("sssss:%s\n",s);while(*p!='\0'){i=0;while(*p>='0'&&*p<='9'){data[count][i] = *p;i++;p++;}if(i!=0)count++;p++;}printf("count:%d\n",count);for(i=0;i<count;i++)printf("%s\n",data[i]);}4.5#include <stdio.h>#define SIZE 4main(){int data[SIZE][SIZE],i,j,d;int max,m=0,n=0;for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){scanf("%d",&data[i][j]);}}for(i=0;i<SIZE;i++){for(j=i+1;j<SIZE;j++){d = data[i][j];data[i][j] = data[j][i];data[j][i] = d;}}max = data[0][0];for(i=0;i<SIZE;i++){printf("\n");for(j=0;j<SIZE;j++){printf("%4d",data[i][j]);if(data[i][j]>=max){max = data[i][j];m = i;n = j;}}}printf("\nmax:%4d m:%d n:%d\n",max,m,n); }#include <stdio.h>#include <string.h>main(){char *p[] = {"test","capital","index","large","small"}; char **pstr = p;int a,b,n = 5;char *temp;for(a=0;a<n-1;a++){for(b=a+1;b<n;b++){if(strcmp(pstr[a],pstr[b])>0){temp = pstr[a];pstr[a] = pstr[b];pstr[b] = temp;}}}for(a=0;a<n;a++)printf("%s\n",pstr[a]);}4.7#include <stdio.h>#include <string.h>main(){char s[100],temp;char *p = s;int i,length;printf("please enter a string: ");gets(s);while(*p++!='\0');length = p - s -1;printf("string length:%d\n",length);for(i=0;i<length/2;i++){temp = s[i];s[i] = s[length-i-1];s[length-i-1] = temp;}printf("%s\n",s);}第七章一,选择题1.A2.D3.B4.D5.C6.A7.B二.程序填空题1.(1) a[k](2) a[k](3) a[k]2.(1) a[i](2) j(3) i+1或6三.改错题1.#include<stdio.h>#include<string.h>void swap(char *,char *); /*此处有错误,函数声明时要加分号*/main(){char a[80],b[80],c[80];scanf("%s%s%s",a,b,c); /*此处有错误,a,b,c分别为数组a[80],b[8],c[80]的首地址*/if(strcmp(a,b)>0) swap(a,b); /*此处有错误,字符串比较应该使用strcmp函数*/if(strcmp(b,c)>0) swap(b,c); /*此处有错误,原因同上*/if(strcmp(a,b)>0) swap(a,b); /*原算法不能实现排序,需要添加此语句*/ printf("%s\n%s\n%s\n",a,b,c);}7.3.1#include <stdio.h>#include <string.h>void swap(char *pstr1,char *pstr2){char p[80];strcpy(p,pstr1);strcpy(pstr1,pstr2);strcpy(pstr2,p);}main(){char a[80]="ccc",b[80]="bbb",c[80]="aaa";/* scanf("%s%s%s",a,b,c); */if(strcmp(a,b)>0)swap(a,b);if(strcmp(b,c)>0)swap(b,c);if(strcmp(a,b)>0)swap(a,b);printf("%s\n%s\n%s\n\n\n",a,b,c);}7.4.1#include <stdio.h>int SquSum(int,int);main(){int a,b;int c;printf("enter 2 integer:");scanf("%d%d",&a,&b);c = SquSum(a,b);printf("a=%d b:%d a2+b2=%d\n",a,b,c); }int SquSum(int x,int y){int z;z = x*x+y*y;return z;}7.4.2#include <stdio.h>int GongYueShu(int,int);int GongBeiShu(int,int);main(){int a,b;int gbs,gys;printf("enter 2 integer:");scanf("%d%d",&a,&b);gys = GongYueShu(a,b);gbs = GongBeiShu(a,b);if(gys<0)printf("There has not gong yue shu!!!!!!\n"); elseprintf("max gong yue shu:%d\n",gys); printf("min gong bei shu:%d\n",gbs);}int GongYueShu(int x,int y){int i,gys=-1,min;min = x;if(x>y)min = y;for(i=2;i<=min;i++){if((x%i==0)&&(y%i==0))gys = i;}return gys;}int GongBeiShu(int x,int y){int i,gbs,max;max = x;if(y>x)max = y;for(i=max;i<=x*y;i++){if((i%x==0)&&(i%y==0)){gbs = i;break;}}return gbs;}7.4.4#include <stdio.h>#include <string.h>void Delete_Ch(char *,char); main(){char str[80],ch;printf("please a string:");gets(str);printf("please a char:");scanf("%c",&ch);Delete_Ch(str,ch);printf("%s\n\n",str);}void Delete_Ch(char *p,char ch) {while(*p){if(*p==ch){strcpy(p,p+1);}elsep++;}}7.4.5#include <stdio.h>int Is_ShuShu(int); /* return 0:shushureturn -1:no shushu*/ main(){int a,ret;printf("pls enter a integer:");scanf("%d",&a);ret = Is_ShuShu(a);if(ret==0)printf("%d is a shushu!!!\n",a);elseprintf("%d is not a shushu\n",a);}int Is_ShuShu(int x){int i;for(i=2;i<x/2;i++){if(x%i==0)return -1;}if(i>=x/2)return 0;}7.4.6#include <stdio.h>#include <string.h>void StrCat(char *s1,char *s2){while(*s1!='\0')s1++;while(*s2!='\0'){*s1 = *s2;s1++;s2++;}*s1='\0';}main(){char a[200]="123456789",b[100]="ABCDEFG";printf("pls enter string 1:");gets(a);printf("pls enter string 2:");gets(b);StrCat(a,b);printf("%s\n\n",a);}7.4.7#include <stdio.h>#include <string.h>void Stat(char *s,int *ch,int *dig,int *spa,int *oth){while(*s!='\0'){if(((*s>='a')&&(*s<='z'))||((*s>='A')&&(*s<='Z')))(*ch)++;else if((*s>='0')&&(*s<='9'))(*dig)++;else if(*s == ' ')(*spa)++;else(*oth)++;s++;}}main(){char a[200];int ch=0,dig=0,spa=0,oth=0;printf("pls enter a string :");gets(a);Stat(a,&ch,&dig,&spa,&oth);printf("ch:%d dig:%d spa:%d oth:%d",ch,dig,spa,oth);}7.4.8#include <stdio.h>#include <string.h> void reverse(char *s) {if(*s){}main(){char s[] = "abcde"; reverse(s);puts(s);}7.4.9#include <stdio.h>#include <string.h> paixu(int *p,int n,int flag) {int i,j,m;int temp;for(i=0;i<n-1;i++){m = i;for(j=i+1;j<n;j++){if(flag == 1){if(p[j]>p[m])m = j;}else{if(p[j]<p[m])m = j;}}if(m!=i){temp = p[i];p[i] = p[m];p[m] = temp;}}}main(){int a[20];int n,i;int flag;printf("please enter n(<20):"); scanf("%d",&n);getchar();printf("please enter array a:");for(i=0;i<n;i++)scanf("%d",&a[i]);getchar();printf("please enter paixu flag:\n"); printf("\t1:degression\n");printf("\t0:increasion\t:");scanf("%d",&flag);paixu(a,n,flag);printf("array a is:");for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n\n");}。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

华中科技大学c程序设计考试题

华中科技大学c程序设计考试题

1.c++系统预定了4个用于标准数据流的对象,下;正确答案:【D】分值:【1】;2.设有说明:charw;intx;floaty;正确答案:【D】分值:【1】;3.下列对析构函数的描述中,正确的是(____);C.析构函数的定义只能在类体内D.析构函数可以有;正确答案:【A】分值:【1】;4.下列定义数组的语句中正确CPP程序设计模拟考试 1--第2套试卷1.c++系统预定了4个用于标准数据流的对象,下列选项中不属于此类对象的是(____) A.cout B.cin C.cerr D.cset正确答案:【D】2.设有说明:char w;int x;float y;double z;则表达式w*x+z-y 值的数据类型为(____) A.float B.char C.int D.double正确答案:【D】分值:【1】3.下列对析构函数的描述中,正确的是(____) A.一个类中只能定义一个析构函数 B.析构函数名与类名不同C.析构函数的定义只能在类体内D.析构函数可以有一个或多个参数正确答案:【A】分值:【1】4.下列定义数组的语句中正确的是(____)A.#define size 10 char str1[size],str2[size+2];B.char str[];C.i nt num['10'];D.int n=5; int a[n][n+2];正确答案:【A】分值:【1】5.关于this指针使用说法正确的是(____)A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码B.保证基类私有成员在子类中可以被访问。

C.保证基类保护成员在子类中可以被访问。

D.保证基类公有成员在子类中可以被访问。

正确答案:【A】分值:【1】6.所谓多态性是指(____)A.不同的对象调用不同名称的函数B.不同的对象调用相同名称的函数C.一个对象调用不同名称的函数D.一个对象调用不同名称的对象正确答案:【B】分值:【1】7.派生类构造函数的执行顺序是先执行________ 的构造函数,然后执行成员对象的构造函数,最后执行________ 的构造函数。

(完整版)C语言程序设计习题集及答案

(完整版)C语言程序设计习题集及答案

C语言程序设计习题集东华理工大学2014.9基础知识一单项选择题(每题2分,共44分)1 以下叙述正确的是___。

A C程序基本组成单位是语句B C程序每一行只能写一个语句C 简单C语句必须以分号作为结束符D 注释语句可以嵌套2 一个C语言程序是从___开始执行的。

A 程序中第一个函数B 名为main的函数C 包含文件(头文件)的第一个函数D 程序中的第一个语句3 请选出合法的C语言赋值语句___。

A a=b=58B i++;C a=58,b=58D k=int(a+b);4 下面标识符中,合法的用户标识符是___。

A 1abcB includeC a-b-c123D char5 以下所列的C语言整形常量中,正确的是___。

A 0x10B 0976C 076LD 01ff6 C语言中下列运算符的操作数必须为整型的是___。

A %B ++C /D =7 设a和b均为int型变量,则执行以下语句后的输出为___。

int a=20; int b=3; printf("%d\n",a+=(b%=2));A 20B 21C 0D 238 已知int i;,则执行语句 i=2.6;后,i的值为___。

A 2B 3C 2.6D 不确定9 以下合法的字符常量为___。

A 'ab'B '\482'C '\'D '\xaf'10 若y为int型变量,则执行以下语句后,y的值是___。

y=8; y+=y-=y*y;A 64B –56C –112D –4811 以下合法的浮点型常量是___。

A e-3B 1.5e+2.4C 3.14e+2LD 3.14 e +512 设int数据占用两个字节,float数据占用四个字节,double数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为___。

printf("%d",sizeof(a*b)+2/5);A 4B 8C 6D 713 设int型占2个字节,且int i=-2;,则语句printf("%u",i);的输出结果为___。

标准C语言程序设计第五版课后练习题答案

标准C语言程序设计第五版课后练习题答案

课后练习题答案Chapter 11.1×√×√√×√××√1.2b c1.3ad1.4semicolon printf math.h \nChapter 22.1 ×√××√√×√××√×2.2 typedef 255 external constChapter 33.1 ×√××√√×××√√√3.2 integer modula 6 logical sizeof paratheses typeconversion precedence3.3 F F T F F F3.4 F T T T F3.5 (b) (c)3.6 0 -2 7 10.25 false 3 3 13.10 0 1 1 1 13.11d}1003.121101113.13 13.14 2003.15 x<=y3.16 TRUE3.192143.20-4040Chapter 44.1 ×√√√√√××√√√×4.2 %hd %x ctype.h %l %*d [^] blank 6 - %e4.4 (a) scanf(“%d %c %d”, &a, &b, &c); (b)scanf(“%d %f %s”, &a, &b, &c);(c) scanf(“%d-%d-%d”, &a, &b, &c); (d) scanf(“%d %s %d”, &a, &b, &c);4.5 (a)10x1.230000 (b)1234x 1.23 (c)1234 456.000000 (d) “123.40 ”(e) 1020 1222(乱码)4.7 (a)1988 x (b)乱码(c)120 乱码(d)乱码 x4.8 (a)1275 -235.740000(b) 1275-235.740000(c) 0 0.000000(d) 1275xxxx-235.74(e)Cambridge(f)1275 Cambridge4.10 1988 无无Chapter 55.1 √×√××××××√5.2 && switch break if-else x=y5.4 (a)x = 2; y = 0; (b) x = 1; y = 0;5.5 (a) if (grade <= 59)if (grade >= 50)second = second + 1;(b) if (number > 100) printf(“out of range”);else if (number < 0) printf(“out of range”);else sum = sum + number;(c)if (T > 200) printf(“admitted”);else if (M > 60){if (M > 60) printf(“admitted”);}else printf(“not admitted”);5.6 F T F T5.8 (a) x > 10 (b) (x != 10)||(y ! = 5) || (z >= 0)(c) (x + y != z) || (z > 5) (d) (x > 5) || (y != 10) || (z >= 5)5.9 (a) x = 5; y = 10; z = 1 (b) x = 5; y = 10; z = 1(c) x = 5; y = 0; z =0 (d) 无变化5.10 (a) x= 0; y = 2; z = 0; (b) x = 1; y = 2; z = 0;5.12 85.13 Delhi Bangalore END5.1424485.15 0 0 25.16 255.17 Number is negative5.18 ABC5.19 105.20 无输出Chapter 66.1 √√√××√×√√×6.2 n continue infinite indefinite-repetition-loop counter-variable 6.9 (a) 43210 (b)4321 (c)55555…55555(d)10 86.11 (a)无数次 x = 10; x = 5; x = 10; x = 5; x = 10;…(b)5次 m = 3, m = 5, m = 7, m = 9, m = 11(c)无数次, i 恒为0(d)4次 m = 11 n = 9; m = 12 n = 11; m = 13, n = 13; m = 14, n = 15;6.13(a)for (n = 1; n <= 32; n = n * 2) printf("%d ", n);(b)for (n = 1; n <= 243; n = n * 3) printf("%d ", n);(c)for (n = -4; n <= 4; n = n + 2) printf("%d ", n);(d)sum = 0;for (i = 2; i <= 16; i = sum){sum = sum + i;n = n - i;printf("%d %d %d \n", i, sum, n);}6.16 100 90 80 70 60 50 40 30 20 10 06.17 m = 20时陷入死循环,程序无输出6.18 16.19 16.20 死循环,延长时间用Chapter 77.1 √×√××√√√√××√7.2 index/subscript run-time dynamic multi-dimensional sorting7.14 157.15 HLOWRDChapter 88.1 ×√√√×√××√×××√×√8.2 %[ a-z,A-Z] strcpy 3 stdlib gets strlen strstr strcmp s1-s2 puts8.6 (a) The sky is the limit.(b) The sky is(c) T(d) The sky is the limit(e)8410410132115107121321051153211610410132108105109105116(f)输出1 2 3 4 5 6 7 8 9…21这些ASCII码对应的字符,无显示符号(g)%(h)U8.7 (d)8.8 78.9 (a)he(b)heorshe(c)5 78.11 puneChapter 99.1 √×××√×××√√√×××√×√√××9.2 actual-parameter local-variable int data-type variable-name scope recursive static type auto9.8 abceg9.9 abcdeg9.12 (a) 5 (b) 4 (c)3 (d)09.13 (a) 5 4 4 0 (b) 5.0 4.0 3.0 0.679.14 题目错,设z = 5;结果为:200 10009.15 1009.16 x = 3; y = 0Chapter 1010.1 ×√√√√×√√×√√√××√10.2 typedef union tag_name pointer memberChapter 1111.1 √×√√√√×√××11.2 address * * 0 null。

标准c程序设计第6版答案

标准c程序设计第6版答案

标准C程序设计第6版答案1. 简介本文档是《标准C程序设计第6版》一书的答案,旨在辅助读者理解和掌握书中的内容。

在学习C程序设计过程中,参考答案可以帮助读者检验自己的理解程度,加深对知识点的理解,并提供一种解题思路。

2. 第一章简介2.1 问题1答案:C语言是一种通用的计算机编程语言,广泛应用于系统软件、嵌入式系统、驱动程序等领域。

C语言被广泛使用的原因有以下几点: - 简洁高效:C语言的语法简洁,易于学习和理解。

同时,C语言的执行效率高,生成的机器代码精简,执行速度快。

- 跨平台:C语言具有很强的可移植性,可以在不同的操作系统和硬件平台上编写和运行程序。

- 底层控制能力:C语言支持直接操作内存和硬件设备,适用于需要对底层进行精确控制的场景。

- 丰富的函数库:C语言拥有丰富的函数库,方便开发者进行程序开发。

2.2 问题2答案:C语言是由贝尔实验室的Dennis Ritchie和Ken Thompson在20世纪70年代开发的。

起初,C语言是为Unix操作系统开发的,但由于其简洁高效的特点,迅速流行起来,并成为广泛应用的编程语言。

2.3 问题3答案:C语言是一种面向过程的编程语言。

它将问题分解为若干个子过程,通过调用这些子过程来解决问题。

C语言的面向过程特点使得程序的组织结构清晰,易于理解和维护。

3. 第二章程序框图与程序步骤图3.1 问题4答案:程序框图(program flowchart)是一种图形化的表示程序流程的工具。

它用不同的图形符号表示各种程序控制结构,如顺序结构、选择结构和循环结构。

程序框图通过连接这些图形符号来表示程序的执行顺序。

程序框图提供了一种清晰的视觉方式,帮助开发者理解程序的结构和流程。

3.2 问题5答案:程序步骤图(program flowchart)是一种图形化的表示程序运行步骤的工具。

它使用方框表示程序的每一步骤,通过箭头表示各个步骤之间的逻辑关系。

程序步骤图主要用于描述程序的逻辑流程,帮助开发者理解和分析程序的执行过程。

华中科技大学C语言期末考试题库试题及答案汇总

华中科技大学C语言期末考试题库试题及答案汇总

A、0 B、0.5 C、1 D、2
知识点:算术表达式
38.设有 int x=11;则表达式(x++ * 1/3)的值是___A___。??
A、3
B、4 C、11 D、12
知识点:算术表达式
39.下列程序的输出结果是___C___。
main()
{
double d=3.2; int x,y;
x=1.2;y=(x+3.8)/5.0;
知识点:常量、变量和标识符
24.以下不能定义为用户标识符的是__D____。
A、Main B、_0 C、_int D、sizeof
知识点:常量、变量和标识符
25.下列叙述中正确的是_D_____。
A、C 语言中既有逻辑类型也有集合类型 B、C 语言中没有逻辑类型但有集合类型
C、C 语言中有逻辑类型但没有集合类型 D、C 语言中既没有逻辑类型也没有集合类型
知识点:简单 C 语言程序的构成和格式
12.
有以下程序
main()
{
int a=0,b=0;
a=10; /* 给 a 赋值 */
b=20; /* 给 b 赋值 */
printf("a+b=%d\n",a+b);
}
程序运行后的输出结果是___B___。
A、a+b=10 B、a+b=30 C、30 D、出错
D、int k_2 _001 ???
知识点:常量、变量和标识符
19.以下定义语句中正确的是__C____。
A、char a='A' b='B'; B、float a=b=10.0;(正解 a=10.0 b=10.0)

(完整版)C语言课后题编程标准答案

(完整版)C语言课后题编程标准答案

C语言课后题编程答案所有章节的课后习题的选择题和填空题大家必须熟练掌握,编程题掌握到第九章即可。

希望大家通过课后的编程题熟悉典型的编程算法,掌握基本的编程思路,注意编程细节。

第3章3-17 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。

#include<stdio.h>main(){int h,m。

h=560/60。

m=560%60。

printf(“560分钟可转换成%d小时%d分钟”,h,m)。

}程序总结:(1)只要在程序中用到系统提供的库函数,必须把库函数所在的头文件用#include命令包含进来。

否则库函数的使用无效。

输入输出库函数的头文件是:stdio.h。

数学函数的头文件是:math.h。

字符处理函数的头文件是:ctype.h。

字符串处理函数的头文件是:string.h。

(2)注意C语言中的“/”和“%”两种运算符。

“/”的运算结果取决于两操作数的类型。

比如:1/2=0(与数学中不同,结果与操作数的类型一致,所以结果只取商值),1.0/2=0.5(除之前2要自动类型转换成 2.0,因为只有同类型的操作数才能进行除运算), 1/2.0=0.5, 1.0/2.0=0.5。

“%”的两个操作数都必须是整数。

(3)printf(“560分钟可转换成%d小时%d分钟”,h,m)。

printf第一个参数要尽量详细,这样可以提高输出结果的可读性,恰当好处的添加提示性信息,可以提高程序的质量。

(4)int h,m。

变量起名要有艺术性,尽量做到见名知意。

3-18 编写程序,输入两个整数,1500和350,求出它们的商和余数并进行输出。

#include<stdio.h>main(){int a,b,m,n。

printf(“请输入两个整数:\n”)。

scanf(“%d%d”,&a,&b)。

m=a/b。

n=a%b。

printf(“%d除以%d商%d余%d”,a,b,m,n)。

《C语言程序设计教程》习题参考答案

《C语言程序设计教程》习题参考答案

《C语言程序设计教程》习题参考答案C语言程序设计教程习题参考答案一、基本概念和语法要点1. 整型变量x的声明和初始化语句为:int x = 10;2. C语言的标识符命名规则:- 只能由字母、数字和下划线组成;- 必须以字母或下划线开头;- 大小写敏感。

3. 常量的分类:- 整型常量;- 实型常量;- 字符常量;- 字符串常量;- 枚举常量;- 特殊常量。

4. 基本输入输出函数的使用:- printf():输出格式化字符串;- scanf():从标准输入读取格式化数据。

5. C语言中的运算符:- 算术运算符:+、-、*、/、%;- 关系运算符:==、!=、>、<、>=、<=; - 逻辑运算符:&&、||、!;- 位运算符:&、|、^、~、<<、>>。

二、流程控制语句1. if语句的基本结构:```if (条件表达式){// 如果条件成立执行的代码}```2. switch语句的使用:```switch (表达式)case 值1:// 执行的代码块break;case 值2:// 执行的代码块break;default:// 执行的代码块break;}```3. while循环语句的基本结构: ```while (条件表达式){// 循环执行的代码}4. for循环语句的使用:```for (初始化表达式; 条件表达式; 更新表达式) {// 循环执行的代码}```三、数组与字符串1. 数组的声明和初始化语句:```int arr[5] = {1, 2, 3, 4, 5};```2. 字符串的声明和初始化语句:```char str[20] = "Hello, World!";```3. 字符串的输入输出函数:- gets():从标准输入读取字符串; - puts():将字符串输出到标准输出。

4. 字符串处理函数:- strlen():计算字符串长度;- strcat():拼接字符串;- strcpy():复制字符串;- strcmp():比较两个字符串。

c语言程序设计考试题答案及解析

c语言程序设计考试题答案及解析

c语言程序设计考试题答案及解析一、选择题1. 在C语言中,以下哪个关键字用于声明变量?A. TypeB. VarC. DeclareD. None of the above答案:D解析:在C语言中,变量的声明是通过指定变量的类型和名称来实现的,而不是使用特定的关键字。

选项A、B和C都不是C语言中用于声明变量的关键字。

2. 下列哪个是C语言中的合法标识符?A. 2variableB. variable2C. variable!D. variable$答案:B解析:C语言中的标识符可以包含字母、数字和下划线,但不能以数字开头,也不能包含特殊字符如感叹号或美元符号。

因此,选项B 是合法的标识符。

二、填空题1. 在C语言中,____ 用于定义一个整型变量。

答案:int2. 以下代码片段的输出是什么?```cint main() {int a = 10;printf("%d", a);return 0;}```答案:10三、简答题1. 简述C语言中数组的定义和初始化方法。

答案:在C语言中,数组可以通过指定类型和大小来定义,例如`int arr[10];` 定义了一个包含10个整数的数组。

数组可以通过循环或直接赋值来初始化,例如:```cint arr[5] = {1, 2, 3, 4, 5};```或者使用循环:```cint arr[5];for(int i = 0; i < 5; i++) {arr[i] = i + 1;}```四、编程题1. 编写一个C语言程序,实现计算并输出1到10的和。

```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum += i;}printf("The sum of numbers from 1 to 10 is: %d\n", sum);return 0;}```解析:该程序使用一个for循环来累加1到10的整数,并将结果存储在变量`sum`中。

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

华中科技大学标准C语言程序设计及应用习题答案————————————————————————————————作者:————————————————————————————————日期:第二章一.选择题1.C2.B D3.A4.A5. D6.C7.D8.C9.A 10.D 11.B 12.D 13.C 14.D 15.A16.B 17.A 18.B 100011 001111二.判断题1.错2.错3.错4.错三.填空题1. B 662. n1=%d\nn2=%d\n3. 0四.计算1(1)x|y = 0x002f(2)x^y = 0x0026(3)x&y = 0x0009;(4)~x+~y = 0xffc6(5)x<<=3 0x0068(6)y>>=4 0x00022(1) 6(2)50(3) 1(4)–16(5) 1(6)203(1)0(2) 1(3) 1(4) 4(5)8(6) 14(1)12(2)0(3) 1(4)27(6) 6(7)24(8)27(9)–295(1)0(2) 1(3) 1(4)–3(5) 2五.程序分析题程序1b=20 a=3600程序2第三章一.填空题1.s=62.963.(1) scanf("%c",&c);(2) c-32 更好的答案:c-('a'-'A')2.1main(){int a,b;printf("please input a & b:");scanf("%d%d",&a,&b);printf("\nmax is %d\n",(a>b)?a:b);}2.2int max(int x,int y);main(){int a,b,c,max;printf("please input a & b & c:");scanf("%d%d%d",&a,&b,&c);max=a>b?a:b;max=c>max?c:max;printf("\nmax is %d\n",max);}2.3{int i=0,sum=0;while(i<=100){sum+=i;i++;}printf("1+2+3+......+100=%d\n",sum);}2.4main(){int i;int a=10,b=-3;int c;printf("%6d%6d",a,b);for(i=2;i<10;i++){c=3*b+a;printf("%6d",c);a=b;b=c;}printf("\n");}2.5main(){int i;while(1){printf("please input a data(0:exit):");scanf("%d",&i);if(i==0)break;if(i%2==0)printf("the data %d is a even number.\n",i);elseprintf("the data %d is a odd number.\n",i); }}2.6#include <stdio.h>main(){int i;int a=8,b=1;int sum=0;for(i=0;i<10;i++){b+=3;sum += a;a+=b;printf("a%8d b:%8d\n",a,b);}printf("The Sum Of Is:%d\n",sum);}2.7#include <stdio.h>main(){float x,y;printf("please input x:");scanf("%f",&x);if(x<1.0)y=x;else if(x<10)y=2*x-1;elsey=3*x-11;printf("y=%f\n",y);}2.8#include <stdio.h>main(){long a,i,b,a1;while(1){printf("please input data(1-99999):");scanf("%ld",&a);printf("a:%ld\n",a);if(a<=0||a>=100000)break;i=0;a1=0;while(a!=0){b=a%10;printf("%8d",b);a/=10;i++;a1=a1*10+b;}printf("\n i:%ld a1:%ld\n",i,a1);}}2.9#include <stdio.h>#include <time.h>#include <stdlib.h>main(){int a,b,i,k=0;randomize();a=random(1001);/*create a random data(0-1000)*/ for(i=0;i<20;i++){printf("please guess a number:");scanf("%d",&b);if(a>b){k++;printf("\n%d:Smaller,guess again!\n",k);}else if(a<b){k++;printf("\n%d:Bigger,guess again!\n",k);}else{printf("\nYou guess right,congraturation!") ;printf("\nYou have guessed %d times",k);break;}}if(k==20)printf("\nsorry,you failed!");}2.10#include <stdio.h>main(){int a,b,c;int num;for(a=0;a<10;a++){for(b=0;b<10;b++){for(c=1;c<10;c++){num=a*100+b*10+c;if((num%3==0)&&(a==5||b==5||c==5))printf("%8d",num);}}}printf("\n\n\n");}2.11#include <stdio.h>main(){int i;int a,b;printf("please input a,b:");scanf("%d%d",&a,&b);for(i=a<b?a:b;i>0;i--){if(a%i==0&&b%i==0){printf("The max=%d",i);break;}}for(i=a>b?a:b;i>0;i++){if(i%a==0&&i%b==0){printf("\nThe min=%d",i);break;}}2.12#include <stdio.h>main(){int a,k=0;printf("please input data:");scanf("%d",&a);while(a%2==0){a=a/2;k++;}printf("\nthe number of factor(2) is %d",k); }2.13main(){long i,t=1;long sum=0;for(i=1;i<=10;i++){t*=i;sum+=t;printf("%ld!=%ld\n",i,t);}printf("sum:%ld\n",sum);}2.14#include <stdio.h>void main(){int i,x=0;for(i=9;i>=1;i--){x=2*(x+1);}printf("The first day:%d",x);}2.15#include <stdio.h>#define PI 3.141593main(){float r,h;float v;printf("please input r,h:");scanf("%f%f",&r,&h);v=1.0/3*PI*r*r*h;printf("V=%.2f",v);}2.16#include<stdio.h>#include<math.h>main(){long int sn=0;long int m=0,t=0;int a,n,i;printf("please input a n:");scanf("%d%d",&a,&n);for(i=0;i<n;i++){m=m*10+a;sn+=m;}printf("a+aa+aaa+...+aa...a=%ld\n\n",sn); }2.17#include <stdio.h>main(){int k;printf("please input k:");do{scanf("%d",&k);if(k>=0&&k<=6)break;}while(1);switch(k){case 0:printf("Sunday.\n");break;case 1:printf("Monday.\n");break;case 2:printf("Tuesday.\n");break;case 3:printf("Wednesday.\n");break;case 4:printf("Thursday.\n");break;case 5:printf("Friday.\n");break;case 6:printf("Saturday.\n");break;}}2.18#include <stdio.h>main(){int i;double x,a,b=1,sum=1;printf("please input x:");scanf("%lf",&x);a=x;for(i=1;a/b>=1e-6;i++){sum=sum+a/b;a=a*x;b=(i+1)*b;}printf("\nsum=%lf",sum);}2.19#include <stdio.h>#include <math.h>main(){float a,x1,x2;printf("input a:");scanf("%f",&a);x1=1.0;while(1){x2=1.0/2*(x1+a/x1);if(fabs(x2-x1)<1e-5)break;x1=x2;}printf("sqrt(a)=%f",x2);}第四章写出下列程序输出结果1.no 1 a=1no 1 a=0no 1 a=1no 1 a=02.a=0 b=0 c=0a=1 b=0 c=0a=2 b=0 c=03.main:x=5,y=1,n=1func:x=6,y=21,n=11main:x=5,y=1,n=11func:x=8,y=31,n=21第五章1.D2.D3.C4.65.CDABC6.(1)j+=2(2)a[i]<a[j]7.(1)s[i++]!='\0'(2)s[i-1]8.D9.B10.6(同题4)11.s[i]>='0'&&s[i]<='9'12. (1)'\0' (2)str1[i]-str2[i]5.1#include<stdio.h>int fun();int fun(){int a[3][3],sum;int i,j;sum=0;/*error*/for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d",&a[i][j]);/*error*/}for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%d\n",sum);}void main(){fun();}5.2#include <stdio.h>void main( void ){float Num[10];float Input,GetNum[11];int i,j;float a=6;for(i=0; i<10; i++){Num[i]=a;a=a+7.5;}Loop1: printf("Please input a Number(0-80) Input=");scanf("%f",&Input);if((Input<0)||(Input>70)==1)goto Loop1;for(i=0; i<10; i++ ){if(Input<Num[i])goto Loop2;}Loop2: for(j=0; j<i; j++ )GetNum[j]=Num[j];GetNum[j]=Input;for(j=i; j<=10; j++,i++)GetNum[j+1]=Num[i];for(j=0; j<11; j++ )printf("%3.3f ",GetNum[j]);}5.3#include "stdio.h"#include "stdlib.h"main(){int a1,a2,a3,a4,a5,a6,a7,a8,a9;int a[3];int i;for(;;){for (i=0;i<3;i++){a[i]=rand()%3;}while((a[0]!=a[1]) && (a[0]!=a[2]) && (a[1]!=a[2]))/*get three different numbers 0,1,2*/{a1=a[0]+1;/*divide 1~9 into three groups,a1~a3,a4~a6,a7~a9*/a2=a[1]+1;a3=a[2]+1;a4=a1+3;a5=a2+3;a6=a3+3;a7=a1+6;a8=a2+6;a9=a3+6;/* make sure that each line and each row is made up with three members in different group.*//* such as: a9 a1 a5a2 a6 a7a4 a8 a3 */if(((a1+a5+a9) == (a2+a6+a7)) && ((a1+a5+a9) == (a3+a4+a8))&& ((a1+a6+a8) == (a5+a7+a3)) && ((a1+a5+a9) == (a2+a4+a9))) {printf("%d %d %d\n%d %d %d\n%d %d %d\n",a9,a1,a5,a2,a6,a7,a4,a8,a3);return;}}}}5.4#include <stdio.h>void main(void){char input1[100],input2[100],input3[100];int i,Eng=0,eng=0,num=0,blank=0,other=0;printf("Input 3 rows of character,each row don't exceed 80 characters:\n");gets(input1);printf("The second row:\n");gets(input2);printf("The third row:\n");gets(input3);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop1;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)Eng++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)eng++;else if(('0'<=input1[i])&&(input1[i]<='9')==1)num++;else if(input1[i]==32)blank++;else other++;}/*test the second row*/Loop1: for(i=0; i<100; i++){if(input2[i]=='\0')goto Loop2;else if(('A'<=input2[i])&&(input2[i]<='Z')==1)Eng++;else if(('a'<=input2[i])&&(input2[i]<='z')==1)eng++;else if(('0'<=input2[i])&&(input2[i]<='9')==1)num++;else if(input2[i]==32)blank++;else other++;}/*test the third row*/Loop2: for(i=0; i<100; i++){if(input3[i]=='\0')goto Loop3;else if(('A'<=input3[i])&&(input3[i]<='Z')==1)Eng++;else if(('a'<=input3[i])&&(input3[i]<='z')==1)eng++;else if(('0'<=input3[i])&&(input3[i]<='9')==1)num++;else if(input3[i]==32)blank++;else other++;}Loop3: printf("Upper english character:%d\nLower english character:%d\nNumber:%d\nBlank:%d\nOther characters:%d\n",Eng,eng,num,blank,other);}5.5#include <stdio.h>void main(void)char str1[80],str2[40];int i,j,k;/*Input two string*/printf("Please input the first string\n str1=");gets(str1);printf("Please input the second string\n str2=");gets(str2);/*Get the end of str1*/for(i=0; i<80; i++){if(str1[i]=='\0')break;}/*Copy str2 to str1*/for(j=i,k=0; str2[k]!='\0';k++,j++)str1[j]=str2[k];str1[i+k]='\0';puts(str1);}5.6#include <stdio.h>struct student{char name[20];int score;}stu[5],stu1;void main(void){ int i,j;printf("Input student's score and name(5),seperate using the character of ',' :\n");for(i=0; i<5; i++)scanf("%d,%s",&stu[i].score,&stu[i].name);/*sorting*/for(i=0; i<5; i++)for(j=0; j<4-i; j++)if(stu[j].score>stu[j+1].score){stu1=stu[j];stu[j]=stu[j+1];stu[j+1]=stu1;}printf("After sotred,score and name:\n");for(i=0; i<5; i++)printf("%d,%s\n",stu[i].score,stu[i].name); }5.7#include<stdio.h>main(){ int a[3][3],i,j,m,n,o,p;printf("Please input a 3*3 shuzu:\n");for (i=0;i<=2;i++)for (j=0;j<=2;j++)scanf("%d",&a[i][j]);for (i=0;i<=2;i++){ m=(a[i][0]>a[i][1])? a[i][0]:a[i][1];n=(m>a[i][2])? m: a[i][2];}for (j=0;j<=2;j++){ o=(a[0][j]<a[1][j])? a[0][j]:a[1][j];p=(o<a[2][j])? o: a[2][j];}if (n==p)printf("Andian is %d\\n",p);elseprintf("There is no andian.\\n"); }5.8#include <stdio.h>void main(void){ int a[4][3],b[3][4],i,j;for(i=0; i<4; i++){ for(j=0; j<3; j++)scanf("%d",&a[i][j]);}for(i=0; i<4; i++){printf("\n");for(j=0; j<3; j++)printf("%5d ",a[i][j]);}for(i=0; i<4; i++){for(j=0; j<3; j++)b[j][i]=a[i][j];}printf("\n");for(i=0; i<3; i++){printf("\n");for(j=0; j<4; j++)printf("%5d ",b[i][j]);}5.9#include <stdio.h>#include<math.h>void main(void){ char str[6];int i,j=0,m=0,n=0;gets(str);while(str[j]!='\0') j++;for(i=j-1;i>=0;i--){m=(str[i]-'0')*(pow(8,j-i-1));n+=m;}printf("shijinzhi %d",n);}5.10#include <stdio.h>void main(void){char input1[100];int i,num=0,blank=0;printf("Please input a row character:\n");gets(input1);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)num++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)num++;else if (input1[i]==32)blank++;}Loop: printf("Character:%d\nBlank:%d\n",num,blank);}第六章一、选择题1.D :p中记录的是a的地址,*p访问地址a的值2.D :指针数组3.D:指针可以进行是否相等判断,空指针可以进行指针变量初始化,指针可以偏移;4.C:5.C、D:a[5]不存在,若*&a[4]则正确;C,D正确;6.D:7.B:8.B:二、填空题1.*(p+3) 2 222.cdefgbcdefgabcdefg73.6385三、程序分析题1.p = s[0] ;错误,应改为:p = s;或p = &s[0];2.int x , *p;错误,应改为:double x, *p;3.*p = x ;错误,应改为:p = &x ;4.声明顺序错误;应该改为:void main(void){int a;int *p = &a;a = 10;printf(“%d\n”,*p);}2.3 #include <stdio.h>#include <string.h>main(){char ch[2][5] = {"6937","8254"},*p[2]; int i,j,s=0;for(i=0;i<2;i++)p[i] = ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s = 10*s + p[i][j] - '0';printf("%d\n",s);}4.1#include <stdio.h>#include <string.h>main(){int count = 0;char str1[100],str2[100];char *p1,*p2;printf("please enter string 1:");gets(str1);printf("please enter string 2:");gets(str2);printf("str1:%s\n",str1);printf("str2:%s\n",str2);p1 = str1;p2 = str2;while(*p1!='\0'&&*p2!='\0'){if(*p1++==*p2++)count++;}printf("count:%d\n",count);}4.2#include <stdio.h>#include <string.h>main()int i,j,k;int a[3];int temp;printf("please enter array a[3]:"); scanf("%d%d%d",&a[0],&a[1],&a[2]);for(i=0;i<2;i++){k = i;for(j= i+1;j<3;j++){if(a[j]<a[i])k = j;}if(k!=i){temp = a[i];a[i] = a[k];a[k] = temp;}}for(i=0;i<3;i++)printf("%d\t",a[i]);printf("\n");}4.3#include <stdio.h>#include <string.h>#define N 100main(){char s1[N], s2[N],*p;int m;printf("please enter string1:");gets(s1);p = s1;printf("enter m:");scanf("%d",&m);strcpy(s2,p+m);printf("string2:%s\n",s2);}4.4#include <stdio.h>#include <string.h>main(){char s[100]="iuiui012asdd90k890y098kkkk1234",*p; char data[100][100]={{0}};int count=0;int i;p = s;/*printf("please enter a string:");gets(p);*/printf("sssss:%s\n",s);while(*p!='\0'){i=0;while(*p>='0'&&*p<='9'){data[count][i] = *p;i++;p++;}if(i!=0)count++;p++;}printf("count:%d\n",count);for(i=0;i<count;i++)printf("%s\n",data[i]);}4.5#include <stdio.h>#define SIZE 4main()int data[SIZE][SIZE],i,j,d;int max,m=0,n=0;for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){scanf("%d",&data[i][j]);}}for(i=0;i<SIZE;i++){for(j=i+1;j<SIZE;j++){d = data[i][j];data[i][j] = data[j][i];data[j][i] = d;}}max = data[0][0];for(i=0;i<SIZE;i++){printf("\n");for(j=0;j<SIZE;j++){printf("%4d",data[i][j]);if(data[i][j]>=max){max = data[i][j];m = i;n = j;}}}printf("\nmax:%4d m:%d n:%d\n",max,m,n);}4.6#include <stdio.h>#include <string.h>main(){char *p[] = {"test","capital","index","large","small"}; char **pstr = p;int a,b,n = 5;char *temp;for(a=0;a<n-1;a++){for(b=a+1;b<n;b++){if(strcmp(pstr[a],pstr[b])>0){temp = pstr[a];pstr[a] = pstr[b];pstr[b] = temp;}}}for(a=0;a<n;a++)printf("%s\n",pstr[a]);}4.7#include <stdio.h>#include <string.h>main(){char s[100],temp;char *p = s;int i,length;printf("please enter a string: ");gets(s);while(*p++!='\0');length = p - s -1;printf("string length:%d\n",length);for(i=0;i<length/2;i++){temp = s[i];s[i] = s[length-i-1];s[length-i-1] = temp;}printf("%s\n",s);}第七章一,选择题1.A2.D3.B4.D5.C6.A7.B二.程序填空题1.(1) a[k](2) a[k](3) a[k]2.(1) a[i](2) j(3) i+1或6三.改错题1.#include<stdio.h>#include<string.h>void swap(char *,char *); /*此处有错误,函数声明时要加分号*/main(){char a[80],b[80],c[80];scanf("%s%s%s",a,b,c); /*此处有错误,a,b,c分别为数组a[80],b[8],c[80]的首地址*/ if(strcmp(a,b)>0) swap(a,b); /*此处有错误,字符串比较应该使用strcmp函数*/if(strcmp(b,c)>0) swap(b,c); /*此处有错误,原因同上*/if(strcmp(a,b)>0) swap(a,b); /*原算法不能实现排序,需要添加此语句*/printf("%s\n%s\n%s\n",a,b,c);}7.3.1#include <stdio.h>#include <string.h>void swap(char *pstr1,char *pstr2){char p[80];strcpy(p,pstr1);strcpy(pstr1,pstr2);strcpy(pstr2,p);}main(){char a[80]="ccc",b[80]="bbb",c[80]="aaa";/* scanf("%s%s%s",a,b,c); */if(strcmp(a,b)>0)swap(a,b);if(strcmp(b,c)>0)swap(b,c);if(strcmp(a,b)>0)swap(a,b);printf("%s\n%s\n%s\n\n\n",a,b,c);}7.4.1#include <stdio.h>int SquSum(int,int);main(){int a,b;int c;printf("enter 2 integer:");scanf("%d%d",&a,&b);c = SquSum(a,b);printf("a=%d b:%d a2+b2=%d\n",a,b,c); }int SquSum(int x,int y){int z;z = x*x+y*y;return z;}7.4.2#include <stdio.h>int GongYueShu(int,int);int GongBeiShu(int,int);{int a,b;int gbs,gys;printf("enter 2 integer:");scanf("%d%d",&a,&b);gys = GongYueShu(a,b);gbs = GongBeiShu(a,b);if(gys<0)printf("There has not gong yue shu!!!!!!\n"); elseprintf("max gong yue shu:%d\n",gys); printf("min gong bei shu:%d\n",gbs);}int GongYueShu(int x,int y){int i,gys=-1,min;min = x;if(x>y)min = y;for(i=2;i<=min;i++){if((x%i==0)&&(y%i==0))gys = i;}return gys;}int GongBeiShu(int x,int y){int i,gbs,max;max = x;if(y>x)max = y;for(i=max;i<=x*y;i++){if((i%x==0)&&(i%y==0)){gbs = i;break;}return gbs;}7.4.4#include <stdio.h>#include <string.h>void Delete_Ch(char *,char);main(){char str[80],ch;printf("please a string:");gets(str);printf("please a char:");scanf("%c",&ch);Delete_Ch(str,ch);printf("%s\n\n",str);}void Delete_Ch(char *p,char ch){while(*p){if(*p==ch){strcpy(p,p+1);}elsep++;}}7.4.5#include <stdio.h>int Is_ShuShu(int); /* return 0:shushureturn -1:no shushu*/main(){int a,ret;scanf("%d",&a);ret = Is_ShuShu(a);if(ret==0)printf("%d is a shushu!!!\n",a);elseprintf("%d is not a shushu\n",a);}int Is_ShuShu(int x){int i;for(i=2;i<x/2;i++){if(x%i==0)return -1;}if(i>=x/2)return 0;}7.4.6#include <stdio.h>#include <string.h>void StrCat(char *s1,char *s2){while(*s1!='\0')s1++;while(*s2!='\0'){*s1 = *s2;s1++;s2++;}*s1='\0';}main(){char a[200]="123456789",b[100]="ABCDEFG"; printf("pls enter string 1:");gets(a);gets(b);StrCat(a,b);printf("%s\n\n",a);}7.4.7#include <stdio.h>#include <string.h>void Stat(char *s,int *ch,int *dig,int *spa,int *oth){while(*s!='\0'){if(((*s>='a')&&(*s<='z'))||((*s>='A')&&(*s<='Z')))(*ch)++;else if((*s>='0')&&(*s<='9'))(*dig)++;else if(*s == ' ')(*spa)++;else(*oth)++;s++;}}main(){char a[200];int ch=0,dig=0,spa=0,oth=0;printf("pls enter a string :");gets(a);Stat(a,&ch,&dig,&spa,&oth);printf("ch:%d dig:%d spa:%d oth:%d",ch,dig,spa,oth); }7.4.8#include <stdio.h>#include <string.h>void reverse(char *s)if(*s){}main(){char s[] = "abcde"; reverse(s);puts(s);}7.4.9#include <stdio.h>#include <string.h>paixu(int *p,int n,int flag) {int i,j,m;int temp;for(i=0;i<n-1;i++) {m = i;for(j=i+1;j<n;j++){if(flag == 1){if(p[j]>p[m])m = j;}else{if(p[j]<p[m])m = j;}}if(m!=i){temp = p[i];p[i] = p[m];p[m] = temp;}}}main(){int a[20];int n,i;int flag;printf("please enter n(<20):"); scanf("%d",&n);getchar();printf("please enter array a:");for(i=0;i<n;i++)scanf("%d",&a[i]);getchar();printf("please enter paixu flag:\n"); printf("\t1:degression\n");printf("\t0:increasion\t:");scanf("%d",&flag);paixu(a,n,flag);printf("array a is:");for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n\n");}。

相关文档
最新文档