当前位置: 首页 > article >正文

改错题总结

头文件

// include <stdio.h>
#include <stdio.h>

变量声明

// int n; i;
   int n, i;

条件判断

// if (0<n && n<1000)           题目要求 0 < N < 1000
   if (n < 0 || n > 1000)
        printf("输入错误!\n"); 
int prime(int n)
{
	int i;

	//for (i=2; i<n; i++);
    for (i=2; i<n; i++)
		//if (n%2==0) return 0;
        if (n%i==0) return 0;   //这里是判断是否为素数,素数就是只能被1和自身整除
	return 1;
}

循环初始化条件

题目限制除数不能为零

double item(int k)
{
    //return 1 / k;
    return 1.0/k;
}

// for (i=0; i<=n; i++)  //除数不能为零
   for (i = 1; i <= n; i++)
        sum += item(i);

浮点数转化

double item(int k)
{
    //return 1 / k;
    return 1.0/k;
}

1 / k 是一个 整数除法(因为 1 是整数常量,kint 类型),结果是一个整数。

​ 为了让 1 / k 进行浮点数运算,可以将 1 显式转换为浮点数 1.0

float fun(int n)
{
    int i, j, t;
    float s;

    //for (i = 1; i <= n; i++);
    for (i = 1; i <= n; i++)
    {
        t = 0;
        for (j = 1; j <= i; j++)
            t = t + j;
        //s = s + 1 / t;
        s = s + 1.0 / t;      //浮点数相加,要把整数转化为浮点数, 所以 1/t  要改成1.0/t
    }
    return s;
}

函数的参数接收

函数接收的参数类型(形参)要与(实参)类型匹配
在这里插入图片描述

函数返回值 以及返回参数要与函数类型一致

float sum(float x, float y)
{	
	float z;

	z = x + y;

	//return ;
    return z;
}

返回的参数要与函数类型一致

double fun(int s[])
{
	//int sum=0.0;
    double sum=0.0;    //返回参数要与函数类型一致
	int c=0,i=0;

	//while (s[i]=0)
    while (s[i]!=0)
	{
		if (s[i]>0)
		{
			sum+=s[i];
			c++;
		}
		i++;
	}
	//sum\=c;
    sum/=c;

	//return c;
    return sum;  //返回的值要符合程序逻辑
}

main函数书写规范

//main()
int main()
//int main
int main()

scanf输入参数要有取地址符&

//scanf("%f,%f", a, b);
  scanf("%f,%f", &a, &b);
//scanf("%d",x[i]);
  scanf("%d",&x[i]);

参数接受函数的返回值

参数接收函数的返回值时,参数的类型要与函数返回值的类型相同

float sum(float x, float y)
{	
	float z;

	z = x + y;

	//return ;
    return z;
}

//main()
int main()
{	
	float a, b;
	//int c;
    float c;   // c用来接收函数的返回值,所以类型要一致

	//scanf("%f,%f", a, b);
    scanf("%f,%f", &a, &b);
	c = sum(a, b);
	printf("Sum is %f\n"+c);
}

printf的书写规范

//printf("Sum is %f\n"+c);
  printf("Sum is %f\n",c);
//printf("\n这些素数的总个数为:\n", n);
  printf("\n这些素数的总个数为:%d\n", n);

变量的初始化

如果在后续需要操作 +* 操作的变量一定要初始化

double item(k)
{
	int i;
    //double f;
	double f = 0;  // 初始化变量

	for (i=1; i<=k; i++)
		f += i;

	return 1/f;
}
long fun(long num)
{
	//long k;
    long k = 1;  // 初始化变量

	do
	{ 
		k *= num%10;
		//num \= 10;
        num /= 10;
	//} while (!num);
    }while (num);
	return (k);
}
int main()
{
	//int i, n;
    int i, n = 0;  //后续有n++,所以要初始化n变量
    
	printf("100到200之间的所有素数有:\n");
	for (i=100; i<200; i++)
	{
		//if prime(i)
        if(prime(i))
		{
			printf("%4d", i);
			n++;
		}
	}
	//printf("\n这些素数的总个数为:\n", n);
    printf("\n这些素数的总个数为:%d\n", n);
	return 0;
}

上下文的逻辑合理(需要根据题目一起判断)难

在这里插入图片描述

