最新哈工大苏小红版_C语言_课件_chart10_string

spcraintff((““%%cc””,&,stsrt[ri[]i)];); } for (i = 0; i <10; i++) {
printf(“%c”,str[i]); }
12
字符串常量
字符串的输入/输出
➢按%s格式符 scanf("%s",str); printf("%s",str);
不能输入带空格的字符串
23
字符串处理函数
strlen():求字符串长度
strlen(str);
char str[10] = {"China"}; printf("%d", strlen(str)); 打印结果是 5,6,还是10?
C h i n a \0 \0 \0 \0 \0
不包括\0的实际字符的个数
24
字符串处理函数
字符串能否用=整体复制? str2 = str1;
strcpy(str1, str2);
注意复制的方向! str1必须足够大!
26
字符串处理函数
strcpy():字符串复制
strcpy(目的字符串,源字符串);
字符串能否用=整体复制? str2 = str1;
strcpy(str1, str2);
字符串的访问
➢字符数组 char s*ptr[=10“C]=h“iCnhai”n; a”; char c = s*(tpr[+11];); ➢字符串指针
10
字符串常量
字符串的输入/输出
➢按%c格式符 ➢按%s格式符 ➢使用gets()/puts()
11
字符串常量
字符串的输入/输出
➢按%c格式符
for (i = 0; i <!=1‘0\0; ’i;+i++)+) {
6
字符串常量
字符数组初始化 ➢使用二维数组存储多个字符串
char weekDay[][10] = {“sunday”, “monday”, “tuesday”, “wednesday”,“thursday”,
s u n d “friaday”,”syaturd\a0y”}; \0 \0 \0
m o n d a y \0 \0 \0 \0
t u e s d a y \0 \0 \0
w e d n e s d a y \0
t h u r s d a y \0 \0
f r i d a y \0 \0 \0 \0
7s
a
t
u
r
d
a
y \0 \0
字符串常量
字符指针
➢指向字符型数据的指针变量 ➢将字符串的首地址赋值给字符指针,即可让字
符指针指向这个字符串
3
字符串常量
字符串常量的存储
➢C语言并没有为字符串提供任何专门的表示法, 完全使用字符数组和字符指针来处理
➢每个字符串在内存中都占用一段连续的空间, 并有一个唯一确定的首地址
➢‘\0’为字符串结束的标志 ➢’\0’占一个字节的内存,但不计字符类型的数组
13
字符串常量
【例10.1】从键盘输入一个人名,把它显示在屏幕上
14
字符串常量
【例10.1】从键盘输入一个人名,把它显示在屏幕上
15
字符串常量
字符串的输入/输出
➢使用gets()/puts() gets(str); puts(str);
可以输入带空格的字符串
16
字符串常量
【例10.2】使用函数gets(),从键盘输入一个 带有空格的人名,然后把它显示在屏幕上
char a[6];
是字符数组,但不代表字符串
➢只有最后带有’\0’标志的字符数组才代表一个
字符串
Ho w
ar e
y o u \0
Ho w
ar e
y o u \0
数组的最后一个元素必须是'\0'
5
字符串常量
字符数组初始化
➢用字符型数据对数组进行初始化 char str[6] =] ="C{"‘"ChCCih’nh,i‘anihna"’a;,"‘i";’},;‘n’,‘a’,‘\0’}; ➢用字符串常量直接对数组初始化
哈工大苏小红版_C语言_课 件_chart10_string
本章主要内容
字符串常量
字符串处理函数 向函数传递字符串 从函数返回一个字符串指针
2
字符串常量
字符串常量
➢由一对双引号括起来的一个字符序列 “hAe”≠ll‘oA”’、“123” ➢存放于静态存储区,内容不可以修改 ➢注意与字符常量的区别,字符常量用单引号括
strlen():求字符串长度
strlen(str);
len = strlen(str); for (i=0; i<len; i++) {
putchar(str[i]);用长度控制字符串输出 } putchar('\n');
25
字符串处理函数
strcpy():字符串复制
strcpy(目的字符串,源字符串);
想想这个函数是如何 实现字符串复制的?
27
字符串处理函数
strcat():字符串连接
strcat(目的字符串,源字符串);
17
字符串常量
【例10.2】使用函数gets(),从键盘输入一个带 有空格的人名,然后把它显示在屏幕上
18
字符串常量
【例10.2】使用函数gets(),从键盘输入一个带 有空格的人名,然后把它显示在屏幕上
能够限制输入字符串的长度
19
字符串常量
【例10.3】从键盘输入一个带有空格的人名,然 后在显示人名的前面显示"Hello", I said to
Hel lo
C h i n a \0
字符指针就是指向字符类型数据的指针 pStr
8
字符串常量
字符指针的定义
➢用字符型数据对字符指针进行初始化 char s*sptrt;[r1;=0]";China"; scthra=r s"Ctrh[1in0a] "=;“China”; p = str;
9
字符串常量
20
字符串常量
【例10.3】从键盘输入一个带有空格的人名,然 后在显示人名的前面显示"Hello", I said to
21
本章主要内容
字符串常量
字符串处理函数
向函数传递字符串 从函数返回一个字符串指针
22
字符串处理函数
头文件
➢string.h
常用的字符串处理函数
➢strlen(str) ➢strcpy(str1,str2) ➢strcmp(str1,str2) ➢strcat(str1,str2) ➢strcpy(str1,str2,n) ➢strcmp(str1,str2,n) ➢strcat(str1,str2,n)
合集下载

《C语言程序设计》(苏小红)课后习题答案高等教育出版社(最新整理)

