C语言程序设计作业整理Ⅱ_浙大软院C语言_第1页
C语言程序设计作业整理Ⅱ_浙大软院C语言_第2页
C语言程序设计作业整理Ⅱ_浙大软院C语言_第3页
C语言程序设计作业整理Ⅱ_浙大软院C语言_第4页
C语言程序设计作业整理Ⅱ_浙大软院C语言_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.1.1输入一个正整数 n(0n=9)和一组(n个)有序的整数,再输入一个整数 x,把 x 插入到这组数据中,使该组数据仍然有序。输入:4 (repeat=4) 5 (数据的个数n=5)1 2 4 5 7 (5个有序整数)3 (待插入整数x=3)4 (数据的个数n=4)1 2 5 7 (4个有序整数)-10 (待插入整数x=-10)3 (数据的个数n=3)1 2 4 (3个有序整数)100 (待插入整数x=100)5 (数据的个数n=5)1 2 4 5 7 (5个有序整数)4 (待插入整数x=4)输出:1 2 3 4 5 7 -10 1 2 5 7 1 2 4 100 1 2 4 4 5 7 #include int main(void) int i, j, n, x; int repeat, ri; int a10; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) scanf(%d, &ai); scanf(%d, &x);/*-*/for(i=0;iai)continue;j=n-1;while(j=i)aj+1=aj;j-;ai=x;break;if(i=n)an=x; for(i = 0; i n + 1; i+) printf(%d , ai); putchar(n); return 0;7.1.2输入一个正整数 n (1n=10),再输入 n 个整数,输出平均值(保留2位小数)。输入输出示例:括号内为说明输入2 (repeat=2) 3 (n=3) 1 2 -6 5 (n=5) 12 2 5 4 0 输出average = -1.00average = 4.60#include int main(void) int i, n, sum; int repeat, ri; int a10;double aver; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) scanf(%d, &ai);/*-*/sum=0;for(i=0;in;i+)sum=sum+ai;aver=1.0*sum/n; printf(average = %.2fn, aver); return 0;7.1.3输入一个正整数 n (1n=10),再输入 n 个整数,存入数组a中,先将数组a中的这n个数逆序存放,再按顺序输出数组中的n个元素。输入输出示例:括号内为说明输入2 (repeat=2) 4 (n=4) 10 8 1 25 (n=5) 1 2 5 4 0 输出2 1 8 100 4 5 2 1#include int main(void) int i, n, temp; int repeat, ri; int a10; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) scanf(%d, &ai);/*-*/for(i=0;i=(n-1)/2;i+)temp=ai;ai=an-1-i; an-1-i=temp; for(i = 0; i n; i+) printf(%d , ai); printf(n); 7.1.4输入一个正整数 n (1n=10),再输入n个整数,输出最大值及其对应的最小下标,下标从0开始。输入输出示例:括号内为说明输入3 (repeat=3) 3 (n=3)1 6 44 (n=4)10 8 1 95 (n=5)1 2 0 4 5输出max = 6, index = 1 (最大值6的下标是1)max = 10, index = 0 (最大值10的下标是0)max = 5, index = 4 (最大值5的下标是4)#include int main(void) int i, index, n; int ri, repeat; int a10; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) scanf(%d, &ai);/*-*/index=0;for(i=1;iaindex)index=i; printf(max = %d, index = %dn, aindex, index); return 0;7.1.5输入一个正整数 n (1n=10),再输入 n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的 n 个数。输入输出示例:括号内为说明输入3 (repeat=3) 5 (n=5) 8 2 5 1 44 (n=4) 1 5 6 75 (n=5) 5 4 3 2 1 输出After swap: 1 2 5 4 8After swap: 1 5 6 7After swap: 1 4 3 2 5#include int main(void) int i, index, n, t; int repeat, ri; int a10; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) scanf(%d, &ai);/*-*/index=0;for(i=1;in;i+)if(aiaindex) index=i;t=aindex;aindex=a0; a0=t;index=0;for(i=1;iaindex)index=i;t=aindex;aindex=an-1;an-1=t; printf(After swap: ); for(i = 0; i n; i+) printf(%d , ai); printf(n); return 0;7.1.6输入一个正整数 n (1n=10),再输入 n 个整数,将它们从大到小排序后输出。输入输出示例:括号内为说明输入3 (repeat=3) 4 (n=4) 5 1 7 63 (n=3) 1 2 35 (n=5) 5 4 3 2 1 输出After sorted: 7 6 5 1 After sorted: 3 2 1After sorted: 5 4 3 2 1#include int main(void) int i, index, k, n, temp; int repeat, ri; int a10; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) scanf(%d, &ai);/*-*/for(k=0;kn-1;k+)index=k;for(i=k+1;iaindex)index=i;temp=aindex;aindex=ak;ak=temp; printf(After sorted: ); for(i = 0; i n; i+) printf(%d , ai); printf(n); return 0;7.1.7输入一个正整数 n (1n=10),再输入 n 个整数,将它们存入数组 a 中,再输入一个整数 x,然后在数组 a 中查找与 x 相同的元素,如果找到,输出 x 在数组 a 中对应元素的最小下标,如果没有找到,输出相应信息。输入输出示例:括号内为说明输入:2(repeat=2)6(n=6)1 3 5 7 9 55(x=5)4(n=4)1 3 5 72(x=2)输出:5: a22: not found#include int main(void) int flag, i, n, x; int repeat, ri; int a10; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) scanf(%d, &ai); scanf(%d, &x);/*-*/flag=0;for(i=0;in;i+)if(ai=x)flag=1;break; if(flag != 0) printf( %d: a%dn, x, i); else printf( %d: not foundn, x); return 0;7.2.1输入2个正整数 m 和 n (1=m=6, 1=n=6),然后输入矩阵 a(m 行 n 列)中的元素,分别求出各行元素之和,并输出。输出使用语句:printf(sum of row %d is %dn, i, sum);输入输出示例:括号内为说明输入:3 2(m=3,n=2)6 31 -83 12输出:sum of row 0 is 9sum of row 1 is -7sum of row 2 is 15#include int main(void) int i, j, m, n, sum; int a66; scanf(%d%d,&m,&n); for(i = 0; i m; i+) for(j = 0; j n; j+) scanf(%d, &aij);/*-*/ for(i=0;im;i+) sum=0; for(j=0;jn;j+) sum=sum+aij; printf(sum of row %d is %dn, i, sum); return 0; 7.2.2读入 1 个正整数 n(1n6), 再读入 n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。输入输出示例:括号内为说明输入:1 (repeat=1)4 (n=4)2 3 4 15 6 1 17 1 8 11 1 1 1sum = 35 (2+3+4+5+6+7+8=35)#include stdio.hint main(void) int i, j, n, sum; int repeat, ri; int a66; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) for(j = 0; j n; j+) scanf(%d, &aij);/*-*/ sum=0; for(i=0;in;i+) for(j=0;jn;j+)if(j=n-1)|(j=n-1-i)|(i=n-1) sum=sum; else sum=sum+aij; printf(sum = %dn, sum); return 0;7.2.3输入一个正整数 n(0n10),输出九九乘法表的前nn项。提示:将乘数、被乘数和乘积放入一个二维数组中,再输出该数组。输入输出示例:括号内为说明输入:1 (repeat=1)3 (n=3)输出:* 1 2 31 12 2 43 3 6 9#include stdio.hint main(void) int i, j, n; int a1010; int repeat, ri; scanf(%d,&repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n);/*-* for(j=0;j=n;j+) for(i=0;i=n;i+) if(i=0) aij=j; else if(j=0) aij=i; else aij=i*j; for(i = 0; i = n; i+) for(j = 0; j = n; j+) if(i = 0 & j = 0) printf(%-4c, *); else if(i = 0 | j = i) printf(%-4d, aij); printf(n); return 0;7.2.4输入1 个正整数 n (1n6)和 n 阶方阵 a 中的元素,如果 a 是上三角矩阵, 输出YES, 否则, 输出NO。上三角矩阵指主对角线以下的元素都为0的矩阵, 主对角线为从矩阵的左上角至右下角的连线。输入输出示例:括号内为说明输入:2 (repeat=2)3 (n=3)1 2 3 0 4 5 0 0 6 2 (n=2)1 0 -8 2 输出:YES NO#include stdio.h#include math.hint main(void) int flag, i, j, n; int a66; int repeat, ri; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) for(j = 0; j n; j+) scanf(%d, &aij);/*-*/ flag=0; for(i=0;in;i+) for(j=0;j=j&aij=0)flag=1; if(flag != 0) printf(YESn); else printf(NOn); return 0;7.25输入日期(年、月、日),输出它是该年的第几天。要求定义与调用函数 day_of_year(year, month, day),计算并返回year(年)、month(月)和day(日)对应的是该年的第几天,函数形参year、month和day的类型是int,函数类型也是int。输入输出示例:括号内为说明输入:2 (repeat=2)1981 3 1 (1981年3月1日)2000 3 1 (2000年3月1日)输出:days of year: 60 (1981年3月1日是该年的第60天)days of year: 61 (2000年3月1日是该年的第61天)#include stdio.hint main(void) int day, day_year, month, year; int repeat, ri; int day_of_year(int year, int month, int day); 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(days of year: %dn, day_year); return 0;/*-*/int day_of_year(int year, int month, int day)int k,leap;int tab213=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+tableapk; return day;7.26输入 1 个正整数 n(1n6)和 n 阶方阵 a 中的元素,假设方阵 a 最多有1个鞍点,如果找到 a 的鞍点, 就输出其下标, 否则,输出NO。鞍点的元素值在该行上最大, 在该列上最小。输入输出示例:括号内为说明输入:2 (repeat=2)4 (n=4)1 7 4 14 8 3 61 6 1 20 7 8 92 (n=2)1 74 1输出:a21 = 6NO #include stdio.hint main(void) int flag, i, j, k, row, col, n; int a66; int repeat, ri; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) for(j = 0; j n; j+) scanf(%d, &aij);/*-*/ flag=0;col=0;for(i=0;in;i+)row=i; for(j=0;jaicol) col=j; for(k=0;kakcol) row=k;break; if(row=i)flag=1; break; if(flag != 0) printf(a%d%d = %dn, row, col,arowcol); else printf(NOn); 7.3.1输入一个以回车结束的字符串(少于80个字符),将它的内容逆序输出。如ABCD 的逆序为DCBA。输入输出示例:括号内为说明输入:Welcome to you!输出:!uoy ot emocleW #include int main(void) int i, j, k,temp; char str80; i = 0; while(stri = getchar( ) != n) i+; stri = 0;/*-*/k=i-1;for(i=0;ik;i+)temp=stri;stri=strk;strk=temp;k-; for(i = 0; stri != 0; i+) putchar(stri);return 0;7.3.2输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符,如果找到,输出该字符在字符串中所对应的最大下标 (下标从0开始);否则输出Not Found。输入输出示例:括号内为说明输入:2(repeat=2)m (字符m)programming(字符串programming)a(字符a)1234(字符串1234)输出:index = 7 (m在programming中对应的最大下标是7)Not Found (1234中没有a)#include stdio.h#define MAXLEN 80int main(void) char cc, ch; char strMAXLEN; int count, flag, i, index; int repeat, ri; scanf(%d, &repeat); getchar(); for(ri = 1; ri = repeat; ri+) cc = getchar(); getchar(); i = 0; while(ch = getchar() != n) stri+ = ch; stri = 0;/*-*/ flag=0; index=0; for(i=0;stri!=0;i+) if(stri=cc) index=i; flag=1; if(flag != 0) printf(index = %dn, index); else printf(Not Foundn); return 0;7.3.3输入一个以回车结束的字符串(少于80个字符),统计并输出其中大写辅音字母的个数。大写辅音字母:除A, E, I, O, U以外的大写字母。输入输出示例:括号内为说明输入:2(repeat=2)HELLO group输出:count = 3 (HELLO中有3个大写辅音字母)count = 0 (group中没有大写辅音字母)#include stdio.h#define MAXLEN 80int main(void) char ch; char strMAXLEN; int count, i; int repeat, ri; scanf(%d, &repeat); getchar(); for(ri = 1; ri =A & stri=Z)count+; printf(count = %dn, count); return 0;7.3.4输入一个以回车结束的字符串(少于80个字符),将其中的大写字母用下面列出的对应大写字母替换,其余字符不变,输出替换后的字符串。原字母 对应字母 A Z B Y C X D W X C Y B Z A输入输出示例:括号内为说明输入:2(repeat=2)A flag of USA1+2=3输出:After replaced: Z flag of FHZAfter replaced: 1+2=3#include stdio.h#include string.h#define MAXLEN 80int main(void) char ch; char strMAXLEN; int i; int repeat, ri; scanf(%d, &repeat); getchar(); for(ri = 1; ri =A&stri=Z)stri=A+Z-stri; printf(After replaced: ); for(i = 0; stri != 0; i+) putchar(stri); putchar(n); return 0;7.3.5输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。输入输出示例:括号内为说明输入:2(repeat=2)10+A输出:Dec = 16Dec = 10include stdio.h#include string.h#define MAXLEN 80int main(void) char ch; char strMAXLEN; int i, k; int repeat, ri; long number; scanf(%d, &repeat); getchar(); for(ri = 1; ri =0&strk=A&strk=a&strk=f)number=number*16+(strk-a)+10; printf(Dec = %ldn,number); return 0;7.3.6输入一个以回车结束的字符串(少于80个字符),把字符串中的所有数字字符(09)转换为整数,去掉其他字符。例如,字符串3a56bc转换为整数后是356。输入输出示例:括号内为说明输入:2(repeat=2)82jeep5free输出:8250#include #include int main(void) char str80; int i, s; int repeat, ri; scanf(%d, &repeat); getchar(); for(ri = 1; ri =0&stri=9)s=s*10+stri-0;printf(%dn,s); return 0;7.3.7输入一个正整数 n (1n=10),再输入 n 个整数,先输出最大值及其最大下标(下标从0开始),再将最大值与最后一个数交换,并输出交换后的 n 个数。输出使用语句 printf(max = %d, index = %dn, aindex, index);输入输出示例:括号内为说明输入3 (repeat=3) 5 (n=5)4 3 5 5 24 (n=4)1 5 6 75 (n=5)5 4 3 2 1输出max = 5, index = 34 3 5 2 5 max = 7, index = 31 5 6 7 max = 5, index = 01 4 3 2 5 #include int main( ) int i, index, n, temp; int repeat, ri; int a10; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n); for(i = 0; i n; i+) scanf(%d, &ai);/*-*/index=0;for(i=1;i=aindex)index=i;printf(max = %d, index = %dn,aindex,index);temp=aindex;aindex=an-1;an-1=temp;for(i = 0; i n; i+) printf(%d , ai); printf(n); return 0;7.3.8输入一个以回车符结束的字符串(少于80个字符),再输入一个字符,统计并输出该字符在字符串中出现的次数。输入输出示例:括号内为说明输入:2(repeat=2)programming(字符串programming)m (字符m)1234(字符串1234)a(字符a)输出:count = 2(m在programming中出现2次)count = 0(a在1234中没有出现过)#include stdio.h#define MAXLEN 80int main(void) char cc; char strMAXLEN; int i,count; int repeat, ri; scanf(%d, &repeat); getchar(); for(ri = 1; ri = repeat; ri+) i = 0; while(stri = getchar( ) != n) i+; stri = 0;cc = getchar();getchar();/*-*/count=0;for(i=0;stri!=0;i+)if(stri=cc)count+; printf(count = %dn, count); return 0;8.1.1输入两个正整数 n 和 m (1mn=10),再输入 n 个整数,将这些数排成一行,向右循环移动 m 个位置(从右边移出的数再从左边移入),最后输出移动后的n个整数。要求定义并调用函数 mov(x,n,m) 实现上述循环移动的功能,函数形参x的类型是整型指针,形参n和m的类型是int,函数的类型是void。输入输出示例:括号内为说明输入:5 3 (n=5,m=3)1 2 3 4 5 (5个整数)输出:After move: 3 4 5 1 2#include void mov(int *x, int n, int m);int main(void) int i, m, n,*p; int a80; scanf(%d%d, &n, &m); for(i = 0; i n; i+) scanf(%d, &ai);/*-*/for(p=a,i=0;in;i+)scanf(%d,p+); mov(a,n,m); printf(After move: ); for(i = 0; i n; i+) printf(%d , ai); printf(n);return 0;/*-*/void mov(int *x, int n, int m)int i,j,k;for(i=0;i0;j-)xj=xj-1;x0=k;8.1.2输入一个正整数 n (1n=10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应元素的最小下标,否则输出Not found。要求定义并调用函数search(list, n, x),它的功能是在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数形参 list 的类型是整型指针,形参n和x的类型是int,函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论