首页 c语言实验题目总结

c语言实验题目总结

举报
开通vip

c语言实验题目总结1.编写power函数,该函数的功能是得到从键盘输入的两个数的 值。要求在主函数中调用power函数,实现求解从键盘上输入二进制数字,要求将其转化成十进制形式。并在主函数中输出十进制数。 2.#include 3.#include 4.int power(int x,int m) 5.{ 6.    int s=1, k; 7.    for(k=1;k #include double power(double x,double m) { double s=1; int k; for(k=1;k='A'&&a[...

c语言实验题目总结
1.编写power函数,该函数的功能是得到从键盘输入的两个数的 值。要求在主函数中调用power函数,实现求解从键盘上输入二进制数字,要求将其转化成十进制形式。并在主函数中输出十进制数。 2.#include 3.#include 4.int power(int x,int m) 5.{ 6.    int s=1, k; 7.    for(k=1;k<=m;k++) 8.        s=s*x; 9.    return (s); 10.} 11.int f(char a[10]) 12.{ 13. 14.    int i,j,sum=0; 15.    j=strlen(a); 16.    for(i=0;i #include double power(double x,double m) { double s=1; int k; for(k=1;k<=m;k++) s=s*x; return (s); } double f(char a[10]) { int i,j; double sum=0; j=strlen(a); for(i=0;i='A'&&a[i]<='F') { sum=sum+(a[i]-'A'+10)*power(16,(j-i-1)); } else sum=sum+(a[i]-'0')*power(16,(j-i-1)); } return (sum); } main() { int c; char s1[10]={0}; gets(s1); c=f(s1); printf("%d\n",c); }//十六进制转化成十进制 2.编写isprime函数,该函数的功能是判断某数字是否是素数。要求在主函数中调用isprime函数,输出200~500之间的所有素数,并输出8个素数进行换行。 3.#include 4.int isprime(int m) 5.{ 6.        int i,k; 7.        k=1; 8.        for(i=2;i 5.main() 6.{ 7.    int huis(long n); 8.    long m,j; 9.    for(m=10;m<1000;m++) 10.    { 11.        if(huis(m)&&huis(m*m)&&huis(m*m*m)) 12.        { 13.            printf("%d,%d,%d\n",m,m*m,m*m*m); 14.            j++; 15.            if(j%5==0) 16.            printf("\n"); 17.        } 18.    } 19. 20. 21.} 22.int huis(long n) 23.{ 24.    long i=n,m=0; 25.    while(i) 26.    { 27.        m=m*10+i%10; 28.        i=i/10; 29. 30.    } 31.    return(m==n); 32.} 4.用二分法实现查找数组中的元素。 算法思想:假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2。 (1)开始令front=0(指向3),end=7(指向88),则mid=3(指向36)。因为mid>x,故应在前半段中查找。 (2)令新的end=mid-1=2,而front=0不变,则新的mid=1。此时x>mid,故确定应在后半段中查找。 (3)令新的front=mid+1=2,而end=2不变,则新的mid=2,此时a[mid]=x,查找成功。 如果要查找的数不是数列中的数,例如x=25,当第三次判断时,x>a[mid],按以上规律,令front=mid+1,即front=3,出现front>end的情况,表示查找不成功。 #include void main() { int a[10]={3,5,8,12,15,21,26,29,30,50},front,end,mid,x; scanf("%d",&x); front=0; end=9; while(front<=end) { mid=(front+end)/2; if(a[mid]==x) { printf("查找成功,下标为%d",mid); break; } else if(a[mid]>x) { end=mid-1; } else if(a[mid]end) printf("查找不成功"); } 5 从键盘输入如下字符:******A*BC**D******,完成以下功能:1)当继续输入字符,输入的为L,删除左边的星号,将其放到右边,结果为: A*BC**D************;2)当继续输入字符,输入的为M,删除中间的星号,将其放到右边,结果为: ******ABCD*******;3)当继续输入字符,输入的为R,删除右边的星号,结果为: ******A*BC**D。 (1)#include 2. #include 3. 4. int main(void) 5. {    6.     char s1[80] = "******A*BC**D******"; 7.     char s2[80]; 8.     int i=0,j=0,countstar=0; 9.     int nSize = strlen(s1); 10. 11.     for (i=0; i #include int main(void) {    char s1[80] = "******A*BC**D******"; char s2[80]; int i=0,j=0; int nSize = strlen(s1); for (i=0; i=0; i++)    {          if (s1[i]=='*')          {              s2[j++] = '*'; } else          {              break; }    } } s2[j]=0; puts(s2); return 0; } (3)#include #include void main() { char s[100]={"******A*BC**D******"}; int i,j,k=0,m,n; n=strlen(s); for(i=(n-1);i>=0;i--) {    if(s[i]=='*') {    k++; } else break; } s[n-k]='\0'; for(j=0;j #include void main() { char s[5][20],t[20]; int i,j; for(i=0;i<5;i++) scanf("%s",s[i]); for(i=0;i<5;i++) { for(j=i+1;j<5;j++) { if(strcmp(s[i],s[j])>0) { strcpy(t,s[i]); strcpy(s[i],s[j]); strcpy(s[j],t); } }    } for(i=0;i<5;i++) puts(s[i]); } 7. 用数组实现10进制数转换为二进制、八进制和十六进制。 #include void main() {  char a[20]; int x,y,t,i=0; scanf("%d",&x); scanf("%d",&y); while(x!=0) { t=x/y; if(t>'0'&&t<'10') {a[++i]=t+'0';} else {a[++i]=t-10+'A';} x=x/y; } a[i]='\0'; while(i>=1) {printf("%c",a[--i]);} } 8 用数组实现对键盘输入的10个数进行排序。用冒泡法实现对10个数从小到大排序,选择法实现对10个数从大到小排序。 #include void main() { int a[10]={12,15,48,36,78,79,15,46,25,36},i,j,t; for(i=0;i<10;i++) printf("%4d",a[i]); for(j=0;j<9;j++) {    for(i=j+1;i<10;i++)/*冒泡法:for(i=j+1;i<10-1-j;i++)*/ { if (a[j] void main() { int a[10][10]={0},i,j,b[10][10]; for(i=0;i<10;i++) { a[i][0]=1; for(j=1;j int main(void) { int a[4][4] = {{15,4,2,16}, {12,7,9,6}, {8,14,11,5}, {3,10,1,13}}, i, j, t, x; for (i = 0; i < 4; i++) { if (i % 2 == 0) { for (x = 0; x < 3; x++) { for (j = 0; j < 3 - x; j++) { if (a[i][j] > a[i][j + 1]) { t = a[i][j]; a[i][j] = a[i][j + 1]; a[i][j+1] = t; } } } } else { for (x = 0; x < 3; x++) { for (j = 0; j < 3 - x; j++) { if (a[i][j] < a[i][j + 1]) { t = a[i][j]; a[i][j] = a[i][j + 1]; a[i][j + 1] = t; } } } } } for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { printf("%-5d",a[i][j]); } printf("\n"); } return 0; } 11 输出所有“水仙花数”,所谓的“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一水仙花数,因为153=13+53+33。(for结构实现) #include void main() { int m,a1,a2,b1,b2; for(m=100;m<=1000;m++) {    a1=m%10; b1=m/10; a2=b1%10; b2=b1/10; if (m==a1*a1*a1+a2*a2*a2+b2*b2*b2) printf("%d\n",m); } } 12 用迭代法求 。求平方根的迭代公式为: ,要求前后两次求出的x的差的绝对值小于10-5。(do…while结构实现) #include #include void main() { long float a,x1,x2; scanf("%lf",&a); x1=a/2; do{ x2=x1; x1=(x2+a/x2)/2; }while(fabs(x1-x2)>=1e-5); printf("%lf",x1); } 13  有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,…。求这个序列前20项之和。(while结构实现) #include void main() { double a=1.0,b=2,i=1,t, sum=0; while(i<=20) { t=b/a; sum=sum+t; b=a+b; a=b-a; i++; } printf("%lf",sum); } 14 编程实现将10进制数字转换为16进制数字,要求从键盘输入十进制数字输出对应的十六进制数字,例如输入255,输出FF。 #include"stdio.h" main() { char a[20]; int x,y,t,i=0; scanf("%d",&x); scanf("%d",&y); while(x) { t=x%y; if(t>=0&&t<=9)//0到9 { a[i++]=t+'0'; } else//10开始用字母表示 { a[i++]=t-10+'A'; } x/=y; } a[i]='\0'; while(i) printf("%c",a[--i]); } 15 用switch结构实现求和、差、积、商和求余数,运算符分别是+、-、*、%,如从键盘输入2+5得到7。 #include void main() { double x,y; char ch; printf("input x,y:"); scanf("%lf,%lf",&x,&y); scanf("%c",&ch); printf("input ch:"); scanf("%c",&ch); switch(ch) { case '+':printf("%f+%f=%f\n",x,y,x+y);break; case '-':printf("%f-%f=%f\n",x,y,x-y);break; case '/':printf("%f/%f=%f\n",x,y,x/y);break; case '*':printf("%f*%f=%f\n",x,y,x*y);break; default: printf("incorrrect symbol!\n"); } } 16 求 之值,其中a表示数字,n表示a的位数,a和n由键盘输入。(while结构实现) (1)#include void main() { int a,aa=0,sum=0,i=1,n; scanf("%d%d",&a,&n); do{ aa=aa*10+a; sum=sum+aa; i++; }while(i<=n); printf("a+aa+aaa+...+aaa...a=%d\n",sum); } (2)#include void main() { int a,sum,s,n,i; sum=0; s=0; i=1; scanf("%d%d",&a,&n); while(i<=n) { s=s*10+a; i++; sum=s+sum; 17 编程实现将10进制数字转换为2进制数字,要求从键盘输入十进制数字输出对应的二进制数字,例如输入10,输出1010。(do…while结构实现) (1)#include void main() { int a, b=0,m=1,sum=0; scanf("%d",&a); do {  b=a%2; sum=sum+b*m; m=m*10; a=a/2; }while(a!=0); printf("%d",sum); } (2)#include #include void main() { int a,t,i=0,b=10,s,sum=0; scanf("%d",&a); do { t=a%2; a=a/2; s=pow(b,i)*t; i=i+1; sum=sum+s; }    while(a!=0); printf("%d",sum); } 18 用sizeof验证float,char,int型变量所占字节的个数 #include int main() { char c; int i; float f; printf("sizeof(char)=%d\n",sizeof(char)); printf("sizeof(int)=%d\n",sizeof(int)); printf("sizeof(float)=%d\n",sizeof(float)); printf("\n"); c='a'; i=1; printf("%c\n",c); printf("%d\n",i); printf("sizeof(char)=%d\n",sizeof(c)); printf("sizeof(int)=%d\n",sizeof(i)); printf("\n"); }
本文档为【c语言实验题目总结】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_554469
暂无简介~
格式:doc
大小:66KB
软件:Word
页数:0
分类:
上传时间:2019-09-09
浏览量:57