当前位置: 首页 > news >正文

程序设计基础(c语言)(第3版)课后习题答案

文章目录

  • 第一章
          • 1.实现华氏温度和摄氏温度间的转换(转换公式:F=1.8C+32.C为摄氏温度,C为摄氏温度,F为华氏温度)。
          • 2.输入一个数,判断其是否为偶数。
          • 3.对于任意给出的3个线段,判断其能否构成一个三角形。
          • 4.算法设计。(1)输入两个数,找出其中的大数输出;(2)输入3个数,找出其中最大的数输出;(3)输入10个数,找出其中最大的数输出。
          • 5.算法设计。计算1~10之间的自然数之和。
          • 6.算法设计。对于任意一个3位整数,分解出该整数的各位数字。(例如,整数123的各位数字为1,2,3)。
          • 7.算法设计。判定2010-2030年中哪一年为闰年。
  • 第二章
  • 第三章
          • 1.利用printf函数实现下面各项的输出。
          • l)打印一个有符号整数55555,域宽为8,打印结果域宽内左对齐。
          • 2)打印一个无符号整数55555,域宽为8,打印结果域宽内右对齐。
          • 3)打印一个有符号整数55555,域宽为10,小数位6位,打印结果域宽内左对齐。
          • 4)打印带有符号和不带有符号的整数1234,域宽为8,打印结果域宽内左对齐。
          • 5)打印实数-1.2345,域宽为10,打印结果在域宽内右对齐并加前导符0。
          • 6)打印实数-12345.12345,域宽为14,精度为2,打印结果在域宽内左对齐。
          • 7)打印双精度数1234567.1234567,域宽为14,精度为4,打印结果在域宽内右对齐。
          • 8)打印十六进制数123和八进制数123。
          • 9)打印字符‘a',域宽为4,打印结果在域宽内右对齐并加前导符0。
          • 2.
          • (1) 输入三个数据12,23,34分别赋予变量a、b、c,数据以逗号‘,’做分隔符。
          • (2) 输入数据123456789,分别赋予变量a、b、c,每个数据的域宽为3。
          • (3) 输入整型数据123以及字符型数据’a’,分别赋予变量a、ch.。
          • (4) 读取输入格式为:hh:mm:ss的时间,将时间存入变量hour、minute、second中。
          • (5) 输入长整型数据55555以及双精度实数55555.555555,分别赋予变量a,b。
          • (6) 输入一个八进制整数和十六进制整数,分别赋予变量a,b 。
          • 3.编写程序。输入一个字母,依次输出其在字母表中的前导字母和后继字母。
          • 4.编写程序。输入圆的半径,计算圆的周长和面积并输出结果(结果保留两位小数)
          • 5.编写程序。当x为0.5时,计算y=1+sin(x)并输出计算结果(结果保留两位小数)。
  • 第四章
          • 1.编写程序,计算n天后为星期几(假设今天是星期六,n由键盘输入)。
          • 2.编写程序,输入4个整数,按从大到小的顺序输出。
          • 3.编写程序,计算以下分段函数的值。
          • 4.编写程序,输入一个字符,判断其属于大写英文字母、小写英文字母、数字字符、其他字符中的哪一类,输出时给出相应的说明信息。
          • 5.编写程序,输入当月利润,计算应发放的奖金数。奖金根据利润提成规则如下:1.利润低于5万元,没有提成;2.利润不低于5万元而低于10万元,按10%提成;3.利润不低于10万元而低于20万元,按7.5%提成;4.利润不低于20万元而低于30万元,按5%提成;5.利润不低于30万元,按2%提成。
          • 6.编写程序,输入一个不大于3位数的正整数,计算每位数字之和(例如:输入123,输出1+2+3=6)。
          • 7.编写程序,输入一个两位整数。如果其十位上的数字大于个位上是数字,十位和个位上的数字交换后输出;否则输出数字本身。
          • 8.编写程序,根据输入的字母判断它代表星期几。例如:输入M(m),代表Monday;输入T(t)则可能代表Tuesday或Thursday,需要输入u或h进一步判断。(主义第一个字母大小写都要判断,第二个字母不需要判断大小写。)
  • 第五章
          • 1.编写程序,计算分数序列2/1,3/2,5/3,8/5,13/8,....前十项之和。
          • 2.编写程序,计算加法序列1,1+2,1+2+3,.....,1+2+3+.....+n,第n项的值以及各项值的积。
          • 3.编写程序,统计输入正整数的个数,并找出其中最大数和最小数(输入0时结束)。输出统计结果及最大数和最小数。
          • 4.编写程序,输入两个正整数m和n,计算其最大公约数和最小公倍数。
          • 5.编写程序,输出所有"所有水仙花数",“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身(例如,153=1^3+5^3+3^3,153是“水仙花数”)。
          • 6.编写程序,输出1~1000的所有完数。完数是指一个数恰好等于它除自身外的因子之和(例如,6=1+2+3,6是完数)。
          • 7.编写程序,验证任意一个大于4的偶数都可以分解为两个素数之和。要求从键盘输入一个1000以内的偶数,输出所分解的两个素数。
          • 8.编写程序,计算数字1,2,3,4能组成多少个互不相同且无重复数字的三位数,输出所有满足条件的三位数以及个数。
          • 9.编写程序,计算xyz+yzz=532中的x,y,z的值(其中xyz和yzz分别代表一个3位数)。
          • 10.编写程序,实现一个“猜数”游戏:由计算机随机“想”出一个整数,从键盘输入整数进行猜测。如果猜对了,则计算机给出信息“WINNER”并询问是否在猜一次;如果猜错了,计算机也给出相应的提示:输入的数太大或者太小,对每次猜数都要记录,以反映猜数者的水平。最多可以连续猜10次。如果10次都未猜中,则结束游戏,并询问是否再猜一次。如果想继续,则输入Y,否则输入N。
  • 第六章
          • 2题
          • 3题
          • 4.编写程序,已知int型数组a[10]和数组b[5],其中数组a和数组b为升序数组,将数组a和数组b合并,并保证合并后的数组c仍然为升序数组。输出数组a,数组b,合并后的数组c。
          • 5.编写程序,计算矩阵的两条对角线元素之和。要求初始化矩阵a[4] [4],输出原始矩阵及两条对角线的元素和。
          • 6.编写程序,初始化矩阵a[4] [5 ],输出矩阵a的最大值和最小值以及最大值和最小值所在的行号和列号。
          • 7.编写程序,判断一个N*N的矩阵是否是一个幻方。幻方是指矩阵每行的和、每列的和、两条对角线各自的和都相等,并且在矩阵中没有重复数字。
          • 8.编写程序,在给定的字符串s中查找满足条件的字符x,删除该字符,要求初始化一个字符串s并输出该串,从键盘输入一个字符x,输出删除该字符后的字符串。
          • 9.编写程序,输入字符串a和字符串b,在字符串a的第n个位置插入字符串b,输出原始字符串a和字符串b以及插入字符串b后的结果。例如,输入字符串a为“Hello,welcome to the C World!”,在下标5的位置上插入所输入的字符串b"LiuY",输出结果为“Hello LiuY,welcome to the C World!”。
          • 10.调制解调器通过电话线传输计算机数据,他会将0和1的序列转换成两种不同频率的模拟信号。每个0或1在传输时都持续相同的时间单位。编写程序,完成数据传输时的信息提示。程序输入的数据直接由0和1组成的字符串表示,输出信息为如下格式:
  • 第七章
          • 2.编写函数int isChar( char),其功能是判断参数c是否为数字或英文字母。若是,返回对应ASCLL值;否则返回0。要求在主函数内读入一个字符,调用该函数,输出结果。
          • 3.编写函数int isPrime(int n),其功能是判断n是否为素数。若是,返回1,否则返回0。要求:主函数输入两个整数,输出两个整数之间的所有素数。
          • 4.编写函数float fun(int x),其功能是计算S=1+x+x^2/2!+x^3/3!+.....+x^n/n!。要求:在主调函数中输入n和x,调用函数后在主调函数中输出计算结果。
          • 5.编写函数int maxfun(int a,int b),其功能是计算两个整数的最大公约数;编写函数int minfun(int a,int b),其功能是计算两个整数的最小公倍数。要求:主函数中输入两个正整数,调用上述函数后输出计算结果。
          • 6.编写函数void fun(int a[],int n,int x),其功能是在数组a中删除所有值为x的元素。要求:在主函数中初始化数组a及读入x值,调用函数输出删除x后的数组a。
          • 7.编写函数int max_a(int a[],int n),其功能是返回数组a中的最大数;编写函数int min_a(int a[],int n),其功能是返回数组a中是最小数;编写函数int ave_a(int a[],int n),其功能是计算数组a中所有数的平均值。要求:在主函数内初始化一个长度为10的数组,调用上述函数后输出该数组的最大值、最小值、平均值。
          • 8.某公司利用网络传递数据,假设要求加密传输四位整数。加密规则如下:每位数字都加上5.然后用和除以10的余数代替该数字,再将第一位 和第四位交换,第二位和第三位交换。编写加密函数实现上述功能,编写对应规则的解密函数。要求在主函数中输人一个四位整数,调用加密函数后输出加密后的数据,调用解密函数还原加密数据并输出。
          • 9.编写函数void strmid(char str1[],int m,int n,char str2[]),其功能是将字符串strl第m个字符开始的n个字符复制到str2中。编写函数int strlen(char s[]),其功能是计算字符串s的长度。要求:在主函数中初始化字符串strl,调用函数strmid(strl ,m,n,str2)和丽数strlen(strl)、strlen(str2),输出字符串strl和str2以及strl 和str2的长度。(例如,初始化字符串strl为" goodmorning",m为1,n为3,调用函数strmid(strl,m,n,str2)后字符串str2为"ood")。
          • 10.编写递归函数int fib(int n),递归公式如下:
  • 第八章
          • 2.编写程序,定义指针pa和pb,分别指向int型变量a和b。通过pa和pb完成下列操作:(1)输入变量a和b的值;(2)输出a和b的和、差、积、商。
          • 3.编写函数void multiplyArray(int *a,int m),其功能是将int型数组中的每个元素都乘以m,结果仍然保留在原数组中。要求在主函数中初始化原始数组,调用multiplyArray()函数后,在主函数中输出处理后的结果。
          • 4.编写程序,实现如下函数的调用。函数getdata的功能是从键盘输入数据,函数reverse的功能是将数据逆序存放,函数showdata的功能是输出数据。3个函数的定义形式及主函数的调用形式如下:
          • 5.编写函数int max(int a[],int n,int *p),其功能是查找数组a中最大值的元素及其所在位置,最大值由函数返回,位置由指针p返回;编写函数int min(int a[],int n,int *p),其功能是查找数组a中最小值的元素及其所在位置,最小值由函数返回,位置由指针p返回;编写程序,在主函数中初始化一维数组a[10],调用上述函数后输出最大值、最小值以及它们的位置。
          • 6.编写函数void myitoa(int n,char *str),其功能是将一个整数转换为对应的字符串。编写程序,在主函数中输入一个整数n,调用myitoa函数后,输出对应的字符串(例如,输入整数123,输出字符串“123”)。
          • 7.编写函数void rotateArray(int * a,int m,int n),其功能定将巴含m 个兀素的整型数组a中的元素顺序移动,使其前面各数顺序向后移n个位置,最后n个效变成最前面的n个数。例如,原数组中的数据为1,2,3,4,5,6,7,8,9,0,顺序移动3个位置的结果是8,9,0,1,2,3,4,5,6,7。
          • 8.编写函数void fun(int a[][], int n,int m,int * odd,int * even),其功能是计算二维数组a[n] [m]元素中的所有奇数之和与所有偶数之和。利用指针odd返回奇数之和,利用指针even返回偶数之和。编写程序,在主函数中初始化二维数组a[5] [6],调用函数fun后输出数组a及计算结果。
          • 9. 编写函数int StrCount(char * strl,char * str2),其功能是统计字符串str2在strl中出现的次数,返回该数 值。要求:在主函数中输入strl和 str2,调用函数StrCount(strl,str2)后输出结果(例如,输人strl为"howareyouareGGGare" ,str2为"are" ,调用函数StrCount后的函数返回值为3,输出结果为3)。
          • 8.编写函数void fun(int a[][], int n,int m,int * odd,int * even),其功能是计算二维数组a[n] [m]元素中的所有奇数之和与所有偶数之和。利用指针odd返回奇数之和,利用指针even返回偶数之和。编写程序,在主函数中初始化二维数组a[5] [6],调用函数fun后输出数组a及计算结果。
          • 9. 编写函数int StrCount(char * strl,char * str2),其功能是统计字符串str2在strl中出现的次数,返回该数 值。要求:在主函数中输入strl和 str2,调用函数StrCount(strl,str2)后输出结果(例如,输人strl为"howareyouareGGGare" ,str2为"are" ,调用函数StrCount后的函数返回值为3,输出结果为3)。

