首页 > 其他分享 >C语言习题~day11

C语言习题~day11

时间:2024-12-20 11:29:03浏览次数:6  
标签:int money C语言 empty day11 版本 Debug 习题 调试

1、C程序常见的错误分类不包含:( )

A.编译错误

B.链接错误

C.栈溢出

D.运行时错误

栈溢出是运行时错误的一种,因此C程序不会将栈溢出错误单独列出来,栈溢出包含在运行时错误中。

因此:选择C

2、关于VS调试快捷键说法错误的是:( )

A.F5-是开始执行,不调试

B.F10-是逐过程调试,遇到函数不进入函数

C.F11-是逐语句调试,可以观察调试的每个细节

D.F9是设置断点和取消断点

A:错误,F5是开始调试,在遇到短点的位置可以停下来,Ctrl+F5是开始执行,不调试

B:正确,F10遇到函数时不会进入到函数体中,F11会

C:F11遇到函数时,会进入函数中

D:F9会在光标所在行下短点,如果有短点会取消短点  因此,选择A

3、关于Debug和Release的区别说法错误的是:( )

A.Debug被称为调试版本,程序调试找bug的版本

B.Release被称为发布版本,测试人员测试的就是Release版本

C.Debug版本包含调试信息,不做优化。

D.Release版本也可以调试,只是往往会优化,程序大小和运行速度上效果最优

A:正确,Debug为调试版本,一般在开发完成后发布工程前,调试代码都是在Debug模式下进行的

B:正确,Release版本最终是要发送给用户的,发给用户的版本必须要没有问题,测试人员就是最后一个把关的

C:正确,Debug版本是调试版本,编译器编译时会增加一些调试信息,编译器基本不会对其进行优化

D:错误,Release版本是不能调试的,一般都是在Debug版本下调试的,Release版本一般编译器会进行大量的优化,删除无用的代码,指令的次序调整等,让其速度更快

因此:选择D

4、喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。

/*
思路:
1. 20元首先可以喝20瓶,此时手中有20个空瓶子
2. 两个空瓶子可以喝一瓶,喝完之后,空瓶子剩余:empty/2(两个空瓶子换的喝完后产生的瓶子) + empty%2(不够换的瓶子)
3. 如果瓶子个数超过1个,可以继续换,即重复2
*/
int main()
{
	int money = 0;
	int total = 0;
	int empty = 0;


	scanf("%d", &money);
	
	//方法1
	total = money;
	empty = money;
	while(empty>1)
	{
		total += empty/2;
		empty = empty/2+empty%2;
	}

    printf("total = %d\n", total);
	return 0;
}


// 方法二:按照上述喝水和用瓶子换的规则的话,可以发现,其实就是个等差数列:money*2-1
int main()
{
	int money = 0;
	int total = 0;
	int empty = 0;


	scanf("%d", &money);
	
	//方法2
	if(money <= 0)
	{
		total = 0;
	}
	else
	{
		total = money*2-1;
	}
	printf("total = %d\n", total);


	return 0;
}

5、用C语言在屏幕上输出以下图案:

/*
思路:
仔细观察图形,可以发现,此图形中是由空格和*按照不同个数的输出组成的。
上三角:先输出空格,后输出*,每行中
  空格:从上往下,一行减少一个
  *:2*i+1的方式递增
  
下三角:先输出空格,后输出*,每行中
  空格:从上往下,每行多一个空格
  *: 从上往下,按照2*(line-1-i)-1的方式减少,其中:line表示总共有多少行
按照上述方式,将上三角和下三角中的空格和*分别输出即可。 
*/


