黔南民族师范学院数学系 C程序设计实验
void main() {
int i=11;
printf(\ dtob(i);
printf(\}
该函数是将十进制的数转为二进制。结果如下:
2.程序填空(根据题意在空白处填入适当的内容,使程序变得完整,并上机进行调试验证)
1) 程序说明:下面程序将输入的十进制数 n 转换为 b 进制数,并将转换结果输出。转换的方法是:除 b 取余法。
#include \
void transfer(int m,int k) {
int a[20],i;
for(i=0; m; i++) a[i]= m%k ; m/=k; }
for(;i>=0;i--)
printf(\}
void main() {
int b,n;
scanf(\ transfer ( b,n); ; }
班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 6 -
黔南民族师范学院数学系 C程序设计实验
2) 程序说明:歌德巴赫猜想指出:任何一个充分大的偶数都可以表示为两个素数之和,例如 4=2+2 6=3+3 8=3+5 ? 50=3+47。下面程序将 4-50 之间的所有偶数用两个素数之和表示,判断一个整数是否为素数用函数 prime 完成。
#include \int prime(int x) {
int k,flag=1;
for(k=2;k<=x/2;k++)
if( x%k==0 ) {
flag=0; break; }
return( flag ); }
void main() {
int m,n,k;
for(m=4;m<=50;m++) for(n=2;n if(prime(n)&&(m%2==0)&&(k=m-n)&&(prime(k)) ) { printf(\ break; } } 3) 程序说明:用一个一维数组存放 10 个学生的成绩,写一个函数求出平均分、最高分和最低分。 #include \ float max=0,min=0; float average(float score[],int n) 班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 7 - 黔南民族师范学院数学系 C程序设计实验 { int i; float ave,sum=score[0]; max=min= score[0] ; for(i=1;i ave=sum/10; return (ave) ; } void main() { float ave,score[10]; int i; for(i=0;i<10;i++) scanf(\ &score[i] ); ave=average( score,10 ); printf(\n”,max,min,ave); } 4) 程序说明:在主函数中读入一字符串,再读入一字符,然后调用函数delete在字符串中查找并删除该字符,最后输出该字符串。 #include \ void delete(char p[],char ch) { int i=0,j; while( ) { if(p[i]==ch) for(j=i;j< ;j++) p[i]=p[i+1]; else i++; } } 班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 8 - 黔南民族师范学院数学系 C程序设计实验 void main() { char p[80],ch; int i=0,j; scanf(\ scanf(\ delete( ); printf(\ ); } 5) 程序说明:输入10 个学生的学号及单科成绩,然后求出最高分的学号、最低分的学号以及超过平均分的人数。 #include \ int high_num, low_num; int over_aver(int score[],int n) { int i, imax, imin, over_num; float aver; imax=0; imin=0; aver=0; for(i=0;i aver/=n; over_num=0; for(i=0;i void main() { int i, over_num, a[10]; printf(\ input a:\ for(i=0;i<10;i++) scanf(\ over_num=__over_aver(a,10)_________________; 班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 9 - 黔南民族师范学院数学系 C程序设计实验 printf(\ high_num,low_num=%d,%d\ low_num); printf(\ over_num=%d\ } 3.程序设计(根据题意编写程序并上机进行调试) 1) 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意的整数。 #include void c(long int m); long int n; printf(\请输入一个任意整数\\n\ scanf(\ printf(\用递归法将其转换成字符串是:\\n\ if(n<0) {putchar('-'); n*=-1; } c(n); printf(\} void c(long int m) { long int x;x=m/10; if(x!=0) c(x); putchar(m+'0'); } 2) 求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。 要求:求最大公约数用递归方法实现,递归公式为(r=m%n): r?0,?n, gcd(n,m)???gcd(n,r), r?0.①不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输人,并传送给函数l,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大 班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 10 -