C 语言教程 在线

1780c-exercise-example33

参考解法:

#include<stdio.h>
#include<math.h>

//宏定义布尔类型
#define BOOL int
#define TRUE 1
#define FALSE 0

int main()
{
    int n;
    printf("输入一个大于1的自然数:\n");
    scanf("%d",&n);
    BOOL flag = TRUE;
    for(int i=2;i<n;i++) {
        if(n%i==0)
        {
            printf("不是质数\n");
            flag = FALSE;
            break;
        }
    }
    if(flag||n==1||n==2) {
        printf("是质数\n");
    }
}

输出结果如下:

输入一个大于1的自然数:
5
是质数

1779c-exercise-example32

参考方法:

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

char *deleteCh(char *ch,char *str){
    char *p,*q,*r,*s;
    int len1,len,cnt=0,i;
    len1=strlen(str);
    p=str;
    //统计该字符在字符串中出现的次数
    while((p=strchr(p,ch))!=NULL){
        cnt++;
        p+=1;   //指针移向该字符的后一个字符
    }
    len=len1-cnt;   //新字符串的长度
    s=r=(char *)malloc(len);    //分配动态存储空间
    p=str;
    while(1){
        q=strchr(p,ch);
        if(q!=NULL){
            i=q-p;      //出现位置距离开始位置距离
            strncpy(r,p,i);
            r+=i;
            p=q+1;
        }
        else{           //表明剩余str中已经没有ch了
            strcpy(r,p);
            break;
        }
    }
    return s;
}

int main(){
    char ch='a';
    char str[]="saejwajeaawaw";
    char *d;
    d=deleteCh(ch,str);
    printf("result= %s\n",d);
    free(d);

    return 0;
}

1778c-exercise-example32

参考方法:

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

int main()
{
    char zifu[1000];
    const char del[1000];
    char *rat;
    printf("请输入一串字符\n");
    scanf("%s",&zifu);
    printf("请输入你想删除字符\n");
    scanf("%s",&del);
    printf("已删除:%s\n",del);
    rat=strtok(zifu, del);/*strtok()用来将字符串分割成一个个片段,
                          当strtok()在参数s的字符串中发现参数del中包含的分割字符时,
                          则会将该字符改为\0 字符*/
    printf("%s",rat);
    rat=strtok(NULL,del);/*原字符串变为分割完成之后的第一个字符串,
                            剩余的字符串存储在一个静态变量中*/
    printf("%s\n",rat);
    return 0;
}

1777c-exercise-example32

参考方法:

#include<stdio.h>
#include<string.h>
#define N 80
void delete_x(char *str,char *s,char ch);
int main(void)
{
    char str[N],ch;
    char s[N];
    memset(str,'\0',sizeof(str));
    memset(s,'\0',sizeof(s));
    gets(str);
    scanf(" %c",&ch);
    delete_x(str,s,ch);
    puts(s);
    return 0;
}

void delete_x(char *str,char *s,char ch)
{
    int i,j = 0, str_len = strlen(str);
    for(i = 0; i < str_len; i++)
    {
        if(str[i] != ch)
        {
            s[j] = str[i];
            j++;
        }
    }
}

1776c-exercise-example32

参考方法:

#include <stdio.h>
#include <string.h>
int main()
{
    char s[128] = {0}, s1[128] = {0}, ch;
    int i = 0, j = 0;
    printf("请输入字符串:");
    fgets(s, (sizeof s / sizeof s[0]), stdin);
    printf("请输入要删除的字符:");
    scanf("%c", &ch);
    for (i = 0; i < strlen(s); i++)
    {
        if (s[i] == ch)
            continue;
        s1[j++] = s[i];
    }
    puts(s);
    puts(s1);
    return 0;
}