C语言编程练习之数组_第1页
C语言编程练习之数组_第2页
C语言编程练习之数组_第3页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、输出整数各位数字输入格式:输出格式:输入样例:123456输出样例:1 2 3 4 5 6(1)编程思路。将一个非负整数number 各位上的数字依次分离出来,其操作步骤为: 1)分离出number 的个位数,即number%10。2)将number 10,作为新的number,即新的number 丢掉了个位数。3)如果number 01)步,继续显示。例如,number=1234,number%10=4, number=1234/10=123number%10=3, number=123/10=12,得到数字 3; number%10=2, number=12/10=1, 得 到 数 字 2

2、; number%10=1, number=1/10=0,得到数字 1;结束。将分离的各位数字依次存储到数组a 中,然后逆序输出数组a 中保存的各元素值即可。(2)源程序。#include int main()long long n; scanf(%lld,&n);int a20=0,cnt=0; while (n!=0)n=n/10;if (cnt=0)printf(0 n);elsefor (int i=cnt-1;i=0;i-) printf(%d ,ai);printf(n);return 0;冒泡法排序将 N N1 个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N

3、个数的排序。本题要求对任意给定的,输出扫描完第K 输入格式:输入在第1 行中给出N 和1102 行中给出N 输出格式:在一行中输出冒泡排序法扫描完第 K 遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。输入样例:6 22 3 5 1 6 4输出样例:2 1 3 4 5 6编程思路。前k 趟冒泡排序描述为for(i=0;ik;i+)/ a0an-1-i从头到尾对前后相邻两数进行比较,逆序则交换for (j=0;jaj+1)t=aj; aj=aj+1; aj+1=t;#include int main()int int n,k;int i,j,t;for (i=0;in;i+) sca

4、nf(%d,&ai);for (i=0;ik;i+)for (j=0;jaj+1)t=aj; aj=aj+1; aj+1=t;printf(%d,a0); for (i=1;in;i+)printf( %d,ai); printf(n);return 0;评委打分!10 1 5 10 ?输入格式:第一行有十个整数,表示十位同学的初始分。第二行一个整数n,表示有 n 道题竞赛。 接下去有n 行,每行有一个数字x,x 表示本次可以加分的选手序号(每次答对者得10 分。输出格式:10 输入样例:10 0 0 0 10 10 0 0 0 1031101输出样例:30 0 0 0 10 10 0 0 0

5、 20编程思路。int a1a10110 的选手的得分。每次输入本次可以加分的选手序号x ax10 分即可。源程序。#include int main()int a11; int i;for (i=1;i=10;i+) scanf(%d,&ai);int n,k; scanf(%d,&n); for (i=1;i=n;i+)scanf(%d,&k); ak+=10;printf(%d,a1); for printf( %d,ai); printf(n);return 0;组合数的和给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的

6、2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为 330。输入格式:输入在一行中先给出 1 N 10 ,随后给出 N 个不同的非 0 格分隔。输出格式:2 输入样例:3 2 8 5输出样例:3301。定义数组 int a10;保存输入的 N 个非 0 的个位数字,用二重循环组成两位数并求和。for(i=0;in;i+)/aifor (j=0;jn;j+)/ 取得个位数字 ajif(i=j)continue;/ 个位数字和十位数字不能取同一个数字s=s+10*ai+aj;1#include int main()int n; scanf(%d,&n

7、); int a10;int i,j;for (i=0;in;i+) scanf(%d,&ai);int sum=0;for (i=0;in;i+) for if (j=i) continue; sum+=ai*10+aj;printf(%dn,sum); return 0;2。用二重循环for (i=0;in-1;i+)for (j=i+1;jn;j+)n aiaj,这两个数字可以构成两10*ai+aj10*aj+ai。2。#include int main()int n; scanf(%d,&n); int a10;int i,j;for (i=0;in;i+) scanf(%d,&ai)

8、;int sum=0;for (i=0;in-1;i+) for sum+=11*(ai+aj);printf(%dn,sum); return 0;数字加密10 取余, 12579 01464601。输入格式:输入在一行中给出一个四位的整数x输出格式: encrypted number is ”输出加密后得到的新数V。输入样例:1257输出样例:The encrypted number is 4601编程思路。直接按加密方法进行顺序处理即可。#include int main()int x,a,b,c,d,v;scanf(%d,&x); a=(x/1000)+9)%10; b=(x%1000