《C语言程序设计》(苏小红)课后习题答案高等教育出版社(最新整理)
3.1(2) #include<stdio.h>
main()
{
int x=32,y=81,p,q;
p=x++;
q=--y;
printf("%d %d\n",p,q);
printf("%d %d\n",x,y);
}
3.2 #include<stdio.h> main() {
int x,b0,b1,b2,s; printf("Inputx:"); scanf("%d",&x); b2=x/100; b1=(x-b2*100)/10;//或(x%100)/10;或 x/10%10; b0=x%10; s=b0*100+b1*10+b2;
2.2 #include<stdio.h> main() {
float x=2.5,y=2.5,z=2.5; printf("x=%f\n",x); printf("y=%f\n",y); printf("z=%f\n",z); }
3.1(1) #include<stdio.h> main() {
int a=12,b=3; float x=18.5,y=4.6; printf("%f\n",(float)(a*b)/2); printf("%d\n",(int)x%(int)y); }
printf("%d--A\n",score); } else if(score>=80&&score<90) {
1
printf("%d--B\n",score); } else if(score>=70&&score<80) {

哈工大c语言课件13

哈工大c语言课件13
败会引起数据丢失、文件的破坏和程序中的随机错误
2019/12/26
18/41
13.3按字符读写文件
字符读写
int fgetc(FILE *fp);
– 从fp读出一个字符,将位置指针指向下一个字符 – 若读成功,则返回该字符,若读到文件尾,则返回
EOF(EOF是一个符号常量,在stdio.h中定义为-1) int fputc(int c, FILE *fp);
/*缓冲区‘满’或‘空’的程度*/
unsigned flags;
/*文件状态标志*/
char fd;
/*文件描述符*/
unsigned char hold; /*如无缓冲区不读字符*/
short bsize;
/*缓冲区的大小*/
unsigned char *buffer;/*数据缓冲区的位置*/
unsigned char *curp; /*指针当前的指向*/
作为标准输入(标准输出)
– 这种重定向程序本身是感觉不到的
自来水厂
2019/12/26
5/41
DOS下的标准输入/输出重定向
程序prog如下 – main()
{ char c; while ((c=getchar()) != '\n') putchar(++c);
}
输入重定向 – prog < infile.txt
件能生成和使用这些类型的文件
不公开或加密的文件格式 – 如Microsoft Word的doc格式就不公开,所以至今没有
Word以外的其他软件能完美地读出doc文件
2019/12/26
13/41
缓冲型和非缓冲型文件系统

c语言程序设计第三版苏小红_C语言学习日志(三)

c语言程序设计第三版苏小红_C语言学习日志(三)

c语⾔程序设计第三版苏⼩红_C语⾔学习⽇志(三)参考资料:C语⾔程序设计(第三版)练习⽹站:PTA第三章:分⽀结构任何程序都可以使⽤三种基本的控制结构来实现,即顺序结构,分⽀结构和循环结构。

⼆分⽀结构与多分⽀结构(if型)例3-1//简单的猜数游戏3-2://判断整数的奇偶性例3-3//输⼊⼀批学⽣的成绩,计算平均分,并统计不及格的学⽣⼈数例3-4//计算多分段函数以上是多种分⽀结构在实际程序中的使⽤。

字符型数据及其输⼊与输出3-5://求解简单的四则运算表达式1:字符型常量每个字符都有唯⼀的次序之,即ASCII码2:字符型变量字符型变量在定义时⽤类型名char,例如:char = op;定义了⼀个字符型变量op,它的值是字符型数据。

op='+'将字符型常量‘+’赋给字符型变量op。

3:字符型数据的输⼊与输出字符型数据的输⼊输出可以调⽤函数scanf(),printf(),getchar(),putchar().注:在上述函数调⽤的过程中,格式控制字符串中相应的格式控制说明为%cgetchar()可以从键盘输⼊⼀个字符,putchar()可以从键盘输出⼀个字符逻辑运算C语⾔提供了三种逻辑运算符:单⽬:! 逻辑⾮双⽬:&& 逻辑与 和 || 逻辑或!a:如果a为真,则结果为假;如果a为假,则结果为真。

a&&b:当a和b都为真时,结果为真;否则结果为假。

a||b:当a和b都为假时,结果为假;否则结果为真。

例3-6://统计字符,包括英⽂字母,数字字符和其他字符switch语句3-8://查询⾃动售货机中商品的价格switch语句可以处理多分⽀选择问题,根据其中break语句的使⽤⽅法,⼀般分为三种情况1:在switch语句的每个语句段中都使⽤break语句switch注:switch语句中的default可以省略,如果省略了default,当表达式的值与任何⼀个常量表达式的值都不相等时,就什么都不执⾏。

《C语言程序设计》(第2版)苏小红-13章 7

《C语言程序设计》(第2版)苏小红-13章 7

2021/8/6
22/66
防御性程序设计(Defensive Programming)
【例7.3】计算整数n的阶乘n!
主函数如何修改? –增加对函数返回值的检验
2021/8/6
23/66
防御性程序设计(Defensive Programming)
【例7.3】计算整数n的阶乘n!
传入负数的实参时Fact()会返回-1吗? –存在死代码的原因何在?
第7章 函数
哈尔滨工业大学 计算机科学与技术学院
苏小红
本章学习内容
函数定义、函数调用、函数原型、函数的参数 传递与返回值
递归函数和函数的递归调用
函数封装,函数复用,函数设计的基本原则, 程序的健壮性
变量的作用域与存储类型,全局变量、自动变 量、静态变量、寄存器变量
“自顶向下、逐步求精”的模块化程序设计方 法
……
2021/8/6
7/66
7.2 函数的定义
函数是C语言中模块化编程的最小单位
– 可以把每个函数看做一个模块( Module )
如把编程比做制造一台机器,函数就好比其
零部件
–可将这些“零部件”单独设计、调试、测试好
,用时拿出来装配,再总体调试。
–这些“零部件”可以是自己设计制造/别人设
计制造/现成的标准产品
2021/8/6
24/66
防御性程序设计(Defensive Programming)
【例7.2】计算整数n的阶乘n!
如何修改程序去除冗余代码? 如何保证不会传入负数实参?
2021/8/6
25/66
【例7.4】编写计算组合数的程序
函数复用
2021/8/6
26/66

苏小红c语言电子教案第四章

苏小红c语言电子教案第四章

2020/3/29
16/38
scanf ()的格式修饰符
m 表示数据占用的宽度 l 加在d、o、x、u前:输入长整型
加在f、e 前:输入双精度型 L 加在f、e 前:输入long double型
2020/3/29
17/38
输入数据的格式控制——例4.4
#include <stdio.h> main() {
10/38
printf()的格式修饰符
Format for float: %f
General format:
%[<最小域宽> . <小数位数>]f
Example:
printf("Value is:%10.4f", 32.6784728);
4 digits
Value is: 32.6785 10 characters
Example:
printf("Value is:%.3f", 32.6784728);
3 digits Value is:32.678
2020/3/29
13/38
【例4.3】计算圆的周长和面积
2020/3/29
Input r: 5.3↙ printf WITHOUT width or precision specifications: circumference = 33.300854, area = 88.247263 printf WITH width and precision specifications: circumference = 33.30, area = 88.25
%u unsigned 以十进制无符号整数输出
2020/3/29

最新《C语言程序设计》(苏小红) 课后习题答案 高等教育出版社资料

最新《C语言程序设计》(苏小红) 课后习题答案 高等教育出版社资料

2.2 #include<stdio.h>main(){float x=2.5,y=2.5,z=2.5;printf("x=%f\n",x);printf("y=%f\n",y);printf("z=%f\n",z);}3.1(1)#include<stdio.h>main(){int a=12,b=3;float x=18.5,y=4.6;printf("%f\n",(float)(a*b)/2);printf("%d\n",(int)x%(int)y);}3.1(2)#include<stdio.h>main(){int x=32,y=81,p,q;p=x++;q=--y;printf("%d %d\n",p,q); printf("%d %d\n",x,y); }3.2#include<stdio.h>main(){int x,b0,b1,b2,s;printf("Inputx:");scanf("%d",&x);b2=x/100;b1=(x-b2*100)/10;//或(x%100)/10;或x/10%10;b0=x%10;s=b0*100+b1*10+b2;printf("s=%d\n",s);}3.3#include<stdio.h>#include<math.h>main(){float rate=0.0225;float n,capital,deposit;printf("Input n,capital:");scanf("%f,%f",&n,&capital);deposit=capital*pow(1+rate,n);printf("deposit=%f\n",deposit);}3.4#include<stdio.h>#include<math.h>main(){float a, b, c;double x, y;printf("Input a, b, c:");scanf("%f %f %f", &a, &b, &c);x=(-b+sqrt(b*b-4*a*c))/(2*a);y=(-b-sqrt(b*b-4*a*c))/(2*a);printf("x=%f,y=%f\n",x,y);}习题4 Array 4.1(1)#include<stdio.h>main(){char c1='a',c2='b',c3='c';printf("a%cb%cc%c\n",c1,c2,c3);}4.1(2)main(){int a=12,b=15;printf("a=%d%%,b=%d%%\n",a,b);}#include<stdio.h>main(){int a,b;printf("%d,%d\n",a,b);}4.2#include<stdio.h>main(){long a,b;float x,y;scanf("%d,%d\n",&a,&b);scanf("%f,%f\n",&x,&y);printf("a=%d,b=%d\n",a,b);printf("x=%f,b=%f\n",x,y); }5.1#include<stdio.h>main(){float a;printf("Input a:");scanf("%f",&a);if(a>=0){a=a;printf("a=%f\n",a);}else{a=-a;printf("a=%f\n",a);}}5.2#include<stdio.h>main(){int a;printf("Input a:");scanf("%d", &a);if(a%2==0)printf("a是偶数");}else{printf("a是奇数");}}5.3#include<stdio.h>#include<math.h>main(){float a,b,c,s,area;printf("Input a, b, c:");scanf("%f %f %f", &a, &b, &c);if(a+b>c&&a+c>b&&b+c>a){s=(a+b+c)/2;area=(float)sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%f\n",area);}else{printf("不是三角形");}}5.4#include<stdio.h>#include<math.h>main(){float a,b,c,x,y;printf("Inputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);if(a==0){printf("该方程不是一元二次方程\n");}if(b*b-4*a*c>0){x=(-b+sqrt(b*b-4*a*c))/(2*a);y=(-b-sqrt(b*b-4*a*c))/(2*a);printf("x=%f,y=%f\n",x,y);}else if(b*b-4*a*c==0)x=-b/(2*a);y=-b/(2*a);printf("x=%f,y=%f\n",x,y);}else{printf("该方程无实根\n");}}5.5#include<stdio.h>main(){int year,flag;printf("Input a year:");scanf("%d",&year);if(year%4==0&&year%400!=0||year%400==0){flag=1;}else{flag=0;}if(flag==1){printf("%d is a leap year!\n",year);}else{printf("%d is not a leap year!\n",year);}}5.6#include<stdio.h>main(){int year,flag;printf("Input a year:");scanf("%d",&year);flag=year%400==0||year%4==0&&year%100!=0?1:0;if(flag==1&&flag!=0){printf("%d is a leap year!\n",year);}else{printf("%d is not a leap year!\n",year);}}5.7#include<stdio.h>main(){char ch;printf("Inputch:");scanf("%c",&ch);if(ch>='a'&&ch<='z'){ch=getchar();ch=ch-32;printf("%c,%d\n",ch,ch);}else if(ch>='A'&&ch<='Z'){ch=getchar();ch=ch+32;printf("%c,%d\n",ch,ch);}else{printf("%c",ch);}}5.8#include<stdio.h>main(){char ch;printf("Inputch:");scanf("%c",&ch);if(ch>=48&&ch<=57){printf("ch是数字字符\n");}else if(ch>=65&&ch<=90){printf("ch是大写字母\n");}else if(ch>=97&&ch<=122){printf("ch是小写字母\n");}else if(ch==32){printf("ch是空格\n");}else{printf("ch是其他字符\n");}}5.9#include<stdio.h>main(){int score,grade;printf("Input score:");scanf("%d",&score);grade=score/10;if(score<0||score>100){printf("Input error\n");}if(score>=90&&score<=100){printf("%d--A\n",score);}else if(score>=80&&score<90){printf("%d--B\n",score);}else if(score>=70&&score<80){printf("%d--C\n",score);}else if(score>=60&&score<70){printf("%d--D\n",score);}else if(score>=0&&score<60){printf("%d--E\n",score);}}5.10#include<stdio.h>main(){int year,month;printf("Input year,month:");scanf("%d,%d",&year,&month);if(month>12||month<=0){printf("error month\n");}else{switch(year,month){case12:case10:case8:case7:case5:case3:case1:printf("31天\n");break;case11:case9:case6:case4:printf("30天\n");break;case2:if(year%4==0&&year!=0||year%400==0){printf("29天\n");}else{printf("28天\n");}break;default:printf("Input error\n");}}}6.1(1)#include<stdio.h>main(){int i,j,k;char space='';for(i=1;i<=4;i++){for(j=1;j<=i;j++){printf("%c",space);}for(k=1;k<=6;k++){printf("*");}printf("\n");}}6.1(2)#include<stdio.h>main(){int k=4,n;for(n=0;n<k;n++){if(n%2==0)continue;k--;}printf("k=%d\n,n=%d\n",k,n);}6.1(3)#include<stdio.h>main(){int k=4,n;for(n=0;n<k;n++){if(n%2==0)break;k--;}printf("k=%d,n=%d\n",k,n);}6.2(1)#include<stdio.h>main(){int i,sum=0;for(i=1;i<=101;i++){sum=sum+i;}printf("sum=%d\n",sum);}6.2(2)#include<stdio.h>main(){long i;long term,sum=0;for(i=1;i<=101;i=i+2){term=i*(i+1)*(i+2);sum=sum+term;}printf("sum=%ld\n",sum);}6.2(4)#include<stdio.h>#include<math.h>main(){int n=1;float term=1.0,sign=1,sum=0;while(term<=-1e-4||term>=1e-4){term=1.0/sign;sum=sum+term;sign=sign+n;n++;}printf("sum=%f\n",sum);}6.2(5)#include<stdio.h>#include<math.h>main(){int n=1,count=1;float x;double sum,term;printf("Input x:");scanf("%f",&x);sum=x;term=x;do{term=-term*x*x/((n+1)*(n+2));sum=sum+term;n=n+2;count++;}while(fabs(term)>=1e-5);printf("sin(x)=%f,count=%d\n",sum,count);}6.3#include<stdio.h>main(){int x=1,find=0;while(!find){if(x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0){printf("x=%d\n",x);find=1;x++;}}}/*int x,find=0;for(x=1;!find;x++){if(x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0){printf("x=%d\n",x);find=1;}}}*/6.4#include<stdio.h>main(){int i,n;long p=1,m=1;printf("Input n:");scanf("%d",&n);for(i=1;i<=n;i++){p=i*i;m=i*i*i;printf("p=%d,m=%d\n",i,p,i,m);}}6.5#include<stdio.h>main(){float c,f;for(c=-40;c<=110;c=c+10){f=9/5*c+32;printf("f=%f\n",f);}}6.6#include<stdio.h>#include<math.h>main(){int n;double c=0.01875,x;do{x=x*pow(1+c,12)-1000;n++;}while(x>0);printf("x=%d\n",x);}6.7#include<stdio.h>main(){int n=0;float a=100.0,c;printf("Inputc:");scanf("%f",&c);do{a=a*(1+c);n++;}while(a<=200);printf("n=%d\n",n);}6.8#include<stdio.h>#include<math.h>main(){int n=1,count=1;double sum=1,term=1;while(fabs(term)>=1e-5){term=pow(-1,count)*(1.0/(n+2));sum=sum+term;n=n+2;count++;}sum=4*sum;printf("sum=%f,count=%d\n",sum,count); }6.9#include<stdio.h>#include<math.h>main(){int n=1,count=1;double sum=1,term=1;while(fabs(term)>=1e-5){term=term*(1.0/n);sum=sum+term;n++;count++;}printf("sum=%f,count=%d\n",sum,count);}6.10#include<stdio.h>#include<math.h>main(){int x;for(x=100;x<=999;x++){if(x==pow(x/100,3)+pow(x/10%10,3)+pow(x%10,3))printf("x=%d\n",x);}}6.11#include<stdio.h>main(){int i=0,n;long sum=0,term=1;printf("Inputn:");scanf("%d",&n);do{i++;term=term*i;sum=sum+term;}while(sum<n);printf("%d\n",i-1);}6.12#include<stdio.h>main(){int i,n,m,count=0,sum=0;printf("Input n:");scanf("%d",&n);for(i=1;i<=n;i++){printf("Inputm:");scanf("%d",&m);if(m>0){sum=sum+m;count++;}else{break;}printf("sum=%d,count=%d\n",sum,count);}}6.13#include<stdio.h>main(){int i,n,m,count=0,sum=0;printf("Inputn:");scanf("%d",&n);for(i=1;i<=n;i++){printf("Inputm:");scanf("%d",&m);if(m>0||m<0){sum=sum+m;count++;}else{break;}printf("sum=%d,count=%d\n",sum,count);}}6.14#include<stdio.h>main(){int x,y,z;for(x=0;x<=17;x++){for(y=0;y<=25;y++){3*x+2*y+z==50;z=30-x-y;if(3*x+2*y+z==50&&x+y+z==30)printf("x=%d,y=%d,z=%d\n",x,y,z);}}}6.15#include<stdio.h>main(){int x,y;for(x=0;x<=98;x++){y=98-x;2*x+4*y==386;if(x+y==98&&2*x+4*y==386){printf("x=%d,y=%d\n",x,y);}}}6.16#include<stdio.h>main(){int x,y,z;for(x=0;x<=20;x++){for(y=0;y<=33;y++){3*y+5*x+z/3.0==100;z=100-x-y;if(5*x+3*y+z/3.0==100&&z+x+y==100){printf("x=%d,y=%d,z=%d\n",x,y,z);}}}}6.17#include<stdio.h>main(){int x,y,z;for(x=1;x<=9;x++){for(y=1;y<=17;y++){10*x+5*y+z==100;z=50-x-y;if(10*x+5*y+z==100&&x+y+z==50&&z>0){printf("x=%d,y=%d,z=%d\n",x,y,z);}}}}7.1#include<stdio.h>int Square(int i){return i*i;}int main(){int i=0;i=Square(i);for(;i<3;i++){static int i=1;i+=Square(i);printf("%d,",i);}printf("%d\n",i);return0;}7.2#include<stdio.h>int hour,minute,second;void update(){second++;if(second==60){second=0;minute++;}if(minute==60){minute=0;hour++;}if(hour==24)hour=0;}void display(){printf("%d,%d,%d\n",hour,minute,second); }void delay(){int t;for(t=0;t<100000000;t++);}int main(){int i;void updaye(),display(),delay();for(i=0;i<1000000;i++){update();display();delay();}return0;}7.3#include<stdio.h>int GetMax(int a,int b);int main(){int x,y,max;printf("Inputx,y:");scanf("%d,%d",&x,&y);max=GetMax(x,y);printf("max=%d\n",max);return0;}int GetMax(int m,int n){if(m>=n)return m;elsereturn n;}7.4#include<stdio.h>int LCM(int n,int m);int main(){int a,b;printf("Inputa,b:");scanf("%d,%d",&a,&b);printf("%d\n",LCM(a,b));return0;}int LCM(int n,int m){int x;int find=0;for(x=1;!find;x++){if(x%n==0&&x%m==0){find=1;}}return x-1;}7.5#include<stdio.h>long Fact(int n);int main(){int m,a;printf("Inputm:");scanf("%d",&m);for(a=1;a<=m;a++){printf("%d!=%ld\n",a,Fact(a));}return0;}long Fact(int n){int i;long result=1;for(i=2;i<=n;i++)result*=i;return result;}7.6#include<stdio.h>long Fact(int n);int main(){int m;long ret;printf("Inputm:");scanf("%d",&m);ret=Fact(m);printf("ret=%d\n",ret);return0;}long Fact(int n){int i;long result=1,sum=0;for(i=2;i<=n;i++){result*=i;sum=sum+result;}return sum;}7.7(1)#include<stdio.h>int Gcd(int a,int b);int main(){int m,n;printf("Inputm,n:");scanf("%d,%d",&m,&n);printf("%d\n",Gcd(m,n));return0;}int Gcd(int a,int b){int t,min,find=0;min=a<b?a:b;t=min;for(t=min;!find;t--){a%t==0;b%t==0;if(a%t==0&&b%t==0)return t;}find=1;}7.7(2)#include<stdio.h> int Gcd(int a,int b);int main(){int m,n;printf("Inputm,n:");scanf("%d,%d",&m,&n);printf("%d\n",Gcd(m,n));return0;}int Gcd(int a,int b){int r,temp;r=a%b;if(r==0)return b;elsedo{temp=b;b=r;a=temp;r=a%b;}while(r!=0);return b;}8.1(1)#include<stdio.h> void Func(int x){x=2;}int main(){int x=10;Func(x);printf("%d",x);return0;}8.1(2)#include<stdio.h> void Func(int b[]){int j;for(j=0;j<4;j++){b[j]=j;}}int main(){static int a[]={5,6,7,8},i;Func(a);for(i=0;i<4;i++){printf("%d",a[i]);}return0;}8.2(1)int PositiveNum(int a[],int n) {int i,count=0;for(i=0;i<n;i++){if(a[i]>0)count++;}return0;}8.2(2)void Fib(long f[],long n){int i;f[0]=0;f[1]=1;for(i=2;i<n;i++){f[i]=f[i-1]+f[i-2];}}8.2(3)#include<stdio.h>int main(){int a[10],n,max,min,maxPos,minPos;for(n=0;n<10;n++){scanf("%d",&a[n]);}max=min=a[0];maxPos=minPos=0;for(n=0;n<10;n++){if(a[n]>max){max=a[n];maxPos=n;}else if(a[n]<min){min=a[n];minPos=n;}}printf("max=%d,pos=%d\n",max,maxPos);printf("min=%d,pos=%d\n",min,minPos);return0;}8.3void DivArray(int*pArray,int n){int i;for(i=0;i<n;i++){pArray[i]/=pAttay[0];}}8.4#include<stdio.h>#define N40int FailNum(int score[],int n);void ReadScore(int score[],int n);int main(){int score[N],n;printf("Input n:");scanf("%d",&n);ReadScore(score,n);FailNum(score,n);printf("FailNum students are%d\n",FailNum(score,n));return0;}int FailNum(int score[],int n){int i,count=0;for(i=0;i<n;i++){if(score[i]<60)count++;}return count;}void ReadScore(int score[],int n){int i;printf("Input score:");for(i=0;i<n;i++){scanf("%d",&score[i]);}}8.5#include<stdio.h>#define N40int HighAver(int score[],int n);int ReadScore(int score[]);int main(){int score[N],n;n=ReadScore(score);printf("HighAver students are%d\n",HighAver(score,n));return0;}int HighAver(int score[],int n){int i,count=0,sum=0,aver;for(i=0;i<n;i++){sum=sum+score[i];aver=sum/n;}for(i=0;i<n;i++){if(score[i]>aver)count++;}return count;}int ReadScore(int score[]){int i=-1;do{i++;printf("Input score:");scanf("%d",&score[i]);}while(score[i]>=0);return i;}8.6#include<stdio.h>#define N40int ReadScore(int score[],long num[]);int FindMax(int score[],long num[],int n);int main(){int score[N],n,max,num,t;long num[N];t=FindMax(score,n);max=score[t];num=num[t];printf("max=%d,num=%d\n",max,num);return0;}int ReadScore(int score[],long num[]){int i=-1;do{i++;printf("Input student's ID and score:");scanf("%ld%d",&num[i],&score[i]);}while(num[i]>0&&score[i]>=0);return i;}int FindMax(int score[],long num[],int n){int max,i;max=score[0];for(i=1;i<n;i++){if(score[i]>max)max=score[i];}return i;}8.7#include<stdio.h>#define N40int Read(int a[]);int ChangeArry(int a[],int n);int main(){int a[N],n;printf("%d\n",ChangeArry(a,n));return0;}int Read(int a[]){int i;for(i=0;i<9;i++){printf("Input a:");scanf("%d",&a[i]);return i;}int ChangeArry(int a[],int n){int max,min,i,maxpos,minpos,term;max=min=score[0];for(i=1;i<n;i++){if(a[i]>max)max=score[i];maxpos=n;else(a[i]<min)min=a[i];minpos=n;temp=maxpos;maxpos=minpos;minpos=temp;}return a[i];}8.10#include<stdio.h>#define N5void main(){int a[N][N];int sum=0;int i,j;printf("请输入一个%d*%d的矩阵\n",N,N);for(i=0;i<N;i++){for(j=0;j<N;j++){scanf("%d",&a[i][j]);}}for(i=0;i<N;i++){for(j=0;j<N;j++){if(i==j||i+j==N-1)sum=sum+a[i][j];}}printf("对角线元素之和为:%d\n",sum);}8.11#include<stdio.h>#define N2#define M3void main(){int a[N][M],b[N][M];int i,j,sum1=0,sum2=0,sum=0;printf("请输入一个%d*%d的矩阵\n",N,M);for(i=0;i<N;i++){for(j=0;j<M;j++){scanf("%d",&a[i][j]);sum1=sum1+a[i][j];}}printf("请输入一个%d*%d的矩阵\n",N,M);for(i=0;i<N;i++){for(j=0;j<M;j++){scanf("%d",&b[i][j]);sum2=sum2+a[i][j];}}sum=sum1+sum2;printf("sum=%d\n",sum);}8.12#include<stdio.h>#define N7void YangHui(int a[N][N],int n);void main(){int i,j,n,b[N][N];printf("Input n:");scanf("%d",&n);YangHui(b,n);for(i=0;i<n;i++){for(j=0;j<=i;j++){printf("%4d",b[i][j]);}printf("\n");}}void YangHui(int a[N][N],int n){int i,j;for(i=0;i<n;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<n;i++){for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}}8.13#include<stdio.h>#define N12void main(){int i;int f[N]={1,1};printf("%d:%d\n",0,f[0]);printf("%d:%d\n",1,f[1]);for(i=2;i<N;i++){f[i]=f[i-1]+f[i-2];printf("%d:%d\n",i+1,f[i]);}}8.14#include<stdio.h>#include<stdlib.h>#include<time.h>#define N6000void main(){int a[N],i;int b1=0,b2=0,b3=0,b4=0,b5=0,b6=0;float p1,p2,p3,p4,p5,p6;srand(time(NULL));for(i=0;i<N;i++){a[i]=rand()%6+1;printf("%3d",a[i]);if(a[i]==1)b1++;if(a[i]==2)b2++;if(a[i]==3)b3++;if(a[i]==4)b4++;if(a[i]==5)b5++;if(a[i]==6)b6++;p1=(float)(b1/6000.0);p2=(float)(b2/6000.0);p3=(float)(b3/6000.0);p4=(float)(b4/6000.0);p5=(float)(b5/6000.0);p6=(float)(b6/6000.0);}printf("骰子出现1的概率:%.2f\n",p1);printf("骰子出现2的概率:%.2f\n",p2);printf("骰子出现3的概率:%.2f\n",p3);printf("骰子出现4的概率:%.2f\n",p4);printf("骰子出现5的概率:%.2f\n",p5);printf("骰子出现6的概率:%.2f\n",p6);}9.1(1)void Swap(int*x,int*y){int*pTemp;//*pTemp未进行初始化,*pTemp指向哪里位置*pTemp=*x;*x=*y;*y=*pTemp;}9.1(2)void Swap(int*x,int*y){int*pTemp;pTemp=x;x=y;y=pTemp;}//错误,x,y没有指向类型9.2#include<stdio.h>int main(){int a[]={1,2,3,4,5};int*p=a;printf("%d,%d,%d,%d,%d,%d,%d\n",*p,*(++p),(*p)++,*p,*p--,--(*p),*p);return0;}9.3#include<stdio.h>void Swap(int*x,int*y);int main(){int a[6]={1,2,3,4,5,6},b[6]={11,22,33,44,55,66};int i;printf("Before Array\n");for(i=0;i<6;i++){printf("%d\n",a[i]);}for(i=0;i<6;i++){printf("%d\n",b[i]);}for(i=0;i<6;i++){Swap(&a[i],&b[i]);}printf("After Array\n");for(i=0;i<6;i++){printf("%d\n",a[i]);}for(i=0;i<6;i++){printf("%d\n",b[i]);}return0;}void Swap(int*x,int*y){int temp;temp=*x;*x=*y;*y=temp;}9.4#include<stdio.h>#define N10void FindMaxMin(int a[],int*pMaxa,int*pMaxnum,int*pMina,int*pMinnum);int main(){int a[N];int i,maxa,mina,maxnum,minnum;printf("Input a:");for(i=0;i<10;i++){scanf("%d",&a[i]);}FindMaxMin(a,&maxa,&maxnum,&mina,&minnum);printf("maxa=%d,maxnum=%d,mina=%d,minnum=%d\n",maxa,maxnum,mina,minnum);return0;}void FindMaxMin(int a[],int*pMaxa,int*pMaxnum,int*pMina,int*pMinnum){int i;*pMaxa=a[0];*pMina=a[0];*pMaxnum=0;*pMinnum=0;for(i=0;i<10;i++){if(a[i]>*pMaxa){*pMaxa=a[i];*pMaxnum=i;}else if(a[i]<*pMina){*pMina=a[i];*pMinnum=i;}}}10.1void MYStrcpy(char*dstStr,const char*srcStr){while((*dstStr++=*srcStr++)!='\0'){}}10.2#include<stdio.h>main(){char*a="main(){char*a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);} 10.3(1)unsigned int MyStrlen(char*p)main(){unsigned int len;len=0;for(;*pa!='\0';pa++){len++;}return len;}10.3(2)unsigned int MyStrlen(char s[]){char*p=s;while(*p!='\0'){p++;}return(p-*p);}10.3(3)int MyStrcmp(char*p1,char*p2){for(;*p1==*p2;p1++,p2++){if(*p1=='\0')return-1;}return1;}10.3(4)int MyStrcmp(char s[],char t[]){int i;for(i=0;s[i]==t[i];i++){if(s[i]=='\0')return0;}return i;}10.3(5)#include<stdio.h>#include<string.h>int main(){char password[7]="secret";char userInput[81];printf("Input Password:");scanf("%s",userInput);if(strcmp(userInput,password)==0)printf("Coorrect password!Welcome to the system...\n");else if(strcmp(userInput,password)<0)printf("Invalid password!user input<password...\n");elseprintf("Invalid password!user input>password...\n");return0;}10.4#include<stdio.h>#define N24unsigned int CountLetter(char str[]);int main(){char a[N];printf("Input a letter:\n");gets(a);printf("The length of the letter is:%d\n",CountLetter(a));return0;}unsigned int CountLetter(char str[]){char*p=str;int c=0,flag=0;while(*p!='\0'){if(*p!='')flag=1;else if(flag==1){c++;flag=0;}p++;}return c+1;}12.1#include<stdio.h>typedef struct data{int year;int month;int day;}DATA;typedef struct work{char a[14];char b[10];char c[6];}WORK;typedef struct student{char studentName[10];char studentSex;DATA birthday;WORK profession;}STUDENT;int main(){STUDENT stu={"王刚",'M',{1991,5,19},{"信息工程系","学习人员","学生"}};printf("stu:%2s%3c%6d/%02d/%02d%4s,%4s,%4s\n",stu.studentName,stu.studentSex,st u.birthday.year,stu.birthday.month,stu.birthday.day,stu.profession.a,stu.profession.b,stu.profession.c);return0;}12.4#include<stdio.h>#include<string.h>#define N10typedef struct people{char peopleName[10];}PEOPLE;int main(){int sum1=0,sum2=0,sum3=0,sum4=0;int i;char name[N][N];PEOPLE stu[5]={"zhang","li","wang"};printf("Enter their name:\n");for(i=0;i<10;i++){gets(name[i]);if(strcmp(name[i],stu[0].peopleName)==0)sum1++;else if(strcmp(name[i],stu[1].peopleName)==0) sum2++;else if(strcmp(name[i],stu[2].peopleName)==0) sum3++;elsesum4++;}printf("stu:%4s%2d\n",stu[i].peopleName,sum[j]);printf("stu:%4s%2d\n",stu[1].peopleName,sum2);printf("stu:%4s%2d\n",stu[2].peopleName,sum3);printf("%2d\n",sum4);return0;}精品文档。

C语言课堂笔记 (哈工大苏小红版)排版后

C语言课堂笔记信息工程学院软件技术1班张龙彪1.一个标准C程序必须有且仅有一个main函数(主函数),标准C程序总是从main开始执行,与main所在位置无关。

2.除复合语句外,C语句都是以分号作为结束标志。

(建议一行只写一条语句)。

3.关键字(保留字):C语言中预先规定的具有固定含义的一些单词。

用户只能按照其预定含义使用,不得擅自改变意思。

此类关键字有:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while。

4.标识符:分为系统定义标识符和用户自定义标识符两类。

系统定义标识符(允许用户赋予其新含义)如main、库函数名printf、scanf等。

用户自定义标识符如add 变量x、y、sum等。

5.分隔符:空格回车或换行(程序中相邻的关键字、标识符之间等形式)逗号(相邻同类项之间的分隔)。

6.其他符号:花括号:{} /* */ 。

8.常用运算符的优先级与结合性【习题2】习题所涉知识点:①变量命名:由字母、数字和下划线组成,第一位只能为字母或下划线,不饿能和C中保留字完全相同。

②逻辑值“真”“假”判断:整数值0表示假,其他true,和任何非0数值均表示真。

③字符常量:’’(单引号)括起来的单个普通字符或转义字符。

常用转义序列:编程提示:每次按下Tab键,并不是从当前的光标位置向后移动一个Tab的宽度,而是移动到下一个制表位,实际移动的宽度视当前光标的位置距相邻的下一个制表位的距离而定。

④字符串常量:有一对双引号括起来的一个字符序列,Eg. “qwer”“123”“w”等等。

c语言程序设计苏小红第二版课后答案

c语言程序设计苏小红第二版课后答案C语言作为一门古老而强大的编程语言,至今仍然在各个领域中发挥着重要作用。

苏小红教授的《C语言程序设计》第二版是一本广受好评的教材,它不仅系统地介绍了C语言的基础知识,还通过丰富的实例和练习题帮助读者加深理解。

以下是该书部分课后习题的答案解析,以供参考。

第一章:C语言概述1. 问题:C语言的特点是什么?答案:C语言的特点包括简洁高效、结构化、可移植性高、丰富的运算符、数据类型丰富等。

2. 问题:C语言的发展历程是怎样的?答案:C语言起源于20世纪70年代,由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发,最初用于UNIX操作系统的编写。

随着UNIX的流行,C语言也逐渐被广泛使用。

第二章:数据类型、运算符和表达式1. 问题:C语言中的基本数据类型有哪些?答案:C语言中的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)等。

