c语言实验9函数答案 c语言实验总结与思考

C语言题,求高手看看,最好能帮我详细解释下 , 谢谢了#includestdio.h
#define N 8//宏定义N为8
fun(char *s,char a,int n)//函数
{int j;// 定义局部变量 j
*s=a;//将字符a赋值给s[0]
j=n;//将n赋值给j
while(as[j]) j;//当a小于s[j]时,变量j加1
return j;//不满足a小于s[j]时,就退出函数,返回j的值
}
main()
{char s[N 1];//定义字符数组s[9]
int k,p;
for(k=1;k=N;k)
s[k]='D' k 1;//将数组赋值为s[]={?,F,G,H,I,J,K,L,M};
printf("%d\n",fun(s,'F',N));//输出j的值
}
调用函数时,fun(s,'F',8)
{
*s = 'F';
j= 8
while('F's[8])j;//此时‘F’'M'满足while的循环条件,所以执行语句j;故 j=9;
再次判断while(‘F’s[9])//此时字符数组已经越界,s[9]是一个未知数,一般为负数
所以这次的'F's[9]就不成立了 。退出本函数 , 返回值为9.
所以本题答案:9
说实话:这个程序没有什么实际意义!
}
C语言实验报告上答案实验题目c语言实验9函数答案:
输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基?。┑某杉?。编程计算出每个学生的总分和平均分c语言实验9函数答案,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单 。要求:
1)排序用一个函数实现 。
2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分 。
3)按实验报告电子模板格式填写实验内容 。
实验目的
源程序清单:
(调试好的源程序代码)
#include stdio.h
#include stdlib.h
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id[20]; /*学生学号c语言实验9函数答案;*/
float score[3];/*三门课成绩;*/
float total;/*总成绩;*/
float aver;/*平均成绩;*/
};
/*排序用一个函数来实现*/
void SortScore(student *stu,int n)
{
student stud;
for(int i = 0; in-1; i)
for(int j = i 1 ; jn; j)
{
if(stu[i].totalstu[j].total)
{
stud = stu[i];
stu[i] = stu[j];
stu[j] = stud;
}
}
}
int main( )
{
student stu[STU_NUM]; /*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息 。*/
/*输入这十个学生的相关信息*/
for(int i = 0; iSTU_NUM; i)
{
printf("请输入第%d个学生的学号:",i 1);
scanf("%s",stu[i].stu_id);
printf("输入第%d个学生的数学成绩:",i 1);
scanf("%f",stu[i].score[0]);
printf("输入第%d个学生的英语成绩:",i 1);
scanf("%f",stu[i].score[1]);
printf("输入第%d个学生的计算机成绩:",i 1);
scanf("%f",stu[i].score[2]);
stu[i].total = stu[i].score[0] stu[i].score[1] stu[i].score[2];
stu[i].aver = stu[i].total/3;
}
printf("\n");
SortScore(stu,STU_NUM);/*调用排序函数*/
/*输出排序后的各学生的成绩*/
for(i = 0 ; iSTU_NUM; i)
{
printf("序号: %d\t",i);
printf("学号:%s\t",stu[i].stu_id);
printf("数学:%f\t",stu[i].score[0]);
printf("英语:%f\t",stu[i].score[1]);
printf("计算机:%f\t",stu[i].score[2]);
printf("平均成绩:%f\t",stu[i].aver);
printf("总分:%f\t",stu[i].total);
printf("\n\n");
}
return 0;
}
主要标识符说明:
(源程序中主要标识符含义说明)
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id[20]; /*学生学号;*/
float score[3];/*三门课成绩;*/
float total;/*总成绩;*/
float aver;/*平均成绩;*/
};
实验结果:
输入 :(只输入后面的数字,前面的文字是自己产生的)
请输入第1个学生的学号:001
输入第1个学生的数学成绩:1
输入第1个学生的英语成绩:1
输入第1个学生的计算机成绩:1
请输入第2个学生的学号:002
输入第2个学生的数学成绩:2
输入第2个学生的英语成绩:2
输入第2个学生的计算机成绩:2
请输入第3个学生的学号:003
输入第3个学生的数学成绩:3
输入第3个学生的英语成绩:3
输入第3个学生的计算机成绩:3
请输入第4个学生的学号:004
输入第4个学生的数学成绩:4
输入第4个学生的英语成绩:4
输入第4个学生的计算机成绩:4
请输入第5个学生的学号:005
输入第5个学生的数学成绩:5
输入第5个学生的英语成绩:5
输入第5个学生的计算机成绩:5
请输入第6个学生的学号:006
输入第6个学生的数学成绩:6
输入第6个学生的英语成绩:6
输入第6个学生的计算机成绩:6
请输入第7个学生的学号:007
输入第7个学生的数学成绩:7
输入第7个学生的英语成绩:7
输入第7个学生的计算机成绩:7
请输入第8个学生的学号:008
输入第8个学生的数学成绩:8
输入第8个学生的英语成绩:8
输入第8个学生的计算机成绩:8
请输入第9个学生的学号:009
输入第9个学生的数学成绩:9
输入第9个学生的英语成绩:9
输入第9个学生的计算机成绩:9
请输入第10个学生的学号:010
输入第10个学生的数学成绩:10
输入第10个学生的英语成绩:10
输入第10个学生的计算机成绩:10
输出:
序号: 0 学号:010数学:10.000000 英语:10.000000 计算机:10.000000
平均成绩:10.000000总分:30.000000
序号: 1 学号:009数学:9.000000英语:9.000000计算机:9.000000
平均成绩:9.000000总分:27.000000
序号: 2 学号:008数学:8.000000英语:8.000000计算机:8.000000
平均成绩:8.000000总分:24.000000
序号: 3 学号:007数学:7.000000英语:7.000000计算机:7.000000
平均成绩:7.000000总分:21.000000
序号: 4 学号:006数学:6.000000英语:6.000000计算机:6.000000
平均成绩:6.000000总分:18.000000
序号: 5 学号:005数学:5.000000英语:5.000000计算机:5.000000
平均成绩:5.000000总分:15.000000
序号: 6 学号:004数学:4.000000英语:4.000000计算机:4.000000
平均成绩:4.000000总分:12.000000
序号: 7 学号:003数学:3.000000英语:3.000000计算机:3.000000
平均成绩:3.000000总分:9.000000
序号: 8 学号:002数学:2.000000英语:2.000000计算机:2.000000
平均成绩:2.000000总分:6.000000
序号: 9 学号:001数学:1.000000英语:1.000000计算机:1.000000
平均成绩:1.000000总分:3.000000
实验环境:
(调试程序所使用的软硬件环境)
软件环境:VC6.0
硬件王法:CPU:赛扬2.24,内存:512M
这个报告c语言实验9函数答案我给c语言实验9函数答案你写好了,直接拷贝就好了,你看看
谁能帮找C语言基础习题C语言实验参考答案
实验一
5、输入并运行自已编写c语言实验9函数答案的程序(教材第一章P14 三 编程题) 。
实验二
1、编写一个程序c语言实验9函数答案,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a 。
#include stdio.h
main()
{float x,y,z,s,t,a;
printf(“x,y,z=”);
scanf(“%f,%f,%f”,x,y,z);
s=x y z;
t=x*y*z;
a=s/3;
printf(“s=%f,t=%f,a=%f\n”,s,t,a);
}
2、编程 。要求用户输入两个整数a、b(分别为20、10),读取用户从键盘输入的值,然后:
1)用整数输出这两个数的和、差c语言实验9函数答案;
2)用长整型输出这两个数的积,用float输出商;
3)用整数输出这两个数的余数,用float输出平均值 。
#include stdio.h
main()
{int a,b,he,cha,yu;
long ji;
float shang,aver;
printf(“a,b=”);
scanf(“%d,%d”,a,b);
he=a b;
cha=a-b;
ji=(long)a*b;
shang=1.0*a/b;
yu=a%b;
aver=(a b)/2.0;
printf(“a b=%d,a-b=%d,a*b=%ld\n”,he,cha,ji);
printf(“a/b=%f,a%%b=%d,aver=%f\n”,shang,yu,aver);
}
实验三
1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出 。例如 , 输入整数5,程序运行后输出字符5 。
#include stdio.h
main()
{int a;
char c;
printf(“a=”);
scanf(“%d”,a);
c=a 48;
putchar(c);
}
2、编程 。输入半径,计算球体表面积( )和球体积 ( ) 。
#include stdio.h
#define PI 3.1415926
main()
{float r,s,v;
printf(“r=”);
scanf(“%f”,r);
s=4*PI*r*r;
v=4/3.0*PI*r*r*r;
printf(“s=%f,v=%f\n”,s,v);
}
3、编写一个程序 , 要求通过键盘给6个变量赋值,然后将变量的值在屏幕上打印输出 。这六个变量的值分别为:10,-10,40000,a,3.14,hello 。
#include stdio.h
main()
{int a,b;
long c;
char d,ch[6];
float e;
scanf(“%d,%d,%ld,%c,%f,%s”,a,b,c,d,e,ch);
printf(“%d,%d,%ld,%c,%f,%s\n”,a,b,c,d,e,ch);
}
实验四
1、输入三个整数,分别存放到变量a,b,c中,试编程输出其中的最小值 。
#include stdio.h
main()
{int a,b,c,min;
printf(“a,b,c=”);
scanf(“%d,%d,%d”,a,b,c);
min=ab?(bc?c:b):(ac?c:a);
printf(“min=%d\n”,min);
}
2、输入一个字符,如是大写字母,则输出相应小写字母;如是小写字母 , 则输出相应大写字母;其它字符原样输出。(例如:输入F,输出f,输入b,输出B,输入7 , 输出7) 。
#include stdio.h
main()
{char c,ch;
c=getchar();
ch=c;
if(c=‘A’c=‘Z’)
ch=c 32;
if(c=‘a’c=‘z’)
ch=c-32;
putchar(ch);
}
实验五
1、函数