第一章

1.实现华氏温度和摄氏温度间的转换(转换公式:F=1.8C+32.C为摄氏温度,C为摄氏温度,F为华氏温度)。
#include<stdio.h>
int main()
{int C,F;printf("输入摄氏温度:"); scanf("%d",&C);F=1.8*C+32;printf("华氏温度为:%d",F); return 0; } 
2.输入一个数,判断其是否为偶数。
#include<stdio.h>
int main()
{int n;scanf("%d",&n);if(n%2==0)printf("偶数");else printf("奇数"); return 0; } 
3.对于任意给出的3个线段,判断其能否构成一个三角形。
#include<stdio.h>
int main()
{int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)printf("能构成三角形");else printf("不能构成三角形"); return 0; } 
4.算法设计。(1)输入两个数,找出其中的大数输出;(2)输入3个数,找出其中最大的数输出;(3)输入10个数,找出其中最大的数输出。
1)#include<stdio.h>
int main()
{int a,b;scanf("%d%d",&a,&b);if(a>b) printf("%d",a);else printfd("最大的数为:%d",b); return 0; } (2)#include<stdio.h>
int main()
{int a,b,c,d;scanf("%d%d%d",&a,&b,&c);if(a>b) d=a;else d=b;if(d<c) d=c;printf("最大的数为:%d",d);return 0; }3)#include<stdio.h>
int main()
{int a[10],d;for(int i=0;i<10;i++){scanf("%d",&a[i]);}d=a[0];for(int i=1;i<10;i++){if(d<a[i]) d=a[i];}printf("最大的数为:%d",d);return 0; } 
5.算法设计。计算1~10之间的自然数之和。
#include<stdio.h>
int main()
{int sum=0;for(int i=1;i<=10;i++){sum+=i;}printf("1~10之间的自然数之和为:%d",sum);return 0; } 
6.算法设计。对于任意一个3位整数,分解出该整数的各位数字。(例如,整数123的各位数字为1,2,3)。
#include<stdio.h>
int main()
{int n;int x,y,z;scanf("%d",&n);x=n%10;y=(n/10)%10;z=n/100;printf("各位数字为:%d %d %d",z,y,x);return 0; } 
7.算法设计。判定2010-2030年中哪一年为闰年。
#include<stdio.h>
int main()
{printf("2010-2030中为闰年的有:\n"); for(int i=2010;i<=2030;i++){if(i%4==0&&i%100!=0||i%400==0)printf("%d ",i);}return 0; } 