9、/100)+9)%10; c=(x%100/10)+9)%10; d=(x%10)+9)%10;v=1000*c+100*d+10*a+b;printf(The encrypted number is %04dn,v); return 0;找不同单独写一个数字,然后依次上交,谁的数据没有和其他人重复,谁就赢了输入格式:输入是一个测试用例,首先给出网友个数 N,之后依次给出 N 个正整数,给出的正整数和 N10 5 输出格式:对每一组输入,输出与众不同的那个数,如果没有,输出None。输入样例 1:在这里给出一组输入。例如:8 1 2 3 4 4 5 3 1输出样例 1:在这里给出相应的输出。例

10、如:2输入样例 2:在这里给出一组输入。例如:8 1 2 3 4 4 3 2 1输出样例 2:在这里给出相应的输出。例如:None编程思路。定义数组 int num100000;保存输入的N 个正整数。对数组num 中的每个元素numi 看在数组中是否存在与它相同的数。算法描述为:for (i=0;in;i+)/ 遍历数组中的每个元素numifor (j=0;jn;j+)/ aiN-1 元素比较if (j=i) continue;if (numi=numj) break;/ 不唯一,退出循环if (j=n) break;/ 与其他元素均不同,是唯一的,退出循环#include int num1

11、00000; int main()int n; int i,j;for (i=0;in;i+) scanf(%d,&numi);for (i=0;in;i+)for (j=0;jn;j+)if (j=i) continue;if (numi=numj) break;if (j=n) break;if (in) printf(%dn,numi); elseprintf(Nonen);return 0;判断上三角矩阵上三角矩阵指主对角线以下的元素都为0 线。本题要求编写程序,判断一个给定的方阵是否上三角矩阵。输入格式:输入第一行给出一个正整数T 10 nn n 分隔。输出格式:231 2 30 4

