c语言实验word文档良心出品.docx
《c语言实验word文档良心出品.docx》由会员分享,可在线阅读,更多相关《c语言实验word文档良心出品.docx(29页珍藏版)》请在冰豆网上搜索。
c语言实验word文档良心出品
//已知下面的程序是输入一个整数,判断该整数的位数,并依次输出各位数字。
请将程序补充完整。
#include
main()
{longnum;
inta[10],i=0;
scanf("%ld",&num);
while(num!
=0)
{a[i]=num%10;
num=num/10;
i++;
}
printf("thisnumberis%dweishu.\n",i);
for(i--;i>=0;i--)
printf("%d",a[i]);
}
//2.输入10名学生的C语言成绩,并将成绩排序。
#include
main()
{
intgrade[10]={78,89,56,98,74,68,23,56,68,75};
inti,j;
inttemp;
//for(i=0;i<10;i++)
//scanf("%d",&grade[i]);
for(i=0;i<10-1;i++)
for(j=i+1;j<10;j++)
if(grade[i]{
temp=grade[i];
grade[i]=grade[j];
grade[j]=temp;
}
for(i=0;i<10;i++)
printf("%6d",grade[i]);
printf("\n");
}
//3.从键盘上输入10个整数,并放入一个一维数组中,
//然后将其逆序重新存放。
//即:
第1个元素和第10个元素互换,第2个元素和第9个元素互换……分别输出数组原来的值和兑换后各元素的值。
#include
#defineN10
main()
{
intnumber[10]={78,89,56,98,74,66,23,58,68,75};
inttemp;
inti;
for(i=0;i{
temp=number[i];
number[i]=number[N-i-1];
number[N-i-1]=temp;
}
for(i=0;iprintf("%6d",number[i]);
printf("\n");
}
//4.计算一个4×4矩阵两个对角线之和
#include
#defineM4
#defineN4
main()
{
inta[M][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
inti,j;
intsum=0;
for(i=0;ifor(j=0;j{
if(i==j||i+j==M-1)
sum=sum+a[i][j];
}
printf("sum=%d\n",sum);
}
//随机产生20个[45,210]范围内的正整数,实现以下功能:
//a)求最大值、最小值和平均值。
//b)求小于平均值的数据的个数。
#include
#include
#include
#defineN20
main()
{
inta[N];
inti;
intmax,min,sum=0;
floatavg;
intcount=0;
srand(time(NULL));/*初始化随机因子*/
for(i=0;ia[i]=rand()%(210-45+1)+45;/*生成45~210之间的整数*/
max=a[0];
min=a[0];
for(i=0;i{
if(a[i]>max)
max=a[i];
if(a[i]min=a[i];
sum=sum+a[i];
}
avg=(float)sum/N;
printf("生成的20个随机数为:
\n");
for(i=0;i{
printf("%5d",a[i]);
if((i+1)%10==0)
printf("\n");
}
printf("最大值为:
%d;最小值为:
%d;平均值为:
%f;\n",max,min,avg);
for(i=0;i{
if(a[i]count++;
}
printf("小于平均值的数据个数为:
%d\n",count);
}
//下面程序的功能是对两个字符串进行比较,
//然后输出两个字符串中第一个不相同字符的ASCII码之差。
//例如:
输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。
#include
main()
{
charstr1[100],str2[100];
inti,s;
printf("Enterstring1:
");
gets(str1);
printf("Enterstring2:
");
gets(str2);
i=0;
while((str1[i]==str2[i]&&str1[i]!
='\0'))
i++;
s=str1[i]-str2[i];
printf("%d\n",s);
}
//编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。
//不用strcpy函数。
复制时'\0'也要复制过去,'\0'后面的字符不复制。
#include
main()
{
chars1[100],s2[100];
inti;
printf("Enterstring1:
");
gets(s1);
i=0;
while((s1[i]!
='\0'))
{s2[i]=s1[i];
i++;
}
s2[i]=s1[i];
printf("s2=%s\n",s2);
}
//输入若干个字符串(最多10个),
//求出每个字符串的长度,并打印最长字符串的内容。
//以"stop"作为输入的最后一个字符串。
//输入若干个字符串(最多10个),
//求出每个字符串的长度,并打印最长字符串的内容。
//以"stop"作为输入的最后一个字符串。
#include
#include
main()
{
charstr[10][100];
inti=0,k;
intmax_len,max_pos;
gets(str[i]);
max_len=strlen(str[i]);
max_pos=0;
while(i<10&&strcmp(str[i],"stop")!
=0){
i++;
gets(str[i]);
}
for(k=0;k
{
printf("第%d字符串长度为%d\n",k+1,strlen(str[k]));
if((int)strlen(str[k])>max_len)
{
max_len=strlen(str[k]);
max_pos=k;
}
}
printf("最长字符串的内容为:
%s\n",str[max_pos]);
}
//输入若干个字符串(最多10个),
//求出每个字符串的长度,并打印最长字符串的内容。
//以"stop"作为输入的最后一个字符串。
#include
#include
main()
{
charstr[10][100];
inti=0;
intmax_len,max_pos;
gets(str[i]);
max_len=strlen(str[i]);
max_pos=0;
while(i<10&&strcmp(str[i],"stop")!
=0)
{
printf("第%d字符串长度为%d",i+1,strlen(str[i]));
if((int)strlen(str[i])>max_len)
{
max_len=strlen(str[i]);
max_pos=i;
}
i++;
gets(str[i]);
}
printf("最长字符串的内容为:
%s",str[max_pos]);
}
实验6—4
#include
main()
{
charstr[]="AbcDEfg";
intk=0;
printf("转换前的字符串为:
%s\n",str);
while(str[k]!
='\0')
{
if(str[k]>='a'&&str[k]<='z')
str[k]=str[k]-32;
elseif(str[k]>='A'&&str[k]<='Z')
str[k]=str[k]+32;
k++;
}
printf("转换前的字符串为:
%s\n",str);
}
实验7—1—2
#include
intsub(intn)
{
return(n/10+n%10);
}
main()
{
intx,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
}
实验7—1—1
#include
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(9));
}
//2.写一个判素数的函数intisprime(inta){……},
//在主函数输入一个整数,并调用isprime函数,输出是否为素数的信息。
#include
#include
intisprime(inta);
main()
{
intn;
scanf("%d",&n);
if(isprime(n)==1)
printf("%d是一个素数!
\n",n);
else
printf("%d不是一个素数\n!
",n);
}
intisprime(inta)
{
intk;
for(k=2;k<=sqrt(a);k++)
if(a%k==0)return0;
return1;
}
//3.用递归方法求n阶勒让德多项式的值,递归公式为:
#include
floatp(floatx,intn);
main()
{
floatx;
intn;
printf("请输入x,n:
:
\n");
scanf("%f%d",&x,&n);
printf("p(%f,%d)=%f\n",x,n,p(x,n));
}
floatp(floatx,intn)
{
if(n==0)
return1;
elseif(n==1)
returnx;
else
return((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-1))/n;
}
//4.编写一函数,计算任一输入的整数的各位数字之和。
//主函数包括输入输出和调用该函数。
#include
intsum_digit(intn);
main()
{
intnum;
printf("请输入一个整数:
\n");
scanf("%d",&num);
printf("%d的各位数字之和为%d\n",num,sum_digit(num));
}
intsum_digit(intn)
{
inttemp_sum;
temp_sum=n%10;
while(n/10!
=0)
{
n=n/10;
temp_sum=temp_sum+n%10;
}
returntemp_sum;
}
//1.编写将n个数从小到大排序的函数,
//要求该函数返回排序过程中交换的次数,并设计main函数,验证算法正确与否。
//intsort(intarr[],intn){……….}
#include
intsort(intarr[],intn);
main()
{
inta[10]={10,9,8,7,6,5,4,3,2,1};
intk;
printf("初始序列为:
\n");
for(k=0;k<10;k++)
printf("%5d",a[k]);
printf("\n");
printf("将序列按从小到大顺序排序,经过%d次变换后,序列为:
\n",sort(a,10));
for(k=0;k<10;k++)
printf("%5d",a[k]);
printf("\n");
}
intsort(intarr[],intn)
{
inti,j;
inttemp;
intcount=0;
for(i=0;ifor(j=i+1;j{
if(arr[i]>arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
count++;
}
}
returncount;
}
//2.写一函数voidstrcat_stu(chars1[41],chars2[20]){……….},
//将两个字符串连接,并设计main函数,验证算法正确与否。
#include
#include
voidstrcat_stu(chars1[41],chars2[20])
{
intk=0,m=0;
while(s1[k]!
='\0')
k++;
while(s2[m]!
='\0')
{
s1[k]=s2[m];
m++;
k++;
}
s1[k]='\0';
}
main()
{
charstr1[41],str2[20];
strcpy(str1,"abcdefg");
strcpy(str2,"123456");
strcat_stu(str1,str2);
printf("%s\n",str1);
}
#include
f(inta)
{
intb=0;
staticintc=3;
b++;c++;
return(a+b+c);
}
实验8—3
main()
{
inta=1,i;
for(i=0;i<3;i++)
printf("%d\n",f(a));
}
//4.输入10个学生5门课的成绩,分别用函数实现下列功能:
//
(1)计算每个学生的平均分。
//
(2)计算每门课的平均分。
//(3)找出所有50个分数中最高的分数所对应的学生和课程;
//(4)计算平均分方差
#include
main()
{
floatgrade[10][5]={{78,89,76,98,87},{79,83,79,92,85},
{72,81,79,91,86},{75,84,71,95,81},
{71,84,71,92,84},{78,86,72,93,82},
{75,86,73,93,88},{76,87,73,95,83},
{79,84,75,94,89},{72,89,74,98,84},};
floataverage[10],total[10];
floataverage_course[5],total_course[5];
inti,j;
floatmax_grade;
intmax_course,max_stu;
floatf1=0,f2=0,variance;
printf("---------------计算每个学生的平均分----------------------\n");
for(i=0;i<10;i++)
{
total[i]=0;
for(j=0;j<5;j++)
{
total[i]=total[i]+grade[i][j];
}
average[i]=total[i]/5;
}
for(i=0;i<10;i++)
printf("第%d个学生的平均分为%5.2f\n",i+1,average[i]);
printf("\n----------------计算每门课的平均分-----------------------\n");
for(i=0;i<5;i++)
{
total_course[i]=0;
for(j=0;j<10;j++)
total_course[i]+=grade[j][i];
average_course[i]=total_course[i]/10;
}
for(i=0;i<5;i++)
printf("第%d门课程的平均分为%5.2f\n",i+1,average_course[i]);
printf("\n---------找出所有50个分数中最高的分数所对应的学生和课程-----------\n");
max_grade=grade[0][0];
max_stu=0;
max_course=0;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(max_grade{
max_grade=grade[i][j];
max_stu=i;
max_course=j;
}
printf("50个分数中第%d个学生的第%d门课程分数最高,最高分为%5.2f\n",max_stu+1,max_course+1,max_grade);
printf("\n-------------------计算平均分方差----------------------\n");
for(i=0;i<10;i++)
{
f1=f1+average[i]*average[i];
f2=f2+average[i];
}
variance=f1/10-(f2/10)*(f2/10);
printf("平均分方差为:
%8.4f\n",variance);
}
实验9—1—1
#include"stdio.h"
voidsub(intx,inty,int*z)
{
*z=y-x;
}
main()
{
inta,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c);
}
实验9—1—2
#include"stdio.h"
main()
{
inta[]={2,4,6,8,10},y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf("%d\n",y);
}
//定义函数voidf(floatx,int*y,float*z),
//将x的整数部分存于y所指存储单元,
//将x的小数部分存于z所指存储单元。
//并设计main函数,验证算法正确与否。
#include
voidf(floatx,int*y,float*z)
{
*y=(int)x;
*z=x-*y;
}
main()
{
floatx;
inty;floatz;
scanf("%f",&x);
f(x,&y,&z);
printf("%f的整数部分为:
%d,小数部分为:
%f\n",x,y,z);
}
//下面程序实现从10个数中找出最大值和最小值。
//请补充程序完整。
#include
intmax,min;
find_max_min(int*p,intn)
{
int*q;
max=min=*p;
for(q=p;q
if(*q>max)max=*q;
elseif(*q}
voidmain()
{
inti,num[10]={12,45,78,485,78,25,-78,69,45,-789};
//for(i=0;i<10;i++)
//scanf("%d",&num[i]);
find_max_min(num,10);
printf("max=%d,min=%d\n",max,min);
}
//4.输入10个整数,将其中最小的数与第一个数对换,
//把最大的数与最后一个数对换。
模仿第2题使用指针实现。
//写3个函数:
①输入10个数。
②进行处理。
③输出10个数。
#include
#defineN10
voidinput_data(inta[],intn);
voidprintf_data(inta[],intn);
voiddeal_data(inta[],intn);
voidswap(int*m,int*n);
main()
{
inta[N];
input_data(a,N);
deal_data(a,N);
printf_data(a,N);
}
voidinput_data(inta[],intn)
{
inti;
for(i=0;iscanf("%d",&a[i]);
}
voidprintf_data(inta[],intn)
{
inti;
for(i=0;iprintf("%6d",a[i]);
}
voiddeal_data(inta[],intn)
{
inti;
intmin_pos=0,max_p