⑴用条件表达式求函数值y 。
⑵用if语句编程,输入x , 输出y,并给出c语言实验9函数答案你所使用的测试用例 。
解(1)
#include stdio.h
main()
{int y;
float x;
printf(“x=”);
scanf(“%f”,x);
y=x0?1:(x==0?0:-1);
printf(“y=%d\n”,y);
}
解(2)
#include stdio.h
main()
{int y;
float x;
printf(“x=”);
scanf(“%f”,x);
if(x0)
y=1;
else if(x==0)
y=0;
else
y=-1;
printf(“y=%d\n”,y);
}
2、试编程输入成绩cj(cj为整型变量),如果cj的值在[100,90]内输出A,在(90,80]内输出B,在(80,70]内输出C,在(70,60]内输出D,在(60 , 0]内输出E,其它输出错误信息 。请使用if语句和switch语句分别实现 。
解(1)
#include stdio.h
main()
{int cj;
printf(“cj=”);
scanf(“%d”,cj);
if(cj=90cj=100)
printf(“A\n”);
else if(cj=80cj90)
printf(“B\n”);
else if(cj=70cj80)
printf(“C\n”);
else if(cj=60cj70)
printf(“D\n”);
else if(cj=0cj60)
printf(“E\n”);
else
printf(“输入错误\n”);
}
解(2)
#include stdio.h
main()
{int cj,n;
printf(“cj=”);
scanf(“%d”,cj);
n=(cj=0) (cj=60) (cj=70) (cj=80) (cj=90) (cj100);
switch(n)
{case 5:printf(“A\n”);break;
case 4:printf(“B\n”); break;
case 3:printf(“C\n”); break;
case 2:printf(“D\n”); break;
case 1:printf(“E\n”); break;
default:printf(“输入错误\n”);
}
}
实验六
1、编程:输出200以内所有能被7整除的数 。
#include stdio.h
main()
{int i;
for(i=0;i=200;i =7)
printf(“M”,i);
}
2、从键盘输入n个数(n10),找出其中最小值,请编写相应程序 。
#include stdio.h
main()
{int n,i,a,min;
printf(“n=”);
scanf(“%d”,n);
for(i=1;i=n;i)
{scanf(“%d”,a);
if(i==1)min=a;
if(mina)min=a;
}
printf(“min=%d”,min);
}
3、键盘输入正整数m和n(mn),计算m~n之间所有奇数之和x与偶数之和y,请编程实现 。
#include stdio.h
main()
{int m,n,i,x1=0,x2=0;
printf(“input m,n(mn):”);
scanf(“%d,%d”,m,n);
for(i=m;i=n;i)
if(i%2==1)x1 =i;
else x2 =i;
printf(“x1(奇数之和)=%d,x2(偶数之和)=%d\n”,x1,x2);
}
实验七
1、打印出所有的"水仙花数",所谓的"水仙花数"是指一个3位数,其各位数字的立方和等于该数本身 。例如,153是一个"水仙花数" , 因为有153=1*1*1 5*5*5 3*3*3。
解(1)
#include stdio.h
main()
{int a,b,c,n;
for(a=1;a=9;a)
for(b=0;b=9;b)
for(c=0;c=9;c)
{n=100*a 10*b c;
if(n==a*a*a b*b*b c*c*c)
printf(“%d\n”,n);
}
}
解(2)
#include stdio.h
main()
{int a,b,c,n;
for(n=100;n=999;n)
{a=n/100;
b=n0/10;
c=n;
if(n==a*a*a b*b*b c*c*c)
printf(“%d\n”,n);
}
}
2、请分别用三种循环结构编程计算: 1! 2! 3! ... n!,n的值由键盘输入 。
解(1)
#include stdio.h
main()
{int n,i;
long p=1,sum=0;
printf(“n=”);
scanf(“%d”,n);
for(i=1;i=n;i)
{p*=i;
sum =p;
}
printf(“1! 2! … %d!=%ld\n”,n,sum);
}
解(2)
#include stdio.h
main()
{int n,i=1;
long p=1,sum=0;
printf(“n=”);
scanf(“%d”,n);
while(i=n)
{p*=i;
sum =p;
i;
}
printf(“1! 2! … %d!=%ld\n”,n,sum);
}
解(3)
#include stdio.h
main()
{int n,i=1;
long p=1,sum=0;
printf(“n=”);
scanf(“%d”,n);
do
{p*=i;
sum =p;
i;
}
while(i=n);
printf(“1! 2! … %d!=%ld\n”,n,sum);
}
实验八
1、打印输出由1,2 , 3,4四个数字组成的4位数,并统计它的个数(允许该4位数中有相同的数字,例如:1111,1122,,1212等). 。
#include stdio.h
main()
{int n,a,b,c,d,num=0;
for(a=1;a=4;a)
for(b=1;b=4;b)
for(c=1;c=4;c)
for(d=1;d=4;d)
{n=1000*a 100*b 10*c d;
printf(“]”,n);
num;
}
printf(“\nnum=%d\n”,num);
}
2、从键盘输入10个正整数进行求和,如果错误地输入了负数 , 则求和结束 。请分别用break和不用break编写相应程序 。
解(1) 用break编写程序
#include stdio.h
main()
{int i,n,sum=0;
for(i=1;i=10;i)
{scanf(“%d”,n);
if(n=0)sum =n;
else break;
}
printf(“sum=%d”,sum);
}
解(2) 不用break编写程序
#include stdio.h
main()
{int i=1,n=0,sum=0;
while(i=10n=0)
{scanf(“%d”,n);
if(n=0)
sum =n;
i;
}
printf(“sum=%d”,sum);
}
实验九
1、求一个3×3的整数矩阵的副对角线上所有奇数的和sum2 。
#include stdio.h
main()
{int a[3][3],sum2=0,i,j;
for(i=0;i3;i)
for(j=0;j3;j)
{scanf(“%d”,a[i][j]);
if(i j==2a[i][j]%2)
sum2 =a[i][j];
}
printf(“sum2=%d”,sum2);
}
2、输入一个正整数n(1n≤10),再输入n个整数 , 请编程实现:
⑴ 输出这些数的平均值(保留2位小数) 。
⑵ 把这些数逆序后再输出 。
⑶ 输出它们中的最大值及其下标(设最大值唯一,下标从0开始) 。
⑷ 将它们中的最小值与第一个数交换 , 最大值与最后一个数交换,然后输出交换后的n个数 。
#include stdio.h
main()
{int a[10],n,min,max,xb0,xb1,i,sum,t;
float aver;
printf(“n=”);
scanf(“%d”,n);
for(i=0;in;i)
scanf(“%d”,a[i]);
min=a[0];xb0=0;
max=a[0];xb1=0;
sum=a[0];
for(i=1;in;i)
{if(mina[i]){min=a[i];xb0=i;};
if(maxa[i]){max=a[i];xb1=i;};
sum =a[i];
}
aver=1.0*sum/n;
printf(“(1)平均值为:%3.2f\n”,aver);
printf(“(2)逆序输出:”);
for(i=n-1;i=0;i--)
printf(“M”,a[i]);
printf(“\n”);
printf(“(3)最大值为:%d,其下标为:%d\n”,max,xb1);
t=a[0];a[0]=a[xb0];a[xb0]=t;
t=a[n-1];a[n-1]=a[xb1];a[xb1]=t;
printf(“(4)经交换后输出:”);
for(i=0;in;i)
printf(“M”,a[i]);
printf(“\n”);
}
实验十
1、输入一个以回车结束的字符串(少于80个字符),将该字符串逆序后输出 。
#include stdio.h
#include string.h
main()
{char c[80],ch;
int i,l;
gets(c);
l=strlen(c);
for(i=0;il/2;i)
{ch=c[i];
c[i]=c[l-i-1];
c[l-i-1]=ch;
}
puts(c);
}
2、输入一个以回车结束的字符串(少于80个字符),再输入一个字符,统计并输出该字符在字符串中出现的次数,然后再输出该字符串 。
#include stdio.h
main()
{char c[80],ch;
int i,num=0;
gets(c);
ch=getchar();
for(i=0;c[i]!=‘\0’;i)
if(c[i]==ch)num;
printf(“num(%c)=%d\n”,ch,num);
puts(c);
}
实验十一
1、键盘输入2个字符串,将二者连接后的结果输出(用指针完成) 。
#include stdio.h
#include string.h
main()
{char a[40],b[20],*p,*q;
int i,la,lb;
gets(a);
gets(b);
la=strlen(a);
lb=strlen(b);
p=a[la];
q=b;
for(i=0;i=lb;i)
{*p=*q;
p;
q;
}
puts(a);
}
2、编一个程序,输入15个整数存入一维数组,按逆序存放后再输出(用指针完成) 。
#include stdio.h
main()
{ int i,a[15],*p=a,*q,temp;
for(i=0;i15;i)
scanf("%d",p i);
q=a[14];
for(i=0;i7;i)
{temp=*p;
*p=*q;
*q=temp;
p;
q--;
}
p=a;
for(i=0;i15;i)
printf("=",*(p i));
}
3、用指针方法,编写一个函数,求矩阵主对角线元素之和Sum 。
#include stdio.h
main()
{int i,j,a[3][3],*p=*a,sum=0;
for(i=0;i3;i)
for(j=0;j3;j)
{scanf("%d",p);
if(i==j)sum =*p;
p;
}
printf("sum=%d\n",sum);
}
4、输入一个3×6的二维整型数组,输出其中最大值、最小值以及它们所在行和列的下标(用指针完成) 。
#include stdio.h
main()
{int i,j,a[3][6],*p=*a,min,max,xb0_h,xb0_l,xb1_h,xb1_l;
for(i=0;i3;i)
for(j=0;j6;j)
{scanf("%d",p);
if(i==0j==0)
{max=*p;min=*p;
xb0_h=0;xb0_l=0;
xb1_h=0;xb1_l=0;
}
if(max*p)
{max=*p;xb1_h=i;xb1_l=j;}
if(min*p)
{min=*p;xb0_h=i;xb0_l=j;}
p;
}
printf("最大值为:%d,行标:%d,列标:%d\n",max,xb1_h,xb1_l);
printf("最小值为:%d,行标:%d,列标:%d\n",min,xb0_h,xb0_l);
}
实验十二
定义一个含10个学生成绩的结构数组(每个学生的信息包括学号、姓名、成绩),数据自定,要求:
1)求出平均成绩 。
2)将成绩从高到低排序输出 。
#include stdio.h
main()
{int i,j,g[15],temp;
float aver=0;
struct student
【c语言实验9函数答案 c语言实验总结与思考】{long num;
char name[20];
int grade;
}stu[10]={{101001,“zhao”,78},{101002,“qian”,86},
{101003,“sun”,69},{101004,“li”,77},
{101005,“zhou”,98},{101006,“wu”,56},
{101007,“zheng”,75},{101008,“wang”,88},
{101009,“chen”,73},{101010,“shen”,99}
};
for(i=0;i10;i)
{aver =stu[i].grade;g[i]=stu[i].grade;}
aver=aver/10;
printf(“(1)平均成绩:%5.2f\n”,aver);
for(i=0;i10;i)
for(j=i;j10;j)
if(g[i]g[j])
{temp=g[i];
g[i]=g[j];
g[j]=temp;
}
printf(“(2)成绩排序:”);
for(i=0;i10;i)
printf(“M”,g[i]);
printf(“\n”);
}
实验十三
1、在主函数main()中已有变量定义和函数调用语句:“int a=1 , b= -5 , c; c=fun (a,b)”; fun函数的作用是计算两个数之差的绝对值,并将差值返回调用函数 , 请
1)编写fun函数 。
fun(int x , int y)
{}
2)写出这个主函数main() 。
#include stdio.h
int fun(int x,int y);
main()
{int a=1,b=-5,c;
c=fun(a,b);
printf(“c=%d\n”,c);
}
int fun(int x,int y)
{if(xy)return x-y;
else return y-x;
}
2、定义一个函数 , 求200~500之间满足“用4除余1,(或)用5除余3,(或)用7除余4”的数 , 且一行打印6个 。
#include stdio.h
void f(int n);
main()
{int n;
for(n=200;n=500;n)
f(n);
}
void f(int n)
{static int p=0,m=0;
if(n%4==1 || n%5==3 || n%7==4)
{p;
printf("M",n);
m=1;
}
else m=0;
if(p%6==0m==1)printf("\n");
}
3、函数isprime( ) , 用来判断一个整形数a是否为素数,若是素数 , 函数返回1,否则返回0 , 请编写isprime( ) 函数 。
#include stdio.h
int isprime(int a);
main()
{int a,n=0;
printf(“a=”);
scanf(“%d”,a);
if(a0)n=isprime(a);
if(n==1)printf(“%d是素数”,a);
else printf(“%d不是素数”,a);
}
int isprime(int a)
{int m;
for(m=2;ma;m)
if(a%m==0)return 0;
return 1;
}
实验十四
1、编程实现:输入n(n10)个整数 , 按从大到小的顺序对其排序 。
#include stdio.h
main()
{int i,j,a[10],n,t;
printf(“n=”);
scanf(“%d”,n);
for(i=0;in;i)
scanf(“%d”,a[i]);
for(i=0;in;i)
for(j=i;jn;j)
if(a[i]a[j]){t=a[i];a[i]=a[j];a[j]=t;}
for(i=0;in;i)
printf(“M”,a[i]);
printf(“\n”);
}
实验十五
1、用多文件模块知识编程解决问题(题目自定) 。
实验十六
1、编程,要求实现:在主程序main( )中输入2个整数,通过调用函数将两者的值互换 。(要求分别用值传递方式,地址传递方式以及全局外部变量传递方式编程) 。
解(1) 用值传递方式编程
用值传递方式不能将两者的值互换 。
解(2) 用地址传递方式编程
#include stdio.h
void swap(int *x,int *y );
main()
{int x,y;
printf(“x,y=”);
scanf(“%d,%d”,x,y);
swap(x,y);
printf(“x=%d,y=%d\n”,x,y);
}
void swap(int *x,int *y )
{int temp;
temp=*x;
*x=*y;
*y=temp;
}
解(3) 用全局外部变量传递方式编程
#include stdio.h
void swap();
int x,y;
main()
{printf(“x,y=”);
scanf(“%d,%d”,x,y);
swap();
printf(“x=%d,y=%d\n”,x,y);
}
void swap()
{int temp;
temp=x;x=y;y=temp;
}
实验十七
1、用递归方法实现求N的阶乘 。
#include stdio.h
long fact(int n);
main()
{int n;
printf(“n=”);
scanf(“%d”,n);
if(n=0)printf(“%d!=%ld\n”,n,fact(n));
else printf(“输入错误c语言实验9函数答案!\n”);
}
long fact(int n)
{long p;
if(n=1)return 1;
else p=n*fact(n-1);
return p;
}
2、用递归方法编写求斐波那契数列的函数,返回值为长整型 。斐波那契数列的定义为: ,并写出相应主函数 。
#include stdio.h
int fib(int n);
main()
{int n,i;
printf(“n=”);
scanf(“%d”,n);
for(i=0;i=n;i)
printf(“%d,”,fib(i));
printf(“…\n”);
}
int fib(int n)
{ if(n==0) return 0;
if(n==1) return 1;
if(n1) return fib(n-1) fib(n-2);
}
实验十八
1、统计一个文本文件(该文件您自已此前已建立)中字母、数字及其它字符各有多少个 , 试编程 。
#include stdio.h
main()
{char ch;
int zm=0,sz=0,qt=0;
FILE *fp;
fp=fopen(“file1.txt”,“r”);
if(fp==NULL)
{printf(“不能打开文件file1.txt\n”);exit(0);}
while(!feof(fp))
{ch=fgetc(fp);
if((ch=‘a’ch=‘z’)||( ch=‘A’ch=‘Z’))
zm;
else if(ch=‘0’ch=‘9’)
sz;
else qt;
}
fclose(fp);
printf(“zm=%d\n”,zm);
printf(“sz=%d\n”,sz);
printf(“qt=%d\n”,qt);
}
可用以下程序,建立文件file1.txt,并写入20个字符到文件中 。
#include "stdio.h"
main()
{int i;
char ch;
FILE *fp;
if((fp=fopen("file1.txt","w"))==NULL)
{printf("file open error!\n");
exit(0);
}
for(i=0;i20;i)
{ch=getchar();
fputc(ch,fp);
}
fclose(fp);
}
2、文本文件int.txt中包含若干整数,请把文件中所有数据相加,并把累加和写入文件最后 。
#include stdio.h
main()
{int a,sum=0;
FILE *fp;
fp=fopen("file2.txt","r");
if(fp==NULL)
{printf("不能打开文件file2.txt\n");exit(0);}
while(!feof(fp))
{fscanf(fp,"-",a);
sum =a;
}
fclose(fp);
fp=fopen("file2.txt","a");
if(fp==NULL)
{printf("不能打开文件file2.txt\n");exit(0);}
fprintf(fp,"%d",sum);
fclose(fp);
}
可用以下程序,建立文件file2.txt,并写入10个整数到文件中 。
#include "stdio.h"
main()
{int i,a;
FILE *fp;
if((fp=fopen("file2.txt","w"))==NULL)
{printf("file open error!\n");
exit(0);
}
for(i=0;i10;i)
{scanf("%d",a);
fprintf(fp,"-",a);
}
fclose(fp);
}
C语言程序设计实验 起大神解答?有不理解 请追加 。尽量自己敲一遍,不要直接复制 , 对你以后有帮助!
#include stdio.h
void inputdata( int *data );
void max_min( int *data );
void outputdata( int *data );
int main()//要求函数内所有关于数组的操作用指针实现
{
int data[10] = {0};
inputdata(data);
max_min(data);
outputdata(data);
}
void inputdata( int *data )
{
for( int num = 0; num10; num)
{
scanf( "%d", (data num));
}
}
void max_min( int *data )
{
int *maxp = data9;
int *minp = data;
int temp = 0;
for ( int num = 0; num9; num)
{
if( *maxp*(datanum) )
{
temp = *maxp;
*maxp = *(datanum);
*(datanum) = temp;
}
if ( *minp*(datanum) )
{
temp = *minp;
*minp = *(datanum);
*(datanum) = temp;
}
}
}
void outputdata( int *data )
{
for( int num = 0; num10; num)
{
printf("%d ",*(data num));
}
printf("\n");
}
c语言作业9答案:
一.1.int2.33.f3==5 f2 f3
二.1.a[0]2.a[i]maxmax/10
三.1.*t2.'\0'
四.1.i2.%d 3.x%3==0 4. x%5==05.flag==0
五.1.-f 2.m 3.fun(10)
附填写后的源代码
1.
#includestdio.h
void main ( )
{
int f1, f2, f3;
int i, n ;
f1 = f2 =1;
printf("Input an integer: " );
scanf("%d", n );
printf("%9ld %9ld ", f1, f2);
for ( i= 3; i=n; i) {
f3=f1 f2 ;
printf("%9ld ", f3);
if (f3==5) printf("\n");
f1= f2;
f2= f3;
}
}
2.
#includestdio.h
void main( )
{
int i, a[10], sum=0, max = -32768 ;
printf("input 10 numbers:\n");
for( i=0; i10 ; i) {
scanf ("%d", a[i] );
sum= a[0];
if(a[i]max) max =a[i] ;
}
printf ("average = %0.2f, max =%d",max/10 , max );
}
3.
void strcpy ( char *s ,char *t )
{
for( ;*t!='\0' ; s, t)
*s = *t ;
*s = '\0' ;
}
4.
#includestdio.h
void main( )
{ int i, x, flag=0;
printf("input 15 numbers:\n");
for( i=1;i=15 ; i) {
scanf ("%d",x);
if ( x%3==0x%5==0 ) {
printf ("%d ",x);
flag;
}
}
if ( flag==0 ) printf("not exist");
}
5.
#includestdio.h
int fun( int n)
{ int m=0,f=1,i;
for(i=1; i=n; i) {
m =i*f;
f=-f;
}
return m;
}
void main( )
{
int m;
printf("m=%d\n", fun(10));
}
c语言实验9函数答案的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于c语言实验总结与思考、c语言实验9函数答案的信息别忘了在本站进行查找喔 。

    推荐阅读