第二章

第三章

1.利用printf函数实现下面各项的输出。
l)打印一个有符号整数55555,域宽为8,打印结果域宽内左对齐。
2)打印一个无符号整数55555,域宽为8,打印结果域宽内右对齐。
3)打印一个有符号整数55555,域宽为10,小数位6位,打印结果域宽内左对齐。
4)打印带有符号和不带有符号的整数1234,域宽为8,打印结果域宽内左对齐。
5)打印实数-1.2345,域宽为10,打印结果在域宽内右对齐并加前导符0。
6)打印实数-12345.12345,域宽为14,精度为2,打印结果在域宽内左对齐。
7)打印双精度数1234567.1234567,域宽为14,精度为4,打印结果在域宽内右对齐。
8)打印十六进制数123和八进制数123。
9)打印字符‘a’,域宽为4,打印结果在域宽内右对齐并加前导符0。
#include<stdio.h>
int main()
{printf("%-8d\n",55555);printf("%8u\n",55555);printf("%-10.6d\n",55555);printf("%-8d\n",1234); printf("%-8u\n",1234);printf("%010f\n",-1.2345);printf("%-14.2f\n",12345.12345);printf("%14.4f\n",1234567.1234567);printf("%o\n",123); printf("%x\n",123);printf("%04s\n","a");return 0; } 
2.
(1) 输入三个数据12,23,34分别赋予变量a、b、c,数据以逗号‘,’做分隔符。
#include<stdio.h>
int main()
{int a,b,c;printf("please input three data:");scanf("%d,%d,%d",&a,&b,&c);printf("%d,%d,%d",a,b,c);return 0; } 
(2) 输入数据123456789,分别赋予变量a、b、c,每个数据的域宽为3。
#include<stdio.h>
int main()
{int a,b,c;printf("please input three data:");scanf("%3d%3d%3d",&a,&b,&c);printf("%d,%d,%d",a,b,c);return 0; } 
(3) 输入整型数据123以及字符型数据’a’,分别赋予变量a、ch.。
#include<stdio.h>
int main()
{int a;char ch;printf("please input data:");scanf("%d%c",&a,&ch);printf("%d,%c",a,ch);return 0; } 
(4) 读取输入格式为:hh:mm:ss的时间,将时间存入变量hour、minute、second中。
#include<stdio.h>
int main()
{int hour,minute,second;printf("please input:");scanf("%d:%d:%d",&hour,&minute,&second);printf("%d:%d:%d",hour,minute,second);return 0; } 
(5) 输入长整型数据55555以及双精度实数55555.555555,分别赋予变量a,b。
#include<stdio.h>
int main()
{long int a;double b;printf("please input:");scanf("%ld%lf",&a,&b);printf("%ld,%lf",a,b);return 0; } 
(6) 输入一个八进制整数和十六进制整数,分别赋予变量a,b 。
#include<stdio.h>
int main()
{int a,b;printf("please input:");scanf("%o%x",&a,&b);printf("%o,%x",a,b);return 0; } 
3.编写程序。输入一个字母,依次输出其在字母表中的前导字母和后继字母。
#include<stdio.h>
int main(){printf("输入一个字母:");char c;scanf("%c",&c);if((c>='A'&&c<='Z')||(c>='a'&&c<='z')){if(c=='A'||c=='a') printf("该字母只有后继字母:%c",c+1);else if(c=='Z'||c=='z') printf("该字母只有前导字母:%c",c-1);else printf("该字母的前导字母与后继字母为:%c %c",c-1,c+1); }else printf("输入的不是字母!");return 0;
}
4.编写程序。输入圆的半径,计算圆的周长和面积并输出结果(结果保留两位小数)
#include<stdio.h>
#define pi 3.14159
int main()
{
double r;
scanf("%lf",&r);
printf("周长:%.2lf\n",2*pi*r);
printf("面积:%.2lf\n",pi*r*r);
return 0;
}
5.编写程序。当x为0.5时,计算y=1+sin(x)并输出计算结果(结果保留两位小数)。
#include<stdio.h>
#include<math.h>
int main()
{double x=0.5,y;y=1+sin(x);printf("%.2f",y);return 0;
}

第四章

1.编写程序,计算n天后为星期几(假设今天是星期六,n由键盘输入)。
#include<stdio.h>
#include<math.h>
int main()
{int n;scanf("%d",&n);n=(6+n)%7;if(n==0) printf("星期天");  else printf("星期%d",n); return 0;
}
2.编写程序,输入4个整数,按从大到小的顺序输出。
#include<stdio.h>
#include<math.h>
int main()
{int a[4];for(int i=0;i<4;i++){scanf("%d",&a[i]);}for(int i=0;i<4;i++){for(int j=i+1;j<4;j++){if(a[i]<a[j]){int temp=a[i];a[i]=a[j];a[j]=temp;}} }for(int i=0;i<4;i++){printf("%d ",a[i]);}return 0;
}
3.编写程序,计算以下分段函数的值。