2. 问题:算术运算符有哪些?答案:算术运算符包括加(+)、减(-)、乘(*)、除(/)和模运算(%)。

第三章:控制语句1. 问题:if语句的基本形式是什么?答案:if语句的基本形式是:```cif (条件) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}```2. 问题:for循环的一般形式是什么?答案:for循环的一般形式是:```cfor (初始化表达式; 条件表达式; 迭代表达式) {// 循环体}```第四章:数组1. 问题:一维数组的声明方式是什么?答案:一维数组的声明方式是:```c类型数组名[数组大小];```2. 问题:如何使用数组?答案:使用数组时,可以通过数组名和索引来访问数组元素,例如: ```cint arr[10];arr[0] = 1; // 给数组的第一个元素赋值```第五章:函数1. 问题:函数的定义包括哪些部分?答案:函数的定义包括返回类型、函数名、参数列表和函数体。

哈尔滨工程大学c语言

一、选择题1. 对一维数组a的正确说明是 D 。

A) int a(10); B) int n=10,a[n]; C) int n;D) #define SIZE 10scanf("%d",&n); inta[SIZE];int a[n];2. 能对二维数组a进行正确初始化的语句是 B 。

A) int a[2][]={{1,0,1},{5,3,2}}; B) int a[][3]={{1,2,3},{4,5,6}};C) int a[2][4]={{1,2,3},{4,5},{6}}; D)inta[][3]={{1,0,1},{1,2,3,4},{1,1}};3. 对两个数组 a和 b进行如下初始化char a[]="ABCDEF";char b[]={'A','B','C','D','E','F'};则以下叙述正确的是 D 。

