资源描述
实验1
2.改错题
(1)下列程序的功能为:计算x*y的值并将结果输出。试纠正程序中存在错误,以实现其功能。程序以文件名sy1_2.c保存。
#include <stdio.h>
main
{
int x=2;y=3;a
A=x*y
print ('a=%d",a);
printf("\n");
}
#include <stdio.h>
main()
{
int x=2,y=3,a;
a=x*y;
printf("a=%d",a);
printf("\n");
}
(2)下列程序的功能为:求两数中的较大数据并输出。试纠正程序中存在错误,以实现其功能。程序以文件名sy1_3.c保存。
#include<stdio.h>
viod main()
{
int a,b,max;
Scanf("%d,%d",&a,&b);
Max=a;
If(max<b) max=b;
Printf("max=%d\n",max);
}
#include <stdio.h>
void main()
{
int a,b,max;
scanf("%d,%d",&a,&b);
max=a;
if (max<b) max=b;
printf("max=%d",max);
}
3.填空题
(1)从键盘输入两个整数,输出这两个整数的和。根据注释信息填写完整程序,以实现其功能。程序以文件名sy1_4.c保存。
#include<stdio.h>
main()
{
int x,y,total; /*定义整型变量x,y,total*/
printf("Please input x,y ! "); /*输出提示信息*/
printf("Please input x,y!"); /*由键盘输入两个数分别赋予x和y*/
scanf("%d,%d",&x,&y);
total=x+y; /*赋值语句*/
printf("%d + %d=%d\n",x,y,total); /*输出两个整数的和*/
}
(2)从键盘输入两个整数,输出这两个整数的差。根据注释信息填写完整程序,以实现其功能。程序以文件名sy1_5.c保存。
#include<stdio.h>
main()
{
int a,b,m;
printf("Input a,b please!");
scanf("%d%d",&a,&b);
m=a-b; /*赋值语句,将a和b的差值赋给m */
printf("%d-%d=%d\n",a,b,m); /*输出a 和b差的结果值后换行*/
}
实验3
1.改错题
(1)下列程序的功能为: 输入一个华氏温度,要求输出摄氏温度。公式为:C= ,输出取2位小数。请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy3_1.c保存。
#include <stdio.h>
main()
{
float c,f;
printf("请输入一个华氏温度:\n");
scanf("%f",f);
c==(5/9)*(f-32);
printf("摄氏温度为:%5.2f\n"c);
}
#include <stdio.h>
main()
{
float c,f;
printf("请输入一个华氏温度:\n");
scanf("%f",&f);
c=(5.0/9)*(f-32);
printf("摄氏温度为:%5.2f\n",c);
}
(2)下列程序的功能为:按下列公式计算并输出x的值。其中a和b的值由键盘输入。
x=2ab/(a+b)2
请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy3_2.c保存。
#include <stdio.h>
main()
{
int a,b;
float x;
scanf("%d,%d",a,b);
x=2ab/(a+b)(a+b);
printf("x=%d\n",x);
}
#include <stdio.h>
main()
{
int a,b;
float x;
scanf("%d,%d",&a,&b);
x=2.0*a*b/((a+b)*(a+b));
printf("x=%f\n",x);
}
(3)下列程序的功能为:从键盘输入一个小写字母,要求改用大写字母输出。纠正程序中存在的错误,以实现其功能,程序以文件名sy3_3.c保存。
#include <stdio.h>
main()
{
char c1,c2;
c1=getchar;
printf("%c,%d\n",c1,c1);
c2=c1+26;
printf("%c,%d\n",c2,c2);
}
#include <stdio.h>
main()
{
char c1,c2;
c1=getchar();
printf("%c,%d\n",c1,c1);
c2=c1-32;
printf("%c,%d\n",c2,c2);
}
2.程序填空
(1)下列程序的功能为:给定格式输入数据,按要求格式输出结果,补充完善程序,以实现其功能,程序以文件名sy3_4.c保存。
输入形式enter x,y:2 3.4
输出形式x+y=5.4
#include <stdio.h>
main()
{
int x;
float y;
printf ("enter x,y: ");
scanf("%d%f",&x,&y);
printf("x+y=%.1f\n",x+y);
}
(2) 下列程序的功能为:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据r、h,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
(周长l=2,圆面积s=,圆球表面积sq=,圆球体积vq=;圆柱体积vz=)
请填写适当的符号或语句,使程序实现其功能,程序以文件名sy3_5.c保存。
#include <stdio.h>
main()
{
float pi,h,r,l,s,sq,vq,vz;
pi=3.1415926;
printf("请输入圆半径r,圆柱高h:\n");
scanf("%f%f",&r,&h);
l= 2*pi*r ;
s= pi*r*r ;
sq= 4*pi*r*r ;
vq= 3.0/4*pi*r*r*r ;
vz= pi*h*r*r ;
printf("圆周长为:%.2f\n",l );
printf("圆面积为:%.2f\n", s );
printf("圆球表面积为:%.2f\n", sq );
printf("圆球体积为:%.2f\n", vq );
printf("圆柱体积为:%.2f\n", vz );
}
(3) 下列程序的功能为:通过键盘输入两个整数,分别存入变量x,y中,通过中间变量t互换x,y之值,并输出之。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy3_6.c保存。
#include <stdio.h>
main()
{
int x,y,t;
printf("请输入x,y:\n");
scanf("%d%d",&x,&y);
if (x<y)
{ t=x;x=y; y=t;} //x与y交换
printf("交换后的x:%d y:%d \n",x,y);
}
实验4
1.改错题
(1)下列程序的功能为:输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出ZAB;输入M,则输出LMN;输入Z,则输出YZA。纠正程序中存在的错误,以实现其功能。程序以文件名sy4_1.c保存。
#include <stdio.h>
main()
{
char ch,c1,c2;
printf("Enter a character:");
ch=getchar();
if((ch>='a')||(ch<='z'))
ch-=32;
c1=ch-1;
c2=ch+1;
if(ch='A') c1=ch+25;
else if(ch='Z') c2=ch-25;
putchar(c1);
putchar(ch);
putchar(c2);
putchar('\n');
}
#include <stdio.h>
main()
{
char ch,c1,c2;
printf("Enter a character:");
ch=getchar();
if((ch>='a')&&(ch<='z'))
ch-=32;
c1=ch-1;
c2=ch+1;
if(ch=='A') c1=ch+25;
else if(ch=='Z') c2=ch-25;
putchar(c1);
putchar(ch);
putchar(c2);
putchar('\n');
}
(2)下列程序的功能为:输入3个整数后,输出其中最大值。纠正程序中存在的错误,以实现其功能。程序以文件名sy4_2.c保存。
#include <stdio.h>
main()
{
int a,b,c,max;
printf ("请输入3个整数:\n");
scanf ("%d%d%d",&a,&b,&c);
max=a;
if (c>b)
{ if (b>a) max=c;}
else
{if (c>a) max=b;}
printf("3个数中最大者为:%d\n",max);
}
#include "stdio.h"
main()
{
int a,b,c,max;
printf ("请输入3个整数:\n");
scanf ("%d%d%d",&a,&b,&c);
max=a;
if (c>b)
{ if (b>a) max=c;}
else
{ if (b>a) max=b;}
printf("3个数中最大者为:%d\n",max);
}
(3)下列程序的功能为:输入1-4月份号,输出该月份对应的英语表示法。例如,输入“3”,则输出“Mar”。纠正程序中存在的错误,以实现其功能。程序以文件名sy4_3.c保存。
#include <stdio.h>
main()
{
char m;
printf("input the month number:\n");
scanf ("%c",&m);
switch (m)
{
case 1:printf ("Jan");
case 2:printf ("Feb");
case 3:printf ("Mar");
case 4:printf ("Apr");
}
}
#include "stdio.h"
main()
{
char m;
printf("input the month number:\n");
scanf ("%c",&m);
switch (m)
{
case '1':printf("Jan\n");break;
case '2':printf("Feb\n");break;
case '3':printf("Mar\n");break;
case '4':printf("Apr\n");break;
default:break;
}
}
2.程序填空题
(1)下列程序的功能为:判断从键盘上输入的一个字符,并按下列要求输出。
若该字符是数字,输出字符串"0-9"
若该字符是大写字母,输出字符串"A-Z"
若该字符是小写字母,输出字符串"a-z"
若该字符是其他字符,输出字符串"!,@,…"
补充完善程序,以实现其功能。程序以文件名sy4_4.c保存。
#include <stdio.h>
main()
{
char c;
scanf("%c",&c);
if('0'<=c&&c<='9')
printf("0-9\n");
else if('A'<=c&&c<='Z')
printf("A-Z\n");
else if('a'<=c&&c<='z')
printf("a-z\n");
else
printf("!,@,…\n");
}
(2)下列程序的功能为:实现加、减、乘、除四则运算。补充完善程序,以实现其功能。程序以文件名sy4_5.c保存。
#include <stdio.h>
main()
{
int a,b,d;
char ch;
printf("Please input a expression:");
scanf("%d%c%d",&a,&ch,&b);
switch(ch)
{
case '+':d=a+b;
printf("%d+%d=%d\n",a,b,d);
break;
case '-':d=a-b;
printf("%d-%d=%d\n",a,b,d);
break;
case '*':d=a*b;
printf("%d*%d=%d\n",a,b,d);
break;
case '/':if(b==0)
printf("Divisor is zero\n");
else
printf("%d/%d=%f\n",a,b,(float)a/b); /*强制类型转换*/
break;
default: printf("Input Operator error!\n");
}
}
(3)下列程序的功能为:猜价格,用户输入自己估计的价格,程序判断其正确性。补充完善程序,以实现其功能。程序以文件名sy4_6.c保存。
#include "stdio.h"
main()
{
float a,b;
printf("请主持人输入时尚手机的实际价格\n");
scanf("%f",&b);
printf("\n\n请观众猜时尚手机的价格\n");
scanf("%f",&a);
if(a<b)
printf("低了\n");
if(a==b)
printf("猜对了!\n");
if(a>b)
printf("高了\n");
}
实验5
1.改错题
(1)下列程序的功能为:求1~100之和(和值为5050)并输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_1.c保存。
#include <stdio.h>
main()
{
int i,sum=0;
i=1;
while(i<=100)
sum=sum+i;
i++;
printf("The sum from 1 to 100 is %d\n",sum);
}
#include <stdio.h>
main()
{
int i,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("The sum from 1 to 100 is %d\n",sum);
}
(2)下列程序的功能为:倒序打印26个英文字母。纠正程序中存在的错误,以实现其功能,程序以文件名sy5_2.c保存。
#include <stdio.h>
main()
{
char x;
x='z';
while(x!='a')
{
printf("%3d",x);
x++;
}
}
#include <stdio.h>
main()
{
char x;
x='z';
while(x>='a')
{
printf("%3c",x);
x--;
}
}
(3)下列程序的功能为:输入一个大写字母,打印出一个菱形。该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A出现在第一行和最末行为止。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_3.c保存。例如,输入字母D,打印出如下图形:
A
BBB
CCCCC
DDDDDDD
CCCCC
BBB
A
#include < stdlib.h >
main()
{
int i,j,k;
char ch;
scanf("%c",&ch);
k=ch-'A'+1;
for (i=1;i<=k;i++)
{
for (j=20;j>=i;j--)
printf("%c",' ');
for (j=1;j<=i-1;j++)
printf("%c",'A'+i-1);
printf("\n");
}
k=ch-'A';
for (i=k;i>=1;i--)
{
for (i=20;i>=i;i--)
printf("%c",' ');
for (j=1; j<2*i-1;j++)
printf("%c",'A'+i-1);
printf("\n");
}
}
#include <stdio.h>
main()
{
int i,j,k;
char ch;
scanf("%c",&ch);
k=ch-'A'+1;
for (i=1;i<=k;i++)
{
for (j=20;j>=i;j--)
printf("%c",' ');
for (j=1;j<=2*i-1;j++)
printf("%c",'A'+i-1);
printf("\n");
}
k=ch-'A';
for (i=k;i>=1;i--)
{
for (j=20;j>=i;j--)
printf("%c",' ');
for (j=1;j<=2*i-1;j++)
printf("%c",'A'+i-1);
printf("\n");
}
}
2.程序填空题
(1)用辗转相除法求两个正整数的最大公约数和最小公倍数。补充完善程序,以实现其功能,程序以文件名sy5_4.c保存。“辗转相除法”求两个正整数的最大公约数的算法如下:
① 将两数中大的那个数放在m中,小的放在n中;
② 求出m被n除后的余数r;
③ 若余数为0则执行步骤⑦,否则执行步骤④;
④ 把除数作为新的被除数,把余数作为新的除数;
⑤ 求出新的余数r;
⑥ 重复步骤③~⑤。
⑦ 输出n,n即为最大公约数。
#include <stdio.h>
main ()
{
int r,m,n,t;
scanf("%d%d",&m,&n);
if(m<n)
{t=m;m=n;n=t;} t=m*n;
r=m%n;
while(r)
{
m=n;
n=r;
r=m%n;
}
printf("%d %d\n",n, t/n);
}
(2)假设有1020个西瓜,第一天卖了一半多两个,以后每天卖剩的一半多两个,求几天后能卖完。补充完善程序,以实现其功能。程序以文件名sy5_5.c保存。
#include <stdio.h>
main()
{
int day,x1,x2;
day=0;
x1=1020;
while(x1>0)
{
x2=x1/2-2;
x1=x2;
day++;
}
printf("day=%d\n",day);
}
(3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数.补充完善程序,以实现其功能。程序以文件名sy5_6.c保存。
#include <stdio.h>
main()
{
int i,j;
for(i=0;i<10;i++)
{
j=i*10+6;
if (j%3!=0) continue;
printf("%d ",j);
}
printf("\n");
}
实验6
1.改错题
(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_1.c保存。
#include<stdio.h>
void main()
{
int n=10,i,sum=0;
int a[n];
for(i=0;i<10;i++)
{
scanf("%d",a[i]);
sum=sum+a[i];
}
printf("sum=%d\n",sum);
}
#include<stdio.h>
void main()
{
int n=10,i,sum=0;
int a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
printf("sum=%d\n",sum);
}
(2)下列程序的功能为:将字符串b连接到字符串a。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_2.c保存。
#include<stdio.h>
void main( )
{
char a[]="wel",b[]="come";
int i,n=0;
while(!a[n]) n++;
for(i=0;b[i]!='\0';i++)
a[n+i]=b[i];
a[n+i]=’\0’;
printf("%s\n",a);
}
#include<stdio.h>
void main( )
{
char a[10]="wel",b[]="come";
int i,n=0;
while(a[n]!='\0') n++;
for(i=0;b[i]!='\0';i++)
a[n+i]=b[i];
a[n+i]=’\0’;
printf("%s\n",a);
}
(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_3.c保存。
#include<stdio.h>
#define N 4
#define M 4
main()
{
int i,j,k,flag1,flag2,a[N][M],max,maxj;
for (i=0;i<N;i++)
for (j=0;j<M;j++)
scanf("%d",&a[i][j]);
flag2=0;//1,
for (i=0;i<N;i++)
{
max=a[j][0];
maxj=0;//i
for (j=0;j<M;j++)
if (a[i][j]>max)
{
max=a[i][j];
maxj=j;
}
for (k=0,flag1=1;k<N&&flag1;k++)
if (max>a[k][maxj])
flag1=0;
if (flag1)
{
printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max);
flag2=1;//0
}
}
if (flag2)
printf("\nThere is no saddle point in the Matrix\n");
}
#include<stdio.h>
#define N 4
#define M 4
main()
{
int i,j,k,flag1,flag2,a[N][M],max,maxj;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
flag2=0;
for(i=0;i<N;i++)
{
max=a[i][0];
maxj=0;
for(j=0;j<M;j++)
if(a[i][j]>max)
{
max=a[i][j];
maxj=j;
}
for (k=0,flag1=1;k<N&&flag1;k++)
if (max>a[k][maxj]) flag1=0;
if (flag1)
{
printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max);
flag2=1;
}
}
if (!flag2)
printf("\nThere is no saddle point in the Matrix\n");
}
2.程序填空题
(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。补充完善程序,以实现其功能。程序以文件名sy6_4.c保存。
#include "stdio.h"
#define N 10
main()
{
int a[ ]={0,1,2,3,4,5,6,7,8,9},k;
int low=0,high=N-1,mid,find=0;
printf("请输入欲查找的值:\n");
scanf("%d",&k);
while (low<=high)
{
mid=(low+high)/2;
if(a[mid]==k)
{
printf("找到位置为:%d\n",mid+1);find=1;
}
if(a[mid]>k)
high=mid-1;
else
low=mid+1;
}
if(!find) printf("%d未找到\n",k);
}
(2)以下程序的功能是:求3个字符串(每串不超过20个字符)中的最大者。补充完善程序,以实现其功能。程序以文件名sy6_5.c保存。
#include<stdio.h>
#include<string.h>
void main()
{
char string[20],str[3][20];
int i;
for (i=0;i<3;i++) gets(str[i]);
if ( strcmp(str[0], str[1])>0 ) strcpy(string,str[0]);
else strcpy(string,str[1]);
if ( strcmp(string, str[0])<0 ) strcpy(string,str[2]);
puts(string);
}
(3)下列程序的功能为:从键盘输入20个整数,统计非负数个数,并计算非负数之和。补充完善程序,以实现其功能。程序以文件名sy6_6.c保存。
#include <stdio.h>
main()
{
int i,a[20],sum=0,count=0;
for(i=0;i<20;i++ )
scanf("%d", &a[i] );
for(i=0;i<20;i++)
{
if(a[i]<0)
continue;
sum+=a[i];
count++;
}
printf("s=%d\t count=%d\n",sum,count);
}
实验7
1.改错题
(1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_1.c存盘。
#include <stdio.h>
#include <string.h>
void sub( char s[], char t[] )
{
int i, d;
d=strlen(s);
for(i=1;i<d;i++)
t[i]=s[d-1-i];
for(i=0;i<d;i++)
t[d+i]=s[i];
t[2*d]='/0';
}
main( )
{
char s[100], t[100];
printf( " Please enter string s : " );
scanf("%s" , s );
sub(s,t);
printf( " \n The result is : %s \n ", t );
}
#include <stdio.h>
#include <string.h>
void sub( char s[], char t[] )
{
int i, d;
d=strlen(s);
for(i=0;i<d;i++)
t[i]=s[d-1-i];
for(i=0;i<d;i++)
t[d+i]=s[i];
t[2*d]='\0';
}
main( )
{
char s[100], t[100];
printf( " Please enter string s : " );
scanf("%s" , s );
sub(s,t);
printf( " \n The result is : %s \n ", t );
}
(2)下列程序的功能为:将字符数组中的字符串逆序输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_2.c存盘。
#include<string.h>
#include<stdio.h>
#define ARR_SIZE 80
void Inverse(char str[]);
void main()
{
char a[ARR_SIZE];
printf("Please enter a string: ");
gets(a);
Inverse(char a[]);
printf("The inversed string is: ");
puts(a);
}
void Inverse(char str[])
{
int len,i=0,j;
char temp;
len=strlen(str);
for(j=len-1;i<j;i++,j--)
{
temp=str[i];
str[j]=str[i];
str[j]=temp;
}
}
#include<string.h>
#include<stdio.h>
#define ARR_SIZE 80
void Inverse(char str[]);
void main()
{
char a[ARR_SIZE];
printf("Please enter a string: ");
gets(a);
Inverse(a);
printf("The inversed string is: ");
puts(a);
}
void Inverse(char str[])
{
int len,i=0,j;
char temp;
len=strlen(str);
for(j=len-1;i<j;i++,j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
(3)下列程序的功能为:求整数n的阶乘。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_3.c存盘。
#include<stdio.h>
int fun(int n)
{
static int p=1;
p=p*n;
return p;
}
void main()
{
int n,i;
int f=0;
printf("input member: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
f=f*fun(i);
printf("%d!=%d\n",n,f);
}
#include<stdio.h>
int fun(int n)
{
static int p=1;
p=p*n;
return p;
}
void main()
{
int n,i;
int f=1;
printf("input member: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
f=fun(i);
printf("%d!=%d\n",n,f);
}
2.程序填空题
(1)下列sum()函数的功能是:计算数组x前n个元素之和。在主函数中,输入10个任意整数和下标i1、i2的值(设1≤i1≤i2≤9),调用sum()函数计算从第i1元素到第i2元素的和,并输出结果。补充完善程序,以实现其功能。程序以文件名sy7_4.c存盘。
#include <stdio.h>
int sum( int x[], in
展开阅读全文