​ 0, x<=0

y= x, 0<x<=10

​ 0.5+sin(x) x>10;

#include<stdio.h>
#include<math.h>
int main()
{double x,y;scanf("%lf",&x);if(x<=0) y=0;else if(x>0&&x<=10) y=x;else y=0.5+sin(x);printf("%lf",y);return 0;
}
4.编写程序,输入一个字符,判断其属于大写英文字母、小写英文字母、数字字符、其他字符中的哪一类,输出时给出相应的说明信息。
#include<stdio.h>
#include<math.h>
int main()
{char c;printf("输入一字字符:");scanf("%c",&c);if(c>='A'&&c<='Z') printf("属于大写英文字母");else if(c>='a'&&c<='z') printf("属于小写英文字母");else if(c>='0'&&c<='9') printf("属于数字字符");else printf("属于其他字符"); return 0;
}
5.编写程序,输入当月利润,计算应发放的奖金数。奖金根据利润提成规则如下:1.利润低于5万元,没有提成;2.利润不低于5万元而低于10万元,按10%提成;3.利润不低于10万元而低于20万元,按7.5%提成;4.利润不低于20万元而低于30万元,按5%提成;5.利润不低于30万元,按2%提成。
#include<stdio.h>
#include<math.h>
int main()
{double x,y;scanf("%lf",&x);if(x<5) y=0;else if(x<10) y=x*0.1;else if(x<20) y=x*0.075;else if(x<30) y=x*0.05;else y=x*0.02;printf("%lf",y);return 0;
}
6.编写程序,输入一个不大于3位数的正整数,计算每位数字之和(例如:输入123,输出1+2+3=6)。
#include<stdio.h>
#include<math.h>
int main()
{int n,sum=0;scanf("%d",&n);while(n){sum+=n%10;n/=10;}printf("%d",sum);return 0;
}
7.编写程序,输入一个两位整数。如果其十位上的数字大于个位上是数字,十位和个位上的数字交换后输出;否则输出数字本身。
#include<stdio.h>
#include<math.h>
int main()
{int n;scanf("%d",&n);if((n/10)>(n%10)) n=(n%10)*10+n/10;printf("%d",n);return 0;
}
8.编写程序,根据输入的字母判断它代表星期几。例如:输入M(m),代表Monday;输入T(t)则可能代表Tuesday或Thursday,需要输入u或h进一步判断。(主义第一个字母大小写都要判断,第二个字母不需要判断大小写。)
#include<stdio.h>
#include<math.h>
int main()
{char c[2];printf("请输入一个字母:");scanf("%s",c);if(c[0]=='M'||c[0]=='m') printf("Monday");else if(c[0]=='T'||c[0]=='t'){printf("请进一步输入字母判断:");scanf("%s",c);if(c[0]=='u') printf("Tuesday");else printf("Thursday");} else if(c[0]=='W'||c[0]=='w') printf("Wednesday");else if(c[0]=='F'||c[0]=='f') printf("Friday");else if(c[0]=='S'||c[0]=='s'){printf("请进一步输入字母判断:");scanf("%c",c);if(c[0]=='a') printf("Saturday");else printf("sunday");} return 0;
}

第五章

