C语言——几道习题

//###43.围圈报数

//有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,问最后留下的是原来第几号的哪位。(*****

 1 int main()
 2 {
 3     int n=0,m=0;
 4     scanf("%d %d",&n,&m);
 5     int a[100] = {};
 6     int i = 0;
 7     int cnt = 0;//统计数到第几个人,循环m
 8     int count = 0;//循环跳出条件,当到n-1个人时跳出循环
 9     for(i=0;i<n;i++)
10     {
11         a[i] = 1;
12     }
13     i = 0;
14     while(a[i])
15     {
16         cnt++;
17         if(cnt==m)
18         {
19             a[i] = 0; //退出
20             cnt = 0; //重新开始报数
21             count++; //有count个人已经退出
22         }
23         i++;
24         if(i==n)
25         {
26 //          到了数组的末尾,循环边界,赋值从第一个开始遍历
27             i = 0;
28         }
29         if(count > n-1)
30         {
31             break;
32         }
33     }
34     for(int j=0;j<n;j++)
35     {
36         if(a[j])
37         {
38             printf("%d %d",a[j],j);
39             break;
40         }
41     }
42     return 0;
43 }

//###7.计算某个由英文、数字以及标点符号构成的数组的总宽度,其中英文字符的宽度为
//1cm,数字宽度为 0.5cm、标点符号宽度为 0.8cm。

//8.接上题,如果规定行的宽度为 10cm,将某个字符长度超过 50 的字符串截断,恰好 使 10cm 宽的行能容纳。输出这个被截断的子数组。

 1 float getCharacterWeidth(char c)
 2 {
 3     if((c>=‘A‘ && c<=‘Z‘) || (c>=‘a‘ && c<=‘z‘))
 4     {
 5         return 1.0;
 6     }else if(c>=‘0‘ && c<=‘9‘)
 7     {
 8         return 0.5;
 9     }else{
10         return 0.8;
11     }
12 }
13 int main()
14 {
15     char chs[100] = {};
16     int cnt = 0;
17     for(int i=0;i<100;i++)
18     {
19         scanf("%c",&chs[i]);
20         if(chs[i]==‘\n‘)
21         {
22             chs[i] = ‘\0‘;
23             break;
24         }
25         cnt++;
26     }
27     float length = 0;
28     for(int i=0;i<cnt;i++)
29     {
30         length += getCharacterWeidth(chs[i]);
31         if(length>10)
32         {
33             chs[i] = ‘\0‘;
34             break;
35         }
36     }
37     printf("%s",chs);
38     return 0;
39 }
时间: 2024-10-13 03:24:58

C语言——几道习题的相关文章

C语言K&R习题系列——句子中一个空格代替多个空格的四种方法

原题: Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank. 第一种: 这种最常用,设置一个inspace作为布尔变量,标志当前输入是否在字符中,或在字符外 #include <stdio.h>   int main(void) {   int c;   int inspace=0;     while((c = getcha

C语言K&R习题系列——统计文档中每个单词所占字母个数,以直方图形式输出

原题: Write a program to print a histogram of the lengths of words in its input. It is easy to draw the histogram with the bars horizontal; a vertical orientation is more challenging. 这也是我第一个过百行的代码(带注释,空格什么的) 主要分两个部分:输入和输出 #include < stdio.h > #define

C语言K&R习题系列——统计一段文字中各个字母出现的频率

原题: /*Write a program to print a histogram of the frequencies of *difficent characters in it inputs */ 这个和上一个类似 输入部分 #include < stdio.h >    #define NUM_CHARS 256    main ( void )  { int c; int done = 0; int thisIdx = 0; long frequrr[NUM_CHARS + 1];

C语言K&R习题系列——使用缓冲区函数接受长字符输入

原题: Write a program to print all input lines that are longer than 80 characters.  ,实现起来不算难,关键是用到了缓冲区,很不错的一种思想! /* Write a program to print all input lines  * that are longer than 80 characters  */    #include < stdio.h >    #define MINLENGTH 81    /

C语言100道经典算法

经典的100个c算法 C语言的学习要从基础,100个经典的算法真不知道关于语言的应该发在那里,所以就在这里发了,发贴的原因有2个,第一个,这东西非常值得学习,第二个,想..........嘿嘿,大家应该能猜到吧语言的学习基础,100个经典的算法C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

C语言成长学习题(十五)

66.编写字符串复制的程序(用指针变量处理). 1 #include <stdio.h> 2 3 void main(void) 4 { 5 char a[50], b[80], *p, *q; 6 7 p = a; 8 q = b; 9 printf("Input data: "); 10 gets(a); 11 while (*p != '\0') 12 *q++ = *p++; 13 *q = '\0'; 14 puts(b); 15 } Mark: 复制操作结束后,

全纯函数导数的两道习题

题目来自史济怀.刘太顺<复变函数>50页的最后两个习题: 3.设$f$在$B(0,1)\cup\{1\}$上全纯,并且$$f(B(0,1))\subset B(0,1),f(1)=1$$ 证明$f'(1)\geq0$. 分析    这个题目的几何意义是很清楚的,在$1$附近不能发生旋转,否则无法保证象集还在单位圆内.下面给出一个解析的证明: 在$1$附近我们有$$f(z)=1+f'(1)(z-1)+o(z-1)$$ 注意到$|f(z)|<1$,从而\begin{align*}f(z)\o

C语言成长学习题(十六)

72.假设一维数组中存放互不相同的十个整数,要求根据输入的下标值,即可直接删除. 1 #include <stdio.h> 2 3 int mydel (int *a, int n, int k) 4 { 5 int i; 6 7 for (i = k; i < n - 1; i++) 8 *(a+i) = *(a+i+1); 9 n--; 10 11 return n; 12 } 13 14 void myout (int *a, int n) 15 { 16 while (n >

数据结构与算法分析(C语言描述)习题1.4

题目:C提供形如 #include filename 的语句,它读入文件filename并将其插入到include语句处.include语句可以嵌套:换句话说,文件filename本身还可以包含include语句,但是显然一个文件在任何链接中都不能包含它自己.编写一个程序,使它读入被include语句修饰的一个文件并且输出这个文件. 思路: 1.函数printHeadfile()接受一个文件路径,并打开该路径文件. 2.成功打开后,不断读入文件内一行数据buf.如果该行是一个“#include