c语言实验.docx
- 文档编号:9355200
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:34
- 大小:22.63KB
c语言实验.docx
《c语言实验.docx》由会员分享,可在线阅读,更多相关《c语言实验.docx(34页珍藏版)》请在冰豆网上搜索。
c语言实验
//已知下面的程序是输入一个整数,判断该整数的位数,并依次输出各位数字。
请将程序补充完整。
#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;i printf("%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;i for(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;i a[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;i for(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;i scanf("%d",&a[i]); } voidprintf_data(inta[],intn) { inti; for(i=0;i printf("%6d",a[i]); } voiddeal_data(inta[],intn) { inti; intmin_pos=0,max_pos=0; fo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)