草庐IT

C语言:1~10阶乘的累加计算(循环方法不唯一)

xylophone-chb 2023-04-15 原文
  1. C语言的循环结构,有for(;;)循环,while()循环,do~while()循环,for循环使用最频繁,三种语句都可以衔接break;continue;来进行中断循环。
  2. 在for(;;)循环结构中,分号所隔开的语句是(初始化;判断;调整),当都省略时即直接使用for(;;)时,默认为真,即进入死循环。

1~10阶乘的累加计算方法一

点击查看代码
int main()
{
	int sum = 1, i, n;
	int ret = 0;
	for (n = 1; n <= 3; n++)
	{
		for (i = 1,sum = 1; i <= n; i++)//注意内循环结束得释放sum存有的值,令sum = 1
		{
			sum = sum * i;
		}
		ret = ret + sum;
	}
	printf("%d\n", ret);
	return 0;
}

1~10阶乘的累加计算方法二

点击查看代码
int main()
{
	int sum = 1, i, n;
	int ret = 0;
	for (n = 1; n <= 3; n++)
	{
		for (i = 1,sum = 1; i <= n; i++)//注意内循环结束得释放sum存有的值,令sum = 1
		{
			sum = sum * i;
		}
		ret = ret + sum;
	}
	printf("%d\n", ret);
	return 0;
}

其他的琐碎基础知识(未整理)

点击查看代码
# include <stdio.h>					//standard input output 标准输入输出
# include <string.h>

int main()						//调用mian函数后返回int型,voidmain 写法过时,不适用
{
	printf("hello world!\n");		//printf   print+f 其实就是print+function打印函数
	return 0;						//返回整型0
}
 %d 打印整型数字
 %p 以地址的形式打印
 %x 打印十六进制数字

int main()
{
	printf("%d\n", sizeof(char));		// 1 byte = 8 bit
	printf("%d\n", sizeof(short));		// 2 byte
	printf("%d\n", sizeof(int));		// 4 byte
	printf("%d\n", sizeof(long));		// 4 byte or 8 byte  //	C语言标准规定 sizeof(long) >= sizeof(int)
	printf("%d\n", sizeof(long long));	// 8 byte
	printf("%d\n", sizeof(float));		// 4 byte
	printf("%d\n", sizeof(double));		// 8 byte
	return 0;
}

int main()
{
	float weight = 96.5f;				//在使用float向内存申请空间时,会将float型转化double型,因此要在小数后加一个f,来表示单精度型
	return 0;
}


int a = 100;
int main()
{
	int a = 10;
	printf("%d\n", a);					//输出最终结果为10,说明局部变量和全局变量可以同时存在,但局部变量优先权大于全部变量
	return 0;
}
int main()
{
	int num1;
	int num2;
	int sum;							//C 语言规定变量要放在代码块前面,否则编译会报错
	......;								//局部变量的作用域是局部范围  全局变量的作用域是整个工程
}										//当变量在其他.c文件定义时,应在当前.c 文件使用extern来声明外部变量						
										//局部变量的生命周期是进入括号开始,出括号结束;全局变量的生命周期是整个程序的周期

常量:
①字面常量  ②const修饰的常变量  ③#define  定义的标识符常量  ④枚举常量enum

enum sex
{
	MALE,
	FEMALE,
	SECRET
};

int main()
{
	printf("%d\n", MALE);
	printf("%d\n", FEMALE);
	printf("%d\n",SECRET);
	return 0;
}

int main()
{
	char arr1[] = "abc";				//'\0'字符串结束的标志 ,'\0'对应ASCII码值为0		" "引号里面的被称为字符串表面值
	char arr2[] = { 'a','b','c' };	//'\0'是转义字符,不算作字符串内容		97(ASCII码值)	-	1100001  ASCII编码
	printf("%d\n",strlen(arr1));	//在strlen()函数下输出为 3
	printf("%d\n",strlen(arr2));	//在strlen()函数下输出为随机值,直到找到随机值'\0',便停止查询
	return 0;
}