1.编写程序,计算分数序列2/1,3/2,5/3,8/5,13/8,…前十项之和。
#include<stdio.h>
#include<math.h>
int main()
{double x,y,sum=0;x=2,y=1;for(int i=0;i<10;i++){sum=sum+x/y;double temp=y;y=x;x+=temp; } printf("%lf",sum);return 0;
}
2.编写程序,计算加法序列1,1+2,1+2+3,…,1+2+3+…+n,第n项的值以及各项值的积。
#include<stdio.h>
#include<math.h>
int main()
{int n;long int sum=0,res=1;scanf("%d",&n);for(int i=1;i<=n;i++){sum+=i;res*=sum;}printf("第n项的值为:%ld\n",sum);printf("各项值的积为:%ld\n",res); return 0;
}
3.编写程序,统计输入正整数的个数,并找出其中最大数和最小数(输入0时结束)。输出统计结果及最大数和最小数。
#include<stdio.h>
#include<math.h>
int main()
{int x,i=0,maxx=0,minn=0x3f3f3f3f;while(1){scanf("%d",&x);if(x==0) break;i++;if(x>maxx) maxx=x;if(x<minn) minn=x; }printf("输入的正整数个数:%d\n",i);printf("最大数为:%d\n",maxx);printf("最小数为:%d\n",minn);return 0;
}
4.编写程序,输入两个正整数m和n,计算其最大公约数和最小公倍数。
#include <stdio.h>
int main()
{int num1, num2, t,p;printf("请输入两个正整数:");scanf("%d%d", &num1, &num2);//7,8   p = num1*num2;while (t = num1%num2)//7           1        0,循环结束{num1 = num2;     //8           7 num2 = t;        //7,循环继续  1}p = p / num2;printf("它们的最大公约数:%d\n", num2);printf("它们的最小公倍数:%d\n", p);return 0;}
5.编写程序,输出所有"所有水仙花数",“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身(例如,153=13+53+3^3,153是“水仙花数”)。
#include <stdio.h>
int main()
{int a,b,c;printf("所有的水仙花数为:");for(int i=100;i<=999;i++){a=i%10;b=(i/10)%10;c=i/100;if(i==a*a*a+b*b*b+c*c*c) printf("%d ",i); } return 0;
}
6.编写程序,输出1~1000的所有完数。完数是指一个数恰好等于它除自身外的因子之和(例如,6=1+2+3,6是完数)。
#include<stdio.h>
int main()
{int i, j, s; for( i=2; i<=1000; i++ ){s=0;  /*保证每次循环时s的初值为0*/for( j=1; j<i; j++ ){if(i%j == 0)  /*判断j是否为i的因子*/s += j;}if(s == i)  /*判断因子这和是否和原数相等*/printf("%d ", i);}return 0;
}
7.编写程序,验证任意一个大于4的偶数都可以分解为两个素数之和。要求从键盘输入一个1000以内的偶数,输出所分解的两个素数。
#include<stdio.h>
int isprime(int m)
{int l,k;for(l=2;l*l<=m;l++){if(m%l==0){return 0;}}return 1;
}
int main()
{int n;printf("输入一个偶数:");scanf("%d",&n);for(int i=2;i<=n/2;i++){if(isprime(i)&&isprime(n-i)) printf("%d %d",i,n-i);}return 0;
}
8.编写程序,计算数字1,2,3,4能组成多少个互不相同且无重复数字的三位数,输出所有满足条件的三位数以及个数。
#include<stdio.h>
int main()
{int sum;for(int i=1;i<=4;i++){for(int j=1;j<=4;j++){for(int k=1;k<=4;k++){if(i!=j&&i!=k&&j!=k){printf("%d%d%d ",i,j,k);sum++;}}}}printf("\n总数为:%d",sum);return 0;
}
9.编写程序,计算xyz+yzz=532中的x,y,z的值(其中xyz和yzz分别代表一个3位数)。
#include<stdio.h>
int main()
{int x,y,z;bool ok=false;for(int x=0;x<=9;x++){for(int y=0;y<=9;y++){for(int z=0;z<=9;z++){if(x*100+y*10+z+y*100+z*10+z==532){printf("x,y,z分别为:%d %d %d",x,y,z);ok=true;break; }}if(ok) break;}if(ok) break;}return 0;
}
10.编写程序,实现一个“猜数”游戏:由计算机随机“想”出一个整数,从键盘输入整数进行猜测。如果猜对了,则计算机给出信息“WINNER”并询问是否在猜一次;如果猜错了,计算机也给出相应的提示:输入的数太大或者太小,对每次猜数都要记录,以反映猜数者的水平。最多可以连续猜10次。如果10次都未猜中,则结束游戏,并询问是否再猜一次。如果想继续,则输入Y,否则输入N。
#include <stdlib.h>
#include <stdio.h>
#include <time.h>  //使用当前时钟做种子
int main()
{char c[2];srand( (unsigned)time( NULL ) );while(1){printf("请输入你猜的数:\n"); int i=1;   //初始化随机数int a=rand()%10+1;   //这里改成了10以内的随机数,提高胜率 while(i<=10){int num;scanf("%d",&num);if(num>a)   printf("输入的数太大\n");else if(num<a)  printf("输入的数太小\n");else {printf("WINNER\n");break;}i++; }printf("是否再猜一次\n");scanf("%s",c); if(c[0]=='Y') continue;else  break;}return 0;
}

第六章

2题

编写程序,输入n个整数(n<=20),存放在一维数组a中。输入一个整数k,在数组a的第m(m<n)个整数后插入该数k,后续数组元素后移一位,输出原始数组和插入k后的数组。

#include <stdio.h>
int main()
{int a[100],b[100];int k,m,n;printf("输入要插入的整数个数n=");scanf("%d",&n);printf("输入n个整数:");for(int i=0;i<n;i++) {scanf("%d",&a[i]);b[i]=a[i];}printf("输入插入位置和插入元素:");scanf("%d%d",&m,&k);for(int i=n;i>m;i--){a[i]=a[i-1];}a[m]=k;printf("原始数组为:");for(int i=0;i<n;i++) printf("%d ",b[i]);printf("\n插入k后的数组为:");for(int i=0;i<=n;i++) printf("%d ",a[i]);return 0;
}
3题

编写程序,初始化或输入n个由大到小顺序排列的整数(n<=20),存放在一维数组a中。删去数组a中所有相同的整数,每个整数只保留一个,输出原始数组及删除数据的数组。

#include <stdio.h>
int main()
{int a[100],b[100];int k,m,n;printf("输入要插入的整数个数n=");scanf("%d",&n);m=n; printf("输入n个由小到大的整数:");for(int i=0;i<n;i++) {scanf("%d",&a[i]);b[i]=a[i];}for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(a[i]==a[j]){for(int k=j;k<n-1;k++) a[k]=a[k+1];n--;}}} printf("原始数组为:");for(int i=0;i<m;i++) printf("%d ",b[i]);printf("\n删除数据后的数组为:");for(int i=0;i<n;i++) printf("%d ",a[i]);return 0;
}
4.编写程序,已知int型数组a[10]和数组b[5],其中数组a和数组b为升序数组,将数组a和数组b合并,并保证合并后的数组c仍然为升序数组。输出数组a,数组b,合并后的数组c。
#include <stdio.h>
int main()
{int a[10],b[5],c[15];printf("输入数组a:");for(int i=0;i<10;i++) scanf("%d",&a[i]);printf("输入数组b:");for(int i=0;i<5;i++) scanf("%d",&b[i]);int i=0,j=0;for(int k=0;k<15;k++){if(j==5||(i<10&&a[i]<b[j])) c[k]=a[i++];else c[k]=b[j++];}printf("数组a为:");for(int i=0;i<10;i++) printf("%d ",a[i]);printf("\n数组b为:");for(int i=0;i<5;i++) printf("%d ",b[i]);printf("\n数组c为:");for(int i=0;i<15;i++) printf("%d ",c[i]); return 0;
}
5.编写程序,计算矩阵的两条对角线元素之和。要求初始化矩阵a[4] [4],输出原始矩阵及两条对角线的元素和。
#include <stdio.h>
int main()
{int a[4][4];printf("初始化矩阵元素:\n");for(int i=0;i<4;i++)for(int j=0;j<4;j++)scanf("%d",&a[i][j]);int sum=0,ant=0;for(int i=0;i<4;i++) sum+=a[i][i];for(int i=0,j=3;i<4,j>=0;i++,j--) ant+=a[i][j];printf("两条对角线之和分别为:%d %d",sum,ant);return 0;
}
6.编写程序,初始化矩阵a[4] [5 ],输出矩阵a的最大值和最小值以及最大值和最小值所在的行号和列号。
#include <stdio.h>
int main()
{int a[4][5],q,w,e,r;q=w=e=r=0;   //q w代表最大值元素下标,反之e r; printf("初始化矩阵元素:\n");for(int i=0;i<4;i++){for(int j=0;j<5;j++){scanf("%d",&a[i][j]);if(a[i][j]>a[q][w]) q=i,w=j;if(a[i][j]<a[e][r]) e=i,r=j; }}printf("最大值的行列下标及其大小分别为:%d %d %d\n",q,w,a[q][w]);printf("最小值的行列下标及其大小分别为:%d %d %d\n",e,r,a[e][r]);return 0;
}
7.编写程序,判断一个N*N的矩阵是否是一个幻方。幻方是指矩阵每行的和、每列的和、两条对角线各自的和都相等,并且在矩阵中没有重复数字。
#include <stdio.h>
int a[1000][1000],b[1000],c[1000],d[2];
bool e[1000]; 
int main()
{int n;printf("输入幻方大小:\n");scanf("%d",&n);printf("初始化幻方:\n"); bool ok=true;for(int i=0;i<n;i++){for(int j=0;j<n;j++){scanf("%d",&a[i][j]);if(e[a[i][j]]) ok=false; //判断是否有重复数字 if(!ok)  break;e[a[i][j]]=true;b[i]+=a[i][j];     //计算第i行的和 c[j]+=a[i][j];     //计算第j列的和 if(i==j) d[0]+=a[i][j];  //计算正对角线if(i+j==n-1) d[1]+=a[i][j];  //计算反对角线  }if(!ok) break; }if(ok&&d[0]!=d[1]) ok=false;  //判断对角线是否相等 if(ok){for(int i=0;i<n;i++){if(b[i]!=d[1]||c[i]!=d[1]) {ok=false;break;}}}if(ok) printf("是幻方");else printf("不是幻方"); return 0;
}
8.编写程序,在给定的字符串s中查找满足条件的字符x,删除该字符,要求初始化一个字符串s并输出该串,从键盘输入一个字符x,输出删除该字符后的字符串。
#include <stdio.h>
#include<string.h>
int main()
{char s[1000];printf("初始化一个字符串s:\n");scanf("%s",s);printf("s串为:");printf("%s\n",s);char x[2];printf("输入字符x:");scanf("%s",&x);int n=strlen(s);for(int i=0;i<n;i++){if(s[i]==x[0]){for(int j=i;j<n-1;j++) s[j]=s[j+1];n--;i--;}}s[n]='\0';printf("删除后的字符串为:%s",s);return 0;} 
9.编写程序,输入字符串a和字符串b,在字符串a的第n个位置插入字符串b,输出原始字符串a和字符串b以及插入字符串b后的结果。例如,输入字符串a为“Hello,welcome to the C World!”,在下标5的位置上插入所输入的字符串b"LiuY",输出结果为“Hello LiuY,welcome to the C World!”。
#include <stdio.h>
#include<string.h>
int main()
{char a[100],b[100],c[100];int n;printf("输入字符串a:");scanf("%s",a);printf("输入字符串b:");scanf("%s",b);printf("输入插入位置n:");scanf("%d",&n);for(int i=0,j=0;;i++){if(i==n){while(b[j]!='\0') c[i+j]=b[j++];}c[j+i]=a[i];if(a[i]=='\0') break;} printf("原始a为:%s\n",a); printf("原始b为:%s\n",b); printf("插入后为:%s\n",c); return 0;} 
10.调制解调器通过电话线传输计算机数据,他会将0和1的序列转换成两种不同频率的模拟信号。每个0或1在传输时都持续相同的时间单位。编写程序,完成数据传输时的信息提示。程序输入的数据直接由0和1组成的字符串表示,输出信息为如下格式:

​ Emit * for*time unit(a)

举例说明:

如字符串参数为“1000110”,则输出显示为

Emit 1 for 1 time unit(s)

Emit 0 for 3 time unit(s)

Emit 1 for 2 time unit(s)

Emit 0 for 1 time unit(s)

#include <stdio.h>
#include<string.h>
int main()
{char a[1000];printf("输入数据:\n");scanf("%s",a);int z=0,i;for(i=1;a[i]!='\0';i++){z++;if(a[i]!=a[i-1]) {printf("Emit %d for %d time unit(s)\n",a[i-1]-'0',z);z=0;}} z++;printf("Emit %d for %d time unit(s)\n",a[i-1]-'0',z);return 0;} 

第七章

2.编写函数int isChar( char),其功能是判断参数c是否为数字或英文字母。若是,返回对应ASCLL值;否则返回0。要求在主函数内读入一个字符,调用该函数,输出结果。
#include <stdio.h>
int isChar(char c){if(c>='A'&&c<='Z'||c>='a'&&c<='z'||c>='0'&&c<=9)return c;return 0;
} 
int main()
{char c;scanf("%c",&c);printf("%d",isChar(c));return 0;} 
3.编写函数int isPrime(int n),其功能是判断n是否为素数。若是,返回1,否则返回0。要求:主函数输入两个整数,输出两个整数之间的所有素数。
#include <stdio.h>
int isPrime(int n){for(int i=2;i*i<=n;i++){if(n%i==0) return 0;}return 1;
}
int main()
{int a,b;scanf("%d%d",&a,&b);for(int i=a;i<=b;i++){if(isPrime(i)) printf("%d ",i);}return 0;} 
4.编写函数float fun(int x),其功能是计算S=1+x+x2/2!+x3/3!+…+x^n/n!。要求:在主调函数中输入n和x,调用函数后在主调函数中输出计算结果。
#include <stdio.h>
int n;
float fun(int x){float sum=1,q=1,w=1;for(int i=1;i<=n;i++){w*=i;q*=x;sum+=q/w;}return sum;
}
int main()
{int x;scanf("%d%d",&n,&x);printf("%f",fun(x));return 0;} 
5.编写函数int maxfun(int a,int b),其功能是计算两个整数的最大公约数;编写函数int minfun(int a,int b),其功能是计算两个整数的最小公倍数。要求:主函数中输入两个正整数,调用上述函数后输出计算结果。
#include <stdio.h>
int maxfun(int a,int b){if(a%b==0) return b;return maxfun(b,a%b);
} 
int minfun(int a,int b){return (a*b)/maxfun(a,b);
}
int main()
{int a,b;scanf("%d%d",&a,&b);printf("最大公约数为:%d\n",maxfun(a,b));printf("最小公倍数为:%d",minfun(a,b));return 0;} 
6.编写函数void fun(int a[],int n,int x),其功能是在数组a中删除所有值为x的元素。要求:在主函数中初始化数组a及读入x值,调用函数输出删除x后的数组a。
#include <stdio.h>
void fun(int a[],int n,int x){for(int i=0;i<n;i++){if(a[i]==x){for(int j=i;j<n-1;j++) a[j]=a[j+1];n--;i--;}}printf("删除后的数组为:"); for(int i=0;i<n;i++){printf("%d ",a[i]);}
}
int main()
{    int a[100],n,x;printf("输入数组长度:");scanf("%d",&n);printf("初始化数组:");for(int i=0;i<n;i++){scanf("%d",&a[i]);} printf("输入x:");scanf("%d",&x);fun(a,n,x);return 0;} 
7.编写函数int max_a(int a[],int n),其功能是返回数组a中的最大数;编写函数int min_a(int a[],int n),其功能是返回数组a中是最小数;编写函数int ave_a(int a[],int n),其功能是计算数组a中所有数的平均值。要求:在主函数内初始化一个长度为10的数组,调用上述函数后输出该数组的最大值、最小值、平均值。
#include <stdio.h>
int max_a(int a[],int n);
int min_a(int a[],int n);
int ave_a(int a[],int n);
int main()
{    int a[10];printf("初始化数组:");for(int i=0;i<10;i++){scanf("%d",&a[i]);}printf("最大数是:%d\n",max_a(a,10));printf("最小数是:%d\n",min_a(a,10));printf("平均值为:%d\n",ave_a(a,10));return 0;} int max_a(int a[],int n){int sum=a[0];for(int i=1;i<n;i++){if(a[i]>sum) sum=a[i];}return sum;}int min_a(int a[],int n){int sum=a[0];for(int i=1;i<n;i++){if(a[i]<sum) sum=a[i];}return sum;}int ave_a(int a[],int n){int sum=0;for(int i=0;i<n;i++){sum+=a[i];}return sum/n;}
8.某公司利用网络传递数据,假设要求加密传输四位整数。加密规则如下:每位数字都加上5.然后用和除以10的余数代替该数字,再将第一位 和第四位交换,第二位和第三位交换。编写加密函数实现上述功能,编写对应规则的解密函数。要求在主函数中输人一个四位整数,调用加密函数后输出加密后的数据,调用解密函数还原加密数据并输出。
#include<stdio.h>
int jiami(int &n){int a[4];a[0]=n/1000;a[1]=(n/100)%10;a[2]=(n/10)%10;a[3]=n%10;for(int i=0;i<4;i++){a[i]=(a[i]+5)%10;}for(int i=0;i<=3/2;i++){int t=a[i];a[i]=a[3-i];a[3-i]=t;}n=a[0]*1000+a[1]*100+a[2]*10+a[3];return n;
} 
int jiemi(int &n){int a[4];a[0]=n/1000;a[1]=(n/100)%10;a[2]=(n/10)%10;a[3]=n%10;for(int i=0;i<4;i++){if(a[i]<5) a[i]+=5;else a[i]-=5;}for(int i=0;i<=3/2;i++){int t=a[i];a[i]=a[3-i];a[3-i]=t;}n=a[0]*1000+a[1]*100+a[2]*10+a[3];return n;
}
int main()
{int n;scanf("%d",&n);printf("加密后为:%d\n",jiami(n));printf("解密后为:%d",jiemi(n));return 0; 
}
9.编写函数void strmid(char str1[],int m,int n,char str2[]),其功能是将字符串strl第m个字符开始的n个字符复制到str2中。编写函数int strlen(char s[]),其功能是计算字符串s的长度。要求:在主函数中初始化字符串strl,调用函数strmid(strl ,m,n,str2)和丽数strlen(strl)、strlen(str2),输出字符串strl和str2以及strl 和str2的长度。(例如,初始化字符串strl为" goodmorning",m为1,n为3,调用函数strmid(strl,m,n,str2)后字符串str2为"ood")。
#include<stdio.h>
void strmid(char str1[],int m,int n,char str2[]){for(int i=m;i<m+n;i++){str2[i-m]=str1[i];}str2[n]='\0';
}
int strlen(char s[]){int i=0;for(i=0;s[i]!='\0';i++);return i;
}
int main()
{char str1[1000],str2[1000];int n,m;printf("初始化str1为:");scanf("%s",str1);printf("输入位置m与长度n:");scanf("%d%d",&m,&n);strmid(str1,m,n,str2);printf("str1为:%s\n",str1);printf("str2为:%s\n",str2);printf("str1长度为:%d\n",strlen(str1));printf("str2长度为:%d",strlen(str2));return 0; } 
10.编写递归函数int fib(int n),递归公式如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bPvjDZHL-1654958515089)(C:\Users\86184\AppData\Roaming\Typora\typora-user-images\image-20201120145559385.png)]

