C语言程序设计上机实训报告
教学周数 : 第13~14周(2周) 
地 点: 南门机房2楼 
指导老师: 苏兴龙 李 莹 
实训目的: 
1、通过两周集中强化上机实训,使学生更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。 
2、通过本次实训,使学生应用C语言在程序设计方面得到系统锻炼,为将来用C、VC进行软件开发打下良好基础。 
实训环境: 
硬件: 
软件:Windows XP Turbo C V2.0 
实训要求: 
1、对所编写的源程序的要求: 
(1)每人独立完成6套题调试任务; 
(2)明确填空题与改错题的算法思路; 
(3)编源程序要有适当的注释,使程序容易阅读; 
(4)要求独立完成任务,不得抄袭。 
2、实训报告内容的要求: 
(1)统一封面; 
(2)C语言编程题源程序代码; 
(3)实训总结。 
实训内容(共6套): 
第一套 上机训练试题 
一.填空题 
1.下列给定程序中,函数fun()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“Ab, c D”,则输出“ab,cd”。 
试题程序: 
#include <stdio.h> 
#include <string.h> 
#include <conio.h> 
char *fun (char tt[ ]) 
{ 
int i; 
for(i=0;tt;i++) 
{ 
if((tt>=’A’)&&(tt<= ‘z’ ) 
/*tt的范围在26个英文字母的取值之间,因此该处填写‘z’,又因为小写字母的ASCII值大于大写字母的ASCII值。*/ 
tt+=32; 
} 
return(tt); 
} 
main() 
{ 
char tt[81]; 
printf(“\nPlease enter a string :”); 
gets(tt); 
printf(“\nThe result string is:\n%s”,fun( tt )); 
/*该处调用了被调用的fun函数,fun被调用的fun函数的函数名为tt*/ 
} 
2.改错题 
下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形成一个新的字符串。 
例如:a中的字符串为fshADfg, b中的字符串为sdAEdi,则c中的字符串应为fdAADf. 
请改正程序中的错误,使它能得到正确的结果。 
注意:不要改动main函数,不得增行或删行,也不得更改程序中的结构。 
试题程序: 
#include <stdio.h> 
#include <string.h> 
void fun(char p[],char q[],char c[]) 
{ int i=0,j=0,k=0; 
while(p||q[j]) 
/*********found***********/ 
{ if(p<=q[j]) c[k]=p 
else c[k]=q[j]; 
/*根据题目中要求比较两个字符串对应的的字符,把ASCII值小的存放到c数组中。 
if(p) 
i++; 
if(q[j]) 
j++; 
/************found*************/ 
k++; 
} 
} 
main() 
{ char a[10]=”fshADfg”,b[10]=”sdAEdi”,c[80]={‘\0’}; 
fun(a, b,c); 
printf(“The string a:”); puts(a); 
printf(“The string b:”); puts(b); 
printf(“The result :”); puts(c); 
} 
3.编程题 
请编写函数fun,其功能是将两个两位数的正数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=16,b=35,调用该函数后,c=5361。 
注意:部分源程序给出如下。 
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 
试题程序: 
#include <stdio.h> 
long fun(int a,int b) 
{long c; 
c=(b%10)*1000+(b/10)*100+(a%10)*10+(a/10); 
/*题目中要求把a、b中的数字存放到c中组成一个四位数,a的十位做c的个位,a的个位做c的十位,b的个位做c的千位,b的十位做c的百位。因此给b、a各求得的余数做c的千位和十位,而他们求得的商做c的百位和个位。*/ 
} 
main() 
{int a,b; 
long c; 
clrscr(); 
printf(“Input a, b:”); 
scanf(“%d, %d”,&a,&b); 
c=fun(a,b ); 
printf(“The result is:%ld\n”,c); 
} 
第二套 上机训练试题 
1. 填空题 
下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 
试题程序: 
#include <stdio.h> 
#define SIZE 20 
fun(double s[ ],double w[ ]) 
{ int k, i; double sum; 
for(k=2,i=0; i<SIZE; i++) 
{s=k;k+=2;} 
sum=0.0; 
for(k=0,i=0;i<SIZE;i++) 
{sum+=s; 
if((i+1) % 5==0) 
{w[k]=sum/5;sum=0;k++;} 
} 
return k; 
/*根据条件求五个数的平均值,存放到w数组中,否则,返回k继续求。*/ 
} 
main() 
{ double a[SIZE],b[SIZE/5]; 
int i,k; 
k=fun(a,b); 
printf(“The original data:\n”); 
for(i=0;i<SIZE;i++) 
{ 
if(i%5==0) printf(“\n”); 
printf(“%4.0f”,a); 
} 
printf(“\n\nThe result:\n”); 
for(i=0;i<k;i++) printf(“%6.0f”, b ); 
printf(“\n\n”); 
} 
2.改错题 
下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。 
Y= 
例如:m中的值为5,则应输出0.838611。 
请改正程序中的错误,使它能得到正确的结果。 
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 
试题程序: 
#include<conio.h> 
#include<stdio.h> 
double fun(int m) 
/*被调用函数是一个表达式而并非一条语句*/ 
{double y=1.0; 
/***************found************/ 
int j=1; 
int i; 
for(i=2;i<m;i++) 
{ j=-1*j; 
/***************found************/ 
y+=1.0* j/(i*i); 
} 
return (y); 
} 
main() 
{ 
int n=5; 
clrscr(); 
printf(“\nThe result is %lf\n”,fun(n)); 
} 
3.编程题 
请编写一个函数void fun(int tt
[N],int pp[N]),tt指向一个M行N列的二文数组,求出数组每列中最大元素,并依次放入pp所指的一文数组中。二文数组中的数已在主函数中给出。 
注意:部分源程序给出如下。 
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号内填入所编写的若干语句。 
试题程序: 
#include <conio.h> 
#include <stdio.h> 
#define M 3 
#define N 4 
void fun(int tt
[N],int pp[N]) 
{ int i,j,max; 
for(j=0;j<N;j++) 
{max=tt[0][j]; 
for(i=0;i<M;i++) 
if(tt[j]>max) 
max=tt[j]; 
pp[N]=max;} 
/*定义被调用函数的初值及条件tt[j]值如果大于max则,把max给予tt,最后把max值赋予P[N的数组。*/ 
} 
main() 
{int t
[N]={{68,32,54,12},{14,24,88,58}, 
{42,22,44,56}}; 
int p[N],i,j,k; 
clrscr(); 
printf(“The riginal data is:\n”); 
for(i=0;i<M;i++) 
{ 
for (j=0;j<N;j++) 
printf(“%6d”,t[j]); 
printf(“\n”); 
} 
fun(t,p); 
printf(“\nThe result is:\n”); 
for(k=0;k<N;k++) 
printf(“%4d”,p[k]); 
printf(“\n”); 
} 
第三套 上机训练试题 
1.填空题 
下列给定程序中,函数fun()的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不变。 
试题程序: 
#include <stdio.h> 
#include <ctype.h> 
#include<conio.h> 
void fun(char s[]) 
{int i=0; 
while( s [] ) 
/*当数组s满足此条件是执行下面的if语句。*/ 
{ if(s>=’A’&&s<=’Z’||s>=’a’&&s<=’z’) 
{if(s==’Z’) s=’A’; 
else if(s==’z’) s=’a’; 
else s+= 1 ; 
i++; } 
else break ; 
/*当条件不满足时跳出循环。*/ 
} 
} 
main() 
{char s[80]; 
printf(“\n Enter a string with length<80:\n\n”); gets(s); 
printf(“\n The string:\n\n”); puts(s); 
fun(s); 
printf(“\n\n The Cords :\n\n”); puts(s); 
} 
2.改错题 
下列给定程序中,函数fun的功能是按以下递归公式求函数值。Fun(n)= 
例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。 
请改正程序中的错误,使它能得到正确的结果。 
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 
试题程序: 
#include <stdio.h> 
/***************found************/ 
fun(int n) 
{ int c; 
/**************found***********/ 
if(n= =1) c=15; 
else c=fun(n-1)*2; 
return(c); 
} 
main() 
{ 
int n; 
printf(“Enter n:”); 
scanf(“%d”,&n); 
printf(“The result :%d\n\n”,fun(n)); 
} 
3.编程题 
请编写函数fun(),对长度为7个字符的字符串, 除首、尾字符外,将其余5个字符按ASCII值码升序排列。例如:原来的字符串为BdsihAd,则排序后输出为BAdhisd。 
注意:部分源程序给出如下。 
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 
试题程序: 
#include <stdio.h> 
#include <ctype.h> 
#include<conio.h> 
int fun(char s[],int num) 
{char t; 
int i,j; 
for(i=1;i<num-2;i++) 
for(j=i+1;j<num-1;j++) 
if(s>[j]) 
{t=s; 
s=s[j]; 
s[j]=t;} 
} 
/*定义被调用函数的条件对字符串除首尾外,其余按ASCII值的大小排出。*/ 
main() 
{ char s[10]; 
clrscr(); 
printf(“输入7个字符的字符串:”); 
gets(s); 
fun(s,7); 
printf(“\n%s”,s); 
} 
第四套 上机训练试题 
1.填空题 
下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为87653142时,t中的数为7531。 
试题程序: 
#include <stdio.h> 
#include <conio.h> 
long fun(long s) 
{ int d,t; 
long s1=1; 
t=0; 
while(s>0) 
{ d=s % 10; 
/*求出该长整型数中的各个数*/ 
if(d%2!=0) 
{t=d*s1+t; 
s1*= 10 ; 
} 
s/= 10 ; 
} 
return t;} 
main() 
{long s,t; 
clrscr(); 
printf(“\nPlease enter s: “); scanf(“%ld”,&s); 
t=fun(s); 
printf(“The result is:%ld\n”,t); 
} 
2.改错题 
下列给定程序中函数fun()的功能是计算 1/n!的值。 
例如:给n输入5,则输出0.008333。 
请改正程序中的错误,使它能得到正确的结果。 
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 
试题程序: 
#include <stdio.h> 
#include <conio.h> 
/*************found**************/ 
double fun(int n) 
{ double result =1.000000; 
if(n==1) 
return 1.000000; 
/*因为其结果是实型的数,因此小数点后保留6位小数*/ 
while(n>1&&n<170) 
/**************found************/ 
result *=n--; 
result=1/result; 
return result; 
} 
main() 
{ 
int n; 
printf(“Input n:”); 
scanf(“%d”,&n); 
printf(“\n%d!=%lf\n”,n,fun(n)); 
} 
3.编程题 
编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。 
例如:n为1000时,函数值应为s=96.979379。 
注意:部分源程序给出如下。 
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 
试题程序: 
#include < conio.h> 
#include <math.h > 
#include <stdio.h> 
double fun(int n ) 
{int i,sum=0; 
double s; 
for(i=1;i<n;i++) 
{while(i%5==0&&i%11==0) 
sum+=i; 
s=sqrt(sum);} 
break i; 
/*定义被调用函数的条件及初值*/ 
} 
main() 
{ 
clrscr(); 
printf(“s=%f\n”,fun(1000)); 
} 
第五套 上机训练试题 
1.填空题 
下列给定的程序中,fun()函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。例如,若输入: 
I am a student to take the examination 
则应输出:I aM A studenT tO takE thE examinatioN 
试题程序: 
#include <conio.h> 
#include <ctype.h> 
#include <stdio.h> 
#include <string.h> 
void fun(char p[]) 
{ 
int i,k=0; 
for (i=0; p!=’\0’ ;i++) 
if(k) 
{ 
if(p= =’ ‘) 
{ 
k=0 ; 
p[i-1] =toupper(p[i-1]); 
/*toupperp[i-1]值赋给p[i-1]*/ 
} 
} 
else 
k=1; 
} 
main() 
{char chrstr[64]; 
int d; 
printf(“\n please enter an English sentence within 63 letters:”); 
gets(chrstr); 
d=strlen(chrstr); 
chrstr[d]=’ ‘; 
chrstr[d+1]=0; 
printf(“\n Bofore changing:\n %s”,chrstr); 
fun(chrstr)- ; 
/*被调用函数*/ 
printf(“\n After changing:\n %s”,chrstr); 
} 
2.改错题 
下列给定程序中函数fun()的功能是计算正整数num的各位上的数字平方和。 
例如:输入352,则输出38;若输入328,则输出应该是77。 
请改正程序中的错误,使它能得到正确的结果。 
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 
试题程序: 
#include <stdio.h> 
#include <conio.h> 
long fun(long num) 
{ 
/***********found*****************/ 
long k=1; 
do{ 
k+=(num%10)*(num%10); 
num/=10; 
/**************found**************/ 
}while(num); 
return(k-1); 
/*条件不满足时返回*/ 
} 
main() 
{ 
long n; 
clrscr (); 
printf(“\please enter a number :”); 
scanf(“%ld”,&n); 
printf(“\n%ld\n”,fun(n)); 
} 
3.编程题 
请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为F(n)= 
例如:t=1000时,函数值为987。 
注意:部分源程序给出如下。 
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 
试题程序: 
#include <conio.h> 
#include <math.h> 
#include <stdio.h> 
int fun(int t) 
{int a=1,b=1,c=0,I; 
do{c=a+b; 
a=b; 
b=c; 
while(c<t); 
c=a; 
return c; 
/*该被调用函数的需要的条件用来满足主函数。*/ 
} 
main() 
{ 
int n; 
clrscr(); 
n=1000; 
printf(“n=%d,f=%d\n”,n,fun(n)); 
} 
第辣套 上机训练试题 
1.填空题 
下列给定程序中,函数fun()的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。 
试题程序: 
# include <conio.h> 
# include <string.h> 
# include <stdio.h> 
# define N 80 
int fun(char s[],char t[]) 
{ int n; 
int i, j, k; 
n=0; i=0; 
while(s!=’\0’) 
{ k=i; 
j=0; 
while(t[j]!=’\0’) 
if(s[k]= =t[j]) {j++; i++ ;} 
else break; 
if(t[j]= = s[i+1] ) 
n++; 
s++ ; 
/*s字符串中含有t所指字符串的数目条件不满足是s,i自加。*/ 
} 
return n; 
} 
main() 
{ char a[N],b[N];int m; 
printf(“\nPlease enter string a :”);gets(a); 
printf(“\nPlease enter substring b :”);gets(b); 
m=fun(a,b); 
printf(“\nThe result is :m=%d\n”,m); 
} 
2.改错题 
下列给定程序中,函数fun()的功能是将字符串s中位于偶数位置的字符或ASCII码为奇数的字符放入字符串t中(规定第1个字符放在第0位中)。 
例如:字符串中的数据为ADFESHDI,则输出应当是AFESDI. 
请改正程序中的错误,使它能得到正确结果。 
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构 
试题程序: 
# include <conio.h> 
# include <stdio.h> 
# include <string.h> 
# define N 80 
/***********found*************/ 
void fun(char s[],char t[ ]) 
{ 
int i,j=0; 
/*给j赋初值*/ 
for(i=0;i<=strlen(s);i++) 
/*************found*************/ 
if(i%2= =0||s%2!=0) 
t[j++]=s; 
t[j]=’\0’; 
} 
main() 
{ char s[N],t[N]; 
clrscr(); 
printf(“\nPlease enter string s:”); 
gets(s); 
fun(s,t); 
printf(“\nThe result is:%s\n”,t); 
} 
3.编程题 
请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与其自身)的平方和(规定n的值不大于100)。 
例如:主函数从键盘给输入n的值为56,则输出为sum=1113。 
注意:部分源程序给出如下。 
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 
试题程序: 
# include <stdio.h> 
long fun(int n) 
{int i; 
long s=0; 
for(i=2;i<n-1;i++) 
if(n%I)==0 
c+=i*I ; 
return s; 
/*定义被调用函数中需要用到条件和变量。用来实现主函数的功能*/ 
main() 
{int n; 
long sum; 
printf(“Input n:”); 
scanf(“%d”,&n); 
sum=fun(n); 
printf(“sum=%ld\n”,sum); 
} 
成绩考核: 
1.成绩考核以实验报告为主要依据,主要考察填空题和改错题的正确性以及编程题所采用的算法和思路。 
2.上交实验报告时,老师对报告内容进行提问,学生的答辩情况作为成绩评定的参考指标。 
3.平时表现和考勤作为成绩评定的一项指标。 
C语言程序设计上机实训报告下载如图片无法显示或论文不完整,请联系qq752018766