C语言程序设计实验36题.docx
《C语言程序设计实验36题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验36题.docx(29页珍藏版)》请在冰豆网上搜索。
![C语言程序设计实验36题.docx](https://file1.bdocx.com/fileroot1/2023-2/4/47fd78e5-1f25-4c71-9a00-788e0379011e/47fd78e5-1f25-4c71-9a00-788e0379011e1.gif)
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;iif(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;iscanf("%d",p+i);
max=*p;
for(i=0;iif(*(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;iscanf("%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