




已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大一6.1 谁能出线背景:电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。输入: 按顺序给出一个小组10个人的最后得分(int)。输出: 能够出线的学生序号(09)。#includevoid main()int a10;int b=0,i,n,max=0;for(i=0;i10;i+)scanf(%d,&ai);for(i=0;imax)max=ai;for(i=0;i10;i+)if(ai=max)printf(%dn,i);6.2 统计素数的个数求出2 到 m 之间 ( 含 m,m=1000) 所有素数并放在数组 a 中。输入:正整数m输出:从小到大的所有素数,及个数(素数输出的时候用%4d来控制)如:输入:10输出:2 3 5 74#include int main() int x,n,t100,j,i=0; scanf(%d,&n); for(x=2;x=n;x+) for(j=2;j=x;j+) if(x%j=0)break; if(x=j) ti=x; printf(%4d,ti); i+; printf(n%dn,i); return 0;6.3 冒泡法排序冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。编写程序,对输入的十个数按照从小到大排序#includevoid main()int i,j,n;int a10;for(i=0;i10;i+)scanf(%d,&ai);for(i=0;ii;j-)if(aj-1aj)n=aj-1;aj-1=aj;aj=n;for(i=0;i10;i+)printf( %d,ai);printf(n);6.4 插入法排序如果一个数组中保存的元素是有序的(由小到大),向这个数组中插入一个数,使得插入后的数组元素依然保持有序。 定义一个数组,长度为11,初始元素为10个,按照从小到大的方式输入,然后输入一个要插入的元素,使得插入后仍然有序。#includeint main()int a11;int m,n,j,i;for(i=0;i10;i+)scanf(%d,&ai);scanf(%d,&m);a10=m;for(i=0;ii;j-) if(aj-1aj) n=aj-1; aj-1=aj; aj=n; printf(%d,a0);for(i=1;i11;i+)printf( %d,ai);printf(n);6.5 二维数组 程序定义了44 的二维数组,请编写程序,给二维数组赋值,并使数组下半三角元素中的值乘以n 。 例如: 数组中的值为 假设n为10,则输出结果如下:(输出的数按照4位宽度来输出,即%4d)#includevoid main()int a44;int m,i,j;for(i=0;i4;i+)for(j=0;j4;j+)scanf(%d,&aij);scanf(%d,&m);for(i=0;i4;i+)for(j=0;j=i;j+)aij=m*aij;for(i=0;i4;i+)for(j=0;j4;j+)printf(%4d,aij);printf(n);6.6 数组逆序输出问题描述从键盘上输入一个数组(10个元素),将原数组逆序重新排列后输出。要求输出每个元素时以一个空格隔开。提示:用第一个与最后一个交换。#include void main () int m10,n10,i; for(i=0;i10;i+)scanf(%d,&mi); for(i=0;i10;i+)ni=m9-i; printf(%d,n0);for(i=1;i10;i+)printf( %d,ni);printf( n);6.9 求二维数组周边元素之和编写一个程序,求出45的二维数组周边元素之和。输入:二维数组元素输出:周边元素之和 如:输入:1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 输出:61#include void main () int a45,i,j,n=0;for(i=0;i4;i+) for(j=0;j5;j+) scanf(%d,&aij); for(j=0;j5;j+)n=n+a0j;for(j=0;j5;j+)n=n+a3j;n=n+a10+a20+a14+a24;printf(%dn,n);6.10 存储并输出一个矩阵编程,输入 n ,存储并输出如下例( n=5 )所示的 图形。 1 2 3 4 5 1 1 2 3 4 1 1 1 2 3 1 1 1 1 2 1 1 1 1 1#include void main () int a1010,i,j,n; scanf(%d,&n);for(i=0;in;i+) for(j=0;ji+1;j+)printf( 1);aii+1=2; for(j=i+1;jn;j+)printf( %d,2+j-i-1);printf(n); 6.11 给数组中的元素按顺序编号对数组 a10 中的十个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组 a 中元素的顺序,且相同的整数要具有相同的编号。例如数组是: A=(5,3,4,7,3,5,6,8,9,10) 则输出为: (4,1,3,7,1,4,6,8,9,10) #include int main() int a10,b10,i,j,n=1; for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i10;i+) for(j=0;jaj) n+; bi=n; n=1; for(i=0;i10;i+) printf(%3d,bi); printf(n); return 0;6.12 求各位数字组成的最大数任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 。输入: 自然数 n 输出: 各位数字组成的最大数#include Int main () int a10,i,j,x,m,n; scanf(%d,&x);for(i=0;x0;i+) ai=x%10;x=x/10;m=i; for(i=0;im;i+) for(j=i+1;jm;j+) if(ai=aj) n=ai;ai=aj;aj=n; for(i=0;im;i+) printf(%d,ai); printf(n);7.1 数的合并请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a的十位和个位依次存放在c数的十位和千位上,b的十位和个位依次存放在c数的个位和百位上。例如:当a=45,b=12,调用该函数后,c=5241。#include void fun(int a,int b,int *c)*c=(a%10)*1000+(a/10)*10+b/10+(b%10)*100;int main()int a,b,c;scanf(%d%d,&a,&b);fun(a,b,&c);printf(%dn,c);7.2 数组中奇偶数请编一个函数 fun(int *a,int n,int *odd,int *even) ,函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参 n 给了数组中数据的个数:利用指针 odd 返回奇数之和,利用指针 even 返回偶数之和。 例如:数组中的值依次为: 1 , 8 , 2 , 3 , 11 , 6 ;则利用指针 odd 返回奇数之和 15 ;利用指针 even 返回偶数之和 16 。#include #define N 20 void fun(int *a,int n,int *odd,int *even) int i; for(i=0,*odd=0,*even=0;in;i+) if(ai%2) *odd=*odd+ai; else *even=*even+ai; int main() int aN,i,n,odd,even; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); fun(a,n,&odd,&even); printf(The sum of odd numbers:%dn,odd); printf(The sum of even numbers:%dn,even); return 0; 7.3 浮点数四舍五入请编一个函数 void fun(double a,double *h) ,函数的功能是对变量 h 中的值保留 2 位小数,并对第三位进行四舍五入(规定 h 中的值为正数)。 例如: h 值为 8.32433 ,则函数返回 8.32 ; h 值为 8.32533 ,则函数返回 8.33 #include void fun(double a,double *h) *h=(int)(a*100+0.5)/100.0; int main( ) double a,h; scanf(%lf,&a); fun(a,&h); printf(The result:%lfn,h); return 0; 7.4 字符移动请编一个函数void fun(char *s) ,函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移到最后。 例如:原有的字符串为: Mn.123xyZ ,则调用该函数后,串中的内容为: n.123xyZM 。#include #define N 81 #include void fun(char *s) int t,i; t=strlen(s); st=s0; for(i=1;i=t;i+) si-1=si; st=0; int main( ) char aN; gets(a); fun(a); printf(%sn,a); 7.5 生成新数给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。 例如,输入一个数:27638496,新的数:为739。#include #include void fun(int *n) int a100,i,m,p,q,sum=0; for(i=0;*n!=0;) p=*n%10; if(p%2) ai=p; i+; *n=*n/10; for(m=0;m99999999|n0) scanf(%d,&n); fun(&n); printf(%dn,n); return 0; 7.6 字符串转换成整数请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数。例如,若输入字符串-1234,则函数把它转换为整数值 -1234。函数fun中给出的语句仅供参考。#include #include int fun ( char *p) int t=0,i; for(i=0;pi!=0;i+) if(pi=48&pi=57) t=t*10+pi-48; if(p0=-) t=t*(-1); return t; int main() char s10; int n; gets(s); n = fun(s); printf(%dn,n); return 0; 7.7 二维数组按列优先存放请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。 例如, 二维数组中的数据为: W W W W S S S S H H H H 则字符串中的内容应是: WSHWSHWSHWSH。#include #define M 3 #define N 4 void fun(char sN, char *b) int i,j,t=0; for(j=0;jN;j+) for(i=0;i3;i+) bt+=sij; int main() char a100,wMN=W,W,W,W,S,S,S,S,H,H,H,H; fun(w,a); puts(a); return 0; 7.8 删除字符串中指定的星号假定输入的字符串中只包含字母和 * 号。请编写函数 fun ,它的功能是:除了尾部的 * 号之外 , 将字符串中其它 * 号全部删除。在编写函数时,不得使用 C 语言提供的字符串函数。 例如,字符串中的内容为: *A*BC*DEF*G* ,删除后 , 字符串中的内容应当是: ABCDEFG* 。/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include /* PRESET CODE END - NEVER TOUCH CODE ABOVE */void fun(char *p,char *t) char* q; for(q=p;p=t;p+) if(*p!=*) *q+=*p; while(*p) *q+=*p+; *q=0; /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */int main() char s81,*t; gets(s); t=s; while(*t) t+; t-; while(*t=*) t-; fun( s , t ); puts(s); return 0;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */7.9 统计数字字符请编写函数 fun ,它的功能是: 统计形参 s 所指字符串中数字字符出现的次数,并存放在形参 t 所指的变量中,最后在主函数中输出。 例如,字符串s为: abcdef35adgh3kjsdf7 。输出结果为: 4 。/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include /* PRESET CODE END - NEVER TOUCH CODE ABOVE */void fun(char*s, int*t) *t=0; for(;*s!=0;s+) if(*s=0 & *s=9) (*t)+; /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */int main() char s80=abcdef35adgh3kjsdf7; int t; gets(s); fun(s,&t); printf(%dn,t); return 0;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */7.10 将两个串按要求形成一个新串给定程序的函数 fun 的功能是:逐个比较 p 、 q 所指两个字符串对应位置中的字符,把 ASCII 值大或相等的字符依次存放到 c 所指数组中,形成一个新的字符串。 例如,若主函数中 a 字符串为: aBCDeFgH ,主函数中 b 字符串为:ABcd ,则 c 中的字符串应为: aBcdeFgH 。#include #include void fun(char *p ,char *q, char *c) int k,n,m,i,j; char*s,*t,*h; i=strlen(p),j=strlen(q); k=ij?j:i; for(n=0;n=(*q)?*p:*q; m=n,s=c,t=p,h=q; k=ij?i:j; if(k=i) for(n=m,c=s,p=t;nk;n+,c+,p+) *c=*p; *c=0; if(k=j) for(n=m,c=s,q=h;nk;n+,c+,q+) *c=*q; *c=0; int main() char a10, b10, c80; gets(a); gets(b); fun(a,b,c); puts(c); return 0;7.11 统计子串的个数请编写函数 fun ,它的功能是: 统计 substr 所指子字符串在 str 所指字符串中出现的次数。 例如,若str中的字符串为 aaas lkaaas ,子字符串为 as ,则应输出 2 。/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include /* PRESET CODE END - NEVER TOUCH CODE ABOVE */void fun(char*p,char*q,int*n) int t,i; for(*n=0;*p!=0;p+) for(t=0,i=0;*(q+i)!=0;i+) if(*(p+i)!=*(q+i) t=1; if(t=0) (*n)+; /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */int main() char str80,substr80; int count; gets(str); gets(substr); fun(str,substr,&count); printf(%dn,count); return 0;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */7.12 按要求处理字符串函数 fun 的功能是: 将 s 所指字符串中除了下标为奇数、同时 ASCII 值也为奇数的字符之外,其余的所有字符都删除 , 串中剩余字符所形成的一个新串放在 t 所指的数组中。 例如,若 s 所指字符串中的内容为: ABCDEFG12345, 其中字符 A 的 ASCII 码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符 1 的 ASCII 码值为奇数,所在数组中的下标也为奇数 , 因此不应当删除,其它依此类推。最后 t 所指的数组中的内容应是: 135 。#include #include void fun(char *s, char t) int i,m=0; for(i=0;*(s+i)!=0;i+) if(*(s+i)%2!=0 & i%2!=0) tm=*(s+i),m+; tm=0; int main() char s100, t100; scanf(%s, s); fun(s, t); printf(%sn, t); return 0; 7.13 求非偶数的除数请编写函数 fun ,它的功能是:求出能整除形参 x 且不是偶数的各整数 , 并按从小到大的顺序放在 pp 所指的数组中 , 这些除数的个数通过形参 n 返回。 例如,若 x 中的值为 : 35 ,则有 4 个数符合要求,它们是 : 1, 5, 7, 35 。/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include /* PRESET CODE END - NEVER TOUCH CODE ABOVE */void fun(int x,int *pp,int *n) int i; *n=0; for(i=1;i=x;i+) if(x%i=0 & i%2!=0) *pp=i;pp+;(*n)+; /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */void main( ) int x, aa1000, n, i ; scanf(%d, &x) ; fun(x, aa, &n ) ; for( i = 0 ; i n ; i+ ) printf( %d, aai) ; printf(n) ;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */7.14 求最大值及其下标请编写函数 fun ,其功能是求出数组的最大元素在数组中的下标并存放在 k 所指的存储单元中。 例如 , 输入如下整数 : 876 675 896 101 301 401 980 431 451 777 则输出结果为 : 6, 980 /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include /* PRESET CODE END - NEVER TOUCH CODE ABOVE */void fun(int *a,int m,int *k) int j,max=*a; *k=0; for(j=0;jmax) max=*(a+j);*k=j; /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */void main( ) int a10, k ,i; for(i=0;i10;i+) scanf(%d,&ai); fun(a, 10, &k) ; printf(%d,%dn, k, ak) ;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */8.1 合并字符串输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到 大排列。输入:两个已经排好顺序(升序)的两个字符串输出:一个合并在一起的有序(升序)的字符串#include #include void main() char a20,b10,t; int i,j,n; scanf(%s%s,a,b); strcat(a,b); n=strlen(a); for(i=0;in;i+)for(j=i+1;j=aj)t=aj;aj=ai;ai=t; puts(a); 8.2 大数相加问题描述:编写C程序,它能以字符串形式读入两个无符号正整数m和n,计算并输出这两个整数之和输入格式:输入由两行组成,第一行为无符号整数m,第二行为无符号整数n,且m和n的值最长25位输出格式:输出为一行,即两个无符号整数m和n之和输入样例:9999888888355729288输出样例:10355618176#include #include int main() char s150,s250; int s350=0,s450=0,m50,A,B,x,y,z,s=0; gets(s1); gets(s2); x=strlen(s1); y=strlen(s2); if(xy) z=x; else z=y; A=x-1;B=z; while(A=0) s3B=s1A-0;A-;B-; A=y-1;B=z; while(A=0) s4B=s2A-0;A-;B-; for(A=z;A=0;A-) s=s+s3A+s4A; mA=s%10; s=s/10; if(m0!=0) printf(%d,m0); for(A=1;A=z;A+) printf(%d,mA); printf(n); 8.3 删除重复字符背景: 输入一个长度不超过 100 的字符串,删除串中的重复字符。输入:输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。输出:删除重复字符后的字符串。例如:abced#include #include void main() char a30; int i,j,m; scanf(%s,a); m=strlen(a);for(i=m-1;i=0;i-)for(j=i-1;j=0;j-)if(ai=aj)ai=*;for(i=0;im;i+)if(ai!=*) printf(%c,ai);printf(n);8.4 删除字符串中指定字符输入两个字符串 s1 和 s2 ,在 s1 中删除任何 s2 中有的字符。例如, s1 :“ abc123ad ”, s2 :“ a1 ” ,则输出“bc23d ”。输入: 两个字符串 s1 和 s2 输出: 删除后的字符串 s1 #include #include void main() char a30,b30,t; int i,j,k,m,n; scanf(%s%s,a,b); n=strlen(a);m=strlen(b);for(i=0;in;i+)for(j=0;jm;j+)if(ai=bj)ai=*;for(i=0;in;i+)if(ai!=*) printf(%c,ai);printf(n);8.5 单词有多少用空格或换行分开的字符串称为单词。输入多行字符串,直到遇到了单词 stop 时才停止。最后输出单词的数量。用于分割单词的空格或换行可能多于1个。输入: 多个字符串 输出: 单词的数量#include #include void main() int t=0; char s100,n=stop; scanf(%s,s); while(strncmp(s,n,4)!=0) t=t+1; scanf(%s,s); printf(%dn,t); 8.6 在指定位置插入字符串输入两个字符串 s1 、 s2 和 s1 中任意字符 k ,在 s1 中的指定字符 k 第一次出现的位置处插入字符串 s2 并输出。输入: 两个字符串 s1 、 s2 和 s1 中任意字符 k 输出: 插入后的字符串 s1 #include #include void main() char a30,b30,c30=0,t1; int i,j,k,m,n; scanf(%s%s%s,a,b,t); n=strlen(a);m=strlen(b); for(i=0;in;i+)if(ai=t0)k=i;for(i=0;ik;i+)ci=ai;for(i=k,j=0;ik+m;i+,j+)ci=bj;for(i=k+m,j=k;im+n;i+,j+)ci=aj; puts(c);8.7 Your Ride Is HereIt is a well-known fact that behind every good comet is a UFO. These UFOs often come to collect loyal supporters from here on Earth. Unfortunately, they only have room to pick up one group of followers on each trip. They do, however, let the groups know ahead of time which will be picked up for each comet by a clever scheme: they pick a name for the comet which, along with the name of the group, can be used to determine if it is a particular groups turn to go (who do you think names the comets?). The details of the matching scheme are given below; your job is to write a program which takes the names of a group and a comet and then determines whether the group should go with the UFO behind that comet.Both the name of the group and the name of the comet are converted into a number in the following manner: the final number is just the product of all the letters in the name, where A is 1 and Z is 26. For instance, the group USACO would be 21 * 19 * 1 * 3 * 15 = 17955. If the groups number mod 47 is the same as the comets number mod 47, then you need to tell the group to get ready! (Remember that a mod b is the remainder left over after dividing a by b; 34 mod 10 is 4.)Write a program which reads in the name of the comet and the name of the group and figures out whether according to the above scheme the names are a match, printing GO if they match and STAY if not. The names of the groups and the comets will be a string of capital lett
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有机茶叶种植与茶文化推广合作合同
- 企业内部数据保密补充协议
- 婚姻关系情感稳定与行为规范合同
- 环保物流货物保险理赔协议
- 国际市场品牌推广效果跟踪补充协议
- 智能安防数据共享与智慧社区生态合作协议
- 上海版牛津小学英语一年级知识点总结模版
- 影视剧群众演员薪酬代发与劳务结算合作协议
- 校招网聘题库及答案
- 跨国企业股权回购及税务筹划合作协议
- 企业员工保密协议书范本
- 美国文学概论智慧树知到期末考试答案章节答案2024年吉林师范大学
- 公司内部责任追究制度
- 《在长江源头各拉丹东》公开课教学课件
- 年产12万吨石英砂建设项目可行性研究报告
- 小满二十四节气课件
- 2024年金华浦江县粮食收储有限公司招聘笔试参考题库附带答案详解
- 药品不良反应知识培训
- 公路水运检测师培训课件
- 咸阳亨通电力集团笔试题
- 2024北京首都机场大兴国际机场招聘60人高频考题难、易错点模拟试题(共500题)附带答案详解
评论
0/150
提交评论