main()
{
int a[8],i=0;
do
{
scanf("%d",a[i]);
i++;
}while(i<8)
for(int j=0;j<8;j++)
{
if(a[j]>=100&&a[j]<=200)
{
printf("按照100-200C处理");
}
esle if(a[j]>200)
{
printf("按照200-300C处理");
}esle
{
printf("按照0-100C处理");
}
}
}
就是穷举法:根据要求可知x,y,z必小于100,且y小于50,故可用三重循环搜索,外面记下最大值,遍历完后给出即可。
#include <stdioh>
int main()
{
int max=0;
int x, y, z;
int px, py, pz;
for(x=1; x<=100; x++) {
for(y=1; y<=50; y++) {
for(z=1; z<100; z++) {
if(x+2y+z==100) {
int res=2x+5y+z;
if(max<res) {
max = res;
px=x; py=y; pz=z;
}
}
}
}
}
printf("2%2d+5%2d+%2d = %d\n", px, py, pz, max);
}
实际推算可知,由于y所占比重最大,因此,y应取接近前面约束中的最大值,即49,于是x=z=1,即最大值为:2+549+1=248。
这里答案不是5,应该是6。
你可以写个测试程序测试下。
这里考的是转义字符的用法。
C中转义字符有三种表示方法:
1 在\后面接一个特定的字母,如\n,\t等。表示对应的意义。
2 在\后面接x,然后接两位16进制数字,不区分大小写。如'\x12', '\xAb'等。表示对应两位16进制的ascii码值。
3 在\后面接三位8进制数值,如'\123', '\011'等。表示三位8进制数表示的ascii码值。
与'\018'最为接近的情况是第三种,不过第三种要求是8进制数,所以合法的字符只有0~7,8并不是合法的8进制字符。所以作为单个字符\018的写法是错误的。如果出现在字符串中,会被当做'\01'(ascii码值为1)和'8'两个字符来处理。
综上所述,首先strlen是计算字符串长度,不包含结束符。
再有这里\018是两个字符 \01 和 8,所以这里面的字符有‘a’、‘b’、'\n'、‘\01’、‘8’、‘\\’共6个,
可以参考我下面的测试程序一一输出。
#include<stdioh>#include<stringh>
int main()
{
char str[]="ab\n\018\\";
int i = 0;
printf("%d\n",strlen(str));
for(; i < strlen(str); i ++) {
printf("%c ", str[i]);
}
return 0;
}
输出结果如下:
!以下程序段用于求任意华氏温度所对应的摄氏温度
PROGRAM FTOC
REAL F,C
PRINT,'请输入华氏温度,并按回车结束'
READ, F
C=(F-32)5/9
PRINT,'对应的摄氏温度为:',C
END
以上就是关于请教高手根据已知流程图写一段C语言程序全部的内容,包括:请教高手根据已知流程图写一段C语言程序、c语言程序 已知x y z为正整数,且x+ 2y +z=100,求2x+ 5y +z的最大值、已知在c语言中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)