华中科技大学实用标准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++;。
华科2013年C语言程序设计试卷-A卷及参考答案(正式用卷)
计算机学院2012-2013学年第2学期C语言程序设计考试试卷A卷(或B卷): A卷闭卷(或开卷):闭卷考试时间:2013年 7 月 5 日专业班级学号学生姓名题号一二三四五六七总分核对人题分10 10 10 10 20 20 20 100得分注意:试卷后面附有运算符的优先级和结合性表。
一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项得分评卷人是正确的,请选择正确的选项并填写到括号内,选择正确得分。
本大题共10小题,每小题1分,共10分。
)1、以下为正确的标识符是【】A、forB、u.3C、3cD、DO2、以下为合法的整型常量是【】A、-1UB、01111001BC、ffffD、01383、下列数据中属于字符串常量的是【】A、'a'B、"a"b"c"C、'123'D、"a\"b\"c"4、表达式-a+++b中记号(token)的个数是【】A、3个B、4个C、5个D、6个5、 -3的16位补码是【】A、0xfffdB、0x1011C、0x7ffdD、0x00036、以下为正确的转义字符是【】A、'\'B、'\\'C、'\0x12'D、'\0f1'7、设有声明:enum {U,V,W=0,X,Y=0,Z} a; 则值为1的枚举常量的个数是【】A、1个B、2个C、3个D、4个8、设有声明: 【】union U{ long a; short b; char c; char s[20];} v={0x01020304},*p=&v;则下列选项正确的是A、printf("%d\n",sizeof(v))输出4B、printf("%d\n",p->s[0])输出4C、printf("%d\n",v.c)输出1D、printf("%x\n",v.b)输出1029、设有声明和语句:FILE *fp; fp=fopen("c:\\abc.dat","r+"); 【】则下列选项正确的是A、打开文件的文件名为\abc.datB、打开的是二进制文件C、打开的是文本文件D、打开的文件只能进行读操作10、设有如下代码片段:【】int a[]={1,2,3,4,5},i;char *p=(char *)a;for(i=0;i<3;i++)printf("%d ",*((p+=sizeof(int))-sizeof(int)));printf("\n");则该代码片段的输出结果是A、1 2 3 4 5B、1 2 3C、1 1 1D、2 3 4二、 多项选择题(下面每小题的A 、B 、C 、D 备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内。
华中科技大学-C语言程序设计_上机2019
华中科技大学信息学院平台课—C语言程序设计
8
第五次上机
• 程序编写 ➢ 输入 n 个整数( n<10),排序后输出。排序的原则由函数 的一个参数决定,参数值为 1,按递减顺序排序,否则按递 增顺序排序。 ➢ 课后习题15
➢ 插入排序
• 课后习题 • 上机指导书
华中科技大学信息学院平台课—C语言程序设计
7
第四次上机
• 1. 已知五位数a2b3c能被23整除,编程求此五位数。 • 2. 编写函数GetMaxMin,求3个整形数据的最大值和最小值,
main函数完成输入3个整数值,调用所编函数计算最大值和最小 值,在main函数中输出最大和最小值。 • 3. 掌握程序调试方法,包括断点、单步、观察变量。(验证第四 章一(1-3))
➢ 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9
。取2位小数。
• 课后习题
➢ 五、程序3
➢ 表达式的值
• 上机指导书
华中科技大学信息学院平台课—C语言程序设计
6
第三次上机
• 程序编写 ➢ 第3章 二 4、6、8、12、14
• 课后习题ቤተ መጻሕፍቲ ባይዱ
• 上机指导书
华中科技大学信息学院平台课—C语言程序设计
华中科技大学信息学院平台课—C语言程序设计
3
上机要求
• 教学方式上机需要实验报告(上机前准备好
),给出测试内容(包括定义程序目标、设
计程序),写出代码
• 上机调试,记录出现问题,给出解释
• 用不同颜色笔修改上机报告中的程序
• 交上机报告
华中科技大学信息学院平台课—C语言程序设计
4
第一次上机
华中科技大学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语言程序设计专业班级: CS1409学号: U201414813姓名:唐礼威指导教师:吴海报告日期: 2015年6月24日计算机科学与技术学院目录1 第一次实验 (1)1.1 实验目的 (1)1.2 实验内容 (1)1.3 实验小结 (10)2第二次实验 (11)2.1 实验目的 (11)2.2 实验内容 (11)2.3 实验小结 (16)3第三次实验 (16)3.1 实验目的 (16)3.2 实验内容 (16)3.3 实验小结 (25)4第四次实验 (25)4.1 实验目的 (25)4.2 实验内容 (25)4.3 实验小结 (30)5第五次实验 (31)5.1 实验目的 (31)5.2 实验内容 (31)5.3 实验小结 (37)6 第六次实验 (37)6.1 实验目的 (37)6.2 实验内容 (37)6.3 实验小结 (44)7第七次实验 (44)7.1 实验目的 (44)7.2 实验内容 (44)7.3 实验小结 (55)8第八次实验 (55)8.1 实验目的 (55)8.2 实验内容 (55)8.3 实验小结 (63)9 实验总结 (63)1 第一次实验1.1实验目的(1)熟练掌握各种运算符的运算功能,操作数的类型,运算结果的类型及运算过程中类型转换,重点是C语言特有的运算符,例如位运算符,问号运算符,逗号运算符等;熟记运算符的优先级和结合性。
(2)掌握if,while,for循环语句的用法与含义。
(3)掌握简单C程序(顺序结构程序)的编写方法。
(4)掌握getchar, putchar, scanf 和printf 函数的用法(5)学会简单使用函数调用1.2 实验内容(一)使用两个变量实现两数交换【部分程序代码:】#include <stdio.h> //预处理void main() //主函数{int a,b; //定义两变量a=a+b;b=a-b;a=a-b; //精华部分,实现交换}要点说明:要先用一个数储存两个数的值,于是将a+b的值赋给a,从中减去b即获得a的值,赋给b。
C语言程序设计实用教程 参考答案
C语言程序设计实用教程参考答案C语言程序设计是计算机科学中最基础和重要的一门课程,对于计算机专业的学生来说至关重要。
本教程将为初学者提供一份实用的参考答案,帮助他们学习和理解C语言的程序设计。
1. 概述C语言是一种通用的高级编程语言,最初由贝尔实验室的Dennis Ritchie开发。
它在计算机科学领域具有广泛的应用,特别在系统开发和嵌入式系统中非常常见。
2. 程序结构C语言的程序结构主要包含预处理指令、函数、语句和注释。
预处理指令通过“#”符号开头,用于引入头文件和宏定义。
函数是C语言中的基本模块,用于封装和组织代码。
语句是具体的执行指令,用于实现特定的功能。
3. 常用数据类型C语言提供了多种数据类型,如整数、浮点数、字符和字符串等。
其中整数可以分为有符号整数和无符号整数。
浮点数用于处理带有小数部分的数值。
字符类型用于表示单个字符,字符串类型用于表示多个字符的序列。
4. 控制结构控制结构是C语言中的重要概念,用于控制程序的流程和执行顺序。
常见的控制结构包括条件语句(if-else语句和switch语句)和循环语句(while循环、for循环和do-while循环)。
5. 数组和指针数组是一种用于存储相同类型数据的集合。
C语言中的数组可以一维或多维。
指针是一种特殊的变量类型,用于存储内存地址。
通过指针可以实现对其他变量的间接操作。
6. 函数函数是C语言中的重要概念,用于将代码封装成可复用的模块。
C语言提供了多种函数类型和参数传递方式。
函数的定义包括函数名、返回类型、参数列表和函数体。
7. 文件操作C语言提供了对文件的操作功能,包括文件的打开、读取、写入和关闭等。
文件操作需要使用标准库函数和文件指针来实现。
8. 动态内存分配C语言中可以通过动态内存分配函数(如malloc和free)来动态分配和释放内存。
动态内存分配可以提高程序的灵活性和效率。
9. 结构体和联合体结构体是一种自定义数据类型,用于封装不同类型的数据成员。
华中科技大学标准C语言程序设计及应用习题答案
第二章一.选择题1.C2.B D3.A4.A5. D6.C7.D8.C9.A 10.D11.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(5)1(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.3main(){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); }}#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);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");}。
C语言实验指导书(第2版)-华中科技大学
C语言程序设计实验指导书(第二版)编著曹计昌卢萍李开张茂元华中科技大学计算机学院2008年3月目录编写说明 (4)实验1 Turbo C 2.0集成开发环境及简单程序调试 (5)一、实验目的 (5)二、实验任务 (5)三.操作指导(结合第1题) (7)实验2 表达式和标准输入与输出 (17)一、实验目的 (17)二、实验题目及要求 (17)1、源程序改错题 (17)2、源程序修改替换题 (18)3、编程设计题 (18)实验3 流程控制实验 (19)一、实验目的 (19)二、实验题目及要求 (19)1.源程序改错题 (19)2.源程序修改替换题 (19)3.编程设计题 (19)4. 选做题 (20)实验4 函数与程序结构实验 (21)一、实验目的 (21)二、实验题目及要求 (21)1.源程序改错题 (21)2.源程序修改替换题 (21)3.跟踪调试题 (22)4.编程设计题 (22)5.选做题 (23)实验5 编译预处理实验 (24)一、实验目的 (24)二、实验题目及要求 (24)1.源程序改错题 (24)2.源程序修改替换题 (24)3.跟踪调试题 (25)4.编程设计题 (26)实验6 标准库及用户自定义库实验 (27)一、实验目的 (27)二、实验题目及要求 (27)1.编程设计题 (27)2.选做题 (28)实验7 数组实验 (29)一、实验目的 (29)二、实验题目及要求 (29)1.源程序改错题 (29)2.源程序完善、修改、替换题 (29)3.跟踪调试题 (30)4.编程设计题 (31)5.选做题 (31)实验8 指针实验 (32)一、实验目的 (32)二、实验题目及要求 (32)1.源程序改错题 (32)2.源程序完善、修改、替换题 (32)3.跟踪调试题 (33)4.编程设计题 (34)5.选做题 (34)实验9 结构与联合实验 (35)一、实验目的 (35)二、实验题目及要求 (35)1.表达式求值的程序验证题 (35)2.源程序修改替换题 (35)3.编程设计题 (37)4.选做题 (37)实验10 文件实验 (38)一、实验目的 (38)二、实验题目及要求 (38)1.文件类型的程序验证题 (38)2.源程序修改替换题 (39)3.编程设计题 (39)编写说明本实验指导书是根据2008年出版发行的《C语言程序设计》教材编写。
C+程序设计华中科技大学课件第三章
运算符的种类和使用
● 算术运算符:+、-、*、/、% ● 关系运算符:==、!=、>、<、>=、<= ● 逻辑运算符:&&、||、! ● 赋值运算符:=、+=、-=、*=、/=、%= ● 条件运算符:?: ● 逗号运算符:, ● 指针运算符:*、& ● 成员运算符:.、-> ● 递增递减运算符:++、-● 强制类型转换运算符:(类型名) ● sizeof运算符:sizeof ● 地址运算符:& ● 空指针运算符:NULL ● 宏定义运算符:#define ● 条件编译运算符:#if、#else、#endif ● 结构体成员运算符:.、-> ● 数组下标运算符:[] ● 函数调用运算符:() ● 指针指向运算符:->*
函数和作用域
函数的定义和声明
函数的定义:函数是完成特定任务的独立 代码块,可以接受参数并返回结果。
函数的声明:在函数定义之前,需要先声 明函数,包括函数名、参数类型和返回值 类型。
函数的调用:在需要执行函数时,使用函 数名和参数列表进行调用。
函数的作用域:函数内部定义的变量只 能在函数内部使用,称为局部变量;函 数外部定义的变量可以在整个程序中使 用,称为全局变量。
静态变量:在函数外定义的变量, 或者使用static关键字在函数内定 义的变量
添加标题
添加标题
添加标题
添加标题
存储类型:分为静态存储和动态存 储,静态存储的变量在程序运行期 间一直存在,动态存储的变量在程 序运行期间可以动态分配和释放
动态变量:在函数内定义的变量, 或者使用auto关键字在函数内定义 的变量
else语句:用于判断条件不成立时执行语句块
华中科技大学文华学院级软件工程C语言样本
华中科技大学文华学院软件工程专业10级C语言课程设计学生选题说明一、设计要求与设计报告设计要求:1、任意选定以下一个题目完成2、模块化程序设计3、锯齿型程序书写格式4、必须上机调试经过设计报告格式:1、设计目的2、总体设计( 程序设计组成框图、流程图)3、详细设计( 模块功能说明( 如函数功能、入口及出口参数说明, 函数调用关系描述等)4、调试与测试: 调试方法, 测试结果的分析与讨论, 测试过程中遇到的主要问题及采取的解决措施5、源程序清单和执行结果: 清单中应有足够的注释二、检查要求1、每个人必须有程序运行结果2、每个人必须交《C语言课程设计报告》和设计程序清单3、课程设计任务必须由个人独立完成, 禁止相互抄袭, 如有发现, 严肃处理三、打分标准1、根据平时上机考勤; 注重平时上机成绩, 教师要不定期检查学生进度, 学生不得以自己有私人电脑为借口而不来上机2、根据程序运行结果3、根据《C语言课程设计报告》, 学生能对自己的程序面对教师提问并能熟练地解释清楚, 以上三项缺一不可4、由于课程设计各题目的难度不一, 因此成绩的评定将根据各人完成题目的难度和完成情况的不同, 分别评定成绩, 如未能完成任何题目, 则以不及格计算四、提交时间课程设计任务完成时间为第19周末结束, 届时上交课程设计报告和程序。
五、 C语言课程设计学生选题题目一: 职工信息管理系统设计职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等( 职工号不重复) 。
试设计一职工信息管理系统, 使之能提供以下功能:1、系统以菜单方式工作2、职工信息录入功能(职工信息用文件保存)--输入3、职工信息浏览功能--输出4、职工信息查询功能--算法查询方式:按学历查询等按职工号查询等5、职工信息删除、修改功能(可选项)题目二: 图书信息管理系统设计图书信息包括: 登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统, 使之能提供以下功能:1、系统以菜单方式工作2、图书信息录入功能(图书信息用文件保存)--输入3、图书信息浏览功能--输出4、图书信息查询功能--算法查询方式按书名查询按作者名查询5、图书信息的删除与修改(可选项)题目三: 图书管理系统设计图书管理信息包括: 图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等功能描述1、新进图书基本信息的输入。
华中科技大学C语言试卷
计算机学院2008-2009学年第2学期C语言程序设计考试试卷一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项是正确的,请选择正确的选项并填写到括号内,选择正确得分。
本大题共10小题,每小题1分,共10分。
)1、ENUM是【 b 】A、合法标识符B、C语言的关键字C、合法的字符串D、既不是C语言的关键字,也不是合法的字符串或标识符2、下列数据中属于合法字符常量的是【 d 】A、'\'B、'\xag'C、'45'D、'\''3、下列数据中合法的浮点型常量是【 c 】A、E+10B、2E+1.5C、2E-10D、0x2.5E104、下列数据中与256等值的数为【】A、0256B、0400C、0x400D、0x2565、以下叙述中正确的是【】A、局部变量说明为static存储类型,其生存期将得到延长B、全局变量说明为static存储类型,其作用域将被扩大C、任何存储类型的变量在未赋初值时,其值都是不确定的D、形参可以使用的存储类型说明符与局部变量完全相同6、 -127的16位补码的十六进制表示是【】A、0xff81B、0x807fC、0xff80D、0x80807、对于下面的数组声明,正确的是【】A、int x[][5];B、char t[ ]={…a‟,‟b‟,‟c‟,‟\0‟};C、int n=5,a[n];D、char s[5]=“abcde”;8、若有以下说明和语句,则在执行for语句后,*(*pt+2)表示的数组元素【】int t[3][3],(*pt)[3],k;for (k=0;k<3;k++) pt = t+k;A、t[1][2]B、t[2][0]C、t[2][1]D、t[2][2]9、已知枚举类型定义: enum a {ONE=5,TWO=3,THREE}; 则THREE的值的是【】A、1B、2C、4D、010、设有以下说明和语句,则表达式z.y.a2的值的是【】struct packed {unsigned short a1 : 2;unsigned short a2 : 2;unsigned short a3 : 4;unsigned short a4 : 8;};union {short x;struct packed y;} z;z.x=0xabab;A、11B、3C、2D、10二、多项选择题(下面每小题的A、B、C、D备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内,多选、少选、错选均不得分。
华中科技大学光电子学院C语言第三章
2.单个字符输出函数 putchar 形式:putchar (c) 其中:c为实参,类型可以是char,short或int类型的表达式 功能:将字符c输出到显示器上 如: putchar(((c=getchar( ))>’a’ && c<=’z’) ? c-‘a’+’A’ : c); 先输入一个字符存入变量c,如果c中是小写字母,则将转换成对应大写字母后输出,否则直接输出原键入的字符。
c —
未指定域宽:只允许接受的变量类型为char 或int ; 指定域宽:则按域宽接受多个字符到数组中
s — 接受一串字符到字符数组中,机器自动添加串结束标 志’\0’(空字符),第一个字符不能是空格字符。 中间插入字符: *——不将数据项读入变量中 域宽 h——输入的数应为short 型 l,L——输入的数若为整形,对应的变量应为long 型,若 读入float 型,相应变量应为double型
格式字符串,基本同scanf 中的格式字符串
%ld输出长整型数据 如:long a=123560; printf ( “%ld”,a ); /*若printf ( “%d”,a ) 则错误*/ %f以小数形式输出单精度或双精度浮点数 注: 转换说明决定输出数据的数目和类型, 否则会出错 如: int i=-6; double x=5.7,y=123.4567; printf ( “%%d%f”,i,x ); 输出:%d%f %后是%或非转换字符则原样输出。
2)变量地址表:由1个或多个(用逗号隔开)组成变 量地址表 简单变量地址表示:&变量 字符串变量地址:用字符数组名(或指向字符串 变量的指针)表示 例:int i; float x; char name[10]; scanf ( “%d%f%s”,&I,&x,name); 键入数据形式:25 61.37e-1 program ↙ 或 结果:他们分别被存入 I , x, name[10] 中 注: 1.数据之间用空格或回车隔开,不能使用其它字符 2.不能将scanf ( “%d”,&i ) 写成scanf ( “%d”, i ) ; 3.也不能将scanf(“%s”,name)写成scanf(“%s”, &name );
c语言程序设计(科学出版社)课后习题解答
第3章习题解答第1章1.C 语言程序主要由预处理命令、函数、注释等组成。
2.填空(1)分号(2)main(3)stdio.h3.源程序:#include<stdio.h>main( ){printf(“*************************\n”);printf(“Hello World!\n”);printf(“*************************”);}4.源程序:#include <stdio.h>main( ){int a, b, c; /* 定义变量*/scanf(“%d”, &a); /* 输入第一个整数*/scanf(“%d”, &b); /* 输入第二个整数*/c=a-b; /* 计算差*/printf(“%d-%d=%d”,a,b,c); /* 输出结果*/}5.(1)<stdio.h>(2)x=10;(3)printf(“s=%d\n”,s);第2章1.(1) c(2) a(3) b g(4) a d e(5) d2. a. 5 b. 295 c. 4 d. 29 e. 93. a.x=4,y=6b. x=4,y=3f.x=3,y=64. 165.#include<stdio.h>main(){int a,b,c;scanf("%d%d",&a,&b);c=a*b;printf("%d*%d=%d",a,b,c);}第3章1.(1) b(2) b(3) d(4) a(5) b2.(1)&a,&b(2)l,s3. printf(“x=%.2f,y=%.2f\n”,x,y);4.#include<stdio.h>main(){int num1,num2,num3,sum;float average;scanf("%d%d%d",&num1,&num2,&num3);sum=num1+num2+num3;average=sum/3.0;printf("sum=%d,average=%.2f\n",sum,average);}5.#include<stdio.h>main(){int hour,minute,second,total; /* 定义变量代表时、分、秒和总秒数*/ scanf("%d",&total);hour=total/3600;minute=total%3600/60;second=total%3600%60;printf("%dhours:%dminutes:%dseconds\n",hour,minute,second); }第4章1.(1) a(2) b(3) b(4) b(5) b2. 03.(1) 6(2) 4(3) 1(4) 14.#include <stdio.h>main( ){int x,y;scanf("%d",&x);if (x>-5 && x<0)y=5*x;if (x == 0)y=-1;if (x>0 && x<10)y=2*x+1;printf("x=%d,y=%d\n",x,y);}5.#include <stdio.h>main( ){int score,rank; /* score 表示成绩,rank 表示级别*/printf("Please input score:");scanf("%d",&score);rank=score/10;switch(rank){case 10:case 9: printf("成绩等级为:A\n"); break;case 8: printf("成绩等级为:B\n"); break;case 7: printf("成绩等级为:C\n"); break;case 6: printf("成绩等级为:D\n"); break;default:printf("成绩等级为:E\n"); break; }}6.#include<stdio.h>void main(){int n;printf("Please input the digit:");scanf("%d",&n);switch(n){case 1:printf("Jan \n");break;case 2:printf("Feb \n");break;case 3:printf("Mar \n");break;case 4:printf("Apr \n");break;case 5:printf("May \n");break;case 6:printf("Jun \n");break;case 7:printf("Jul \n");break;case 8:printf("Agu \n");break;case 9:printf("Sep \n");break;case 10:printf("Oct \n");break;case 11:printf("Nov \n");break;case 12:printf("Dec \n");break;}}第5章1.(1) b(2) a(3) b(4) d(5) d2. 7,13. y=-14. m=65. 10,146. 37. 58. ABABCDCD9.# include <stdio.h>main ( ){int i;long int sum=0;for (i=2;i<=200;i+=2)sum+=i;printf("2+4+6+...+200=%ld",sum); }10.#include <stdio.h>main(){long int n;int sum = 0;printf("Please input the nber:"); scanf("%ld",&n);while(n != 0){sum += n % 10;n /= 10;}printf("%d\n", sum);}第6章1.(1) d(2) b(3) d(4) c(5) a2. 113. 34. 56895. 12,66. (1) i-- (2) n7. (1) char k; (2) i<j8.#include <stdio.h>main( ){float a[10];int i;float sum=0,average;for (i=0;i<10;i++){printf("a[%d]=?",i);scanf("%f",&a[i]);sum+=a[i];}average=sum/10;printf("average is %.2f\n",average);}9.#include <stdio.h>#define N 10main( ){int a[N],i,target,found;for (i=0;i<N;i++)scanf("%d",&a[i]);printf("Please input a number:");scanf("%d",&target);i=0;while(i<N && target != a[i])i++;found = i<N?i:-1;printf("%d\n",found);}10.#include <stdio.h>#define N 80main( ){char str[N];int len=0,i=0;printf("Please input a string:");gets(str);while (str[i++] != 0) len++;printf("the length of string is %d.\n",len); }第7章1. 212. 1363. 164. (1) func (2) m++6. 1,6,3,2,37. 2,5,1,2,3,-28.#include <stdio.h>int fun(int a,int b,int c);main( ){int a,b,c,max;printf("Please input three numbers:"); scanf("%d%d%d",&a,&b,&c);max=fun(a,b,c);printf("Max is %d.\n",max);}int fun(int a,int b,int c){int max;max= a>b?(a>c?a:c):(b>c?b:c); return max;}9.#include <stdio.h>long int sum(int n);main( ){int n;printf("n=?");scanf("%d",&n);printf("Sum=%ld.\n",sum(n));}long int sum(int n){if (n = = 1 ) return 1;else return sum(n-1)+n;}10.#include <stdio.h>void fun(n);main( ){int n;printf("n=?");scanf("%d",&n);fun(n);void fun(n){if (n = = 0) return;else{fun(n/2);printf("%-2d",n%2);}}第8章1.(1) b(2) d(3) b(4) c(5) c2. 83. 1234567894. 2 3 4 5 65. 3456. 1 2 3 4 5 67. b[i]8. bcdefgha9. p=sum10.#include <stdio.h>#include <string.h>main(){char str[80];char *p1, *p2;gets(str);p1=str;p2=str+strlen(str)-1;while (p1<p2 && *p1++ == *p2-- ) ; puts( p1<p2 ? "不是回文" : "是回文" ); }第9章1.a. #define F(x) (x)*(x)*(x)b. #define F(x) (x)%4c. #define F(x,y) (x)*(y)<100?1:02.a. 4b. 4c. #define DOUBLE(x) 2*(x)3. d4. -205. N is undefined6. 7.57. y=68.#include <stdio.h>#define SWAP(a,b) {int temp;temp=a;a=b;b=temp;}main(){int x,y;printf("x=?");scanf("%d",&x);printf("y=?");scanf("%d",&y);SW AP(x,y)printf("x=%d,y=%d.\n",x,y);}第10章1.struct student{int sno;char sname[10];char sex;}stu1,stu2;2. 123. 合法的有a,b,dc.改成s.u.rectangle.length=25;e.改成s.u.circle.radius=5;f.改成s.u.circle.radius=5;4. a,b,c,d (说明:变量b 有确定的值之后,b++是合法的。
华中科技大学c语言课程设计
华中科技大学c语言课程设计一、课程目标知识目标:1. 理解C语言的基本语法结构,掌握变量定义、数据类型、运算符和表达式;2. 学会使用C语言进行顺序、选择和循环结构编程;3. 掌握函数定义、声明和调用的方法,理解局部变量和全局变量的作用域;4. 理解数组、字符串、指针的使用,并能运用这些知识解决实际问题。
技能目标:1. 能够编写简单的C程序,实现输入输出、数据处理和逻辑控制等功能;2. 能够阅读和分析C程序代码,理解程序结构和执行过程;3. 学会使用调试工具,如GDB,对程序进行调试和排错;4. 培养良好的编程习惯,如代码规范、注释清晰等。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发学生的创造力和创新精神;2. 培养学生面对编程挑战时的耐心、细心和毅力,增强解决问题的信心;3. 培养学生团队合作意识,学会与他人分享、讨论和协作;4. 强化学生的信息安全意识,遵循法律法规,遵循道德规范,养成良好的网络素养。
课程性质:本课程为华中科技大学计算机科学与技术专业的专业基础课程,旨在使学生掌握C语言的基本知识和编程技能,为后续课程打下坚实基础。
学生特点:学生具备一定的计算机操作能力和逻辑思维能力,但对编程知识尚处于起步阶段,需要通过实践和案例教学逐步提高。
教学要求:结合课本内容,注重理论与实践相结合,以案例驱动、任务导向的方式进行教学,提高学生的编程能力和实际应用能力。
同时,关注学生的个体差异,因材施教,激发学生的学习兴趣和潜能。
通过课后作业、上机实践和项目开发等环节,评估学生的学习成果,确保课程目标的实现。
二、教学内容本课程教学内容依据课程目标,结合教材《C程序设计》进行如下安排:1. C语言概述:介绍C语言的发展历程、特点和应用领域,理解C语言在计算机编程中的地位和作用。
教学内容:第一章 C语言概述2. 基本语法和数据类型:讲解变量定义、数据类型、常量和变量、运算符和表达式。
教学内容:第二章 基本数据类型和运算符;第三章 表达式与语句3. 控制结构:学习顺序、选择(if、switch)和循环(for、while、do-while)结构。
华中科技大学标准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语言第一次作业参考答案
一、从1900年开始到2014年为止,我们会遇到多少个素数年号?//第一题解法1void main( ){int num=0;int i,j;for(i=1900;i<=2014;i++){for(j=2;j<i;j++){if(i%j==0)break;}if(i= =j)num++;}printf("总共有%d个素数年号",num);}void main(){int i=0;int a,b,c;for(a=1901;a<=2014;a+=2){for(b=3;b<=sqrt(a);b=b+2){c=a%b;if(c==0)break;}if(c){i=i+1;printf("%d ",a);}}printf("%d ",i);}#include<stdio.h>void main( ){int num=0;int i,j;int data[120];for(i=1900;i<=2014;i++){for(j=2;j<i;j++){if(i%j= =0)break;}if(i==j)data[num++]=i;}printf("总共有%d个素数年号:",num); for(i=0;i<num;i++)printf("%d ",data[i]);}2.设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N值。
//第二题解法一void main(){int x1,x2,x3,x4,i;for(i=1000;i<10000;i++){x1=i/1000;x2=(i-x1*1000)/100;x3=(i-x1*1000-x2*100)/10;x4=i-x1*1000-x2*100-x3*10;if(i*9==x4*1000+x3*100+x2*10+x1)printf("%d is the result",i);}}void main(){int a,b,c,d,n;for(n=1000;n<=1200;n++){a=n/1000;b=n/100%10;c=n/10%10;d=n%10;if(n*9==1000*d+100*c+10*b+a) printf("n=%d",n);}}void main(){int n,a,b,c,d;for(a=1;a<=9;a++)for(b=0;b<=9;b++)for(c=0;c<=9;c++)for(d=1;d<=9;d++){n=1000*a+100*b+10*c+d;if(9*n==1000*d+100*c+10*b+a)printf("%d",n);}}1.编程输出以下图形,不能只单用printf库函数实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章一.选择题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");}。