C语言week1

院科协C语言培训:负责培训的学长从头开始,也就是从“Hello world”开始,为我们理清代码编写的思路,分享一些他在学习过程中一开始会遇到的问题和应对方法与技巧。主要讲解了初等程序结构及常用字符作用。

·格式转换:int main()主函数一般是不会改变的,但是也有一种情况就是能运行长字符的格式(应先在代码开头进行定义):

#define int long long 
signed main() 

·强制转换:当一个变量在前面已经定义了一个整型后,输出时无法通过直接将%d改成%lf达成输出小数的目的,这时应在a/b前加(double)或1.0*可转化整数为小数。(可类推其他类型转换)

#include<stdio.h>
int main(void)
{
	int a,b;
	scanf("%d %d",&a,&b);
	printf("%lf",(double)a/b);
	return 0;
}

一些零散的知识点总结:

  • 字符型char的赋值要用单引号‘x’(在%d中会强制转换数字类型ep.6→54)
  • u=x==y,先判断x是否等于y,再输出1 or 0
  • t=a++//先把a的值给t,a再自加1
  • t=++a//a先自加1,再赋值给t
  • !是”非“的意思,!0=1,其他非零数的非为0,只要()里为非零,{ }里的代码就会执行;for( )括号里一定要有两个“;”
  • 内层{ }里的能调用外层{ }的数据,外层{ }不能调用内层{ }的数据
  •  scanf双引号里的字符串都要输入【ep.scanf("time=%d");//输入时不要漏掉“time=”】
  • 符号常量进行定义:1.放在程序头部;2.不需要加等号;3.后面不能被赋值
    #define PI 3.14


人工智协作业改进

结合前面培训的内容,我发现了在之前作业中存在的问题,解决了一些困扰。

#include<stdio.h>
int main()
{
	int x,y;
	scanf("%d",&x);
	scanf("%d",&y);//这里不能使用换行 \n符号 
	int temp;
	temp=x;
	x=y;
	y=temp;
	printf("%d\n",x);
	printf("%d\n",y);
	return 0;
}
  • 在变量交换一题中,只需要输入a,b两个变量时却还要再输入另外一个值才能运行。在这题中就关系到了其中一个知识点。
  • 原本是scanf("%d\n",x);(下一行同)

scanf双引号里的字符串都要输入

在scanf里的"\n"并不能实现换行功能,不能放在这里,否则会影响输入效果。

当代码是scanf(“%d\n”,&a);时,如果你输入数字后一直按回车,scanf就会一直阻塞在那里,直到你再一次输入。而且运行结果只会识别第一个数,不会识别第二个数。

如果给scanf末尾加上\n,\n不表示等待换行符,而是读取并放弃连续的空白字符,你输入结束之后按回车不会结束,无论再输入多少空白字符都会被忽略,要等再接收到一个非空白字符(空格、制表符、回车)的输入后scanf语句才结束。但需要注意的是,最后输入的那个非(空格、制表符、回车)的东西是不会被这个scanf读进来的,而是留在缓冲区中。

  • 在判断三角形类型一题中,等边三角形的判断条件比等腰要严格,故需把等边三角形的判断放在等腰三角形前面,否则满足等边三角形条件时也会输出等腰。以及判断是否形成三角形时的三条边关系用&&连接,而不是||连接。
    #include<stdio.h>
    int main()
    {
    	int a,b,c;
    	scanf("%d %d %d",&a,&b,&c);
    	if(a+b>c&&b+c>a&&a+c>b)//判断条件是与而不是或连接 
    	{
    		if(a==b&&b==c&&c==a)
    		{
    		 	printf("该三角形为等边三角形\n");//限定更多的放前面,不然会输出等腰 
    		 }
    		else if(a==b||b==c||a==c)
    			{
    				printf("该三角形为等腰三角形\n");	
    			}
    		else if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)//等号不要输错 
    		{
    			printf("该三角形为直角三角形\n");
    		}
    		else
    		{
    			printf("该三角形为任意三角形\n");//不要只输入特殊值漏掉这种情况 
    		}
    	}
    	else 
    	{
    		printf("不能构成三角形\n");
    	}
    	return 0;
    }

  • 在计算d+dd+...+n个d的和时,采用for循环,变化的部分用不同的变量保存,然后带进下一个循环,得到正确的结果。(之前一直纠结于如何表达最后一项,不知道怎么把每一项加起来。
    #include<stdio.h>
    #include<math.h>
    int main()
    {
    	int d,n;
    	int sum=0;
    	int x=0;
    	int z=0;
    	scanf("%d %d",&d,&n);
    	int y=d;
    	for(x=1;x<=n-1;x++)
    	{
    		z=10*y+d;
    		y=z;//让y表示最后一项 
    		sum+=z;
    	}
    	sum+=d;
    	printf("%d\n",sum);
    	return 0;
    }

  • 最后一题原本以为要应用到指数,便从网上学习到了表达指数的方式,从课堂上也学习到了一种。例如要表示10的N次方

网上:#include<math.h>, pow(10,N)

课堂上:1eN(这里N是一个具体数字)

经过第一周C语言的学习,我提高了些代码的熟练度,对C语言的基础知识有了更进一步的了解。对于以上的学习经验,如有看法和见解,欢迎在评论区留言~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值