C语言程序设计实验36题.docx
- 文档编号:9540217
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:29
- 大小:22.72KB
C语言程序设计实验36题.docx
《C语言程序设计实验36题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验36题.docx(29页珍藏版)》请在冰豆网上搜索。
C语言程序设计实验36题
C语言程序设计实验36题
邓作杰编
简单程序设计与基本数据处理
1显示短句
在屏幕上显示一个短句“ProgramminginCisfun!
”
#include
intmain()
{
printf(“ProgramminginCisfun\n”);
return0;
}
2求两个数的和与差
输入整数a和b,计算并输出a、b的和与差。
#include
intmain()
{
inta,b,s,t;
printf(“pleaseinputaandb:
”);
scanf(“%d%d”,&a,&b);
s=a+b;
t=a-b;
printf(“a+b=%d\na-b=%d\n”,s,t);
return0;
}
3求平方根
输入1个实数x,计算并输出其平方根(保留1位小数)
#include
#include
intmain()
{
intx;
floaty;
printf("pleaseinputx:
");
scanf("%d",&x);
y=sqrt(x);
printf("theresultis%.1f",y);
return0;
}4华氏温度转换为摄氏温度
输入华氏温度f,计算并输出相应的摄氏温度c(保留2位小数)。
c=5/9(f-32).
#include
intmain()
{
floatf,c;
printf(“pleaseinputf:
”);
scanf(“%f”,&f);
c=5/9*(f-32);
printf(“Cis%.2f\n”,c);
return0;
}
5大写字母转换成小写字母
输入一个大写英文字母,输出相应的小写字母。
#include
intmain()
{
charx;
printf(“pleaseinputachar:
”);
scanf(“%c”,&x);
if(x>=65&&x<=90)
x=x+32;
printf(“%c\n”,x);
else
printf(“errormessage!
\n”);
return0;
}
6编写摄氏温度、华氏温度转换程序。
从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。
转换公式:
F=(C+32)×9/5。
#include
intmain()
{
floatf,c;
printf(“pleaseinputf:
”);
scanf(“%f”,&f);
c=5/9*(f-32);
printf(“Cis%.2f\n”,c);
return0;
}
分支结构
7判断数的符号
输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后输出y。
#include
intmain()
{
intx,y;
printf(“pleaseinputx:
”);
scanf(“%d”,&x);
if(x>0)
y=1;
elseif(x=0)
y=0;
else
y=-1;
printf(“theresultis%d\n”,y);
return0;
}
8计算个人所得税
输入一个职工的月薪salary,输出应交的个人所得税tax(保留2位小数)。
tax=rate*(salary-850)
当salary<=850时,rate=0;
当850 当1350 当2850 当5850 #include intmain() { floatsalary,rate,tax; printf(“pleaseinputthesalary: ”); scanf(“%f”,&salary); if(salary<=850) rate=0; elseif(salary<=1350) rate=5; elseif(salary<=2850) rate=10; elseif(salary<=5850) rate=15; else rate=20; tax=rate*(salary-850); printf(“thetaxis%.2f\n”,tax); return0; } 9、试编程判断输入的正整数是否既是5又是7的正倍数。 若是,则输出yes;否则输出no。 #include intmain() { intx,i; printf("pleaseinputthenumber: "); scanf("%d",&x); for(i=2;x%i==0;i++); if(i==x) printf("YES\n"); else printf("NO\n"); return0; } 循环结构 10.是求1-100之间的所有除5余2的数之和。 #include intmain() { intx,sum=0; for(x=1;x<=100;x++) if(x%5==2) sum=sum+x; printf(“thesumis%d”,sum); return0; } 11.所谓回文数是从左往右和从右往左读起来都一样的数字,如121是一个回文数,计算从1881开始到4000年为止,共有多少个年号是回文年号? #include intmain() { inta,b,c,d,x,i=1; for(x=1881;x<=4000;x++) { a=x/1000; b=x/100-a*10; d=x%10; c=(x%100-d)/10; if(a==d&&b==c) i++; } printf("thenumberis%d",i); return0; } 12.是求1-5000之间的能被7整除的前若干个偶数之和,当和大于600时程序退出,请将运行结果。 #include intmain() { intsum=0,i; for(i=1;i<=5000;i++) { if(i%2==0&&i%7==0) sum=sum+i; if(sum>600) break; } printf("thesumis%d\n",sum); return0; } 13.编程序求出1~100所有整数的平方和并输出结果。 #include intmain() { intsum=0,t,i; for(i=1;i<=100;i++) { t=i*i; sum=sum+t; } printf(“theresultis%d”,sum); return0; } 14.一个数如果刚好与小于它的所有因子之和相等,则称该数为一个“完数”,如: 6=1+2+3,则6就是一个完数。 求出800以内的所有完数之和。 #include #include intmain() { intx,i,sum; for(x=1;x<=800;x++) { sum=0; for(i=1;i if(x%i==0) sum=sum+i; if(sum==x) printf("%8d",x); } return0; } 15.所谓回文数是从左至右与从右至左读起来都是一样的数字,如: 121是一个回文数。 编写程序,求出300—800的范围内所有回文数的和。 #include intmain() { inta,b,i,sum=0; for(i=300;i<=800;i++) { a=i/100; b=i%10; if(a==b) sum=sum+i; } printf("thesumis%d\n",sum); return0; } 16.有36个学生一起买小吃,共花钱120元,其中每个大学生花4元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生为0的解)? #include intmain() { inta,b,c,d,i=0; for(a=1;a<=34;a++) for(b=1;b<=34-a;b++) for(c=1;c<=34-b-c;c++) if(a+b+c+d==36) if(4*a+2*b+c==20) i++; printf("thenumberis%d\n",i); return0; } 17.求1至100之间的奇数和 #include intmain() { intx,sum=0; for(x=1;x<=100;x++) if(x%2! =0) sum=sum+x; printf("Thesumis%d\n",sum); return0; } 18.输出2至1000之间在的质数。 #include intmain() { intx,i; for(x=2;x<=1000;x++) for(i=2;x%i==0;i++) if(i! =x) printf("%8d",x); return0; } 19.输入一个3位的正整数,输出其各位上的数字。 #include intmain() { intx,a,b,c; printf("pleaseinputx: "); scanf("%d",&x); a=x/100; b=x/10-10*a; c=x%10; printf("%4d%4d%4d",a,b,c); return0; } 20.对15个数进行排序,按从小到大的顺序输出。 #include intmain() { inta[15],i,j,t; printf("pleaseinput15numbers: "); for(i=0;i<=14;i++) scanf("%d",&a[i]); for(j=0;j<=14;j++) for(i=0;i<=14-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } for(i=0;i<=14;i++) printf("%4d",a[i]); return0; } 21.一个数除了能被1和它本身整除之外,不能被其它整数整除,该数称为素数。 求出1000-5000之间素数的和。 #include intmain() { intx,i,sum=0; for(x=1000;x<=5000;x++) for(i=2;i<=x/2;i++) if(x%i==0) { sum=sum+x; break; } printf("Thesumis%d",sum); return0; } 22.求[600,900]之间素数的个数。 #include intmain() { intx,i,n=0; for(x=600;x<=900;x++) for(i=2;i<=x/2;i++) if(x%i==0) { n++; break; } printf("Thenumberis%d\n",n); return0; } 函数 23.求a+aa+aaa+…+aa…a 输入2个正整数a和n,求a+aa+aaa+…+aa…a(n个a)之和。 要求定义并调用函数fn(a,n),它的功能是返回aa⋯a(n个a)。 例如,fn(3,2)的返回值是33。 #include intfn(inta,intb) { inty=0,i; for(i=1;i<=b;i++) y=y*10+a; returny; } intmain() { intj,sum=0,t,n,m; printf("pleaseinputmandn: "); scanf("%d%d",&m,&n); for(j=0;j<=n;j++) { t=fn(m,j); sum=sum+t; } printf("Theresultis%d\n",sum); return0; } 24.统计素数并求和 输入2个正整数m和n(1<=m,n<=500),统计并输出m和n之间的素数的个数以及这些素数的和。 要求定义并调用函数prime(m)判断m是否为素数。 #include intprime(intx) { intj,flag=1; for(j=2;j<=x/2;j++) if(x%j==0) { flag=0; break; } returnflag; } intmain() { intm,n,t,sum=0,i,a=0; printf("pleaseinputmandn: "); scanf("%d%d",&m,&n); if(m>n) { t=m; m=n; n=t; } for(i=m;i<=n;i++) { t=prime(i); if(t) { sum=sum+i; a++; } } printf("thenumberis%dandthesumis%d\n",a,sum); return0; } 25.输出Fibonacci序列 输入2个正整数m和n(1<=m,n<=10000),输出m和n之间所有的Fibonacci数。 Fibonacci序列(第1项起): 1123581321...... 要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。 例如,fib(7)的返回值是13。 #include intfib(intn) { inti,f,t1,t; if(n==1||n==2) f=1; else { f=1; t=1; for(i=3;i<=n;i++) { t1=f; f=f+t; t=t1; } } returnf; } intmain() { intm,n,t,sum=0,i,a=0; printf("pleaseinputmandn: "); scanf("%d%d",&m,&n); if(m>n) { t=m; m=n; n=t; } for(i=1;fib(i)<=n;i++) { if(fib(i)>m) printf("%6d",fib(i)); } return0; }` 26.用下列迭代公式求a的平方根。 X从键盘输入。 精读为10-6 #include #include intmain() { doublex,a; intt; printf("pleaseinputa: "); scanf("%lf",&a); printf("pleaseinoutx: "); scanf("%lf",&x); t=x*pow(10,6); t=t%10; for(;;) { x=1/2*(x+a/x); if(t>0) break; } printf("theresultis%.6lf\n",x); return0; } 数组和字符串 27.求最大值及其下标 输入一个正整数n(1 #include intmain() { intn,*p,max,i,j; printf("pleaseinputn: "); scanf("%d",&n); p=(int*)malloc(n*sizeof(int)); for(i=0;i scanf("%d",p+i); max=*p; for(i=0;i if(*(p+i)>max) { max=*(p+i); j=i; } printf("themaxis%dtheNO.is%d",max,j); return0; }28.逆序输出 输入一个正整数n(1 #include intmain() { intn,*p,max,i; printf("pleaseinputn: "); scanf("%d",&n); p=(int*)malloc(n*sizeof(int)); for(i=0;i scanf("%d",p+i); max=*p; for(i=n;i>0;i--) printf("%4d",*(p+i)); return0; } 29.交换最小值和最大值 输入一个正整数n(1 #include intmain() { intn,*p,max,min,i,j,k,t; printf("pleaseinputn: "); scanf("%d",&n); p=(int*)malloc(n*sizeof(int)); printf("pleaseinput%dnumbers: ",n); for(i=0;i<=n;i++) scanf("%d",p+i); max=*p; min=*p; for(i=0;i<=n;i++) { if(*(p+i)>max) j=i; if(*(p+i)>min) k=i; } t=*p; *p=*(p+j); *(p+j)=t; t=*(p+n); *(p+n)=*(p+k); *(p+k)=t; for(i=0;i<=n;i++) printf("%4d",p+i); return0; } 30.求矩阵每行元素之和 输入2个正整数m和n(1≤m,n≤6),然后输入该m行n列矩阵a中的元素,分别求出各行元素之和,并存入一维数组row中,再输出row. #include intmain() { inta[20][20],m,n,row[20],sum=0,i,j; for(i=0;i<20;i++) for(j=0;j<20;j++) { printf("pleaseinputa[%d][%d]: ",i,j); scanf("%d",&a[i][j]); } printf("pleaseinputmandn: "); scanf("%d%d",&m,&n); printf("a[%d][%d]is%d\n",m,n,a[m][n]); for(i=0;i<=20;i++) { for(j=0;j<=20;j++) sum=sum+a[i][j]; row[i]=sum; } for(i=0;i<=20;i++) printf("%d",row[i]); return0; } 31.求字符串长度 连续输入一批以#结束的字符串(字符串的长度不超过80),遇##则全部输入结束。 统计并输出每个字符串的有效长度。 #include #defineMAX_COUNT100 voidmain() { intcount[MAX_COUNT]; intstate=0,index=0; charch; inti; count[0]=0; while(state! =2) { scanf("%c",&ch); if(state==0) { if(ch! ='#')count[index]++; elsestate=1; } elseif(state==1) { if(ch=='#')state=2; else { index++; count[index]=1; state=0; if(index>=MAX_COUNT)break; } } } for(i=0;i<=index;i++) printf("%d\n",count[i]); } 指针 32.查找整数 定义一个函数search(intlist[],intn,intx),在数组list中查找元素x,若找到则返回相应下标,否则返回-1。 在main函数中调用search,main函数如下: voidmain() { inti,x,a[10],res; for(i=0;i<10;i++) scanf("%d",&a[i]); scanf("%d",&x); res=search(a,10,x); printf("%d",res); } #include voidmain() { inti,x,a[10],res; for(i=0;i<10;i++) scanf("%d",&a[i]); scanf("%d",&x); res=search(a,10,x); printf("%d",res); } intsearch(intlist[],intn,intx) { inty=-1,j; for(j=0;j<=n;j++) { if(list[j]==x) { y=j; break; } } returny; } 33.排序 定义函数voidsor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实验 36