云南大学软件学院C语言知识所有实验代码..doc
.-第二次试验/第三次试验=程序=#include<stdio.h>int main() /*十进制*/ printf("%dn",3+4*6); printf("%dn",3*4/6+6); printf("%dn",2*3/12*8/4); printf("%dn",10*(1+7*3); printf("%dn", 20-2/6+3); printf("%dn", 20-2/(6+3); printf("%dn", (20-2)/6+3); printf("%dn", (20-2)/(6+3);/*916显示为小数,保留小数2位,宽度为8*/ printf("%8.2fn",3.0+4.0*6.0); printf("%8.2fn",3.0*4.0/6.0+6.0); printf("%8.2fn",2.0*3.0/12.0*8.0/4.0); printf("%8.2fn",10.0*(1.0+7.0*3.0); printf("%8.2fn",20.0-2.0/6.0+3.0); printf("%8.2fn",20.0-2.0/(6.0+3.0); printf("%8.2fn",(20.0-2.0)/6.0+3.0); printf("%8.2fn",(20.0-2.0)/(6.0+3.0); /*1720显示为字符*/printf("%cn", m - 5); printf("%cn", m + 5); printf("%cn", G + 6); printf("%cn", G - 6); /*2123显示为十进制整数*/ printf("%dn", b - a); printf("%dn", g - a + 1); printf("%dn", g - a + 1);=运行结果=程序=#include<stdio.h>int main () float Cel,Fah; printf("print a Fah number:"); scanf("%f",&Fah); Cel=5.0/9.0*(Fah-32); printf("The Cel number is%fn",Cel); printf("print a Cel number:"); scanf("%f",&Cel); Fah=32+9.0*Cel/5.0; printf("The Fah number is:%f n",Fah); return 0;=运行结果=第四次试验*(1)程序*#include<stdio.h>int main()int num1,num2,num3,max,min;printf("please input three numbers:n");scanf("%d %d %d",&num1,&num2,&num3);max=(num1>num2)?num1:num2;min=(num1<=num2)?num1:num2;max=(num3>max)?num3:max;min=(num3<min)?num3:min;printf("max = %d min = %d",max,min);return 0;*运行结果*(2)程序*#include <stdio.h>int main()int a;float profit,income;printf("Please input the profit:");scanf("%f",&profit);a=(profit-1)/100000;switch(a)case 0:income=profit/10;break;case 1:income=(profit-100000)*0.075+10000;break;case 2:case 3:income=(profit-200000)*0.05+10000+7500;break;case 4:case 5:income=(profit-400000)*0.03+10000+7500+10000;break;case 6:case 7:case 8:case 9:income=(profit-600000)*0.01+10000+7500+10000+6000;break;case 10:income=(profit-1000000)*0.01+10000+7500+10000+6000+6000; printf("奖金数值为:%fn",income); return 0;*运行结果*(3)程序*/*百马百担问题*/#include<stdio.h>intmain()intA,B,C;printf("百马百担的解为:n");printf("大中小n");for(A=0;A<=33;A+) for(B=0;B<=50;B+) C=100-A-B; if(3*A+2*B+C/2.0=100) printf("%-2d%-2d%-2dn",A,B,C); return0; *运行结果*(4)程序*(5)程序*/关于菱形的第一种算法/#include <stdio.h>int main() int i,j,k; printf("请输入最长行的数字,为奇数k:"); scanf("%d",&k) ; for (i=1;i<=k;i+) for(j=1;j<=k;j+) if(j+i)>=(k+1)/2+1&&(i+j)<=(k+1)*3/2-1&&i-j<=(k+3)/2-2& &j-i<=(k+3)/2-2) printf(" *"); else printf(" "); printf("n"); return 0; /第二种算法/#include <stdio.h> int main() int K,X,C,N; printf("num="); scanf("%d",&N); for(C=1;C<=(N+1)/2;C+) for(K=1;K<=(N+1)/2-C;K+) printf(" "); for(X=1;X<=2*C-1;X+) printf(" *"); printf("n"); for(C=(N+3)/2;C<=N;C+) for(K=1;K<=C-(N+1)/2;K+) printf(" "); for(X=1;X<=2*N+1-2*C;X+) printf(" *"); printf("n"); *运行结果*第5/6次试验*(1)程序*第7次试验*(1)程序*#include <stdio.h>int main() int i,j,n; printf("input a number"); scanf("%d",&n); int ann; printf("n"); for(i=0;i<n;i+) ai0=1; aii=1; for (i=2;i<n;i+) for(j=1;j<i;j+) aij=ai-1j-1+ai-1j; for(i=0;i<n;i+) for(j=0;j<=i;j+) printf("%5d",aij); printf("n"); *运行结果*(2)程序*方法一:#include <stdio.h>int main ()int i;int fb12=1,1;for(i=2;i<12;i+)fbi=fbi-1+fbi-2;printf("第%d个月共有兔子%d只n",i+1,fbi*2);return 0; *运行结果*方法二:#include <stdio.h>int main()long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i+)printf("%12ld%12ld",f1,f2);if(i%2=0)printf("n");f1=f1+f2;f2=f1+f2;return 0;*运行结果*(3)程序*#include<stdio.h>#define num 10int num1(int ,int);int num2(int ,int);int main()void sort1 (int num1,int n);void sort2 (int num2,int n);int anum, cnum,i,moves,j;printf("enter array here:n");for(i=0;i<10;i+)j=i;scanf("%d",&ai);cj=ai;printf("the sorted array :n");sort1(a,num);printf("the sorted array :n");sort2(c,num);return 0;void sort1(int num1,int n) int i,j,temp,b;for(i=0;i<n-1;i+)for(j=1;j<n;j+)if(num1j<num1j-1)temp=num1j;num1j=num1j-1;num1j-1=temp;for(b=0;b<n;b+)printf("%5d",num1b);printf("n");void sort2(int num2,int n)int i,j,min,minidx,temp,b;for(i = 0;i<n-1;i+)min = num2i;minidx = i;for(j = i+1;j<n;j+)if (num2j<min)min = num2j;minidx = j;for(b=0;b<n;b+)printf("%5d",num2b);printf("n");if (min < num2i)temp = num2i;num2i = min ;num2minidx = temp;*运行结果*(4)程序*#include <stdio.h>#define N 10int brnarysearch(int ,int,int);int main()int numsN=1,5,8,9,12,23,45,56,67,99;int item,location;printf("Enter the item you are searching for");scanf("%d",&item);location=brnarysearch(nums,N,item);if(location > -1)printf("The item was found at index location %dn",location);else printf("The item was not found in the listn");return 0;#define Ture 1#define False 0 int brnarysearch(int list,int size,int key) int index,found,left,right,midpt; index=-1; found=False; left=0; right=size-1; while ( left <= right && !found) midpt = (int) (left+right)/2); if (key= listmidpt) found=Ture; index=midpt; else if (key > listmidpt) left=midpt + 1; else right= midpt - 1; return (index); *运行结果*第10次试验*程序*#include<stdio.h> int main() int a=0,i,k; int b31; printf("请输入一个十进制数:n"); scanf("%d",&i); while(i!=0) k=i%2; ba+=k; i=i/2; printf("转为二进制数为:n");while(a>0) printf("%d",b-a); printf("n"); return 0;*运行结果*第9次试验*程序*#include <stdio.h>#include <stdlib.h> int main() char name530; int i; int grade15,num5; float ave5; printf("请输入学号、3学科成绩, 姓名,:n"); for(i=0;i<5;i+) scanf("%d",&numi); scanf("%d%d%d",&gradei*3,&gradei*3+1,&gradei*3+2); avei=(gradei*3+gradei*3+1+gradei*3+2)/3.0; gets(namei); for(i=0;i<5;i+) printf(" %d %-10s %d %d %d %5.2fn",numi,namei,gradei*3,gradei*3+1,gradei*3+2,avei);FILE *outFile; outFile=fopen("C:/stud.txt","w"); fprintf(outFile," 学号 姓名 成绩1 成绩2 成绩3 平均成绩 n "); for(i=0;i<5;i+) fprintf(outFile," %d %-10s %5d %5d %5d %5.2fn",numi,namei,gradei*3,gradei*3+1,gradei*3+2,avei); fclose(outFile); return 0;*运行结果*第10次试验1. 请使用数组元素存取方式,设计实现一个函数可以将任意字符数组元素存放位置逆转的程序。*程序*#include <stdio.h>#include <string.h>int main() char str100; int i,j; gets(str); j=strlen(str); for(i=j;i>=0;i-) printf("%c",stri); printf("n"); return 0;*运行结果*2. 请使用指针存取方式完成练习1*程序*#include <stdio.h>#include <string.h>int main() int j; char str100,*printer=str,i; printf("Input a string:n"); gets(str); j=strlen(str); for(i=j;i>=0;i-) printf("%c",*(printer+i); return 0; *运行结果*3. 用二维数组保存用户输入的字符串,当用户终止输入时,将所有输入中最长的字符串及其长度输出。*程序*#include <stdio.h>#include <string.h>int main() int i,n=0; char str330; int max; for(i=0;i<3;i+) gets(stri); printf("n"); max = strlen(str0); for(i=0;i<3;i+) if (strlen(stri) >max) max = strlen(stri); n=i; printf("The longest string is str%d, it has %d type.",n,max); return 0; *运行结果*第11次试验1. 采用结构体变量的方法保存学生成绩,有五个学生,每个学生有3门课的成绩,从键盘输入相关数据(包括:学号,姓名和三门课程的成绩),计算出平均成绩。*程序*运行结果*2. 采用结构体数组的方法保存学生成绩,完成练习1。*程序*#include <stdio.h>struct Student int num; char name20; int grade3; float average; Student5;int main() int i,j; printf("Input the num ,name, and three grades:n"); for(j=0;j<5;j+)scanf("%d %s %d %d %d",&Studentj.num,&Studentj.name,&Studentj.grade0,&Studentj.grade1,&Studentj.grade2);for(j=0;j<5;j+) Studentj.average=(Studentj.grade0+Studentj.grade1+Studentj.grade2)/3.0; for(j=0;j<5;j+) printf("NO.%d name:%s grade:%d %d %d average%5.2f:n",Studentj.num,Studentj.name,Studentj.grade0, Studentj.grade1,Studentj.grade2,Studentj.average); return 0;*运行结果*3. 采用链表的方法保存学生成绩,完成练习1。*程序*#include <stdio.h>struct Student int num; char name20; int grade3; float average; struct Student * next; ;int main() struct Student st5,*head,*p; int i; for(i=0;i<5;i+) scanf("%d %s %d %d %d",&sti.num,&sti.name,&sti.grade0,&sti.grade1,&sti.grade2); sti.average=(sti.grade0+sti.grade1+sti.grade2)/3.0; printf("n"); head=&st0; st0.next=&st1; st1.next=&st2; st2.next=&st3; st3.next=&st4; st4.next=NULL; p=head; do printf("%d %s %d %d %d %5.2fn",p->num,p->name,p->grade0,p->grade1,p->grade2,p->average); p=p->next; while(p!=NULL); return 0;*运行结果*