A) a与b数组完全相同B) a与b长度相同C) a和b中都存放字符串D) a数组比b数组长度长4. 以下数组定义中不正确的是 D 。

A) int a[2][3]; B) int b[][3]={0,1,2,3,4,5};C) int c[100][100]={0}; D) intd[3][]={{1,2},{1,2,3},{1,2,3,4}};5. 以下选项中,不能正确赋值的是 A 。

A) char s1[10];s1="Ctest"; B) char s2[]={'C', 't', 'e', 's','t'};C) char s3[20]="Ctest"; D) chars4[]="Ctest\n"二、阅读程序写出结果1.#include<stdio.h>void main(){ char ch[7]={"12ab56"};int i,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}答案:12.#include<stdio.h>void main(){ int a[10]={1,2,2,3,4,3,4,5,1,5};int n=0,i,j,c,k;for(i=0;i<10-n;i++){ c=a[i];for(j=i+1;j<10-n;j++)if(a[j]==c){ n++;for(k=j;k<10-n;k++)a[k]=a[k+1];}}for(i=0;i<(10-n);i++)printf("%d",a[i]);}答案:123453.#include <stdio.h>void main(){ int i;char a[]="Time",b[]="Tom";for(i=0;a[i]!='\0'&&b[i]!='\0';i++)if(a[i]==b[i])if(a[i]>='a'&&a[i]<='z')printf("%c",a[i]-32);elseprintf("%c",a[i]+32);else printf("*");}答案: t*M4.#include<stdio.h>#define LEN 4void main(){ int j,c;static char n[2][LEN+1]={"8980","9198"}; for(j=LEN-1;j>=0;j--){c=n[0][j]+n[1][j]-2*'0';n[0][j]=c%10+'0';}for(j=0;j<=1;j++) puts(n[j]);}答案:7078 9198三、程序填空1.程序的功能是在a数组中查找与x值相同的元素的所在位置。

C7_Strings (C语言双语课件)


String Definition
#include <stdio.h>
main() {
char char
strHelloArray[] = "Hello defined by char[]\n"; *strHelloPointer = "Hello defined by char*\n";
// Using string defined by char[] printf("char strHelloArray[] = \"Hello defined by char[]\\n\"\n"); printf("\nprintf(strHelloArray); // = printf(\"Hello defined by char[]\\n\");\n"); printf(strHelloArray);
Some Character/String Libraries
• stdio.h
– string and character input/output
• ctype.h
– character-handling
• stdlib.h
– String/number conversion
• string.h
– string-processing
C Program Design
C Characters and Strings
Fundamentals of Strings and Characters
Characters and Strings
• Characters
– Building blocks of text (strings) – ASCII (American Standard Code for Information
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档