C 语言教程 在线

1625c-examples-joseph-life-dead-game

我认为用一个数组完成这个算法更好理解。

#include<stdio.h>

int main(){
    int count=0,//记录下船的人数 ,到15就终止程序 
    a[30]={0},//储存30人信息,0代表在船上,1代表下船了 
    i=0,//循环索引 
    c=0;// 记录报数号码,到9就清零,由下一位重新报数 
    while(1) { 
        if(a[i]==0)c++;//记录报数号码
        if(c==9){
            count++;//下船人数加一 
            a[i]=1; //标记这个人下船了
            printf("第%d号下船了。\n",i+1);
            c=0;//到9就清零,由下一位从0重新报数 
        }
        if(count==15)break;//下船的人数到15就终止程序 
        i++;//分析下一个人 
        if(i==30)i=0; //将数组变成一个圈,循环往复 
    }
    return 0; 
}

1624c-examples-structure-store-information

在两种不同对齐方式下,计算 sizeof(struct)

#include "stdio.h"

struct
{
  int i;
  char j;
}s1;

#pragma pack(1)
struct
{
  int i;
  char j;
}s2;
int main(void)
{
  int size_s1;
  int size_s2;

  size_s1 = sizeof(s1);
  size_s2 = sizeof(s2);

  printf(" 默认对齐方式下size_s1 = %d\n",size_s1);
  printf(" 按字节对齐方式下size_s2 = %d\n",size_s2);
}

输出结果为:

 默认对齐方式下size_s1 = 8
 按字节对齐方式下size_s2 = 5

1623c-examples-concatenate-string

指针方法:

#include <stdio.h>

int main()
{
    char str1[100], str2[100], *p = str1,n = 0;
    printf("请输入第一个字符串:");
    scanf("%s", str1);
    printf("请输入第二个字符串:");
    scanf("%s", str2);
    while (*p++ != '\0');/*移动指针到str1尾*/
    --p;//回退一个单元,以便覆盖str1末的'\0p;//回退一个单元,以便覆盖str1末的'\0'
    while (str2[n] != '\0')
    {
        *p++ = str2[n];//将str2接到str1末
        ++n;
    };
    *p = '\0';//拼接完成,手动为str1末添上结束标记
    printf("结果为:\n%s\n\n",str1);
    return 0;
}

1622c-examples-concatenate-string

参考方法:

#include <stdio.h>
#include <string.h>
int main()
{
    char s1[100], s2[100];
    
    printf("输入第一个字符串: ");
    scanf("%s", s1);

    printf("输入第二个字符串: ");
    scanf("%s", s2);

    int len1 = strlen(s1);
    int len2 = strlen(s2);
    //printf("%d %d", len1, len2);
    for (int i = 0; i <= len2; i++)
    {
        s1[i + len1] = s2[i];
    }

    printf("%s\n", s1);
    // system("pause");
    return 0;
}

1621c-examples-remove-characters-string

参考方法:

#include <stdio.h>
#include <string.h>

int main()
{
  char line[100];
  int i,j,len;
  printf("输入一个字符串: ");
  scanf("%s",line);
  len = strlen(line);
  for(i=0;i<len+1;i++)
  {
    if((line[i]>='a'&&line[i]<='z') || (line[i]>='A'&&line[i]<='Z'))
      continue;
    for(j=i;j<len;j++)
    {
      line[j] = line[j+1];
    }
    len--;
    i--;
  }
  //line[len]='\0';
  printf("%s\n",line);
  return 0;
}