第一篇:C语言实训
第一天的题目: 求两个整数之和。
#include
求1×3×5×7×9×11 #include
sum = sum*i;
i = i+2;}
printf(“%d”,sum);return 0;} 有50个学生,要求将成绩在80分以上的学生的学号和成绩输出。
#include
int i;
int a[50];
for(i=0;i<50;i++)
{
scanf(“%d”,&a[i]);
if(a[i]>80)
printf(“%d”,a[i]);
} }
判定2000—2500年中的每一年是否闰年,并将结果输出。
#include
int y;
y=2000;
while(y<=2500)
{
if(((y%4 == 0)&&(y%100!= 0))||(y%400 == 0))
printf(“%d 年是闰年n”,y);
else printf(“%d 年不是闰年n”,y);
y=y++;} } 求111111 23499100#include
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;} printf(“%fn”,sum);} 给出一个大于或等于3的正整数,判断它是不是一个素数。
#include
int i,n,mark=0;
scanf(“%d”,&n);
for(i=2;i < n/2+1;i++)
{
if(n%i==0)
{
printf(“%d不是素数”,n);
mark=1;
break;
}
}
if(mark==0)
printf(“%d是素数”,n);} 求5!#include
#include
#include
float a,b,t;scanf(“%f %f”,&a,&b);if(a>b){ t=a;a=b;b=t;} printf(“%5.2f,%5.2fn”,a,b);
} 输入3个数a,b,c,要求按由小到大的顺序输出。
#include
#include
char zhong,guo;
scanf(“%c”,&zhong);
if(65<=zhong&&zhong<=90)
{
guo=zhong+32;
printf(“%c”,guo);
}
else
printf(“%c”,zhong);}
1(x0)1编一程序,输入一个x值,要求输出相应的y值。y0(x0)
1(x0)#include
int x,y;
printf(“请输入x:”);
scanf(“%d”,&x);
if(x<0)
y=-1;
else if(x=0)
y=0;
else
y=1;
printf(“y=%d”,y);} 要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分,D等为 60分以下。成绩的等级由键盘输入。#include
5写一程序,判断某一年是否闰年。#include
int a;
scanf(“%d”,&a);
if(a%4==0&&a%100!=0||a%400==0)
printf(“是闰年”);
else printf(“不是闰年”);} 运输公司对用户计算运输费用。路程(s km)越远,每吨·千米运费越低。标准如下:
s < 250
没有折扣
250≤s < 500
2%折扣
500≤s < 1000
5%折扣
1000≤s < 2000
8%折扣
2000≤s < 3000
10%折扣
3000≤s
15%折扣 #include
int c, s;
float p, w, d, f;
scanf(“%f %f %d”, &p, &w, &s);
if(s >= 3000)c =12;
else c = s / 250;
switch(c)
{
case 0 : d = 0;break;
case 1 : d = 2;break;
case 2 :
case 3 : d = 5;break;
case 4 :
case 5 :
case 6 :
case 7 : d = 8;break;
case 8 :
case 9 :
case 10:
case 11: d = 10;break;
case 12: d = 15;break;
}
f = p * w * s *(1-d / 100);
printf(“freight =%15.4fn”,f);} 全班有50个学生,用循环语句统计各学生三门课的平均成绩。#include
return 0;} 要求输出100~200之间的不能被3整除的数。#include
main(){
int
n;
for(n=100;n <=200;n++)
{
if(n%3!=0)
printf(“%d
”,n);}
printf(“n ”);}
第二天的题目:
1 输出以下4*5的矩阵。
10 15 20 #include
printf(“%sn”,p[i]);} } 用
41131517
公式求
的近似值,直到发现某一项的绝对值小于10-6 为止(该项不累计加)。
#include
s=-s;
t=s/n;
pi=pi+t;} pi=pi*4;printf(“%.6fn”,pi);return 0;}
求费波那西(Fibonacci)数列的前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即: F11F21FFFn1n2n(n1)(n2)
(n3)#include
f3=f1+f2;
printf(“%12dn”,f3);
f1=f2;
f2=f3;} return 0;}
输入一个大于3的整数n,判定它是否素数(prime,又称质数)。#include
if(a%b==0)
{
printf(“此数不是素数n”);
return 0;
}
printf(“此数是素数n”);
return 0;} 求100~200间的全部素数。#include
int i,k,sk,flag,m=0;
for(k=100;k<=200;k++)
{
sk=(int)sqrt(k);
flag = 1;
for(i=2;i<=sk;i++)
{
if(k%i==0)
{
flag=0;
break;
}
}
if(flag==1)
{
m++;
printf(“%5d”,k);
}
}
if(m%12==0)
printf(“n”);
printf(“total:%5dn”,m);} 对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。#include
#include
int i;
int f[40]={1,1};
for(i=0;i<40;i++)
{
f[i]=f[i-2]+f[i-1];
}
for(i=0;i<40;i++)
{
if(i%5==0)
printf(“/n”);
printf(“%12d”,f[i]);
}
return 0;} 有10个地区的面积,要求对它们按由小到大的顺序排列(采用起泡法)。#include
scanf(“%d”,&a[i]);for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
} for(i=0;i<10;i++)
printf(“%dt”,a[i]);} 将一个二维数组行和列的元素互换,存到另一个二维数组中。
14123b25a456 36#include
for(j=0;j<3;j++)
{
printf(“%5d,a[i][j]”);
b[j][i]=a[i][j];
}
printf(“n”);} printf(“array b:n”);for(i=0;i<3;i++){
for(j=0;j<2;j++);
printf(“%5d”,b[i][j]);
printf(“n”);} } 有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
#include
int a[3][4],max,i,j;
int x=0,y=0;
printf(“请输入矩阵的数值!n”);
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf(“%d”,&a[i][j]);
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max
{
max=a[i][j];
x=i;
y=j;
}
printf(“矩阵中最大的元素为:%dn”,max);
printf(“行号为:%d,列号为:%d”,x,y);} 输出一个已知的字符串。#include
int h;
printf(“输入高度-》 ”);
scanf(“%d”,&h);
for(int i=1;i<=h;i++)
{
for(int a=1;a<=(h-i);a++)
{
printf(“ ”);
}
for(int b=1;b<=(i*2-1);b++)
{
printf(“*”);
}
printf(“n”);
}
for(int j=h-1;j>=1;j--)
{
for(int a=1;a<=(h-j);a++)
{
printf(“ ”);
}
for(int b=1;b<=(j*2-1);b++)
{
printf(“*”);
}
printf(“n”);
} } 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。#include
char string[81],c;int i,num=0,word=0;gets(string);
for(i=0;
(c=string[i])!= ' ';i++)if(c==' ')word=0;
else
if(word==0){
word=1;num++;}
printf(“There
are
%d
word
in
the
line.n ”,num);getchar();return
0;} 有3个字符串,要求找出其中最大者。#include
main(){
char
string[20];char
str[3][20];int
i;for(i=0;i <3;i++)gets(str[i]);
if(strcmp(str[0],str[1])> 0)strcpy(string,str[10]);
else
strcpy(string,str[1]);if(strcmp(str[2],string)> 0)strcpy(string,str[2]);
printf(“nthe
largest
string
isn%sn ”,string);
} 15 输出以下的结果,用函数调用实现。
******************
How do you do!
****************** #include
main(){fun1();fun2();fun1();} 输入两个整数,要求输出其中值较大者。要求用函数来找到大数。#include
int a,b,c;
printf(“please enter a and b:”);
scanf(“%d,%d”,&a,&b);
c=max(a,b);
printf(“%d,%d,max=%dn”,a,b,c);
return 0;}
int max(int x,int y){ int z;
if(x>y)z=x;
else
z=y;
return(z);} 输入两个实数,用一个函数求出它们之和。#include
输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。#include
int max_4(int a,int b,int c,int d);
int a,b,c,d,max;
printf(“Please enter 4 interger numbers:”);
scanf(“%d %d %d %d ”,&a,&b,&c,&d);
max=max_4(a,b,c,d);
printf(“max=%d n”,max);}
int max_4(int a,int b,int c,int d)
{int max_2(int,int);
int m;m=max_2(a,b);
m=max_2(m,c);
m=max_2(m,d);
return(m);
} int max_2(int a,int b)
{if(a>b)
return a;
else return b;
} 有5个学生坐在一起
问第5个学生多少岁?他说比第4个学生大2岁 问第4个学生岁数,他说比第3个学生大2岁 问第3个学生,又说比第2个学生大2岁 问第2个学生,说比第1个学生大2岁 最后问第1个学生,他说是10岁 请问第5个学生多大(递归调用)
#include
c=10;else
c=age(n-1)+2;return(c);} 用递归方法求n!。#include
{
float f;
if(n<0)
{
printf(“n<0, dataerror!”);
}
else if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return f;} int main(){ int n;scanf(“%d”,&n);printf(“%.0fn”,fac(n));return 0;}
第3天的题目: 输入10个数,要求输出其中值最大的元素和该数是第几个数。#include
int i=1,max,temp,n=1;
while(i<=10)
{
if(i==1){
scanf(“%d”,&max);
}
else
{
scanf(“%d”,&temp);
if(temp>max)
{
max = temp;
n=i;
}
}
i++;
}
printf(“最大数%d 位置%dn”,max,n);
system(“pause”);
return 0;} 有一个一维数组score,内放10个学生成绩,求平均成绩。#include
scanf(“%f”,&score[i]);printf(“n”);aver=average(score);printf(“%5.2fn”,aver);return 0;} float average(float array[10]){ int i;float aver,sum=array[0];for(i=1;i<10;i++)
sum=sum+array[i];aver=sum/10;return(aver);} 有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班的学生的平均成绩。#include #include int i,j,k,t; for(i=0;i { k=i; for(j=i+1;j if(array[j] k=j; t=array[k]; array[k]=array[i]; array[i]=t; } } int main(){ int i,array[N]; printf(“input a number:”); for(i=0;i<=N-1;i++) scanf(“%d”,&array[i]); sort(&array[0], N); for(i=0;i<=N-1;i++) printf(“%d ”,array[i]); return 0;} 有一个3×4的矩阵,求所有元素中的最大值。#include for(j=0;j<4;j++) if(array[i][j]>max) max=array[i][j]; return(max);} 有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。#include scanf(“%f”,&score[i]);ave=average(score,10);printf(“max=%6.2fn min=%6.2fn average=%6.2fn”,max,min,ave); return 0;} float average(float array[],int n){int i;float aver,sum=array[0];max=min=array[0];for(i=1;i int fac(int n);int i;for(i=1;i<=5;i++) printf(“%d!=%dn”,i,fac(i));return 0;} int fac(int n){ static int f=1; }f=f*n;return(f);调用函数,求3个整数中的大者。#include return(y);} 通过指针变量访问整型变量。#include “stdio.h” void main(){ int a,b; int *pointer_1,*pointer_2; a=100;b=10; pointer_1=&a; pointer_2=&b; printf(“%d,%dn”,a,b); printf(“%d,%dn”,*pointer_1,*pointer_2);} 输入a和b两个整数,按先大后小的顺序输出a和b。 解题思路:用指针方法来处理这个问题。不交换整型变量的值,而是交换两个指针变量的值。#include scanf(“%d,%d”,&a,&b); p1=&a;p2=&b; if(a {p=p1;p1=p2;p2=p;} printf(“na=%d,b=%dn”,a,b); printf(“max=%d,min=%dn”,*p1, *p2);} 对输入的两个整数按大小顺序输出。现用函数处理,而且用指针类型的数据作函数参数。#include n=*a; *a=*b; *b=n;} } int main(void){ int a,b;int *n=&a,*m=&b;printf(“输入两个整数:n”);scanf(“%d%d”,&a,&b);max(n,m);printf(“%d %dn”,a,b);return 0;} 对输入的两个整数按大小顺序输出。 解题思路:尝试调用swap函数来实现题目要求。在函数中改变形参(指针变量)的值,希望能由此改变实参(指针变量)的值 #include int temp; temp=*p1; *p1=*p2; *p2=temp;} main(){ int a,b; int *pointer_1,*pointer_2; scanf(“%d,%d”,&a,&b); pointer_1=&a;pointer_2=&b; if(a swap(pointer_1,pointer_2); printf(“ %d,%d ”,a,b);}输入3个整数a,b,c,要求按由大到小的顺序将它们输出。用函数实现。#include 解题思路:引用数组中各元素的值有3种方法:(1)下标法;(2)通过数组名计算数组元素地址,找出元素的值;(3)用指针变量指向数组元素 分别写出程序,以资比较分析。#include scanf(“%d”,&a[i]);for(i=0;i<10;i++) printf(“%d ”,a[i]);} 通过指针变量输出整型数组a的10个元素。 解题思路: 用指针变量p指向数组元素,通过改变指针变量的值,使p先后指向a[0]到a[9]各元素。#include 解题思路:将a[0]与a[n-1]对换,……将a[4]与a[5]对换。#include int i, a[10]={3,7,9,11,0,6,7,5,4,2}; for(i=0;i<10;i++)printf(“%d ”,a[i]); printf(“n”); inv(a,10); for(i=0;i<10;i++)printf(“%d ”,a[i]); printf(“n”); return 0;} void inv(int x[ ],int n){ int temp,i,j,m=(n-1)/2; for(i=0;i<=m;i++) { j=n-1-i; temp=x[i];x[i]=x[j];x[j]=temp;} } 用指针方法对10个整数按由大到小顺序排序。 解题思路: 在主函数中定义数组a存放10个整数,定义int *型指针变量p指向a[0] 定义函数sort使数组a中的元素按由大到小的顺序排列 在主函数中调用sort函数,用指针p作实参 用选择法进行排序 #include scanf(“%d”,p++);p=a;sort(p,10);for(p=a,i=0;i<10;i++){ printf(“%d ”,*p); p++;} printf(“n”);return 0;} void sort(int x[],int n){ int i,j,k,t;for(i=0;i k=i; for(j=i+1;j if(x[j]>x[k]) k=j; if(k!=i) { t=x[i]; x[i]=x[k]; x[k]=t; } } } 有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。 .#include“stdio.h” void InputScore(double s[][4]){ int i,j; printf(“please input the score of three student:n”); for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(“%lf”,&s[i][j]);} double AllAverage(double *s,int m){double sum=0;int i; for(i=0;i sum=sum+*(s+i);return sum/(m*4);} void PrintNScore(double(*s)[4],int n){ int i;for(i=0;i<4;i++)printf(“%d”,*(*(s+n-1)+i));} void main(){ double score[3][4],ave; int n; InputScore(score); ave=AllAverage(score[0],3); printf(“average =%lfn”,ave); printf(“please input the NO.of student who will be printed:n”); scanf(“%d”,&n); printf(“The score of the %dth student is:n”,n); PrintNScore(score,n); }.定义一个字符数组,在其中存放字符串“I love China!”,输出该字符串和第8个字符。 解题思路:定义字符数组string,对它初始化,由于在初始化时字符的个数是确定的,因此可不必指定数组的长度。用数组名string和输出格式%s可以输出整个字符串。用数组名和下标可以引用任一数组元素。 #include printf(“%sn”,string); printf(“%cn”,string[7]); return 0;}。 第4天的题目: 1.输入一行字符,统计其中的英文字符、数字字符、空格及其它字符的个数。#include printf(“Enter text to be analyzed(| to be quit):n ”);prev = 'n';while((c = getchar())!= STOP){ n_chars++; if(c == 'n') n_lines++; if(!isspace(c)&&!inword) { inword = 1; n_words++; } if(isspace(c)&& inword) inword = 0; prev = c;} if(prev!= 'n') p_lines = 1;printf(“characters = %ld,word = %d,line = %d,”,n_chars,n_words,n_lines);printf(“partial lines = %dn”,p_lines);return 0;} 2.编程先输入某班30个学生某门课的成绩,对全班30个学生成绩进行由高到低排序,并打印输出排序结果,要求按照如下函数原型,用函数编程实现排序功能。#include void sort(float score[],int n) { int i,j; for(i=0;i for(j=0;j if(score[j] { float temp=score[j]; score[j]=score[j+1]; score[j+1]=temp; } } void main() { float score[30]; int i; printf(“Please enter the number and score:n”); for(i=0;i<30;i++) scanf(“%f”,&score[i]); sort(score,30); printf(“Sorted results:n”); for(i=0;i<30;i++) printf(“%f”,score[i]); } 3.用户从键盘任意输入一个数字表示月份值n,程序显示该月份对应的英文表示,若n不在1~12之间,则输出“Illegal month”。#include int n; printf(“请输入n的值n”); scanf(“%d”,&n); switch(n) { case 1:printf(“Janunryn”);break; case 2:printf(“Februaryn”);break; case 3:printf(“Marchn”);break; case 4:printf(“Apriln”);break; case 5:printf(“Mayn”);break; case 6:printf(“Junen”);break; case 7:printf(“Julyn”);break; case 8:printf(“Augustn”);break; case 9:printf(“Septempern”);break; case 10:printf(“Octobern”);break; case 11:printf(“Novembern”);break; case 12:printf(“Decembern”);break; default:printf(“Illegal month”); } return 0;} 4.计算十个数据的平均值。#include 5.编程实现从键盘输入一个字符串,将其字符顺序颠倒后重新存放,并输出这个字符串。(用字符数组实现)#include } printf(“输出的数据n”);for(j=i-1;j>=0;j--)printf(“%c”,a[j]);putchar('n');return 0; 6.从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和(忽略整数前的正负号)。例如,输入x为1234,则由1234分离出其千位 1、百位 2、十位 3、个位4,然后计算1+2+3+4=10,并输出10。#include 7.输入20个学生的成绩,求出其中大于平均成绩学生的人数,并对20名学生成绩按从高到低进行排序。#include int count1(float score[],int n) { int i,count=0; float sum=0,avg; for(i=0;i sum+=score[i]; avg=sum/n; for(i=0;i if(score[i]>avg)count++; return count; } void sort(float score[],int n) { int i,j; for(i=0;i for(j=0;j if(score[j] { float temp=score[j]; score[j]=score[j+1]; score[j+1]=temp; } } void main() { int i; float score[20]; for(i=0;i<20;i++) scanf(“%f”,&score[i]); int COUNT=count1(score,20); printf(“大于平均成绩学生的人数:%d”,COUNT); sort(score,20); for(i=0;i<20;i++) printf(“%f”,score[i]); } 224466...228.利用公式=133557ׄ前100项之积计算并打印值。#include “stdio.h” void main(){ float a=2,b=1;double num=1;int i;for(i=1;i<=100;i++){ num*=a/b; if(i%2==0)a+=2; else b+=2;} num*=2;printf(“π=%.16lfn”,num);} 9.由键盘输入一个班的某课程的学生成绩,计算其平均分然后输出。#include printf(“输入第%d个学生的成绩,输入负数结束”,i+1); scanf(“%f”,&n); if(n<0) break; sum+=n; i++;} while(1);printf(“平均成绩为%.4fn”,sum/i);return 0;} 10.从键盘输入10个整型数据,放入数组a 中,求其最大值、最小值及其所在元素的下标位置并输出。#include } } printf(“最大值:%d 最大值所在位置:%dn最小值:%d 最小值所在位return 0;} if(a[i] } min_=a[i];minInd=i;int a[10],max_,min_,maxInd,minInd;int i;scanf(”%d“,&a[0]);max_=a[0];min_=a[0];maxInd=minInd=0;for(i=1;i<10;i++){ scanf(”%d“,&a[i]);if(a[i]>max_){ max_=a[i];maxInd=i;置:%dn”,max_,maxInd,min_,minInd); 11.下面的函数MyStrcmp()用于实现函数strcmp()的功能,将两个字符串s和t进行比较,要求将两个字符串中第一个不相同字符的ASCII码值之差作为MyStrcmp()函数的返回值。#include return 0;} 12.从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。#include cin>>a[i];int max=0;int min=0;for(i=0;i<10;i++){ if(a[max] if(a[min]>a[i])min=i;} int t=a[max];a[max]=a[min];a[min]=t;for(i=0;i<10;i++){ cout< int main(){ int score,level;char band;printf(“Input Score:”);scanf(“%d”,&score);level=score/10;switch(level){ case 10: case 9: band='A';break;case 8: band='B';break;case 7: band='C';break;case 6: band='D';break;default: band='E';break;} printf(“%d的等级为%cn”,score,band);system(“pause”);return 0;} 把1~50之间不能被7整除的数输出 #include printf(“%d ”,i);} 交换函数两个参数的值 #include “Stdio.h” #include “Conio.h” void swap(int* x,int *y){ int t;t=*x;*x=*y;*y=t;} main(){ int a,b;a=11,b=21;swap(&a,&b); printf(“%d,%d”,a,b);getch();} 求数组元素中的最大元素和最小元素 #include int *pmin,*pmax;int extreum(int a[],int n) { int i; pmax=pmin=a; for(i=0;i<=n;i++) { if(a[i]>*pmax) pmax=&a[i]; else if(a[i]<*pmin) pmin=&a[i]; } return 0;} main(){ int i; int b[10]; printf(“enter 10 numbers:n”); for(i=0;i<10;i++) scanf(“%d”,&b[i]); extreum(b,10); printf(“n max=%d,min=%dn”,*pmax,*pmin);} 求3×4矩阵的转置 湖北轻工职业技术学院 《C语言程序设计》实验报告 实验十一:函数 班 级: ___________10计管_________________ 姓 名: ___________胡高______________ 学 号: ___________1003011138________________ 日 期: ____________2011-5-29________________ 一、实验目的和要求 1、理解数组引入的意义及作用; 2、掌握一维数组的基本思想和基本用法; 3、掌握使用一维数组的基本算法:排序与查找。 二、实验主要仪器和设备 计算机一台,Turbo C环境。 三、实验内容 请将该实验报告重新命名为“实验11-学号[姓名]”,如“实验11-66[张三]” 1、P145 填空题2(2) 2、P145 上机操作题 3(5) 四、实验原始纪录 实验1 程序的设计界面。(Alt+PrintScreeninclude SysRq拷贝当前窗口) 程序代码。(此处写代码,不是图片。 #include void swap(); extern int a,b; a=3;b=10; swap(); printf(“a=%d,b=%dn”,a,b); } int a,b; void swap() { int temp; temp=a;a=b;b=temp; } 实验2 程序的设计界面。 程序代码。 五、实验结果及分析 实验1运行结果图。 实验2运行结果图。 六、实验总结与思考(主要写一些在实验过程中,遇到的问题、所犯的错误,以及是如何发现纠正的。大约100至200字左右。) 本次试验的内容是考察数组的引用、基本算法等,但是总体感觉有点问题。有的地方不知道如何下手 目 录 特别注意,打开视图菜单-文档结构图观察文档结构。目录由WORD菜单中插入-引用-目录自动生成并更新,不需要手工生成菜单。 本模板仅说明格式,内容由指导老师决定,不用按这份目录内容编写实训报告。 具体目录见文档要求。以下部分仅供参考。 目 录........................................................................................................................1 一、实训的目的与要求................................................................................................1 二、题目说明................................................................................................................2 三、总体设计................................................................................................................2 3.1.软件模块结构图...........................................................................................2 3.2.程序流程图...................................................................................................3 四、详细设计和实施....................................................................................................3 4.1 XXXX模块.....................................................................................................4.2 4.3 五、遇到的问题和解决方法........................................................................................4 六、实训总结................................................................................................................4 七、参考文献................................................................................................................4 附录(源程序代码)....................................................................................................5 一、实训的目的与要求 (正文为宋体,五号字 行间距为21)中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国 二、题目说明 (正文为宋体,五号字 行间距为21)题目参照任务书中有关描述 三、总体设计 3.1.软件模块结构图(以下图仅供样式参考) 图1-1 软件模块结构图 3.2.程序流程图(以下图仅供样式参考): 四、详细设计和实施 (正文为宋体,五号字 行间距为21)4.1 模块1 ………(可以写一些关键程序代码,另外截一些界面图并说明实现了什么功能,以证明功能实现了)每一个界面,必须有(1)功能简介(2)界面截图一张(3)界面关键代码和描述 每一个界面说明作为独立的一小节。(在文档说明中有样例) 五、遇到的问题和解决方法 (正文为宋体,五号字 行间距为21)1. 2. 3. ………… 六、实训总结 (正文为宋体,五号字 行间距为21) 七、参考文献 [1] 权明富,齐佳音,舒华英.客户价值评价指标体系设计[J].南开管理评论,2004,7(3):17-18.[2] 刘小洪,邹鹏.商业银行客户关系价值管理模型研究[J].管理科学,2005,18(3):57-60.附录(源程序代码) #include struct student { char classname[40];int num; char major[40]; char name[30];char class1[40];int score1;char class2[40];int score2;char class3[40];int score3;}stu[N]; void menu();void add();void search();void change();void deleted();void sort();void show();void back();void input();void output(); int main(void){ menu();void add(); void search(); void change(); void deleted(); void sort(); void show(); void back(); void input();void output();return 0;}//需要调用的函数 void menu(){ int n;printf(“nnnnnn”);do{ printf(“ printf(” *n“); printf(” *n“); printf(” printf(“ *n”); ************欢迎使用学生信息管理系统************n“); * * 功能菜单************************************************n”); * printf(“ * 1.添加成绩表信息 *n”); printf(“ * 2.查询成绩信息 *n”); printf(“ * 3.修改成绩信息 *n”); printf(“ *n”); printf(“ *n”); printf(“ *n”); printf(“ *n”); printf(“ *n”); printf(“ *n”); printf(“ *n”); printf(“ printf(” * 4.删除信息记录 * 5.排序成绩表信息 * 6.显示成绩表所有信息 * 7.从指定的文件中读入成绩表的信息 * 8.将成绩表的信息写入指定的文件中 * 9.退出学生信息管理系统 * ************************************************nn“); 请输入数字<1-9>: ”); scanf(“%d”,&n);switch(n){ case 1: add(); break; case 2: search(); break; case 3: change(); break; case 4: deleted(); break; case 5: sort(); break; case 6: show(); break; case 7: } input(); break; case 8: output(); break; case 9: back(); break; default: } printf(“nn抱歉!您的输入有误,请在1到9之间选择!”);}while(n<=0&&n>9);int n=2;//全局变量在这里! void add(){ system(“cls”);int i;char a;for(i=0;i printf(“nnn请输入学生信息:nnn”); printf(“请输入班级:”);scanf(“n%s”,stu[i].classname);printf(“请输入姓名:”);scanf(“%s”,stu[i].name);printf(“请输入学号:”);scanf(“n%d”,&stu[i].num);printf(“请输入专业:”);scanf(“n%s”,stu[i].major);printf(“请输入课程1名称:”);scanf(“n%s”,stu[i].class1);printf(“请输入课程1成绩:”);scanf(“n%d”,&stu[i].score1);printf(“请输入课程2名称:”); scanf(“n%s”,stu[i].class2); printf(“请输入课程2成绩:”); scanf(“n%d”,&stu[i].score2);printf(“请输入课程3名称:”);scanf(“n%s”,stu[i].class3);printf(“请输入课程3成绩:”);scanf(“nnn%d”,&stu[i].score3);} printf(“nn信息添加成功!!nn”);printf(“nn学生的信息如下:nn”);printf(“ntt班级 姓名 学号 专业 课程1 课程1成绩 课程2 课程2成绩 课程3 课程3成绩”); for(i=0;i printf(“nntt%st%st%dt%st%st%dt%st%dt%st%d”,stu[i].classname,stu[i].name,stu[i].num,stu[i].major,stu[i].class1,stu[i].score1,stu[i].class2,stu[i].score2,stu[i].class3,stu[i].score3); } printf(“nn按任意键返回主菜单!n”);getchar();scanf(“%c”,&a);} menu();void search(){ { case 1: //按姓名查找 printf(“nn请输入您想要查找的姓名: ”);system(“cls”);int i=0;int choice,s,score;int flag=0;char sname[20];char a;printf(“1.按姓名查找n2.按学号查找n3.查找总成绩相等的学生nn”);printf(“请输入您想要的查找方式(序号):”);scanf(“%d”,&choice);switch(choice) scanf(“%s”,sname);for(i=0;i printf(“%s %d %s %d %s %d”,stu[i].class1,stu[i].score1,stu[i].class2,stu[i].score2,stu[i].class3,stu[i].score3); case 2: //按学号查找 printf(“nn请输入您想要查找的学号: ”);} if(flag==0)//找不到该姓名 printf(“nn您搜索的该生信息不存在,请确认后再重新输入!n”);break;scanf(“%d”,&s);for(i=0;i if(stu[i].num==s){ flag=1;printf(“nn该学生成绩信息如下:n”); printf(“%s %s %d %s %d %s %d”,stu[i].name,stu[i].class1,stu[i].score1,stu[i].class2,stu[i].score2,stu[i].class3,stu[i].score3); case 3: //查找总成绩相等的学生 printf(“nn请输入您想要查找的学生成绩: ”);scanf(“%d”,&score);for(i=0;i { flag=1;printf(“nn总成绩相等的学生成绩信息如下:n”);if((stu[i].score1+stu[i].score2+stu[i].score3)==score)} if(flag==0)//找不到该学号 printf(“nn您搜素的该生信息不存在,请确认后再重新输入!n”);break;printf(“%s %s %d %s %s %d %s %d %s %d”,stu[i].classname,stu[i].name,stu[i].num,stu[i].major,stu[i].class1,stu[i].score1,stu[i].class2,stu[i].score2,stu[i].class3,stu[i].score3);} } if(flag==0)printf(“nn没有学生位于该分数,请重新输入!n”);break;default://输入不是1,2,3 printf(“nn您的输入有误!请在1到3之间进行选择!n”);}//这个才是switch的啦~(≧▽≦)/~ printf(“nn按任意键返回主菜单!”);getchar();scanf(“%c”,&a);menu();void change(){ system(“cls”);int i=0,item,n,sco1,sco2,sco3; char name[30];char smajor[40];char sclassname[40];char a;printf(“请输入需要修改信息的学生学号:”);scanf(“%d”,&n); for(i=0;i if(n==stu[i].num) { printf(“*--------------------*n”); printf(“1.修改课程1成绩;n”); printf(“2.修改课程2成绩;n”); printf(“3.修改课程3成绩;n”);printf(“4.修改学生的姓名;n”);printf(“5.修改学生的专业;n”);printf(“6.修改学生的班级;n”); printf(“*--------------------*n”);printf(“nn请输入需要修改的信息(序号):”);scanf(“%d”,&item); switch(item){ case 1: printf(“nn请重新输入课程1成绩: ”);scanf(“%d”,&sco1);stu[i].score1=sco1;printf(“n”);break;case 2: printf(“nn请重新输入课程2成绩:”);scanf(“%d”,&sco2);stu[i].score2=sco2;printf(“n”);break;case 3: printf(“nn请重新输入课程3成绩: ”);scanf(“%d”,&sco3);stu[i].score3=sco3;printf(“n”);break;case 4: printf(“nn请重新输入学生姓名: ”);scanf(“%s”,name);strcpy(stu[i].name,name);//将姓名代替 printf(“n”);break;case 5: printf(“nn请重新输入学生专业: ”);scanf(“%s”,smajor);strcpy(stu[i].major,smajor);printf(“n”);break;case 6: printf(“nn请重新输入学生班级: ”);scanf(“%s”,sclassname);strcpy(stu[i].classname,sclassname);printf(“n”);break;default: printf(“您的输入有误!请在1到6之间进行选择!”);}//这是switch的 printf(“修改后该学生信息如下:n”); printf(“ntt班级 姓名 学号 专业 课程1 课程1成绩 课程2 课程2成绩 课程3 课程3成绩”); printf(“nntt%st%st%dt%st%st%dt%st%dt%st%d”,stu[i].classname,stu[i].name,stu[i].num,stu[i].major,stu[i].class1,stu[i].score1,stu[i].class2,stu[i].score2,stu[i].class3,stu[i].score3);break; printf(“nnn”); printf(“nn按任意键返回主菜单!”);getchar();scanf(“%c”,&a);menu(); }//这是if的 if(i==n)printf(“nn无法找到该生信息,请确认后重新输入!”);//找不到学生学号 }//这是void的void deleted(){ for(i=0;i if(strcmp(stu[i].name,name)==0)//找得到学生姓名 { flag=1;printf(“请输入需要删除信息的学生姓名:”);scanf(“%s”,name);system(“cls”);int flag=0;int i;char b;char a;char name[30]; printf(“ntt班级 姓名 学号 专业 课程1 课程1成绩 课程2 课程2成绩 课程3 课程3成绩”); printf(“nntt%st%st%dt%st%st%dt%st%dt%st%d”,stu[i].classname,stu[i].name,stu[i].num,stu[i].major,stu[i].class1,stu[i].score1,stu[i].class2,stu[i].score2,stu[i].class3,stu[i].score3); if(flag==0)//找不到学生姓名 if(a=='n')printf(“nn已退出!n”); if(a=='y'){ for(i=0;i printf(“nn是否要删除该生所有信息?(y or n):”);getchar(); scanf(“%c”,&a);}//这是第二个if的 }//这是第一个if的 }//这是for的 } printf(“nn该生信息不存在!请确认后重新输入!nn”);printf(“nn请按任意键返回主菜单!n”);getchar();scanf(“%c”,&b);menu();void sort(){ system(“cls”);int i,j;int choice;struct student temp;char a;printf(“nn*--------------------*nn”);printf(“1.按总成绩升序排序nn2.按学号升序排序nn”);printf(“n*--------------------*n”);printf(“nn请输入您想要的排序方式: ”); scanf(“%d”,&choice);switch(choice){ case 1: for(i=0;i for(j=i+1;j if((stu[i].score1+stu[i].score2+stu[i].score3) { temp=stu[i];stu[i]= stu[j];stu[j]=temp;}//这是for(j)的 printf(“nn按总成绩升序排序后的信息为:n”);for(i=0;i printf(“nntt班级t姓名t学号t专业t课程1tt课程1成绩t课程2tt课程2成绩t课程3tt课程3成绩”); printf(“nntt%st%st%dt%st%st%dt%st%dtt%stttt%dnnn”,stu[i].classname,stu[i].name,stu[i].num,stu[i].major,stu[i].class1,stu[i].score1,stu[i].class2,stu[i].score2,stu[i].class3,stu[i].score3);}//这是for排序的 }//这是for(i)的 case 2: for(i=0;i break; for(j=i+1;j if((stu[i].score1+stu[i].score2+stu[i].score3) { temp=stu[i];stu[i]= stu[j];stu[j]=temp;}//这是for(j)的 printf(“nn按总成绩升序排序后的信息为:n”);for(i=0;i printf(“nntt班级t姓名t学号t专业t课程1tt课程1成绩t课程2tt课程2成绩t课程3tt课程3成绩”); printf(“nntt%st%st%dt%st%st%dt%st%dtt%stttt%dnnn”,stu[i].classname,stu[i].name,stu[i].num,stu[i].major,stu[i].class1,stu[i].score1,stu[i].class2,stu[i].score2,stu[i].class3,stu[i].score3);}//这是for排序的 }//这是for(i)的 }//这是switch的 printf(“nn按任意键返回主菜单!n”);getchar();scanf(“%c”,&a);menu(); default: printf(“nn抱歉!您输入的数据有误,请在1和2之间进行选择!n”); break;}//这是void的 void show()//这是显示显示显示显示显示 { system(“cls”);int i;char a;printf(“nn所有学生的信息如下:n”); printf(“ntt班级 姓名 学号 专业 课程1 课程1成绩 课程2 课程2成绩 课程3 课程3成绩”); for(i=0;i printf(“nntt%st%st%dt%st%st%dt%st%dt%st%d”,stu[i].classname,stu[i].name,stu[i].num,stu[i].major,stu[i].class1,stu[i].score1,stu[i].class2,stu[i].score2,stu[i].class3,stu[i].score3); } } printf(“nn按任意键返回主菜单!n”);getchar();scanf(“%c”,&a);menu(); void input(){ system(“cls”);int i;char a;FILE*fp=fopen(“file1”,“w+”);if(fp==NULL){ } printf(“ntt班级 姓名 学号 专业 课程1 课程1成绩 课程2 课程2成绩 课printf(”文件打开失败!n“);exit(1);程3 课程3成绩”); fscanf(fp,“nntt%st%st%dt%st%st%dt%st%dt%st%d”,stu[i].classname,stu[i].nfor(i=0;i } } fclose(fp);printf(“nn按任意键返回主菜单!”);getchar();scanf(“%c”,&a);menu();void output(){ system(“cls”);int i;char a;FILE*fp=fopen(“file1”,“r”);if(fp==NULL){ } printf(“文件打开失败!n”);exit(1);printf(“ntt班级 姓名 学号 专业 课程1 课程1成绩 课程2 课程2成绩 课程3 课程3成绩”); fprintf(fp,“nntt%st%st%dt%st%st%dt%st%dt%st%d”,stu[i].classname,stu[i].nfor(i=0;i } void back(){ system(“cls”);} printf(“nn按任意键返回主菜单!”);getchar();scanf(“%c”,&a);menu();fclose(fp); int t;int a;printf(“确定退出学生成绩管理系统请按1,否则按0: ”);scanf(“%d”,&t);if(t==0){ printf(“nnn请输入任意数字返回首页: scanf(”%d“,&a);system(”cls“);menu();} if(t==1){ exit(1);} } ”); 汇编语言实训任务书 一、实训题目:汇编语言综合设计 二、实训目的:通过汇编语言综合设计,进一步加深理解汇编语言的指令系统及程序设计流程,强化编程能力,增强上机调试程序的基本能力;学会动态文字的设计方法,理解8253、8255在PC机中的应用,掌握用8253演奏简单乐曲的编程方法,加深理解汇编语言在接口电路中的实际应用。 三、实训时间:各班按实际时间填写 四、实训内容: 1、动态文字的设计 利用延时子程序,完成两种动态文字的程序设计: (1)屏目上显示一字符串,并闪烁10次后消失。(2)屏目上显示一字符串,并下落20行后消失。 2、音乐程序的设计 利用PC机中的定时器计数器8253使扬声器发声,并演奏简单的乐曲。首先理解8253在PC机中的硬件连线及发声原理。发声时利用8253的计数器2,工作方工3来实现。掌握控制字的设置方法及计数初值与音符频率的关系。 (1)编写一简单的发声程序,使系统持续发声几秒后停止。 (2)编写演奏乐曲程序,使系统演奏出一首简单的歌曲。 五、实训要求: 1、严格遵守实训时间,做到不迟到、不早退、不旷课。 2、按时完成实训任务,上交软件作品及实训报告。 3、实训报告要包括封皮、实训题目、实训时间、实训目的、系统发声原理、实训内容。 4、每一种程序要求画出程序流程图,源程序、及运行结果分析。 5、实训报告最后一项为心得体会。第二篇:C语言实训
第三篇:c语言实训
第四篇:C语言实训
第五篇:语言实训任务书(范文模版)