当前位置:首页 » 编程语言 » c语言装载问题

c语言装载问题

发布时间: 2023-03-22 15:48:44

c语言基本问题

一、C语言规定总是从main()开始执行的(这个函数也叫“主函数”)。因此,你发来的题目中的(1、6、8)叙述都是错误的,都应该选择F。
二、第2题中,C语言对其数据在内存中所占用的实际字节数,随着程序中声明的数据类型以及数据的多少而变化,C语言本身并没有明确规定。这题应该选F。

三、第3题,C语言中强制类型转换,仅对转换的语句有效,而不会改变所转换变量的原有数据类型,这是正确的,应该选T。

四、第4题,i=8,j=10;printf("%d,%d,%d,%d\n",i,j,++i,j++);实际上是一个程序执行类题目,执行这一句时,先取得ij变量的值,其中有一个++i(先自增),一个j++(后自增),先自增的i先加上1,也就是i=8+1=9,而后自增的j在打印之后再加1,所以打印时仍是j=10。所以打印出来是:9 10 9 10。这是正确的。

五、第5题“C语言中放在“”之间的内容都被视为字符串的一个构成部分,都可以在屏幕上原样显示”的说法是错误的。举一个例子就可以了:print("%d",8);是打印不出来%d的,它只能打印出来8。所以它是错的。

六、第7题,设x、t均为int型变量,则执行语句"x = 10;t = x && x >10;"后,t的值为,这个题目好似没有写完,成了填空题了,现在来看计算过程,t = x && x >10,根据计算的优先级,>号是6级,&&是11级,先计算x >10,因为x=10,故x>10是不成立的,所以它的值是0,第二步再计算x && 0=10 && 0=0。t的值最后应该是0。
希望对你有所帮助。

㈡ 子集树问题(用C语言或C++完成)

//说明:我是用c++编的。解法是用栈来进行递归模拟,解法编译过是正确的。我有注释说明。不过要改成递归比较麻烦。而且,解题一般是不会限制解法的,你看看这个非递归的解法吧。
#include <iostream>
#include <string>
using namespace std;

void main(){
int i,j,n,c,temp,L[100],S[100],p,sum,Get,max;
cin>>n>>c;
for (i=0;i<n;i++){
cin>>L[i];
}
max=0;
sum=0;
p=-1;//栈初始化
for (i=0;i<n;i++){
if (sum+L[i]<=c) {
sum=sum+L[i];
p++;
S[p]=i;//i入栈
break;//寻找第一个
}
}
while ((p!=-1)||(i<=n-1)){//当栈不空或未检索到末尾时运行
if (i<=n-1){//如果是未检索到末尾时
Get=S[p];//取栈顶元素
for (i=Get+1;i<n;i++){
if (sum+L[i]<=c) {
sum=sum+L[i];
p++;
S[p]=i;//i入栈
}
}
}
if(i==n){//如果检索到末尾但栈不为空时
if (sum>max) max=sum;
Get=S[p];//取栈顶元素
/*for (j=0;j<=p;j++){
temp=S[j];
cout<<L[temp]<<" ";
}
cout<<endl;*///说明此处用来检验栈模拟的过程,及其正确性,可输出解的子集,你可以看看
p--;//模拟出栈
//cout<<max<<" ";
sum=sum-L[Get];//还原
for (i=Get+1;i<n;i++){//
if (sum+L[i]<=c) {
sum=sum+L[i];
p++;
S[p]=i;//i入栈
break;//寻找下一个
}
}

}

}
cout<<max<<endl;
}

㈢ C语言关于装载问题(背包问题)的一个程序 我写的程序输出不满足题意 但我检查不出来错误 希望大神解决

想法:是先让c1船尽量装货物是可以的,但是算法应该不对,可以用下面的算法

// 前k个数中去任意个数,且这些数之和为s的取法是否存在
int main()
{
int n, i, k1, k2, s, u;
cin >> n;
for (i=1; i<=2*n; i++)
cin >> A[i];
int sum = 0;
for (i=1; i<=2*n; i++)
sum += A[i];
memset(dp,0,sizeof(dp));
dp[0][0]=true;
// 外阶段k1表示第k1个数,内阶段k2表示选取数的个数
for (k1=1; k1<=2*n; k1++) // 外阶段k1
{
for (k2=k1; k2>=1; k2--) // 内阶段k2
for (s=1; s<=sum/2; s++) // 状态s
{
//dp[k1][s] = dp[k1-1][s];
// 有两个决策包含或不包含元素k1
if (s>=A[k1] && dp[k2-1][s-A[k1]])
dp[k2][s] = true;
}
}
// 之前的dp[k][s]表示从前k个数中取任意k个数,经过下面的步骤后
// 即表示从前k个数中取任意个数
for (k1=2; k1<=2*n; k1++)
for (s=1; s<=sum/2; s++)
if (dp[k1-1][s]) dp[k1][s]=true;
// 确定最接近的给定值sum/2的和
for (s=sum/2; s>=1 && !dp[2*n][s]; s--);
}

㈣ c语言的程序运行错误怎么解

有错误,就首先要要找出错误的原因,这个过程称为debug。

之后再编译运行。

如果很难定位错误的位置,建议在程序里增加debug语句,简单打印出程序中的位置行号,等等。

如果发现了错误的大概位置,但是很难找到错误的原因,就要使用debug工具,设置断点,单步跟踪执行,精确找到错误位置。

程序中错误大都不止一个,如果编译运行后,依然有错误,重复上述过程。

热点内容
安卓设计app哪个好 发布:2024-11-05 13:18:34 浏览:177
数据库pd 发布:2024-11-05 13:02:45 浏览:654
安卓手机什么情况才要换电池 发布:2024-11-05 13:01:49 浏览:710
手机上的账号密码自动保存在哪里 发布:2024-11-05 12:28:52 浏览:724
虚拟机的内网服务器是什么 发布:2024-11-05 12:23:35 浏览:59
安卓怎么查今天去了哪里 发布:2024-11-05 12:14:28 浏览:710
安卓短信app哪个好 发布:2024-11-05 12:11:28 浏览:548
正版解压工具 发布:2024-11-05 12:09:00 浏览:138
爱奇艺会员密码在哪里设置 发布:2024-11-05 12:08:49 浏览:788
mysql打包数据库 发布:2024-11-05 11:55:29 浏览:947