要求:在主函数中输入一个整数n,调用函数后输出计算结果。

#include<stdio.h>
int fib(int n){if(n==0) return 0;if(n==1) return 1;return fib(n-2)+fib(n-1);
}
int main()
{int n;scanf("%d",&n);printf("%d",fib(n));return 0; } 

第八章

2.编写程序,定义指针pa和pb,分别指向int型变量a和b。通过pa和pb完成下列操作:(1)输入变量a和b的值;(2)输出a和b的和、差、积、商。
#include<stdio.h>
int main()
{int *pa,*pb,a,b;pa=&a;pb=&b;scanf("%d%d",pa,pb);printf("%d %d",*pa,*pb); return 0; } 
3.编写函数void multiplyArray(int *a,int m),其功能是将int型数组中的每个元素都乘以m,结果仍然保留在原数组中。要求在主函数中初始化原始数组,调用multiplyArray()函数后,在主函数中输出处理后的结果。
#include<stdio.h>
int n;
void multiplyArray(int *a,int m){for(int j=0;j<n;a++,j++){(*a)*=m;}
}
int main()
{int a[100],m;printf("输入数组长度与m:"); scanf("%d%d",&n,&m);printf("初始化数组:");for(int i=0;i<n;i++){scanf("%d",&a[i]);}multiplyArray(a,m);for(int i=0;i<n;i++){printf("%d ",a[i]);}return 0; } 
4.编写程序,实现如下函数的调用。函数getdata的功能是从键盘输入数据,函数reverse的功能是将数据逆序存放,函数showdata的功能是输出数据。3个函数的定义形式及主函数的调用形式如下:

