计算机C语言实验报告含答案.docx
《计算机C语言实验报告含答案.docx》由会员分享,可在线阅读,更多相关《计算机C语言实验报告含答案.docx(14页珍藏版)》请在冰豆网上搜索。
计算机C语言实验报告含答案
高级语言程序设计(C语言)实验报告。
………………………………………………………………………………………………
一、实验题目:
语句与顺序结构控制
程序设计
1)编写程序,已知圆半径radius=1.25,求圆周长和面积。
源代码:
运行结果:
#included=7.853981
#definePI3.1415926s=4.908735
voidmain()
{
floatr=1.25,d,s;
d=2.0*PI*r;
s=PI*r*r;
printf("d=%f\n",d);
printf("s=%f\n",s);
}
2)编写程序完成大写字母的小写转换。
#include请输入一个大写字母:
H
voidmain()Hh
charch1,ch2;
printf("请输入一个大写字母:
");
ch1=getchar();
ch2=ch1+32;
printf("%c%c\n",ch1,ch2);
3)任意从键盘输入一个三位整数,要求正确分离出它的个位、十位和百位数,并分别在屏幕上显示。
#include请输入一个整数:
123
voidmain()b=1,s=2,g=3
inta,g,s,b;
printf("请输入一个整数:
scanf("%d",&a);
b=a/100;
s=(a%100)/10;
g=a%10;
printf("b=%d,s=%d,g=%d\n",b,s,g);
二、实验题目:
选择结构程序设计
1)设变量a、b、c分别存放从键盘输入的3个整数。
编写程序,按从大到小的顺序排列这3个整数,使a成为最大的,c成为最小的,并且按序输出这3个整数。
#includepleaseinputa,b,c:
4,6,10
voidmain()10,6,4
inta,b,c,t;
printf("pleaseinputa,b,c:
scanf("%d,%d,%d",&a,&b,&c);
if(a
if(aif(bprintf("%d%d%d\n",a,b,c);}2)输入某学生的考试成绩等级A、B、C、D,要求按照等级输出对应的分数段。A级对应分数段为80~100,B级对应分数段70~79,C级对应分数段60~69,D级对应分数段为60分以下。源代码:运行结果:#include请输入成绩等级Bvoidmain()B---70~79{charc;printf("请输入成绩等级");c=getchar();switch(c){case'A':printf("%c---80~100\n",c);break;case'B':printf("%c---70~79\n",c);break;case'C':printf("%c---60~69\n",c);break;case'D':printf("%c---60分以下\n",c);break;default:printf("输入错误\n");}}三、实验题目:循环结构程序设计程序设计1)找出100-900之间的无暇素数。所谓无暇素数是指本身为素数,且其逆序数也是素数的数。例如:113是一个素数,311也是一个素数,113就是无暇素数。源代码:运行结果:#include101107113131149voidmain()151157167179181{191199311313337inti,j,flag1,flag2,g,s,b,r,count;347353359373383count=0;389701709727733for(i=100;i<=900;i++)739743751757761{769787797b=i/100;s=(i%100)/10;g=i%10;r=g*100+s*10+b;flag1=flag2=1;for(j=2;jif(i%j==0)flag1=0;for(j=2;jif(r%j==0)flag2=0;if(flag1&&flag2){count++;printf("%5d",i);if(count%5==0)printf("\n");}}}2)编程:用迭代法求某数a的平方根。平方根的迭代公式如下:xn+1=(xn+a/xn)/2;设x0=a/2;当迭代相邻两项差的绝对值小于10-5时,迭代结束。源代码:运行结果:#include请输入一个实数:4#include2.000000,2.000000voidmain(){doublea,x1,x2,d;printf("请输入一个实数:");scanf("%lf",&a);x1=a/2.0;do{x2=(x1+a/x1)/2.0;d=fabs(x1-x2);x1=x2;}while(d>=1.0E-5);printf("%f,%f\n",x2,sqrt(a));}四、实验题目:数组程序设计1)完全数(Perfectnumber),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。编程找出1000以内的所有完全数,并输出使该数成为完全数的因子。(例如6=1+2+3。按照6,itsfactorsare1,2,3格式输出)。源代码:运行结果:#include6,itsfactsare123voidmain()28,itsfactsare124714{496,itsfactsare1248163162124248inti,j,count,sum,f[1000];for(i=2;i<=1000;i++){count=0;sum=0;for(j=1;jif(i%j==0){f[count]=j;sum=sum+f[count];count++;}if(i==sum){printf("%d,itsfactsare",i);for(j=0;jprintf("\n");}}}2)从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b。源代码:运行结果:#includedfghj#includeqwerty#defineN80dqwertyfghjvoidmain(){chara[N],b[N],c[N];intmin,i,j,n;gets(a);gets(b);min=0;for(i=1;a[i]!='\0';i++)if(a[i]n=strlen(b);for(j=0,i=min+1;a[i]!='\0';i++)c[j++]=a[i];c[j]='\0';a[min+1]='\0';strcat(a,b);strcat(a,c);puts(a);}五、实验题目:函数程序设计1)编程实现求两个正整数的最大公约数,要求计算最大公约数用函数fun(inta,intb)实现。源代码:运行结果:#include请输入两个整数:126inthcf(intm,intn)/*求最大公约数的函数*/a=6{intt,r;if(n>m){t=n;n=m;m=t;}while((r=m%n)!=0){m=n;n=r;}return(n);}voidmain(){intm,n,a;printf("请输入两个整数:");scanf("%d%d",&m,&n);a=hcf(m,n);printf("a=%d\n",a);}2)编程实现打印出2~n之间的所有素数,要求判断素数过程用自定义函数实现。源代码:运行结果:#includeinputn:20intisprime(intn)235711131719{inti;for(i=2;iif(n%i==0)return0;return1;}voidmain(){inti,n;printf("inputn:");scanf("%d",&n);for(i=2;i<=n;i++)if(isprime(i))printf("%d",i);}3)编写函数fun(intt),它的功能是:求斐波那契数列中大于t的最小的一个数,结果由函数返回。其中斐波那契数列f(n)的定义为:f(1)=1,f(2)=1f(n)=f(n-1)+f(n-2)(n>2)例如:当t=1000时,函数值为:1597。源代码:运行结果:#includeInputnplease:1000intfun(intt)n=1000,f=1597{intf1,f2,f;f1=f2=1;f=f1+f2;while(f<=t){f1=f2;f2=f;f=f1+f2;}returnf;}voidmain(){intn;printf("Inputnplease:");scanf("%d",&n);printf("n=%d,f=%d\n",n,fun(n));}六、实验题目:指针程序设计1)分别求出数组中所有3的倍数之和以及5的倍数之和。形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。例如:数组中的值依次为:1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。请在下面空白处完善这一函数的功能,并且调试运行出结果。源代码:运行结果:#includeTheoriginaldatais:#defineN20159231511610voidfun(int*a,intn,int*three,int*five)3的倍数之和:33{inti;5的倍数之和:30*three=*five=0;for(i=0;i{if(a[i]%3==0)*three+=a[i];if(a[i]%5==0)*five+=a[i];}}voidmain(){inta[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;printf("Theoriginaldatais:\n");for(i=0;iprintf("%5d",*(a+i));printf("\n\n");fun(a,n,&three,&five);printf("3的倍数之和:%d\n",three);printf("5的倍数之和:%d\n",five);}2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。源代码:运行结果:#include请输入一个字符串:#includeabcdefgvoidreverse(char*p,intn)gfedcba{char*q,t;for(q=p+n-1;p{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
if(bprintf("%d%d%d\n",a,b,c);}2)输入某学生的考试成绩等级A、B、C、D,要求按照等级输出对应的分数段。A级对应分数段为80~100,B级对应分数段70~79,C级对应分数段60~69,D级对应分数段为60分以下。源代码:运行结果:#include请输入成绩等级Bvoidmain()B---70~79{charc;printf("请输入成绩等级");c=getchar();switch(c){case'A':printf("%c---80~100\n",c);break;case'B':printf("%c---70~79\n",c);break;case'C':printf("%c---60~69\n",c);break;case'D':printf("%c---60分以下\n",c);break;default:printf("输入错误\n");}}三、实验题目:循环结构程序设计程序设计1)找出100-900之间的无暇素数。所谓无暇素数是指本身为素数,且其逆序数也是素数的数。例如:113是一个素数,311也是一个素数,113就是无暇素数。源代码:运行结果:#include101107113131149voidmain()151157167179181{191199311313337inti,j,flag1,flag2,g,s,b,r,count;347353359373383count=0;389701709727733for(i=100;i<=900;i++)739743751757761{769787797b=i/100;s=(i%100)/10;g=i%10;r=g*100+s*10+b;flag1=flag2=1;for(j=2;jif(i%j==0)flag1=0;for(j=2;jif(r%j==0)flag2=0;if(flag1&&flag2){count++;printf("%5d",i);if(count%5==0)printf("\n");}}}2)编程:用迭代法求某数a的平方根。平方根的迭代公式如下:xn+1=(xn+a/xn)/2;设x0=a/2;当迭代相邻两项差的绝对值小于10-5时,迭代结束。源代码:运行结果:#include请输入一个实数:4#include2.000000,2.000000voidmain(){doublea,x1,x2,d;printf("请输入一个实数:");scanf("%lf",&a);x1=a/2.0;do{x2=(x1+a/x1)/2.0;d=fabs(x1-x2);x1=x2;}while(d>=1.0E-5);printf("%f,%f\n",x2,sqrt(a));}四、实验题目:数组程序设计1)完全数(Perfectnumber),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。编程找出1000以内的所有完全数,并输出使该数成为完全数的因子。(例如6=1+2+3。按照6,itsfactorsare1,2,3格式输出)。源代码:运行结果:#include6,itsfactsare123voidmain()28,itsfactsare124714{496,itsfactsare1248163162124248inti,j,count,sum,f[1000];for(i=2;i<=1000;i++){count=0;sum=0;for(j=1;jif(i%j==0){f[count]=j;sum=sum+f[count];count++;}if(i==sum){printf("%d,itsfactsare",i);for(j=0;jprintf("\n");}}}2)从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b。源代码:运行结果:#includedfghj#includeqwerty#defineN80dqwertyfghjvoidmain(){chara[N],b[N],c[N];intmin,i,j,n;gets(a);gets(b);min=0;for(i=1;a[i]!='\0';i++)if(a[i]n=strlen(b);for(j=0,i=min+1;a[i]!='\0';i++)c[j++]=a[i];c[j]='\0';a[min+1]='\0';strcat(a,b);strcat(a,c);puts(a);}五、实验题目:函数程序设计1)编程实现求两个正整数的最大公约数,要求计算最大公约数用函数fun(inta,intb)实现。源代码:运行结果:#include请输入两个整数:126inthcf(intm,intn)/*求最大公约数的函数*/a=6{intt,r;if(n>m){t=n;n=m;m=t;}while((r=m%n)!=0){m=n;n=r;}return(n);}voidmain(){intm,n,a;printf("请输入两个整数:");scanf("%d%d",&m,&n);a=hcf(m,n);printf("a=%d\n",a);}2)编程实现打印出2~n之间的所有素数,要求判断素数过程用自定义函数实现。源代码:运行结果:#includeinputn:20intisprime(intn)235711131719{inti;for(i=2;iif(n%i==0)return0;return1;}voidmain(){inti,n;printf("inputn:");scanf("%d",&n);for(i=2;i<=n;i++)if(isprime(i))printf("%d",i);}3)编写函数fun(intt),它的功能是:求斐波那契数列中大于t的最小的一个数,结果由函数返回。其中斐波那契数列f(n)的定义为:f(1)=1,f(2)=1f(n)=f(n-1)+f(n-2)(n>2)例如:当t=1000时,函数值为:1597。源代码:运行结果:#includeInputnplease:1000intfun(intt)n=1000,f=1597{intf1,f2,f;f1=f2=1;f=f1+f2;while(f<=t){f1=f2;f2=f;f=f1+f2;}returnf;}voidmain(){intn;printf("Inputnplease:");scanf("%d",&n);printf("n=%d,f=%d\n",n,fun(n));}六、实验题目:指针程序设计1)分别求出数组中所有3的倍数之和以及5的倍数之和。形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。例如:数组中的值依次为:1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。请在下面空白处完善这一函数的功能,并且调试运行出结果。源代码:运行结果:#includeTheoriginaldatais:#defineN20159231511610voidfun(int*a,intn,int*three,int*five)3的倍数之和:33{inti;5的倍数之和:30*three=*five=0;for(i=0;i{if(a[i]%3==0)*three+=a[i];if(a[i]%5==0)*five+=a[i];}}voidmain(){inta[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;printf("Theoriginaldatais:\n");for(i=0;iprintf("%5d",*(a+i));printf("\n\n");fun(a,n,&three,&five);printf("3的倍数之和:%d\n",three);printf("5的倍数之和:%d\n",five);}2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。源代码:运行结果:#include请输入一个字符串:#includeabcdefgvoidreverse(char*p,intn)gfedcba{char*q,t;for(q=p+n-1;p{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
printf("%d%d%d\n",a,b,c);
2)输入某学生的考试成绩等级A、B、C、D,要求按照等级输出对应的分数段。
A级对应分数段为80~100,B级对应分数段70~79,C级对应分数段60~69,D级对应分数段为60分以下。
#include请输入成绩等级B
voidmain()B---70~79
charc;
printf("请输入成绩等级");
c=getchar();
switch(c)
case'A':
printf("%c---80~100\n",c);break;
case'B':
printf("%c---70~79\n",c);break;
case'C':
printf("%c---60~69\n",c);break;
case'D':
printf("%c---60分以下\n",c);break;
default:
printf("输入错误\n");
三、实验题目:
循环结构程序设计
1)找出100-900之间的无暇素数。
所谓无暇素数是指本身为素数,且其逆序数也是素数的数。
例如:
113是一个素数,311也是一个素数,113就是无暇素数。
#include101107113131149
voidmain()151157167179181
{191199311313337
inti,j,flag1,flag2,g,s,b,r,count;347353359373383
count=0;389701709727733
for(i=100;i<=900;i++)739743751757761
{769787797
b=i/100;
s=(i%100)/10;
g=i%10;
r=g*100+s*10+b;
flag1=flag2=1;
for(j=2;j
if(i%j==0)flag1=0;
for(j=2;jif(r%j==0)flag2=0;if(flag1&&flag2){count++;printf("%5d",i);if(count%5==0)printf("\n");}}}2)编程:用迭代法求某数a的平方根。平方根的迭代公式如下:xn+1=(xn+a/xn)/2;设x0=a/2;当迭代相邻两项差的绝对值小于10-5时,迭代结束。源代码:运行结果:#include请输入一个实数:4#include2.000000,2.000000voidmain(){doublea,x1,x2,d;printf("请输入一个实数:");scanf("%lf",&a);x1=a/2.0;do{x2=(x1+a/x1)/2.0;d=fabs(x1-x2);x1=x2;}while(d>=1.0E-5);printf("%f,%f\n",x2,sqrt(a));}四、实验题目:数组程序设计1)完全数(Perfectnumber),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。编程找出1000以内的所有完全数,并输出使该数成为完全数的因子。(例如6=1+2+3。按照6,itsfactorsare1,2,3格式输出)。源代码:运行结果:#include6,itsfactsare123voidmain()28,itsfactsare124714{496,itsfactsare1248163162124248inti,j,count,sum,f[1000];for(i=2;i<=1000;i++){count=0;sum=0;for(j=1;jif(i%j==0){f[count]=j;sum=sum+f[count];count++;}if(i==sum){printf("%d,itsfactsare",i);for(j=0;jprintf("\n");}}}2)从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b。源代码:运行结果:#includedfghj#includeqwerty#defineN80dqwertyfghjvoidmain(){chara[N],b[N],c[N];intmin,i,j,n;gets(a);gets(b);min=0;for(i=1;a[i]!='\0';i++)if(a[i]n=strlen(b);for(j=0,i=min+1;a[i]!='\0';i++)c[j++]=a[i];c[j]='\0';a[min+1]='\0';strcat(a,b);strcat(a,c);puts(a);}五、实验题目:函数程序设计1)编程实现求两个正整数的最大公约数,要求计算最大公约数用函数fun(inta,intb)实现。源代码:运行结果:#include请输入两个整数:126inthcf(intm,intn)/*求最大公约数的函数*/a=6{intt,r;if(n>m){t=n;n=m;m=t;}while((r=m%n)!=0){m=n;n=r;}return(n);}voidmain(){intm,n,a;printf("请输入两个整数:");scanf("%d%d",&m,&n);a=hcf(m,n);printf("a=%d\n",a);}2)编程实现打印出2~n之间的所有素数,要求判断素数过程用自定义函数实现。源代码:运行结果:#includeinputn:20intisprime(intn)235711131719{inti;for(i=2;iif(n%i==0)return0;return1;}voidmain(){inti,n;printf("inputn:");scanf("%d",&n);for(i=2;i<=n;i++)if(isprime(i))printf("%d",i);}3)编写函数fun(intt),它的功能是:求斐波那契数列中大于t的最小的一个数,结果由函数返回。其中斐波那契数列f(n)的定义为:f(1)=1,f(2)=1f(n)=f(n-1)+f(n-2)(n>2)例如:当t=1000时,函数值为:1597。源代码:运行结果:#includeInputnplease:1000intfun(intt)n=1000,f=1597{intf1,f2,f;f1=f2=1;f=f1+f2;while(f<=t){f1=f2;f2=f;f=f1+f2;}returnf;}voidmain(){intn;printf("Inputnplease:");scanf("%d",&n);printf("n=%d,f=%d\n",n,fun(n));}六、实验题目:指针程序设计1)分别求出数组中所有3的倍数之和以及5的倍数之和。形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。例如:数组中的值依次为:1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。请在下面空白处完善这一函数的功能,并且调试运行出结果。源代码:运行结果:#includeTheoriginaldatais:#defineN20159231511610voidfun(int*a,intn,int*three,int*five)3的倍数之和:33{inti;5的倍数之和:30*three=*five=0;for(i=0;i{if(a[i]%3==0)*three+=a[i];if(a[i]%5==0)*five+=a[i];}}voidmain(){inta[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;printf("Theoriginaldatais:\n");for(i=0;iprintf("%5d",*(a+i));printf("\n\n");fun(a,n,&three,&five);printf("3的倍数之和:%d\n",three);printf("5的倍数之和:%d\n",five);}2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。源代码:运行结果:#include请输入一个字符串:#includeabcdefgvoidreverse(char*p,intn)gfedcba{char*q,t;for(q=p+n-1;p{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
if(r%j==0)flag2=0;
if(flag1&&flag2)
{count++;
printf("%5d",i);
if(count%5==0)printf("\n");
2)编程:
用迭代法求某数a的平方根。
平方根的迭代公式如下:
xn+1=(xn+a/xn)/2;设x0=a/2;
当迭代相邻两项差的绝对值小于10-5时,迭代结束。
#include请输入一个实数:
4
#include2.000000,2.000000
doublea,x1,x2,d;
printf("请输入一个实数:
scanf("%lf",&a);
x1=a/2.0;
do
x2=(x1+a/x1)/2.0;
d=fabs(x1-x2);
x1=x2;
while(d>=1.0E-5);
printf("%f,%f\n",x2,sqrt(a));
四、实验题目:
数组
1)完全数(Perfectnumber),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
编程找出1000以内的所有完全数,并输出使该数成为完全数的因子。
(例如6=1+2+3。
按照6,itsfactorsare1,2,3格式输出)。
#include6,itsfactsare123
voidmain()28,itsfactsare124714
{496,itsfactsare1248163162124248
inti,j,count,sum,f[1000];
for(i=2;i<=1000;i++)
count=0;sum=0;
for(j=1;j
if(i%j==0)
f[count]=j;
sum=sum+f[count];
count++;
if(i==sum)
printf("%d,itsfactsare",i);
for(j=0;jprintf("\n");}}}2)从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b。源代码:运行结果:#includedfghj#includeqwerty#defineN80dqwertyfghjvoidmain(){chara[N],b[N],c[N];intmin,i,j,n;gets(a);gets(b);min=0;for(i=1;a[i]!='\0';i++)if(a[i]n=strlen(b);for(j=0,i=min+1;a[i]!='\0';i++)c[j++]=a[i];c[j]='\0';a[min+1]='\0';strcat(a,b);strcat(a,c);puts(a);}五、实验题目:函数程序设计1)编程实现求两个正整数的最大公约数,要求计算最大公约数用函数fun(inta,intb)实现。源代码:运行结果:#include请输入两个整数:126inthcf(intm,intn)/*求最大公约数的函数*/a=6{intt,r;if(n>m){t=n;n=m;m=t;}while((r=m%n)!=0){m=n;n=r;}return(n);}voidmain(){intm,n,a;printf("请输入两个整数:");scanf("%d%d",&m,&n);a=hcf(m,n);printf("a=%d\n",a);}2)编程实现打印出2~n之间的所有素数,要求判断素数过程用自定义函数实现。源代码:运行结果:#includeinputn:20intisprime(intn)235711131719{inti;for(i=2;iif(n%i==0)return0;return1;}voidmain(){inti,n;printf("inputn:");scanf("%d",&n);for(i=2;i<=n;i++)if(isprime(i))printf("%d",i);}3)编写函数fun(intt),它的功能是:求斐波那契数列中大于t的最小的一个数,结果由函数返回。其中斐波那契数列f(n)的定义为:f(1)=1,f(2)=1f(n)=f(n-1)+f(n-2)(n>2)例如:当t=1000时,函数值为:1597。源代码:运行结果:#includeInputnplease:1000intfun(intt)n=1000,f=1597{intf1,f2,f;f1=f2=1;f=f1+f2;while(f<=t){f1=f2;f2=f;f=f1+f2;}returnf;}voidmain(){intn;printf("Inputnplease:");scanf("%d",&n);printf("n=%d,f=%d\n",n,fun(n));}六、实验题目:指针程序设计1)分别求出数组中所有3的倍数之和以及5的倍数之和。形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。例如:数组中的值依次为:1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。请在下面空白处完善这一函数的功能,并且调试运行出结果。源代码:运行结果:#includeTheoriginaldatais:#defineN20159231511610voidfun(int*a,intn,int*three,int*five)3的倍数之和:33{inti;5的倍数之和:30*three=*five=0;for(i=0;i{if(a[i]%3==0)*three+=a[i];if(a[i]%5==0)*five+=a[i];}}voidmain(){inta[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;printf("Theoriginaldatais:\n");for(i=0;iprintf("%5d",*(a+i));printf("\n\n");fun(a,n,&three,&five);printf("3的倍数之和:%d\n",three);printf("5的倍数之和:%d\n",five);}2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。源代码:运行结果:#include请输入一个字符串:#includeabcdefgvoidreverse(char*p,intn)gfedcba{char*q,t;for(q=p+n-1;p{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
printf("\n");
2)从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b。
#includedfghj
#includeqwerty
#defineN80dqwertyfghj
chara[N],b[N],c[N];
intmin,i,j,n;
gets(a);
gets(b);
min=0;
for(i=1;a[i]!
='\0';i++)
if(a[i]n=strlen(b);for(j=0,i=min+1;a[i]!='\0';i++)c[j++]=a[i];c[j]='\0';a[min+1]='\0';strcat(a,b);strcat(a,c);puts(a);}五、实验题目:函数程序设计1)编程实现求两个正整数的最大公约数,要求计算最大公约数用函数fun(inta,intb)实现。源代码:运行结果:#include请输入两个整数:126inthcf(intm,intn)/*求最大公约数的函数*/a=6{intt,r;if(n>m){t=n;n=m;m=t;}while((r=m%n)!=0){m=n;n=r;}return(n);}voidmain(){intm,n,a;printf("请输入两个整数:");scanf("%d%d",&m,&n);a=hcf(m,n);printf("a=%d\n",a);}2)编程实现打印出2~n之间的所有素数,要求判断素数过程用自定义函数实现。源代码:运行结果:#includeinputn:20intisprime(intn)235711131719{inti;for(i=2;iif(n%i==0)return0;return1;}voidmain(){inti,n;printf("inputn:");scanf("%d",&n);for(i=2;i<=n;i++)if(isprime(i))printf("%d",i);}3)编写函数fun(intt),它的功能是:求斐波那契数列中大于t的最小的一个数,结果由函数返回。其中斐波那契数列f(n)的定义为:f(1)=1,f(2)=1f(n)=f(n-1)+f(n-2)(n>2)例如:当t=1000时,函数值为:1597。源代码:运行结果:#includeInputnplease:1000intfun(intt)n=1000,f=1597{intf1,f2,f;f1=f2=1;f=f1+f2;while(f<=t){f1=f2;f2=f;f=f1+f2;}returnf;}voidmain(){intn;printf("Inputnplease:");scanf("%d",&n);printf("n=%d,f=%d\n",n,fun(n));}六、实验题目:指针程序设计1)分别求出数组中所有3的倍数之和以及5的倍数之和。形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。例如:数组中的值依次为:1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。请在下面空白处完善这一函数的功能,并且调试运行出结果。源代码:运行结果:#includeTheoriginaldatais:#defineN20159231511610voidfun(int*a,intn,int*three,int*five)3的倍数之和:33{inti;5的倍数之和:30*three=*five=0;for(i=0;i{if(a[i]%3==0)*three+=a[i];if(a[i]%5==0)*five+=a[i];}}voidmain(){inta[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;printf("Theoriginaldatais:\n");for(i=0;iprintf("%5d",*(a+i));printf("\n\n");fun(a,n,&three,&five);printf("3的倍数之和:%d\n",three);printf("5的倍数之和:%d\n",five);}2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。源代码:运行结果:#include请输入一个字符串:#includeabcdefgvoidreverse(char*p,intn)gfedcba{char*q,t;for(q=p+n-1;p{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
n=strlen(b);
for(j=0,i=min+1;a[i]!
c[j++]=a[i];c[j]='\0';a[min+1]='\0';
strcat(a,b);
strcat(a,c);
puts(a);
五、实验题目:
函数
1)编程实现求两个正整数的最大公约数,要求计算最大公约数用函数
fun(inta,intb)实现。
#include请输入两个整数:
126
inthcf(intm,intn)/*求最大公约数的函数*/a=6
{intt,r;
if(n>m)
{t=n;n=m;m=t;}
while((r=m%n)!
=0)
{m=n;n=r;}
return(n);
intm,n,a;
printf("请输入两个整数:
scanf("%d%d",&m,&n);
a=hcf(m,n);
printf("a=%d\n",a);
2)编程实现打印出2~n之间的所有素数,要求判断素数过程用自定义函数实现。
#includeinputn:
20
intisprime(intn)235711131719
{inti;
for(i=2;iif(n%i==0)return0;return1;}voidmain(){inti,n;printf("inputn:");scanf("%d",&n);for(i=2;i<=n;i++)if(isprime(i))printf("%d",i);}3)编写函数fun(intt),它的功能是:求斐波那契数列中大于t的最小的一个数,结果由函数返回。其中斐波那契数列f(n)的定义为:f(1)=1,f(2)=1f(n)=f(n-1)+f(n-2)(n>2)例如:当t=1000时,函数值为:1597。源代码:运行结果:#includeInputnplease:1000intfun(intt)n=1000,f=1597{intf1,f2,f;f1=f2=1;f=f1+f2;while(f<=t){f1=f2;f2=f;f=f1+f2;}returnf;}voidmain(){intn;printf("Inputnplease:");scanf("%d",&n);printf("n=%d,f=%d\n",n,fun(n));}六、实验题目:指针程序设计1)分别求出数组中所有3的倍数之和以及5的倍数之和。形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。例如:数组中的值依次为:1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。请在下面空白处完善这一函数的功能,并且调试运行出结果。源代码:运行结果:#includeTheoriginaldatais:#defineN20159231511610voidfun(int*a,intn,int*three,int*five)3的倍数之和:33{inti;5的倍数之和:30*three=*five=0;for(i=0;i{if(a[i]%3==0)*three+=a[i];if(a[i]%5==0)*five+=a[i];}}voidmain(){inta[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;printf("Theoriginaldatais:\n");for(i=0;iprintf("%5d",*(a+i));printf("\n\n");fun(a,n,&three,&five);printf("3的倍数之和:%d\n",three);printf("5的倍数之和:%d\n",five);}2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。源代码:运行结果:#include请输入一个字符串:#includeabcdefgvoidreverse(char*p,intn)gfedcba{char*q,t;for(q=p+n-1;p{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
if(n%i==0)
return0;
return1;
{inti,n;
printf("inputn:
scanf("%d",&n);
for(i=2;i<=n;i++)
if(isprime(i))
printf("%d",i);
3)编写函数fun(intt),它的功能是:
求斐波那契数列中大于t的最小的一个数,结果由函数返回。
其中斐波那契数列f(n)的定义为:
f
(1)=1,f
(2)=1
f(n)=f(n-1)+f(n-2)(n>2)
当t=1000时,函数值为:
1597。
#includeInputnplease:
1000
intfun(intt)n=1000,f=1597
{intf1,f2,f;
f1=f2=1;
f=f1+f2;
while(f<=t)
{f1=f2;
f2=f;
returnf;
{intn;
printf("Inputnplease:
printf("n=%d,f=%d\n",n,fun(n));
六、实验题目:
指针
1)分别求出数组中所有3的倍数之和以及5的倍数之和。
形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。
数组中的值依次为:
1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。
请在下面空白处完善这一函数的功能,并且调试运行出结果。
#includeTheoriginaldatais:
#defineN20159231511610
voidfun(int*a,intn,int*three,int*five)3的倍数之和:
33
{inti;5的倍数之和:
30
*three=*five=0;
for(i=0;i{if(a[i]%3==0)*three+=a[i];if(a[i]%5==0)*five+=a[i];}}voidmain(){inta[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;printf("Theoriginaldatais:\n");for(i=0;iprintf("%5d",*(a+i));printf("\n\n");fun(a,n,&three,&five);printf("3的倍数之和:%d\n",three);printf("5的倍数之和:%d\n",five);}2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。源代码:运行结果:#include请输入一个字符串:#includeabcdefgvoidreverse(char*p,intn)gfedcba{char*q,t;for(q=p+n-1;p{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
{if(a[i]%3==0)*three+=a[i];
if(a[i]%5==0)*five+=a[i];
inta[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;
printf("Theoriginaldatais:
\n");
for(i=0;iprintf("%5d",*(a+i));printf("\n\n");fun(a,n,&three,&five);printf("3的倍数之和:%d\n",three);printf("5的倍数之和:%d\n",five);}2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。源代码:运行结果:#include请输入一个字符串:#includeabcdefgvoidreverse(char*p,intn)gfedcba{char*q,t;for(q=p+n-1;p{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
printf("%5d",*(a+i));
printf("\n\n");
fun(a,n,&three,&five);
printf("3的倍数之和:
%d\n",three);
printf("5的倍数之和:
%d\n",five);
2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。
(例如输入abcdef,输出fedcba)。
请编写相应的程序代码,并调试运行出正确结果。
#include请输入一个字符串:
#includeabcdefg
voidreverse(char*p,intn)gfedcba
char*q,t;
for(q=p+n-1;p{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
{t=*p;*p=*q;*q=t;}}voidmain(){chars[80];intn;printf("请输入一个字符串:\n");gets(s);n=strlen(s);reverse(s,n);puts(s);}七、实验题目:结构体和共用体程序验证:启动vc语言环境,输入并执行个运行结果:#includeInputstudent’snumberstructstu003{name=Aliceintnum;sex=Wcharname[10];age=22charsex;79789697intage;intscore[4];}students[]={{001,"David",'M',25,{80,78,92,94}},{002,"Lily",'W',23,{90,84,89,95}},{003,"Alice",'W',22,{79,78,96,97}},voidmain(){inti,j,number;printf("Inputstudent’snumber\n");scanf("%d",&number);for(i=0;i<3;i++)if(number==students[i].num)break;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);for(j=0;j<4;j++)printf("%d",students[i].score[j]);printf("\n");}程序设计:某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。编写一个统计每人得票数的程序。要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。源代码:运行结果:#include请输入总票数3#include李宁structperson王新{赵广charname[18];李宁,1intcount;王新,1}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1voidmain()陈奇,0{六六,0inti,j,k;charleader_name[18];printf("请输入总票数");scanf("%d",&k);for(i=1;i<=k;i++){scanf("%s",leader_name);for(j=0;j<5;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<5;i++)printf("%5s,%d\n",leader[i].name,leader[i].count);}八、实验题目:文件1.程序验证用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。#include#includevoidmain(){FILE*in,*out;if((in=fopen("file1.txt","r"))==NULL){printf("Can’topenthisfile.\n");exit(0);}if((out=fopen("file2.txt","w"))==NULL){printf("Can’topenthisfile.\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}程序功能:把文件file1.txt中的内容复制到文件file2.txt中。程序输出结果:(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。2.程序设计编程:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。源代码:运行结果:#include"stdio.h"请输入第1位同学的学号001#include"stdlib.h"请输入第1位同学的姓名qvoidmain()请输入第1位同学的分数607080{请输入第2位同学的学号002structstudent请输入第2位同学的姓名w{intnum;请输入第2位同学的分数708090charname[20];请输入第3位同学的学号003floatscore[3];请输入第3位同学的姓名efloatsum;请输入第3位同学的分数8090100}stu[5];请输入第4位同学的学号004inti,j;请输入第4位同学的姓名rFILE*fp;请输入第4位同学的分数908070if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005{printf("can'topenthisfile");请输入第5位同学的姓名texit(0);请输入第5位同学的分数808090}for(i=0;i<5;i++){printf("请输入第%d位同学的学号",i+1);scanf("%d",&stu[i].num);printf("请输入第%d位同学的姓名",i+1);scanf("%s",&stu[i].name);printf("请输入第%d位同学的分数",i+1);stu[i].sum=0;for(j=0;j<3;j++){scanf("%f",&stu[i].score[j]);stu[i].sum+=stu[i].score[j];}}for(i=0;i<5;i++)fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);}stu.txt的内容:1q60.00000070.00000080.000000210.0000002w70.00000080.00000090.000000240.0000003e80.00000090.000000100.000000270.0000004r90.00000080.00000070.000000240.0000005t80.00000080.00000090.000000250.000000
{t=*p;*p=*q;*q=t;}
chars[80];
intn;
printf("请输入一个字符串:
gets(s);
n=strlen(s);
reverse(s,n);
puts(s);
七、实验题目:
结构体和共用体
程序验证:
启动vc语言环境,输入并执行个运行结果:
#includeInputstudent’snumber
structstu003
{name=Alice
intnum;sex=W
charname[10];age=22
charsex;79789697
intage;
intscore[4];
students[]={{001,"David",'M',25,{80,78,92,94}},
{002,"Lily",'W',23,{90,84,89,95}},
{003,"Alice",'W',22,{79,78,96,97}},
inti,j,number;
printf("Inputstudent’snumber\n");
scanf("%d",&number);
for(i=0;i<3;i++)
if(number==students[i].num)break;
printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);
for(j=0;j<4;j++)
printf("%d",students[i].score[j]);
程序设计:
某单位进行选举,有5位候选人:
李宁、王新、赵广、陈奇、六六。
编写一个统计每人得票数的程序。
要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。
#include请输入总票数3
#include李宁
structperson王新
{赵广
charname[18];李宁,1
intcount;王新,1
}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1
voidmain()陈奇,0
{六六,0
inti,j,k;
charleader_name[18];
printf("请输入总票数");
scanf("%d",&k);
for(i=1;i<=k;i++)
scanf("%s",leader_name);
for(j=0;j<5;j++)
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
for(i=0;i<5;i++)
printf("%5s,%d\n",leader[i].name,leader[i].count);
八、实验题目:
文件
1.程序验证
用记事本编辑文本文件file1.txt。
分析一下程序的功能及结果,并验证。
#include
FILE*in,*out;
if((in=fopen("file1.txt","r"))==NULL)
printf("Can’topenthisfile.\n");
exit(0);
if((out=fopen("file2.txt","w"))==NULL)
{printf("Can’topenthisfile.\n");
while(!
feof(in))
fputc(fgetc(in),out);
fclose(in);
fclose(out);
程序功能:
把文件file1.txt中的内容复制到文件file2.txt中。
程序输出结果:
(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。
2.程序设计
编程:
有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。
#include"stdio.h"请输入第1位同学的学号001
#include"stdlib.h"请输入第1位同学的姓名q
voidmain()请输入第1位同学的分数607080
{请输入第2位同学的学号002
structstudent请输入第2位同学的姓名w
{intnum;请输入第2位同学的分数708090
charname[20];请输入第3位同学的学号003
floatscore[3];请输入第3位同学的姓名e
floatsum;请输入第3位同学的分数8090100
}stu[5];请输入第4位同学的学号004
inti,j;请输入第4位同学的姓名r
FILE*fp;请输入第4位同学的分数908070
if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005
{printf("can'topenthisfile");请输入第5位同学的姓名t
exit(0);请输入第5位同学的分数808090
{printf("请输入第%d位同学的学号",i+1);
scanf("%d",&stu[i].num);
printf("请输入第%d位同学的姓名",i+1);
scanf("%s",&stu[i].name);
printf("请输入第%d位同学的分数",i+1);
stu[i].sum=0;
for(j=0;j<3;j++)
{scanf("%f",&stu[i].score[j]);
stu[i].sum+=stu[i].score[j];
fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);
stu.txt的内容:
1q60.00000070.00000080.000000210.000000
2w70.00000080.00000090.000000240.000000
3e80.00000090.000000100.000000270.000000
4r90.00000080.00000070.000000240.000000
5t80.00000080.00000090.000000250.000000
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1