自信男孩
码龄12年
  • 50,593
    被访问
  • 26
    原创
  • 962,645
    排名
  • 828
    粉丝
  • 0
    铁粉
关注
提问 私信
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2010-04-06
博客简介:

cfjtaishan的专栏

查看详细资料
个人成就
  • 获得69次点赞
  • 内容获得51次评论
  • 获得24次收藏
创作历程
  • 1篇
    2017年
  • 2篇
    2016年
  • 1篇
    2013年
  • 5篇
    2012年
  • 17篇
    2011年
成就勋章
TA的专栏
  • 学习嵌入式的心得
    7篇
  • 学习网络
    5篇
  • 个人感悟
    7篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

str[i]>='0'&&str[i]<='9为什么要<=9 str[i]-'0'为什么要减去0?

答:

'0'与0差0x30,'0'即16进制即0x30;

'0' ~ '9'即0x30~0x39,

0 = '0' - '0';

1 = '1' - '0';

回答问题 2021.06.29

C语言文件相关函数的使用,数据的存入和读出

答:

fscanf/fprintf, fgets/fputs, fwrite/fread成对出现;不要拆开了混着用

先试着写写,遇到问题再提出来吧~

回答问题 2021.06.28

c语言程序设计高效邦

答:

a为6,首先会进入case 6的选项,打印B;此时由于没有break,所以,会继续向后执行,则会执行case 7即C 选项;

swtich ... case需要注意break的~

回答问题 2021.06.28

fgets函数用不了,怎么办?

答:

楼主的代码有一个问题,就是fwrite写入,如果用fgets读取就会出现乱码;因为fwrite是二进制形式写入的,而fgets是ASCII形式读取的。建议用fgets读取,就要用fputs写入,同理fwrite写入就要用fread读取,保证不出现乱码,就要用对应的函数对;

回答问题 2021.06.28

这个c程序需要怎么写啊

答:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

int main(void)
{
    char str[128];
    FILE*fp;

    fp = fopen("str.txt","w");
    if(!fp) {
        printf("fopen error: %s\n", strerror(errno));
        return -1;
    }
    scanf("%s", str);

    fputs(str, fp);
    puts(str);

    fclose(fp);


    return 0;
}

供参考~

 

fgets/fputs是文件读写的对应函数,fscanf/fprintf这些都是ASCII形式读写文件的,后面的两个是格式化,前面两个是一次一行;

fread/fwrite这是二进制形式读写文件

回答问题 2021.06.28

这条语句中间的toupper是有什么用?

答:
NAME
       toupper, tolower, toupper_l, tolower_l - convert uppercase or lowercase

SYNOPSIS
       #include <ctype.h>

       int toupper(int c);
       int tolower(int c);

       int toupper_l(int c, locale_t locale);
       int tolower_l(int c, locale_t locale);

 

回答问题 2021.06.26

输入两个数字AB,然后按顺序输出A到B之间的所有数,每五个数占一行,为什么我这个是这样子的

答:

len没有初始化。

回答问题 2021.06.26

[Error] expected ':' before ')' token 怎么解决

答:

三目运算符不完整,:冒号以及后面的表达式没写?

回答问题 2021.06.26

简单c语言,麻烦看一下

答:

short(32位系统里是2字节的)是有符号数,而0xafffc是大于2字节才能存储(3字节, fc, ff, 0a三个字节的16进制数),因此赋值是没问题的,但是会被截断,即赋值后x = 0xfffc;(16进制输出, %#x);所以A,B,C描述的都不正确;

考虑到short是有符号数,并且是%d输出,因此输出的是-4(高位为符号位);

回答问题 2021.06.26

请问这个代码怎么讲解

答:

函数名order,那就是排序的功能;这是一个插入排序的函数处理;

回答问题 2021.06.26

求表达式的值,这个i++?是什么意思

答:

这是一个三目运算符:(? :),它是一个?和一个:组成;

当i++为真时,表达式的值是i,否则为j;

i++由于是后增,因此先算i++的值,因i = 013(八进制数,十进制为11),为真,因此表达式的值是013+1;即十进制是12,8进制是014

回答问题 2021.06.26

C语言 冒泡排序法 数组

答:
#include<stdio.h>

#include<string.h>

int main()

{
    char a[5][10]={ "china", "beijing", "you", "tiananmen", "welcome"};
    char t[10];
    int i,j;

    for(i=0;i<4;i++)

        for(j=i+1;j<5;j++)

            if(strcmp(a[i],a[j])>0)

            {
                strcpy(t,a[i]);
                strcpy(a[i],a[j]);
                //strcpy(a[i],t);
                strcpy(a[j],t);
            }

    for (i = 0; i < 5; i++)
        puts(a[i]);
}

供参考~

 

注意字符串双引号是英文的,不能是中文的。注意下表的操作;

回答问题 2021.06.25

为什么我的代码输出是空白的?

答:
#include<stdio.h>
#include<iostream>
#include<cstring>

#if 0
using namespace std;
int get_factorial(int n)
{
    int i, sum = 1;

    for (i = 1; i <= n; i++)
        sum *= i;

    return sum;
}

int check_special_num(int n)
{
    int sum = 0;
    int tmp = n;

    while (tmp) {
        sum += get_factorial(tmp % 10);
        tmp /= 10;
    }
    if (sum == n)
        return 1;

    return 0;
}

int main(void)
{
    int i;

    for (i = 100; i < 1000; i++)
        if (check_special_num(i))
            cout<<i<<endl;

    return 0;
}
#endif
#if 1

using namespace std;

int func(int a,long long int sum);//求3!+2!+1!

int jieji(long long int n);//求3! 2! 1!

int main()

{

    //for(int a=100;a<=5000;a++)//循环开始  /*既然是三位数,把循环条件定义的更精确一些*/
    for(int a=100;a<1000;a++)//循环开始
    {

        long long int sum=0;

        if (func(a, sum) == a)//;

        /*if(sum==a) */cout<<a<<endl;//判断是否相等

        ///else continue;	//不相等就执行下一个, 代码冗余

    }

    return 0;

}

int func(int a,long long int sum)//阶层

{

    long long int i=1,gew[100];

    while(a!=0)//分层

    {

        gew[i]=a%10;//3 2 1

        sum= sum+jieji(gew[i]);//3!+2!+1!

        i++;

        a=a/10;

    }

    return sum;

}

int jieji(long long int n)//阶层 计算3! 2! 1!

{

    long long int s=1;

    if(n==0) return 0;

    for(int j=1;j<=n;j++)

    {

        s=s*j;

    }

    return s;       //返回long long int,而返回类型是int,因此数据长度会被截断

}
#endif

三个9的阶乘之和也不会大于int的取值范围,因此用不上long long int,对于要求的三位数,也用不上申请100长度的数组;

供参考,上面的是个人写的,可以参考一下~

回答问题 2021.06.25

编写create函数一个用来建立链表,一个用来输出链表

答:

没什么问题。define,可以考虑用typedef替换,但是要做一些改动;

回答问题 2021.06.25

按下面的要求编写一段程序

答:
#include <string.h>    /*for strlen*/
void fun/* define name: reverse*/(char *str)
{
    int len = strlen(str), tmp;
    char *start, *end;

    start = str;
    end = str + len - 1;

    while (start < end) {
        tmp = *start;
        *start = *end;
        *end = tmp;
        start++;
        end--;
    }

}

供参考~

方式可能比较多,但是算法都是首尾交换;

还有一种方法,找到末尾向前遍历放到另一数组里,再拷贝到原始数组里,建议用首尾交换的方式;

回答问题 2021.06.25

问一下我这个有什么错误(上面是我改的,下面有正确答案)

答:
scanf("%d", &n);    //第二个参数是地址,不是变量值,因此要加上&
while (n % 2 == 0)    //这个地方应该用==,=是赋值;

for (i = 1; i <= n; i += 2)    //看规律,分母都是奇数,因此这儿的i++改成i+=2
    sum += 1.0/i;    //建议sum定义为浮点数(float或double)并且为了保证1/i是浮点运算,把1改成1.0
如果sum定义为int,那么结果是1,因为只有1/1才会为1,其他都是分子小于分母结果是0;

回答问题 2021.06.25

麻烦问一下C语言第六题,

答:

B和C是一样的,有一个不为0,即为真;

A是需要保证i和j都为非0(非0即为真,只有0为假)才为真;

D,在i, j至少有一个为非0,那么不论是i为0,还是j为0,结果都是真的。

注意至少一个为非0,翻译一下就是:要么有一个为0, 要么两个都是非0;

 

这个题出的不够明确,对于答案的选择首先语文需要好~

回答问题 2021.06.23

两个语句为什么用?隔开而不是;

答:

这是三目运算符,建议楼主搜一下,看一下?:的用法,不单单是?(问号),还有:冒号,一起使用的。

这是语言学习里的基本的符号学习,可以重温一下~

回答问题 2021.06.23

zhe递归函数怎么看,为什么我算出来的是2,求解析

答:

11--》第一次进入fun函数

11/5 == 2 > 0第二次进入fun函数,

2/5 == 0 >0执行printf,输出2,退到第一次执行fun函数内,执行printf,此时x是11,因此输出11

fun此时执行完成,回到main函数内;

由于输出的是2次,因此先输出2,在输出11,因此结果是211

回答问题 2021.06.23

编程:利用函数方式实现两个字符串的比较处理程序。

答:

就是自己实现strcmp或strncmp吧

int mystrcmp(const char *s1, const char *s2)
{
    while (*s1 && *s2) {
        if (*s1 > *s2)
            return 1;
        else if (*s1 < *s2)
            return -1;
        s1++, s2++;
    }

    if (*s1 == 0 && *s2)
        return -1;
    else if (*s1 && *s2 == 0)
        return 1;
    else
        return 0;
}

供参考~

回答问题 2021.06.23
加载更多