void getdata(int *a,int num);

void reverse(int *a,int num);

void showdata(int *a,int num);

void main()

{

int a[10];

getdata(a,10);

reverse(a,10);

showdata(a,10);

}

#include<stdio.h>
void getdata(int *a,int num);
void reverse(int *a,int num);
void showdata(int *a,int num);
int main()
{int a[10];getdata(a,10);reverse(a,10);showdata(a,10);return 0;
}
void getdata(int *a,int num){for(int i=0;i<num;i++){scanf("%d",a+i);}
}
void reverse(int *a,int num){int i=0,j=num-1;while(i<j){int temp=*(a+i);*(a+i)=*(a+j);*(a+j)=temp;i++,j--; }
}
void showdata(int *a,int num){for(int i=0;i<num;i++){printf("%d ",*(a+i));}
}
5.编写函数int max(int a[],int n,int *p),其功能是查找数组a中最大值的元素及其所在位置,最大值由函数返回,位置由指针p返回;编写函数int min(int a[],int n,int *p),其功能是查找数组a中最小值的元素及其所在位置,最小值由函数返回,位置由指针p返回;编写程序,在主函数中初始化一维数组a[10],调用上述函数后输出最大值、最小值以及它们的位置。
#include<stdio.h>
int max(int a[],int n,int *p){int i=0;int sum=a[0];*p=i;for(i=1;i<n;i++)if(sum<a[i]){sum=a[i];*p=i;}return sum;}
int min(int a[],int n,int *p){int i=0;int sum=a[0];*p=i;for(i=1;i<n;i++)if(sum>a[i]){sum=a[i];*p=i;}return sum;
}
int main()
{int a[10];for(int i=0;i<10;i++){scanf("%d",&a[i]);}int x=0;int *p=&x;printf("最大值为:%d\n",max(a,10,p));printf("位置为:%d\n",*p);printf("最小值为:%d\n",min(a,10,p));printf("位置为:%d",*p);return 0;} 
6.编写函数void myitoa(int n,char *str),其功能是将一个整数转换为对应的字符串。编写程序,在主函数中输入一个整数n,调用myitoa函数后,输出对应的字符串(例如,输入整数123,输出字符串“123”)。
#include<stdio.h>
void myitoa(int n,char *str){int i=0;int a[20];while(n){a[i++]=n%10;n/=10;}i--;for(int j=0;i>=0;j++,i--) str[j]=a[i]+'0';
}
int main()
{char str[40];int n;scanf("%d",&n);myitoa(n,str);printf("%s",str);return 0;
}
7.编写函数void rotateArray(int * a,int m,int n),其功能定将巴含m 个兀素的整型数组a中的元素顺序移动,使其前面各数顺序向后移n个位置,最后n个效变成最前面的n个数。例如,原数组中的数据为1,2,3,4,5,6,7,8,9,0,顺序移动3个位置的结果是8,9,0,1,2,3,4,5,6,7。
#include<stdio.h>
void rotateArray(int *a,int m,int n){int b[100];for(int i=0;i<m;i++) b[i]=a[i];for(int i=0;i<m;i++){a[(i+n)%m]=b[i];}
}
int main()
{int a[100],m,n;printf("输入数组长度:");scanf("%d",&m);for(int i=0;i<m;i++) scanf("%d",&a[i]);printf("输入后移位置个数;");scanf("%d",&n);rotateArray(a,m,n);printf("移动后结果为:");for(int i=0;i<m;i++)printf("%d ",a[i]); return 0;
}
8.编写函数void fun(int a[][], int n,int m,int * odd,int * even),其功能是计算二维数组a[n] [m]元素中的所有奇数之和与所有偶数之和。利用指针odd返回奇数之和,利用指针even返回偶数之和。编写程序,在主函数中初始化二维数组a[5] [6],调用函数fun后输出数组a及计算结果。
#include<stdio.h>
int sum,sun;
void fun(int a[][6],int n,int m,int *ood,int *even){for(int i=0;i<n;i++)for(int j=0;j<m;j++){if(a[i][j]%2) sum+=a[i][j];else sun+=a[i][j];}
}
int main()
{int a[5][6];for(int i=0;i<5;i++)for(int j=0;j<6;j++)scanf("%d",&a[i][j]);int *ood=&sum,*even=&sun;fun(a,5,6,ood,even);for(int i=0;i<5;i++){for(int j=0;j<6;j++){printf("%d ",a[i][j]);}printf("\n");}printf("奇数之和为:%d\n",*ood);printf("偶数之和为:%d",*even); return 0;
}
9. 编写函数int StrCount(char * strl,char * str2),其功能是统计字符串str2在strl中出现的次数,返回该数 值。要求:在主函数中输入strl和 str2,调用函数StrCount(strl,str2)后输出结果(例如,输人strl为"howareyouareGGGare" ,str2为"are" ,调用函数StrCount后的函数返回值为3,输出结果为3)。

