C程题目答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

70022矩阵运算程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat(0repeat10),做repeat次下列运算:读入1个正整数n(1≤n≤6),再读入n阶方阵a,计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。输入输出示例:括号内为说明输入:1(repeat=1)4(n=4)2341561171811111sum=35(2+3+4+5+6+7+8=35)#includestdio.hintmain(void){inti,j,n,sum;intrepeat,ri;inta[6][6];scanf(%d,&repeat);for(ri=1;ri=repeat;ri++){scanf(%d,&n);for(i=0;in;i++)for(j=0;jn;j++)scanf(%d,&a[i][j]);sum=0;for(i=0;in;i++){for(j=0;jn;j++)sum+=a[i][j];}for(i=1;in-1;i++)sum-=a[i][n-i-1];/*减去副对角线的元素*/for(j=0;jn;j++)sum-=a[n-1][j];/*减去最下一行*/for(i=0;in;i++)sum-=a[i][n-1];/*减去最右一列*/sum=sum+a[n-1][n-1];/*右下角元素减了两次,补回一次*/printf(sum=%d\n,sum);}}70023九九乘法表程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat(0repeat10),做repeat次下列运算:输入一个正整数n(0n10),输出九九乘法表的前n×n项。提示:将乘数、被乘数和乘积放入一个二维数组中,再输出该数组。输入输出示例:括号内为说明输入:1(repeat=1)3(n=3)输出:*123112243369/*根据输出要求将乘数存于a[0][j]被乘数存于a[i][0];结果放在a[i][j],i,j不为0*/#includestdio.hintmain(void){inti,j,n;inta[10][10];intrepeat,ri;scanf(%d,&repeat);for(ri=1;ri=repeat;ri++){scanf(%d,&n);for(j=0;j=n;j++)a[0][j]=j;/*乘数*/for(i=0;i=n;i++)a[i][0]=i;/*被乘数*/for(i=1;i=n;i++)for(j=1;j=n;j++)a[i][j]=i*j;/*结果*/for(i=0;i=n;i++){for(j=0;j=n;j++)if(i==0&&j==0)printf(%-4c,'*');elseif(i==0||j=i)printf(%-4d,a[i][j]);printf(\n);}}}夏2周70024判断上三角矩阵输入一个正整数repeat(0repeat10),做repeat次下列运算:输入1个正整数n(1≤n≤6)和n阶方阵a中的元素,如果a是上三角矩阵,输出YES,否则,输出NO。上三角矩阵指主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。输入输出示例:括号内为说明输入:2(repeat=2)3(n=3)1230450062(n=2)10-82输出:YESNO#includestdio.h#includemath.hintmain(void){intflag,i,j,n;inta[6][6];intrepeat,ri;scanf(%d,&repeat);for(ri=1;ri=repeat;ri++){scanf(%d,&n);for(i=0;in;i++)for(j=0;jn;j++)scanf(%d,&a[i][j]);flag=1;for(i=0;in;i++){for(j=0;ji;j++){if(a[i][j]!=0){flag=0;break;/*只要一个数值不满足就可以否定*/}}if(!flag)break;}if(flag!=0)printf(YES\n);elseprintf(NO\n);}}70025算算看,这是第几天?输入一个正整数repeat(0repeat10),做repeat次下列运算:输入日期(年、月、日),输出它是该年的第几天。要求定义与调用函数day_of_year(year,month,day),计算并返回year(年)、month(月)和day(日)对应的是该年的第几天,函数形参year、month和day的类型是int,函数类型也是int。输入输出示例:括号内为说明输入:2(repeat=2)198131(1981年3月1日)200031(2000年3月1日)输出:daysofyear:60(1981年3月1日是该年的第60天)daysofyear:61(2000年3月1日是该年的第61天)#includestdio.hintmain(void){intday,day_year,month,year;intrepeat,ri;intday_of_year(intyear,intmonth,intday);scanf(%d,&repeat);for(ri=1;ri=repeat;ri++){scanf(%d%d%d,&year,&month,&day);day_year=day_of_year(year,month,day);printf(daysofyear:%d\n,day_year);}}intday_of_year(intyear,intmonth,intday){intk,leap;inta[2][31]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};leap=(year%4==0&&year%100!=0||year%400==0);for(k=1;kmonth;k++)day=day+a[leap][k];returnday;}70026找鞍点(选作)输入一个正整数repeat(0repeat10),做repeat次下列运算:输入1个正整数n(1≤n≤6)和n阶方阵a中的元素,假设方阵a最多有1个鞍点,如果找到a的鞍点,就输出其下标,否则,输出NO。鞍点的元素值在该行上最大,在该列上最小。输入输出示例:括号内为说明输入:2(repeat=2)4(n=4)17414836161207892(n=2)1741输出:a[2][1]=6NO#includestdio.hintmain(void){intflag,i,j,k,row,col,n;inta[6][6];intrepeat,ri;scanf(%d,&repeat);for(ri=1;ri=repeat;ri++){scanf(%d,&n);for(i=0;in;i++)for(j=0;jn;j++)scanf(%d,&a[i][j]);for(row=0;rown;row++){col=0;for(j=1;jn;j++){if(a[row][j]a[row][col])col=j;}flag=1;for(i=0;in;i++){if(a[row][col]a[i][col]){flag=0;break;/*只要当前行的最大值不是当前列的最小,放弃*/}}if(flag)break;/*找到就可以跳出循环了*/}if(flag!=0)printf(a[%d][%d]=%d\n,row,col,a[row][col]);elseprintf(NO\n);}}70031将字符串逆序存放输入一个以回车结束的字符串(少于80个字符),将它的内容逆序输出。如ABCD的逆序为DCBA。输入输出示例:括号内为说明输入:Welcometoyou!输出:!uoyotemocleW思路:若输入:012345要输出543210即第k个字符的位置变换成:n-k-1。由于两个位置上的值是互换的,所以只要对其中的一半数据操作就可以了。#includestdio.hintmain(void){inti,j,temp;charstr[80];i=0;while((str[i]=getchar())!='\n')i++;str[i]=0;/*使用\0的必要性*/for(j=0;ji/2;j++){temp=str[i-j-1];str[i-j-1]=str[j];str[j]=temp;}for(i=0;str[i]!=0;i++)putchar(str[i]);}另解思路:教材p16170032查找字符输入一个正整数repeat(0repeat10),做repeat次下列运算:输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符,如果找到,输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出NotFound。输入输出示例:括号内为说明输入:2(repeat=2)m(字符'm')programming(字符串programming)a(字符'a')1234(字符串1234)输出:index=7('m'在programming中对应的最大下标是7)NotFound(1234中没有'a')#includestdio.h#defineMAXLEN80intmain(void){charcc,ch;charstr[MAXLEN];intcount,flag,i,index;intrepeat,ri;scanf(%d,&repeat);getchar();for(ri=1;ri=repeat;ri++){cc=getchar();getchar();/*用于抵消输入查询字符后的回车*/i=0;while((ch=getchar())!='\n'){str[i++]=ch;}str[i]=0;flag=0;for(i=0;str[i]!='\0';i++){if(str[i]==cc){flag++;index=i;}}if(flag)printf(index=%d\n,index);elseprintf(NotFound\n);}}70033统计大写辅音字母输入一个正整数repeat(0repeat10),做repeat次下列运算:输入一个以回车结束的字符串(少于80个字符),统计并输出其中大写辅音字母的个数。大写辅音字母:除'A','E','I','O','U'以外的大写字母。输入输出示例:括号内为说明输入:2(repeat=2)HELLOgroup输出:count=3(HELLO中有3个大写辅音字母)count=0(group中没有大写辅音字母)#includestdio.h#defineMAXLEN80intmain(void){charch;charstr[MAXLEN];intcount,i;intrepeat,ri;scanf(%d,&repeat);getchar();for(ri=1;ri=repeat;ri++){i=0;while((ch=getchar())!='\n'){str[i++]=ch;}str[i]=0;i=0;count=0;while(str[i]){if(str[i]='Z'&&str[i]='A')switch(str[i]){case'A':case'E':case'I':case'O':case'U':break;default:count++;break;}i++;}printf(count=%d\n,count);}}70034字符串替换输入一个正整数repeat(0repeat10),做repeat次下列运算:输入一个以回车结束的字符串(少于80个字符),将其中的大写字母用下面列出的对应大写字母替换,其余字符不变,输出替

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功