int main()
{
	int line = 0;
	int i = 0;
	scanf("%d", &line);//7
	//打印上半部分
	for(i=0; i<line; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for(j=0; j<line-1-i; j++)
		{
			printf(" ");
		}
		//打印*
		for(j=0; j<2*i+1; j++)
		{
			printf("*");
		}
		printf("\n");
	}


	//打印下半部分
	for(i=0; i<line-1; i++)
	{
		//打印一行
		int j = 0;
		for(j=0; j<=i; j++)
		{
			printf(" ");
		}
		for(j=0; j<2*(line-1-i)-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

6、求出0~100000之间的所有“水仙花数”并输出。“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。 

/*
思路:
此题的关键在于只要知道判断一个数据是否为水仙花数的方式,问题就迎刃而解。假定给定一个数据data,具体检测方式如下:
1. 求取data是几位数
2. 获取data中每个位置上的数据,并对其进行立方求和
3. 对data中每个位上的数据立方求和完成后,在检测其结果是否与data相等即可,
相等:则为水仙花数
否则:不是
具体实现参考以下代码。
*/
#include <stdio.h>
#include <math.h>

int main()
{
	int i = 0;
	for(i=0; i<=99999; i++)
	{
		int count = 1;
		int tmp = i;
		int sum = 0;
		//判断i是否为水仙花数
		//1. 求判断数字的位数
		while(tmp/10)
		{
			count++;
			tmp = tmp/10;
		}
     
		//2. 计算每一位的次方和
		tmp = i;
		while(tmp)
		{
			sum += pow(tmp%10, count);
			tmp = tmp/10;
		}
     
		//3. 判断
		if(sum == i)
			printf("%d ", i);
	}
	return 0;
}

7、 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222

/*
思路:
通过观察可以发现,该表达式的第i项中有i个a数字,因此:
假设第i项为temp,则第i+1项为temp*10+a
具体参考以下代码
*/
int main()
{
	int a = 0;
	int n = 0;
	int i = 0;
	int sum = 0;
	int tmp = 0;


	scanf("%d%d", &a, &n);
	for(i=0; i<n; i++)
	{
		tmp = tmp*10+a;
		sum += tmp;
	}
	printf("%d\n", sum);

	return 0;
}

标签:int,money,C语言,empty,day11,版本,Debug,习题,调试
From: https://blog.csdn.net/2301_78029441/article/details/144607032

相关文章

  • 数学建模习题10.3
    `importnumpyasnpimportstatsmodels.formula.apiassmfimportpylabasplt创建x值序列x=np.arange(17,30,2)加载数据a=np.loadtxt('data10_3.txt')设置图形样式和字体plt.rc('text',usetex=True)plt.rc('font',size=16)plt.style.use(�......
  • 数学建模习题10.2
    `importnumpyasnpimportstatsmodels.apiassmimportpylabasplt加载数据a=np.loadtxt('data10_2.txt')plt.rc('text',usetex=True)plt.rc('font',size=16)plt.style.use('default')绘制图形plt.plot(a[0],a[2],'*......
  • 数学建模习题9.5
    `importpandasaspdfromstatsmodels.formula.apiimportolsfromstatsmodels.stats.anovaimportanova_lm列名列表column_names=["城市1","城市2","城市3","城市4"]生成因子组合factor_combinations=[f"位置{i+1}广告形式行+1高档"......
  • C语言 qsort 详解
    qsort1.定义:           qsort,基于快速排序(QuickSort)算法的一个库函数,可以将一串整型类型、浮点类型、       字符串类型、结构体类型等的数据进行排序。比冒泡排序,选择法排序好用,且速度更快。2.语法:        具体语法如下:qsort(arr,siz......
  • 什么是c语言
    _//by:符映维2024-12-19_分类内容C语言简介C语言是一种中级编程语言,最初由DennisM.Ritchie在贝尔实验室为Unix操作系统开发。它结合了高级语言的特点和低级语言的特性,允许直接访问内存地址和硬件资源,同时也支持结构化的程序设计。C语言的主要功能包括-支持过程化......
  • 【C语言1】C语言常见概念(总结复习篇)——库函数、ASCII码、转义字符
    文章目录前言一、C语言是什么?二、编译器的选择——VS2022三、main函数四、printf函数五、库函数六、关键字七、字符和ASCII编码八、字符串和'\0'九、转义字符十、注释总结前言上周考完四级(明年再战hh)和两门考试,接下来一个月将迎来其他学科的期末考试,所以这一个月......
  • C++ vector动态扩容及动态数组C语言实现
    std::vector是stl中的动态数组,支持动态扩容,stl是如何进行动态扩容的呢?了解其动态扩容过程有什么用?一、探究std::vector动态扩容过程我们通过下面这段代码来了解一下std::vector的动态扩容过程。#include<iostream>#include<vector>intmain(){std::vector<int......
  • static关键字在C语言中的主要应用
    在C语言中, static 关键字有以下几种主要应用:1.修饰局部变量当 static关键字修饰一个局部变量时,这个变量就成为静态局部变量,通常一般局部变量存储在栈区,在函数执行结束后变量就会被销毁了。但被 static 修饰的局部变量存储在静态存储区,在函数调用结束时在程序的整个生命......
  • 深入理解C语言和C++中struct的区别
    大家好!我是兔飞飞!今天学习struct结构体,主要从c语言和c++的对比出发,这样更好辨析,应该大部分人都是先学c语言,再学的c++?1.C中struct的特点在C中,struct主要是用来定义一个包含多个数据成员的数据结构。结构体在C中只能包含数据成员,而不能包含函数。以下是C中struct......
  • C语言-稀疏数组转置
    1.题目要求 2.代码实现 #include<stdio.h>#defineMAX_TERM80//定义稀疏矩阵结构体typedefstructjuzhen{introw;intcol;intvalue;}Juzhen;//显示稀疏矩阵voidshow(Juzhena[],intcount_a){printf("irowcolval\n");f......