12、 50 0 621 0-8 2输出样例:YES NO编程思路。用二重循环 for (i=1; in;i+)for (j=0;ji;j+)对方阵的主对角线以下的各元素进行处理,若 aij不等于 0三角矩阵,置标记flag=(设flag的初始值为1,并退出循环。flag=1No。#include int main()int t; scanf(%d,&t); while (t-)int a1010; int n,i,j;scanf(%d,&n); for (i=0;in;i+)for (j=0;jn;j+) scanf(%d,&aij);int flag=1;for (i=1;flag & in;i

13、+) for (j=0;ji;j+)if (aij!=0)flag=0; break;if (flag=1) printf(YESn); else printf(NOn);return 0;求矩阵各行元素之和本题要求编写程序,求一个给定的mn 输入格式:输入第一行给出两个正整数m 和(6。随后m 行,每行给出n 空格分隔。输出格式:输入样例:3 26 31 -83 12输出样例:9-715编程思路。用如下的二重循环对mn 矩阵进行处理。for (i=0;im;i+)int sum=0;for (j=0;jn;j+) sum+=aij;printf(%dn,sum);#include int m

14、ain()int a66;int m,n,i,j; scanf(%d%d,&m,&n); for (i=0;im;i+)for (j=0;jn;j+) scanf(%d,&aij);for (i=0;im;i+)int sum=0;for (j=0;jn;j+) sum+=aij;printf(%dn,sum);return 0;方阵循环右移nn 方阵中的每个元素循环向右移m 01n1 列变换为第、nm+1、n1、0、nm1 列。输入格式:输入第一行给出两个正整数m 和16n 行,每行n n 阶的方阵。输出格式:按照输入格式输出移动后的方阵:即输出n 行,每行n 输入样例:2 31 2 34

15、5 67 8 9输出样例:2 3 15 6 48 9 7编程思路。将方阵中每行的 n 个元素循环向右移 m 个位置,可以写成三个一重循环, 以第 i 行为例进行描述,第 i 行的元素为 ai0ain-1。m t 中,循环为for (k=0, j=n-m;j=0;j-)aij+m=aij;m 个元素顺序放在第行的左端,循环为for (j=0;jm;j+) aij=tj;源程序。#include int main()int a66,t6; int m,n,i,j;scanf(%d%d,&m,&n); for (i=0;in;i+)for (j=0;jn;j+) scanf(%d,&aij);m=m

16、%n;for (i=0;in;i+)int k=0;for (j=n-m;j=0;j-)aij+m=aij; for (j=0;jm;j+)aij=tj; for (j=0;jmaxmax=aijaijmin, min=aij。源程序。#include int main()int a33; int i,j;for (i=0;i3;i+) for int max=a00;int min=a00; for for (j=0;j3;j+)if (maxaij) min=aij;printf(max=%d min=%dn,max,min); return 0;统计大写辅音字母英文辅音字母是除AEOU

17、写辅音字母的个数。输入格式:80 输出格式:输入样例:HELLO World!输出样例:4编程思路。同样用循环 for (int i=0;si!=0;i+)对输入字符串中的各字符 si进行判断,若 si为答谢字母(si=A & si=Z)且不为 A、E、I、O、U 这 5 个字母,则计数。源程序。#include #include int main()char s81; gets(s);int cnt=0;for (int i=0;si!=0;i+)if (si=B & si=Z)if (si!=E & si!=I & si!=O & si!=U) cnt+;printf(%dn,cnt);

18、return 0;字符串字母大小写转换本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。输入格式:(30 个字符。输出格式:输入样例:Hello World! 123#输出样例:hELLO wORLD! 123编程思路。32 32 母。源程序。#include #include int main()char s30,ch; int cnt=0;while (ch=getchar()!=#)if (ch=A & ch=a & ch=0;i+) S=S*2+ai;源程序。#include int main()char s1

19、7; scanf(%s,s); int num=0;for (int i=0;si!=0;i+) num=num*2+si-0;printf(%dn,num); return 0;字符串排序本题要求编写程序,读入 5 个字符串,按由小到大的顺序输出。输入格式:输入为由空格分隔的 5 80。输出格式:按照以下格式输出排序后的结果:After sorted:输入样例:red yellow blue green white输出样例: After sorted: bluegreen redwhite yellow编程思路。strcpy 即可。源程序。#include #include int main

20、()char s580,t80; int i,j;for (i=0;i5;i+) scanf(%s,si);for (i=0;i5-1;i+)for (j=0;j0)strcpy(t,sj);strcpy(sj,sj+1);strcpy(sj+1,t);printf(After sorted:n); for (i=0;i5;i+)printf(%sn,si); return 0;找最长的字符串本题要求编写程序,针对输入的N 个字符串,输出其中最长的字符串。输入格式:输入第一行给出正整数N;随后N 行,每行给出一个长度小于80 的非空字符串,其中不会出现换行符,空格,制表符。输出格式:在一行中用

21、以下格式输出最长的字符串:The longest is: 最长的字符串如果字符串的长度相同,则输出先输入的字符串。输入样例:5li wang zhang jin xiang输出样例:The longest is: zhang编程思路。定义两个字符串数组 str81和 maxStr81,一个用于输入字符串,一个保存最长的字符串。定义整型变量 maxlen 保存最长字符串的长度。1 个字符串为最长字符串。依次输入剩下的n-1 个字符串(i=1;in;i+) str,若其长度大于 maxlen,则修改 maxlen=strlen(str),并保存最长字符串 strcpy(maxStr,str)。源程

22、序。#include #include int main()int n; scanf(%d,&n);char str81,maxStr81; int maxlen,i; scanf(%s,str); maxlen=strlen(str); strcpy(maxStr,str);for (i=1;imaxlen)strcpy(maxStr,str);printf(The longest is: %s,maxStr); return 0;统计字符出现次数输入格式:输入第一行给出一个以回车结束的字符串(少于80个字符输出格式:输入样例:programming is More fun! m输出样例:2编程思路。用循环 for (int i=0;si!=0;i+)对输入字符串中的各字符 si进行判断,若 si=ch,则计数。处理过程如下:int cnt=0;for (int i=0;si!=0;i+) if (si=ch)cnt+;源程序。#include #include int main()char s80,ch;gets(s); ch=getchar(); int cnt=0;for (int i=0;si!=0;i+) if (si=ch)cnt+; printf(

温馨提示

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

评论

0/150

提交评论