数据为1,2,3,4,5,6,7,8,9,0,顺序移动3个位置的结果是8,9,0,1,2,3,4,5,6,7。

#include<stdio.h>
void rotateArray(int *a,int m,int n){int b[100];for(int i=0;i<m;i++) b[i]=a[i];for(int i=0;i<m;i++){a[(i+n)%m]=b[i];}
}
int main()
{int a[100],m,n;printf("输入数组长度:");scanf("%d",&m);for(int i=0;i<m;i++) scanf("%d",&a[i]);printf("输入后移位置个数;");scanf("%d",&n);rotateArray(a,m,n);printf("移动后结果为:");for(int i=0;i<m;i++)printf("%d ",a[i]); return 0;
}
8.编写函数void fun(int a[][], int n,int m,int * odd,int * even),其功能是计算二维数组a[n] [m]元素中的所有奇数之和与所有偶数之和。利用指针odd返回奇数之和,利用指针even返回偶数之和。编写程序,在主函数中初始化二维数组a[5] [6],调用函数fun后输出数组a及计算结果。
#include<stdio.h>
int sum,sun;
void fun(int a[][6],int n,int m,int *ood,int *even){for(int i=0;i<n;i++)for(int j=0;j<m;j++){if(a[i][j]%2) sum+=a[i][j];else sun+=a[i][j];}
}
int main()
{int a[5][6];for(int i=0;i<5;i++)for(int j=0;j<6;j++)scanf("%d",&a[i][j]);int *ood=&sum,*even=&sun;fun(a,5,6,ood,even);for(int i=0;i<5;i++){for(int j=0;j<6;j++){printf("%d ",a[i][j]);}printf("\n");}printf("奇数之和为:%d\n",*ood);printf("偶数之和为:%d",*even); return 0;
}
9. 编写函数int StrCount(char * strl,char * str2),其功能是统计字符串str2在strl中出现的次数,返回该数 值。要求:在主函数中输入strl和 str2,调用函数StrCount(strl,str2)后输出结果(例如,输人strl为"howareyouareGGGare" ,str2为"are" ,调用函数StrCount后的函数返回值为3,输出结果为3)。

http://www.xdnf.cn/news/841519.html

相关文章:

  • [经验]Mpx200上网记
  • Windows系统进程与服务
  • javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
  • GWT+EXT探索一之插件篇——Cypal Studio
  • 零基础学网页设计,6个特别案例带你入门!
  • 5. 2019年《斯坦福大学CS330多任务和元学习》第5讲:贝叶斯元学习【中文字幕】
  • 汉字转拼音_gb2312 C#
  • 3 Germany
  • 没人和我重复标题!第1章 Pandas基础
  • 男生诡异世界观,是不是跟你想的不一样~
  • android led hal实践
  • 免费在线客服软件推荐:经济实用的客户沟通解决方案
  • 这个问题怎么解决?
  • 推荐:轻量级HEVC图像编码器——HEVC-image-encoder-lite
  • 基于ssm网上医院预约挂号系统+jsp论文
  • 【web前端开发网页设计】一步步实现:HTML + CSS + JavaScript 完整vue+elementui 个人资料(超实用)轻松搞定编辑保存:完整源代码与详细教程(新手必看)轻松入门前端开
  • ave2
  • 计算机中丢失atl80,atl80.dll丢失了怎么办-atl80.dll丢失的解决方法 - 河东软件园
  • 解决Win7的一个毛病——睡眠失效(只关闭显示器,不关主机)
  • 提交到YAHOO人工分类目录和开放式目录
  • 4. 2019年《斯坦福大学CS330多任务和元学习》第4讲:非参数元学习【中文字幕】
  • co作为前缀的意思_20个最常用的英语必备前缀!超实用!所有英语学习者必背...
  • 最全的免费OA试用地址
  • NVIDIA发布Tegra 4:四核A15+72核心GPU
  • Win7如何简单的关闭445端口及445端口入侵详解
  • 2018第九届蓝桥杯JavaC组省赛真题详解
  • 上海帖易之易度文档管理
  • 不容错过的5大化学试剂购买网站,确定不来看看?
  • 详解机器学习中的熵、联合熵、条件熵、相对熵和交叉熵
  • 30s带你了解 #!/bin/bash