C语言 锐格实验
六.动态数组
1.
约瑟夫环:
有n个人,围成一个环,编号为 0、1、2、3、、、n-1,从第一个人开始循环报数,假设数到m的那个人出列,然后从下一个人继续数数,再数到m出列,以此循环,最后那个人为胜利者,求胜利者的编号。
输入数据有多组,每组为n与m;每组数据单独1行输出,直接输出数组编号,不用+1处理;
1 | #include <stdio.h> |
2.
求n个串中最长串:给定n个字符串,每个串长度小于100,求其中最长的字符串。输入数据有多组,每组构成形式如输入示例,输出该组字符串中最长的字符串,单独1行输出。
1 | #include <stdio.h> |
3.
求平面中n个点之间最短线段长度:给定平面中n个点的坐标(x,y),求这个n个点之间最短连线距离。输入数据有多组,每组构成形式如输入示例,输出该组数据中最短边的距离长度,保留1位小数,单独1行输出。
1 | #include <stdio.h> |
4.
段落单词分解:给出一个段落,字符数小于1000,求单词及个数。数据输入为1组,输出单词个与单词,每个单词单独1行输出,格式见示例。
bash #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i,j,num,flag,wordl,wordnum; char a[1005]; char word[1005][80]; gets(a); int l=strlen(a); a[l]=' '; a[l+1]='\0'; wordnum=0; wordl=0; flag=0; num=0; for(i=0;a[i]!='\0';i++) { if(a[i]!=' ') flag=1; else { if(flag==1) { wordnum++; num++; wordl=0; } flag=0; } if(flag==1) { word[wordnum][wordl++]=a[i]; } } printf("%d\n",num); for(i=0;i<num;i++) { printf("%s\n",word[i]); } }