C程序设计教程课后习题答案吉顺如版
更新时间:2024-04-18 00:06:01 阅读量: 综合文库 文档下载
第1章习题 一、选择题
1、A 2、D 3、C 4、D 5、B 6、C 7、C 8、B 9、B 10、A 二、填空题 1、一,函数体
2、main(主),main(主) 3、编译,目标 4、.c,.obj,.exe
5、缩进,无影响,/* */ 三、程序分析题 1、
***************** Very good!
***************** 2、
a=12,b=5 a=17,b=22 3、
r= 5.50,s=95.033098
四、编程题
1.用printf()函数在屏幕上输出自己的班级、学号、姓名。 #include\void main() {
printf(\班级:BX1109\\n\
printf(\学号:111003530901\\n\ printf(\姓名:王孟荣\\n\}
2.从键盘输入两个整数,计算它们的和、差、积、商,并在屏幕上输出结果。
#include
int x,y,a,b,c; float d;
printf(\scanf(\a=x+y; b=x-y; c=x*y; d=1.0*x/y;
printf(\}
第2章习题 一、选择题 1~5 BCDCD 6~10 DBBCA 二、填空题
1.单精度浮点型、双精度浮点型、字符型 2.0
3.x*10+x/10 4.5.5 5.5.7 20
6.sin(sqrt(x*x))/(a*b) 7. ,
8.1111011 173 7B 9.3 3 10.3
三、程序分析题 1. 7,8,10 2. 1,3 3. 5 F
4. (int)i=12, 12.50 5. 4 61 57 9 112
四、编程题
1.编写程序,求表达式c=21%9-(float)a+4/b*b的值,假设表达式中a和b的值分别由键盘输入。
#include
int a,b; float c;
printf(\ scanf(\ c=21%9-(float)a+4/b*b; printf(\ }
2. 编写程序,从键盘输入两个整数存入变量a和b中,求a2-b2的值并输出。 #include
int a,b,c;
printf(\ scanf(\ c=a*a-b*b;
printf(\ }
第3章习题 一、选择题 1 D
2 C
3 A、B
4 A
5 B
6 B
7 B、C
8 B
9 D
10 D
二、填空题
1. 有穷性 确定性 可行性 2. #
3. 从终端(键盘)输入一个字符 4. m d 5. 97,g
6. 123.456000, 123.46, 123
7. 格式控制符不正确(输入数据时不能控制列宽和小数位数) 8. 63,63,77,3f 9. %f%f &x,&y
10.
2. a=123 f=457 3. x=345 y=3.460000 4. a=1,b=3 a=3,b=1
5. (题目需修改为:从键盘输入一个除a和z以外的小写字母)
程序的功能:从键盘输入一个除a和z以外的小写字母,求出该字母对应的大写字母的前趋和后继字母,然后顺序输出此三个大写字母,每个字母所占列宽为3。 运行结果: 假如输入:f ' 输出: E F G
四、编程题
1.编写程序,计算的值并输出(保留3位小数),其中a、b的值由键盘输入。 #include
scanf(\ x=(a*a+b*b)/sqrt(3*(a+b)); printf(\}
2.编写程序,从键盘输入一个梯形的上底a、下底b和高h,输出梯形的面积s。
#include
#include
scanf(\ s=(a+b)*h/2;
printf(\梯形面积s=%.2f\\n\ }
3.编写程序,在屏幕上输入你姓名的第一个字母,显示出该字母以及下面的信息: Hello!
This is a c program.
My name is [第一个字母]
#include
char name;
name=getchar(); putchar(name); printf(\
printf(\ printf(\ }
第4章习题 一、选择题 1 B
2 B
3 C
4 B
5 C
6 A C
7 B
8 A
9 C
10 C
二、填空题 1. ! && || 2. 1 3. a b 4. 1 5. 0
6. x%4= =0 && x0!=0 7. 5 6 8. A
9. x<0 || x>10 && x<50 10. -1
三、程序分析题 1. No 2. -2 3. 5 3 2
4. #& 5. (1)2 (2)3 CC
a=2,b=2,c=4 四、编程题
1. 有一个函数如下: x2-2 (x<5) y= 3x+5 (5≤x<50) x- (x≥50)
编写程序,输入x的值,计算相应的y值输出(保留3位小数)。 #include
scanf(\ if(x<5) y=x*x-2;
else if(x<50) y=3*x+5; else y=x-sqrt(4*x-1);
printf(\}
2.编写一个程序,根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角、一般三角形)。 #include
{ float a, b, c, s, area;
scanf(\ if(a+b>c && b+c>a && a+c>b) { s=(a+b+c)/2;
area=sqrt(s*(s*(s-a)*(s-b)*(s-c))); printf(\ if(a==b && b==c)
printf(\等边三角形\\n\
else if(a==b || a==c || b==c) printf(\等腰三角形\\n\
else if((a*a + b*b== c*c)||(a*a + c*c== b*b)||(b*b + c*c == a*a)) printf(\直角三角形\\n\
else printf(\一般三角形\\n\ }
else printf(\不能组成三角形\\n\}
3.设奖金税率r有如下的要求 (n代表奖金) : 0 n<1000 5% 1000≤n<2000 r= 8% 2000≤n<3000 10% 3000≤n<6000 15% 6000≤n
用switch多分支选择语句编写程序,输入奖金值,计算并输出相应的税率和实际应得奖金值。
#include
printf(\请输入奖金值:\ scanf(\ if(n>=6000) m=6; else m=n/1000; switch(m)
{ case 0: r=0; break; case 1: r=0.05; break; case 2: r=0.08; break; case 3:
case 4:
case 5: r=0.1; break; case 6: r=0.15; break; }
s=n-r*n;
printf(\税率r=%.0f%%, 奖金值n=%.2f, 实际应得奖金值s=%.2f\\n\}
4. 从键盘输入任意4个数a、b、c、d,按照从大到小的顺序排列后重新输出。 #include
scanf(\ if(a
printf(\}
5. 给出一个不超过4位数的正整数,判断它是几位数,并按逆向输出各位数字。例1234,输出为4321。 #include
{ int num,i,j,k,m;
printf(\输入一个少于4位的正整数:\ scanf(\
if(num>=0 && num<=9999)
{ if(num>1000 && num<=9999) { printf(\是一个4位数\\n\
m=num; /*求个位上的数字*/ k=num/10; /*求十位上的数字*/ j=num/100; /*求百位上的数字*/ i=num/1000; /*求千位上的数字*/ printf(\逆序数为:%d%d%d%d\\n\ }
else if(num>=100)
{ printf(\是一个3位数\\n\
m=num; /*求个位上的数字*/ k=num/10; /*求十位上的数字*/ j=num/100; /*求百位上的数字*/ printf(\逆序数为:%d%d%d\\n\
}
else if(num>=10)
{printf(\是一个2位数\\n\
m=num; /*求个位上的数字*/ k=num/10; /*求十位上的数字*/ printf(\逆序数为:%d%d\\n\ }
else
{printf(\是一个1位数\\n\ printf(\逆序数为:%d\\n\ } }
else printf(\是一个无效的数\\n\}
第5章习题 一、选择题 1 B
2 C
3 B
4 C
5 A
6 B
7 D
8 B
9 A
10 B
二 填空题
1. 循环 switch 2. 4,7 3. 6 4. # # 5. 0 2 6. 18 7. 1
8. sum=80 9. c=getchar() n:m
10. i = =0 break
三 程序分析题 1. output1:21 6 output2: 5 6 output3: 5 7 7 2. n=7 3. Max=18 Min=3 4. 1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9 5. 0 1 2 3 1 2 3 0 2 3 0 1 3 0 1 2 四、编程题
1. 从键盘上输入若干字符,以按Enter键结束,统计其中字符A或a的个数。 #include \main() { char ch; int k=0;
while((ch=getchar())!='\\n') { if(ch=='A' || ch=='a') k=k+1; }
printf(\}
2. 利用=×…的前100项之积计算p的值。 #include
double term, result = 1; /*累乘项初值应为1*/ int n;
for (n=2; n<=100; n = n + 2) {
term=(double)( n * n)/((n-1)*(n+1)); /*计算累乘项*/ result = result * term; }
printf(\}
3. 用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案?每种方案各换多少枚? #include
int x,y,z,count=0; for(x=1;x<=28;x++) for(y=1;y<=73;y++) {
z=100-x-y;
if(5*x+2*y+z==150) {
count++;
printf(\} }
printf(\}
4. 鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。 #include
for (x=1;x<=97;x++) { y=98-x;
if(2*x+4*y==386)
printf(\鸡=%d,兔=%d\ } }
5. 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 #include
{
int n,i;
printf(\ scanf(\ printf(\ for(i=2;i<=n;i++) while(n!=i) {
if(n%i==0) { printf(\ n=n/i; }
else break; }
printf(\
6. 从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和。例如,输入x为1234,则由1234分离出其千位1、百位2、十位3、个位4,然后计算1+2+3+4=10,并输出10。 #include
int i1,i2,i3,i4,k,n;
printf(\scanf(\
k=fabs(n); /*取绝对值*/ i1=k/1000; /*分离出千位*/
i2=(k-i1*1000)/100; /*分离出百位*/
i3=(k-i1*1000-i2*100)/10; /*分离出十位*/ i4=k; /*分离出个位*/
printf(\}
7. 打印出所有\水仙花数\,所谓\水仙花数\是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。 #include
int i,j,k,n;
printf(\ for (n=100;n<1000;n++) {
i=n/100; j=n/10-i*10; k=n;
if (n==i*i*i+j*j*j+k*k*k) printf(\ } }
8. 利用泰勒级数sin(x)≈计算sin(x) 的值。要求最后一项的绝对值小于10-5,并统计出此时累加了多少项(x由键盘输入)。 #include
int n=1,count=1; float x;
double sum,term; /*因为位数多,所以定义为双精度 */ printf(\scanf(\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(\} 9.编写一个猜数游戏:任意设置一个整数,请用户从键盘上输入数据猜想设置的数是什么,告诉用户是猜大了还是小了。10次以内猜对,用户获胜;否则,告诉用户设置的数据是什么。
#include
{int num=123,x,n;
printf(\给出数据范围的提示信息*/ for(n=1;n<=10;n++) {printf(\ scanf(\
if(x==num) {printf(\ if(x>num) printf(\ if(x if(n==11) printf(\} 10. 编程输出以下图案。 * *** ***** ******* ***** *** * #include int i,j; for(i=1;i<=4;i++) { for (j=20-i;j>=1;j--) printf(\ for (j=0;j<2*i-1;j++) printf(\ printf(\ } for (i=3;i>=1;i--) { for (j=20-i;j>=1;j--) printf(\ for (j=0;j<2*i-1;j++) printf(\ printf(\ } } 第6章习题 一、选择题 1 D 2 A 3 D 4 B 5 D 6 C 7 B 8 D 9 B 10 D 二 填空题 1. 0 2. 14 m 3.10 7 4. 数据类型 5. strcpy(S2,S1) #include 三 程序分析题 1. max=85 min=5 sum=180 aver=30.00 2. a=2 b=2 c=2 d=2 e=1 f=2 g=2 3. j=45 4. Ti_saCPorm Tss_Pgm 5. 1 1 1 5 四、编程题 1.从键盘输入15个整数,存放在数组中,找出其中最小数并指出其所在的位置。 #include {int min,i,j,a[N]; printf(\ for(i=0;i min=a[0]; for(i=1;i printf(\} 2.将输入的十进制正整数化为十六进制数。 #include int i,x,j,a[20]; printf(\请输入一个正整数:\while(1) { scanf(\ if(x<0) printf(\数据输入错误,请重新输入一个正整数:\ else break; } i=0; while(x) { a[i]=x; x=x/16; i++; } for(j=i-1;j>=0;j--) if(a[j]<=9) printf(\else if(a[j]<=15) printf(\printf(\} 3.从键盘输入一行字符,统计其中有多少单词,假设单词之间以逗号分隔。 #include char string[81]; int i,num=0,word=0; char c; gets(string); for (i=0;(c=string[i])!='\\0';i++) if(c==',') word=0; else if(word==0) { word=1; num++; } printf(\} 4.从键盘输入一字符串,放在字符数组a中,将字符数组a中下标值为偶数的元素按从小到大排序。 #include char a[80],t,m; int i,j,k; printf(\请输入一字符串:\ gets(a); k=strlen(a); for(i=0;i<=k-2;i+=2) { m=i; for(j=i+2;j<=k; j+=2 ) if(a[m]>a[j]) m=j; if(m!=i) {t=a[i];a[i]=a[m];a[m]=t;} } puts(a); printf(\ } 5.编写程序输出以下杨辉三角形(要求输出10行)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 … … … … … … #include void main() { int i,j,a[10][10]; for(i=0;i<10;i++) { a[i][0]=a[i][i]=1; for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=0;i<10;i++) { for(j=0;j<=i;j++) printf(\ printf(\ } } 6.编程将s数组中的字符串的正序和反序进行连接,形成一个新串放在t数组中。例如,当s数组中字符串为\时,则t数组中的内容应为:\。 #include char s[100], t[100]; int i,d; printf(\scanf(\ d=strlen(s); for(i=0;i for(i=0;i printf(\} 7.某公司在传输数据过程中为了安全要对数据进行加密,若传递的是四位的整数,对其进行加密的规则为:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。如:输入数字7659,则加密后的数字为4012 #include { int a,i,aa[4],t; printf(\输入一个需加密的四位数整数:\scanf(\aa[0]=a; aa[1]=a0/10; aa[2]=a00/100; aa[3]=a/1000; for(i=0;i<=3;i++) {aa[i]+=5; aa[i]%=10; } for(i=0;i<=3/2;i++) { t=aa[i]; aa[i]=aa[3-i]; aa[3-i]=t; } printf(\加密后的数字为:\for(i=3;i>=0;i--) printf(\printf(\} 8.编写程序查找数值18在以下二维数组中第一次出现的位置。 3 4 5 18 8 12 16 54 43 34 18 7 #include { int i,j,a[3][4]={{3,4,5,18}, {8,12,16,54}, {43,34,18,7}}; for(i=0;i<3;i++) { for(j=0;j<4;j++) if(a[i][j]==18) break; if(j<4)break; } printf(\数值18第一次出现的位置在%d行,第%d列\\n\} 9.设有4行4列的数组a,其元素a[i][j]=3*i+2*j-6。编写程序,实现如下功能: (1) 求第二行4元素的累加和; (2) 求第四列4元素的平均值; (3) 求主对角线4元素中负数的个数。 #include { int a[4][4],i,j,s=0,m=0; float n=0; for(i=0;i<4;i++) for(j=0;j<4;j++) a[i][j]=3*i+2*j-6; printf(\原始数组为:\\n\for(i=0;i<4;i++) { for(j=0;j<4;j++) printf(\printf(\} for(j=0;j<4;j++) s+=a[1][j]; printf(\第二行4元素累加和为:%d\\n\for(j=0;j<4;j++) n+=a[j][3]; printf(\第四列4元素平均值为:%.2f\\n\4.0); for(i=0;i<4;i++) if(a[i][i]<0) m++; printf(\主对角线4元素中负数的个数为:%d\\n\} 10.约瑟夫环问题:编号为1,2,3,...,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计程序求出出列顺序。 分析:设整型数组a中保存n个人的密码,对应的人出列后,数组元素置0作为标志。顺时针确定下一个人的方法,可将下标加1,再对n求余。 #include { int a[100]; int i,j,m,n,k=0; printf(\输入人数n和任选的一个正整数m:\ scanf(\ printf(\输入n个人的密码: \ for (i=0;i printf(\出列顺序为: \ for(i=0;i while(j { while(a[k]==0) /*跳过已出列的人*/ k=(k+1)%n; j++; k=(k+1)%n; } while(a[k]==0) /*跳过已出列的人*/ k=(k+1)%n; printf(\ m=a[k]; a[k]=0; } } 第7章习题 一、选择题 1 A 2 D 3 D 4 B 5 A 6 D 7 C 8 D 9 B 10 A 二 填空题 1. main() 2. main() 3.函数首部 4. 解决函数必须“定义在前,使用在后”的原则问题 5. int 6. 定义 调用 7. 地址传递 值传递 8. return void 9. void f(float a,float b) float f(float a,float b) 10. static 三 程序分析题 1. a=48 2. 8,17 3. 2721 4. BASIC C COBOL FORTRAN PASCAL Smalltalk 5. 6 1 2 3 6 5 4 四、编程题 1.写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。 #include printf(\ scanf(\ if (prime(n)) printf(\ else printf(\ } int prime(int n) {int flag=1,i; for (i=2; i 2.写一个函数,用于实现函数strcmp()的功能,能将两个字符串进行比较,将两个字符串中第一个不相同字符的ASCII码值之差作为函数的返回值。 #include int MyStrcmp(char s[], char t[]); main() { char str1[20],str2[20]; printf(\gets(str1); printf(\gets(str2); if (MyStrcmp(str1,str2)>0) printf(\ else if (MyStrcmp(str1,str2)<0) printf(\ else printf(\} int MyStrcmp(char s[], char t[]) { int i; for (i=0;s[i]==t[i]; i++) if (s[i]=='\\0') return 0 ; return (s[i]-t[i]); } 3. 写一个函数,用于实现函数strcat()的功能, 能将两个字符串连接。 #include {void concatenate(char string1[],char string2[],char string[]); char s1[100],s2[100],s[100]; printf(\ scanf(\ printf(\ scanf(\ concatenate(s1,s2,s); printf(\ } void concatenate(char string1[],char string2[],char string[]) {int i,j; for (i=0;string1[i]!='\\0';i++) string[i]=string1[i]; for(j=0;string2[j]!='\\0';j++) string[i+j]=string2[j]; string[i+j]='\\0'; } 4. 从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。 #include void MaxMinExchang(int a[], int n) { int maxValue=a[0], minValue=a[0], maxPos=0, minPos=0; int i, temp; for (i=1; i if (a[i] > maxValue) { maxValue = a[i]; maxPos = i; } else if (a[i] < minValue) { minValue = a[i]; minPos = i; } } temp = a[maxPos]; a[maxPos] = a[minPos]; a[minPos] = temp; } main() { int a[ARRSIZE],i; printf(\ for (i=0; i MaxMinExchang(a, ARRSIZE); printf(\for (i=0;i 5. 写一函数,能对给定的一个二维数组(3×3)进行转置(即行列互换)。 #include { void convert(int array[][3]); int i,j; printf(\ for (i=0;i scanf(\ printf(\ for (i=0;i printf(\ printf(\ } convert(array); printf(\ for (i=0;i printf(\ printf(\ } } void convert(int array[][3]) {int i,j,t; for (i=0;i array[i][j]=array[j][i]; array[j][i]=t; } } 6. 写一函数,能用“起泡法”对输入的10个字符按由小到大顺序排序。 #include {void sort(char str[]); int i,flag; for (flag=1;flag==1;) {printf(\ scanf(\ if (strlen(str)>N) printf(\ else flag=0; } sort(str); printf(\ for (i=0;i void sort(char str[]) {int i,j; char t; for(j=0;j for (i=0;(i str[i]=str[i+1]; str[i+1]=t; } } 7. 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数。 #include int letter,digit,space,others; void main() {void count(char str[]); char text[80]; printf(\ gets(text); printf(\ puts(text); letter=0; digit=0; space=0; others=0; count(text); printf(\} void count(char str[]) {int i; for (i=0;str[i]!='\\0';i++) if ((str[i]>='a'&& str[i]<='z')||(str[i]>='A' && str[i]<='Z')) letter++; else if (str[i]>='0' && str [i]<='9') digit++; else if (str[i]==32) space++; else others++; } 8. 编写程序输出3~10000内的可逆素数。可逆素数是指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。如157和751均为素数,它们是可逆素数。要求调用两个子函数实现。 #include int s=0; while(a>0) { s=10*s+a; a/=10; } return s; } int prime(int a) { int i; for(i=2;i<=(int)sqrt(a);i++) if(a%i==0) return 0; return 1; } main() { int i; for(i=3;i<10000;i++) if(prime(i)) if(prime(invert(i))) printf(\printf(\} 9. 编写一个函数,实现将一个十进制数转换成八进制数。 #include int i,n; char a[33]; void trans10_8(char x[],int m); printf(\ scanf(\ trans10_8(a,n); for (i=strlen(a)-1;i>=0;i--) printf(\printf(\ } void trans10_8 (char x[],int m) { int r,i=0; while(m>0) { r=m%8; x[i]=r+48; m=m/8; i++; } x[i]='\\0'; } 10. 编写一个函数,实现对由实参传来的一个字符串,将其字符顺序颠倒后重新存放。 #include {void inverse(char str[]); char str[100]; printf(\ scanf(\ inverse(str); printf(\} void inverse(char str[]) {char t; int i,j; for (i=0,j=strlen(str);i<(int)(strlen(str)/2);i++,j--) {t=str[i]; str[i]=str[j-1]; str[j-1]=t; } } 第八章编程题答案 1.输入2个字符串,每个字符串的长度均不超过80字符,用自己实现的cmpstr()函数完成这两个字符串的大小比较,cmpstr()函数的功能和字符串比较函数strcmp()的功能相同。 #include int cmpstr(char *s1, char *s2) { char *p, *q; p=s1; q=s2; while(*p!='\\0' && *q!='\\0') { if(*p==*q) { p++; q++; } else break; } return *p-*q; } void main() { char str1[81], str2[81]; int c; printf(\请输入第1个字符串:\gets(str1); printf(\请输入第2个字符串:\gets(str2); c=cmpstr(str1,str2); if(c>0) printf(\字符串%s 大于 字符串%s\\n\else if(c<0) printf(\字符串%s 小于 字符串%s\\n\else printf(\字符串%s 等于 字符串%s\\n\} 3.定义一个函数delSubstr(),删除字符串中第k个字符开始的m个字符,例如删除字符串abcde第2个字符开始的3个字符,则删除后结果为ae;又如删除字符串abcde第4个字符开始的5个字符,则删除后结果为abc。 #include int delSubstr(char *str, int k, int m) { char *p, *q; if(k<=0||m<=0) return -1; else if(k>strlen(str)) return -2; else if(k+m>strlen(str)) { str[k-1]='\\0'; return 1; } else { p=str+k-1; q=str+k+m-1; while(*q!='\\0') *p++=*q++; *p='\\0'; return 1; } } void main() { char str[81]; int k, m, state; printf(\请输入字符串:\\n\gets(str); printf(\请输入要删除的子串起始字符的序号和子串长度:\\n\scanf(\state = delSubstr(str, k, m); if(state<0) printf(\要删除子串起始字符的序号或子串长度输入错误!\\n\else printf(\删除指定子串后的字符串为:%s\\n\} 4.定义一个函数delSpechar(),使用字符指针删除字符串中的所有指定字符(如把字符串“I love you!”中的o字符删除,得到“I lve yu!”)。 #include void delSpechar(char *str, char ch) { char *p, *q; p=str; while(*p!='\\0') { if(*p==ch) { q=p; while(*q!='\\0') { *q=*(q+1); q++; } } else p++; } } void main() { char str[81], ch; printf(\请输入一个字符串:\gets(str); printf(\请输入要从字符串中删除的字符:\ch = getchar(); delSpechar(str, ch); printf(\删除所有指定字符后的字符串为:%s\\n\} 5.求整型二维数组a[M][N]中的最大元素值及最大元素的位置(用指针法引用数组元素)。 #include void max(int (*pa)[N], int *pRow, int *pCol) { int i, j; for(i=0; i if(pa[i][j]>pa[*pRow][*pCol]) { *pRow = i; *pCol = j; } } void main() { int a[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}}; int row=0, col=0; max(a, &row, &col); printf(\二维数组中的最大元素值为a[%d][%d]=%d\\n\} 6.已知字符串str[80],编写函数lstrchar(),实现在数组str中查找字符ch首次出现的位置,如果字符串中找不到该字符,则返回-1。 #include int lstrchar(char *str1, char ch1) { char *p,i=1; p=str1; while(*p!='\\0') { if(*p==ch1) break; else { p++; i++; } } if(*p=='\\0') return -1; else return i; } void main() { char ch,str[80]; int poi; printf(\请输入字符串:\gets(str); printf(\请输入待查找的字符:\scanf(\poi=lstrchar(str,ch); if(poi==-1) printf(\字符串中不存在指定字符!\\n\else printf(\该字符在字符串中出现的第一个位置为%d\\n\} 7.定义一个整型二维数组并初始化,编程求该数组所有元素的和。 要求:分别用数组下标法、一级指针法、二级指针法实现。 /*数组下标法*/ #include int sum(int b[M][N]) { int i, j, s=0; for(i=0; i void main() { int a[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}}; printf(\二维数组中的所有元素之和为%d\\n\} /*一级指针法*/ #include int i,s=0; for(i=0;i void main() { int a[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}}; printf(\二维数组中的所有元素之和为%d\\n\} /*二级指针法*/ #include int sum(int (*pa)[N]) { int i,j,s=0; for(i=0;i for(j=0;j return s; } void main() { int a[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}}; printf(\二维数组中的所有元素之和为%d\\n\} 8.输入一行数字字符存入字符数组str[80]中,用num[10]中的数组元素作为计数器来统计每个数字字符的个数。用下标为0的元素统计字符“0”的个数,用下标为1的元素统计字符“1”出现的次数,??。输出每个奇数字符出现的次数。 #include void count(char *str, int num[]) { int i=0; while(str[i]!='\\0') { switch(str[i]) { case '0': num[0]++; break; case '1': num[1]++; break; case '2': num[2]++; break; case '3': num[3]++; break; case '4': num[4]++; break; case '5': num[5]++; break; case '6': num[6]++; break; case '7': num[7]++; break; case '8': num[8]++; break; case '9': num[9]++; break; } i++; } } void main() { char str[80],*p=str; int num[10]={0}, i; printf(\请输入一行数字字符:\gets(p); count(p,num); for(i=1;i<10;i+=2) printf(\数字串中%d出现的次数为%d\\n\} 9.在主函数中输入10个不等长字符串,用另一函数sort()对它们排序,然后在主函数中输出已排好序的字符串。要求:每个字符串长度均不超过30字符,用指针数组进行处理。 #include void sort(char *pstr[]) { int i,j; char *t; for(i=0; i for(j=0; j if(strcmp(pstr[j],pstr[j+1])>0) { t = pstr[j]; pstr[j] = pstr[j+1]; pstr[j+1] = t; } } } void main() { char str[M][N], *pstr[M]={NULL}; int i; printf(\请输入10个字符串,每个字符串均不超过30个字符:\\n\for(i=0; i gets(str[i]); pstr[i]=str[i]; } sort(pstr); printf(\排好序的字符串从小到大依次为:\\n\for(i=0; i printf(\} 10.输入一个字符串,内有数字字符和非数字字符如123a345bcd567,将其中连续的数字作为一个整数,依次存放到整型数组a中,例如,123放在a[0],345放在a[1]中,567放在a[2]中,??,统计共有多少个整数,并输出这些整数。 #include char ch[1000],*p=ch; int a[50],*q=a,num=0,i; gets(ch); for( ; *p!='\\0'; p++) if(*p>='0' && *p<='9') { *q=(*p)-'0'; p++; while(*p>='0' && *p<='9') *q=(*q)*10+(*(p++)-'0'); num+=1; q+=1; } for(i=0,q=a; i printf(\一共输入了%d个整数。\\n\}
正在阅读:
C程序设计教程课后习题答案吉顺如版04-18
项目管理(含答案)12-31
周星驰逃学威龙台词08-22
面积练习题10-27
六年级语文选读课文阅读训练01-11
微核实验-毒理学-洋葱根尖染色体观察04-19
专题1 单据缮制练习03-15
1智巧趣题j12-20
日本文学简史 重点纲要10-19
放学后的交响曲作文300字06-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 课后
- 设计教程
- 习题
- 答案
- 程序
- 吉顺如
- 厦门大学网络教育第一学期英语(小抄版)含复习题
- 学习小组建设感言
- (2014版)植物生理生化网上作业题-提交
- 创新中国章节答案
- 虚拟光驱软件酒精Alcohol 120%详细使用图文教程
- 学前教育科学研究与论文写作 笔记整理 自学考试
- 大唐题库 - 图文
- 1、木地板招标文件
- LINUX-Shell编程实验报告
- 人教版五年级科学下册教案 - 图文
- 锅炉燃烧控制 毕业设计
- 吉大18春学期《行政法学》在线作业一
- 三年级数学单元练习 - 长方形和正方形 - 图文
- 十年蜕变之路
- 人力资源思考题
- 育婴师考试试题及答案
- (word可编辑无水印)2012长宁初三二模数学试卷(含答案)
- 肖临骏:浅析如何提升小学数学概念教学的有效性
- 2.4学案设计
- 游戏-学习故事书单