程序填空、改错第二次练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序填空和改错练习2
一、程序填空
1. 功能:输入一个学生的生日(年:y0、月:m0、日:d0),并输入当前日期(年:y1、月:m1、日:d1)。求出该学生的年龄(实足年龄)。
#include
main()
{int age,y0,y1,m0,m1,d0,d1;
printf("输入生日日期(年,月,日)");
/***********SPACE***********/
【?】("%d,%d,%d",&y0,&m0,&d0);
printf("输入当前日期(年,月,日)");
scanf("%d,%d,%d",&y1,&m1,&d1);
age=y1-y0;
/***********SPACE***********/
if(m0【?】m1)age--;
/***********SPACE***********/
if((m0【?】m1)&&(d0>d1))age--;
printf("age=%3d",age);
}
2. 题目:对二维数组a中存储的N*N矩阵做如下操作:先将每一行中值最大的元素与该行位于主对角线处的元素交换,然后对主对角线上所有元素排序使其自左上角到右下角升序排列,最后输出排序后主对角线上各元素的值。
#include
#define N 5
void fun(int x[][N],int n)
{
int i,j,t,arr,col;
for(i=0;i { arr=x[i][0];col=0; for(i=0;i { arr=x[i][0];col=0; /***********SPACE***********/ for(j=0;j t=x[i][i]; x[i][i]=x[i][col];x[i][col]=t; } for(i=0;i for(j=i+1;j /***********SPACE***********/ if(【?】) { t=x[i][i]; x[i][i]=x[j][j]; x[j][j]=t;} } } void main() { int a[N][N]={{10,25,24,13,23},{11,22,12,21,14},{20,15,19,16,18}, {17,9,4,5,3},{2,1,6,7,8}}; int i; fun(a,N); for(i=0;i printf("\n"); } 3. 功能:输入字符串,再输入一个字符,将字符串中与输入字符相同的字符删除。 #include "stdio.h" void fun(char a[],char c) { int i,j; /***********SPACE***********/ for(i=j=0; 【?】;i++) if(a[i]!=c) a[j++]=a[i]; /***********SPACE***********/ 【?】; } main() { char a[20],cc; gets(a); /***********SPACE***********/ 【?】; /***********SPACE***********/ 【?】; puts(a); } 二、程序改错 1. 功能:求出a所指数组中最大数和次最大数(规定最大数和次最大数不在a[0]和a[1]中),依次和a[0]、a[1]中的数对调。 例如:数组中原有的数:7、10、12、0、3、6、9、11、5、8, 输出的结果为:12、11、7、0、3、6、9、10、5、8。 #include #include #define N 20 int fun ( int a[], int n ) { int k,m1,m2,max1,max2,t; max1=max2= -32768; m1=m2=0; for ( k = 0; k < n; k++ ) if ( a[k]>max1 ) { max2 = max1; m2 = m1; max1 = a[k]; m1 = k; } /**********FOUND**********/ else if( a[k]>max1 ) { max2 = a[k]; m2 = k; } /**********FOUND**********/ t = a[0]; a[m1]=a[0]; a[m1] = t; /**********FOUND**********/ t = a[1]; a[m2]=a[1]; a[m2] = t; } main( ) { int x, b[N]={7,10,12,0,3,6,9,11,5,8}, n=10, i; clrscr( ); for ( i = 0; i printf("%d ",b[i]); printf("\n"); fun (b, n); for ( i=0; i printf("%d ",b[i]); printf("\n"); getch(); } 2.题目:在主函数中main()中输入年、月、日,然后计算该天是这一年的第几天。其中函数LeapYear()是判断某年是否为闰年。 #include #include int LeapYear(int year){ /***********FOUND***********/ return ((year%4==0 && year%100) && (year%400==0)); } int main(){ int