转义字符 -->  三字母词 --> ?? + _()  组成三字母词
在编译器中为防止三字母词的编译产生,使用 --> \?\? 来解决

int main()
{
	printf("%d\n", strlen("C:\test\32\test.c"));
	return 0;
}
操作符:
算术操作符、移位操作符、位操作符
算术操作符: + - * % / ~
移位操作符: >> <<
位操作符: & | ^
单目操作符: + - ! ~ -- ++ sizeof 

/* 源码 补码 反码*/
三目操作符也叫条件操作符(a > b ? a : b)
 []:下标操作符 ; ():函数调用操作符
重点操作符:&  *  .  ->

只要是整数,在内存中存储的都是二进制数的补码
对于正整数:原码,反码,补码,都相同
对于负整数:①原码:符号位取1,其他位按照二进制写;②反码:符号位不变,其他位按位取反;③补码:在反码的基础上加1

signed int == int 意为有符号整型,可以是负数,也可以是正数
相反,无符号整型为 unsigned int
union:联合体,共用体关键字
volatile 操作系统使用的
typedef:类型定义,类型重命名
static :静态局部变量,保留局部变量的值,不会因为生命周期而消失(修饰局部变量,使生命周期变长)
static :当修饰全局变量时,该变量只能在当前文件使用(改变了其作用域)
extern :相反,在其他文件定义的变量,在当前文件,使用extern声明该变量,即可使用该变量所含的值和属性

32位的计算机,以bit的方式存储,具有2^32种位状态,所需要的内存为512Mb ;若以字节为划分单位32位的计算机存储等量的数据需要4G的空间
内存的的空间是以字节来划分的,一个字节为一个单元
打印地址的方式,①取地址  & ;②打印地址使用 %p ;


 *p 中的 * 解引用操作符/间接访问操作符, p:为指针变量  int* p 中int* 是指针类型 
define 不是关键字,是标识符
static 修饰的变量可以被改变
static 修饰的变量的值会保留上一次赋值的结果
指针变量的大小取决于所在多少位的操作环境,32位则是4个字节,64位则是8个字节,与该指针变量是什么类型无关
计算指针类型的大小,例如sizeof(char*),sizeof(short*)等,其实也是计算指针变量的大小,与所在多少位操作有关有关


在C语言中0为假,非0为真。即-1或者1都为真
悬浮else:在C语言中if else语句,多个if和一个else的话,else对应对近的一个if,不管是否缩进都一样若要该else与其他if匹配则使用{}来括起来,形成代码块的形式

分支语句
If~ else语句
Switch~case 语句

Ctrl + z退出while的死循环,
EOF表示end of file ,代表的值是-1;文件结束标志

在for循环中,初始值、判断和调整都可以被省略,但是判断语句被省略后,默认为恒为真,即进入死循环
 
 在这个for循环中,因为判断语句k=0,为假,所以不进行循环

do while循环,是先执行循环,再进行判断

有关C语言:1~10阶乘的累加计算(循环方法不唯一)的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  5. ruby - 树顶语法无限循环 - 2

    我脑子里浮现出一些关于一种新编程语言的想法,所以我想我会尝试实现它。一位friend建议我尝试使用Treetop(Rubygem)来创建一个解析器。Treetop的文档很少,我以前从未做过这种事情。我的解析器表现得好像有一个无限循环,但没有堆栈跟踪;事实证明很难追踪到。有人可以指出入门级解析/AST指南的方向吗?我真的需要一些列出规则、常见用法等的东西来使用像Treetop这样的工具。我的语法分析器在GitHub上,以防有人希望帮助我改进它。class{initialize=lambda(name){receiver.name=name}greet=lambda{IO.puts("He

  6. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  7. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  8. Ruby 方法() 方法 - 2

    我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby​​-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco

  9. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  10. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

随机推荐