//return 1/f;
    return f;             //返回值f与1/item(i)已经形成除法关系,这里item(i)=f    如果返回 1/f 则与1/item(i)没用形成除法关系,这里item(i)=1/f
/*M231106.c*/
#include <stdio.h>

double item(k)
{
	int i;
    //double f;
	double f = 0;

	for (i=1; i<=k; i++)
		f += i;

	//return 1/f;
    return f;             //返回值f与1/item(i)已经形成除法关系,这里item(i)=f    如果返回 1/f 则与1/item(i)没用形成除法关系,这里item(i)=1/f
}

//int main
int main()
{
	int n,i;
	double sum=0;

	printf("输入一个自然数n的值:");
	scanf("%d", &n);
	//if (0<n && n<1000)
    if(n < 0 || n > 1000)
		printf("输入错误!\n");
	else
	{
		for (i=1; i<=n; i++)
			sum = sum + 1/item(i);      
		printf("表达式的值为:%lf\n", sum);
	}

	return 0;
}

除法符号 /

//num \= 10;
  num /= 10;
//sum\=c;
  sum/=c;

while的条件判断

在while(条件) 中的(条件),只有为0时才为0 ,其他值都为1。

long fun(long num)
{
	long k;

	do
	{ 
		k *= num%10;
		//num \= 10;
        num /= 10;
	//} while (!num);
    }while (num);
	return (k);
}

for循环后面不接;号

是一条语句结束的标志

//for (i = 1; i <= n; i++);
  for (i = 1; i <= n; i++)
//for (i=2; i<n; i++);
  for (i=2; i<n; i++)

函数的返回值类型

程序中一般有提示返回值类型

//fun(int n)
float fun(int n)      //在这个地方改错
{
    int i, j, t;
    float s; 

    //for (i = 1; i <= n; i++);
    for (i = 1; i <= n; i++)
    {
        t = 0;
        for (j = 1; j <= i; j++)
            t = t + j;
        s = s + 1 / t;
    }
    return s; //s是float提示了返回值类型
}

//main()
int main()
{
    int n;
    float fun();   //提示了返回值类型

    printf("Please input a number:");
    //scanf("%d", n);
    scanf("%d", &n);
    printf("%10.6f\n", fun(n));
}

while()的条件判断和赋值语句的区别

这个while中s[i]=0永远为真,需要改变判断,具体条件要结合题目

//while (s[i]=0)
  while (s[i]!=0)

if语句的书写规范

if(条件)

//if prime(i)
  if(prime(i))

注意for循环与函数结合时的函数的传参

for (i=1; i<=n; i++) 
	//s = s + fun(n);
      s = s + fun(i);    //传的是变量i, 不是n

http://www.kler.cn/a/408548.html

相关文章:

  • React的基本知识:事件监听器、Props和State的区分、改变state的方法、使用回调函数改变state、使用三元运算符改变state
  • <硬件有关> 内存攒机认知入门,内存的选择 配置 laptop PC 服务器
  • 如何利用 Puppeteer 的 Evaluate 函数操作网页数据
  • 2024年亚太地区数学建模大赛A题-复杂场景下水下图像增强技术的研究
  • 【Django】测试
  • 常见LLM大模型概览与详解
  • 6-自定义fprint函数 --github_com_fatih_color测试
  • 【初阶数据结构与算法】线性表之队列的定义与实现
  • HarmonyOS:使用ArkWeb构建页面
  • 手搓《unordered_map unordered_set》
  • 《第十部分》1.STM32之通信接口《精讲》之IIC通信---介绍
  • 用 BlockingQueue 打造轻量级消息队列服务:从原理到实现
  • [Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
  • 本地推流,服务器拉流全流程
  • SCP文件传输命令解析
  • C++:用红黑树封装map与set-1
  • 前端:JavaScript (学习笔记)【2】
  • 每日计划-1124
  • 嵌入式Linux——文件类型
  • 【jvm】java对象的访问定位
  • MATLAB的语音信号采集与处理分析
  • Puppeteer 和 Cheerio 在 Node.js 中的应用
  • React学习06- API扩展
  • 如何理解tensor中张量的维度
  • Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:电影院后台管理系统(前后端源码 + 数据库 sql 脚本)
  • 亚太杯数学建模C题思路与算法(2024)