错误有两个:
第一
m=s%1000;
不能用求余,要用除,而且要强制转化
第二
case 0: p=0; 这一行少一个break;
第三
if s>5000 m=5;
应该加括号
不足有一个
scanf(“%d”,&s);
应该为 %f
程序修改为:
——-——--
main()
{
float s,p,t,s1;
int m;
scanf("%f",&s);
m=(int)s/1000;
if (s>5000) m=5;
switch (m)
{ case 0: p=0; break;
case 1: p=005; break;
case 2: p=008; break;
case 3:
case 4: p=01; break;
case 5: p=015; break;
}
t=sp; s1=s-t;
printf("%2f,%2f" ,t, s1);
}
用If 为
main()
{
float s,p,t,s1;
int m;
scanf("%f",&s);
m=(int)s/1000;
if (s>5000) m=5;
if (m==0)
p=0
else if (m==1)
p=005;
else if (m==2)
p=008;
else if (m==3 || m==4)
p=01;
else if (m==5)
p=015;
t=sp; s1=s-t;
printf("%2f,%2f" ,t, s1);
}
十字路口有四条支道,每道支道上停着等着开往其它三条支道的车辆,每一个时间片段内只允许一条支道上的车辆行驶。
程序整体框架设计上可以采取事件驱动方式比较简单,即程序的主循环体每执行一次表示经历了一个时间片段,在这段时间内要计算四条支道上又增加了几辆车,有几辆车离开了十字路口,注意每随机产生一辆车时至少要包括它在哪条支道上出现要开往哪条支道等,或者反过来在这个时间片断内某条支道上出现了几辆开往特定支道的车辆。
不清楚你要模拟到何种程度,车辆在过十字路的时间可否忽略不计?车辆排队的长度是否也要考虑?不会说要用图形界面形象地演示吧?
如果你的模型足够简单,十字路口被简化成两条相交的直线,那么你只需要一组简单的对象(如12个整型变量)足以表征状态!当然可以还需要几个变量用于统计历史数据。
然而现实世界是足够复杂的,举个简单的案例:某个支道上已经排了很长的车队,交通灯指示当前这个支道上的辆车可以通行了,等你前面的车都开过了十字路口,终于轮到你的时候,时间已到红灯已亮!更为复杂的是交通灯的控制为了避免这种情况可能就不是等时间间隔地轮换了。车辆开开停停不是匀速运动,这点你也该很清楚的。
另外提醒你“车辆的随机出现”,不要以为只有一种均匀分布的随机数产生方式!通过一些公式可以换算出泊松分布什么的
记住这是一个很有意思的算法设计课题,不要受OOP思潮的毒害,动不动就想到类什么的,我们要关心的是框架设计和流程控制。把它当作是几何题来理解更是可笑至极!
程序流程上还可以设计得更复杂些,就是用多线程去模拟多辆车,用事件去模拟交通灯,如果你愿意程序可以采取时间驱动的方式运作,更为接近现实世界。
1第一题的程序如下,答案是2500000。
#include <stdioh>
void main()
{int a=7;
float x=25,y=47;
float s;
s=x+a%3(int)(x+y)%2/4;
printf("%f",s);
}
2第二题的整个程序如下:
#include <stdioh>
void main()
{int a;
float f;
printf("Input number:");
scanf("%f,%d",&f,&a);
printf("f=%f,a= %d\n" ,f,a);
}
3答案:2 1
4答案:1
5答案:2
6你的程序有些小错误,应该如下:答案为 :-1
#include <stdioh>
void main()
{int a=100,x =10,y=20,okl=5,ok2=0;
if (x<y)
if(y!=10)
if(!okl) a=1;
else
if(ok2) a=10;
a=-1;
printf( "%d\n",a );
}
7答案:2
8答案:0
9答案:1
10答案:a=2,b=1,c=1
第一题:#include <stdioh>
void main(void)
{
int a=0,b=0,c=0,total=0;
int i,j,k;
for(i=1,j=1,k=1;i<=10;i++,j++,k++)
{
if(i%3==0) a++; //如果是3秒的整数,加一次
if(j%5==0) b++; //如果是5秒的整数,加一次
if(k%7==0) c++; //如果是7秒的整数,加一次
if((i%3==0&&j%5==0)||(i%3==0&&k%7==0)||(j%5==0&&k%7==0)) a--;//如果是2种重合,则多算一次,应该减一次
if(i%3==0&&j%5==0&&k%7==0) a-=2; //如果是3者的公倍数,则多算2次
total=a+b+c;
}
printf("%d",total);
getch();
}
第二题:#include<stdioh>
void main(void)
{
int a,b,c,d; //分别代表50,20,10,5元的张数
int count=1; //存储换的种类数
int money;
for(a=1;a<10;a++)
for(b=1;b<25;b++)
for(c=1;c<50;c++)
for(d=1;d<100;d++)
{
money=50a+20b+10c+d;
if(money==500)
{
printf("第%d种换法是,%d张50元,%d张20元,%d张10元,%d张5元\n",count,a,b,c,d);
count++;
}
}
}
####
###
##
#
i 可控制列
输出(#)号i个
j在行中星号()根据i的值输出4-i个
300,200,100
f1()是自定义的函数,并对x y z 分别进行了初始化(默认值),在主函数中调用,当没有参数传递时,将这三个数进行输出,否则将输出传递过来的参数值
3 进行中
#include<stdioh>
main()
{
int a[6] = { 9, 7, 5, 3, 1 }; //假设排序已进行
int t;
int i, j;
for(i = 0;i<5; i++)
printf("%d ",a[i]);
printf("\n");
printf("请输入您要插入的数字(1--9) \b\b");
scanf("%d", &t);
for ( i = 0; i < 5; i++)
if( t>=a[i+1] && t<a[i] ) //小于前一个 而 大于后一个
{
for(j = 5; j >i; j--)
a[j] = a[j-1]; //重新赋值
a[i+1] = t;
break;
}
for(i = 0; i<=5; i++)
printf("%d ",a[i]);
printf("\n");
}
第六题:
#include <stdioh>
#include <stringh>
int main()
{
char str[100];
gets(str);
int t=strlen(str);
for(int i=0;i<=t/2;i++)
if(str[i]!=str[t-i-1])
{
printf("所输入的字符串不是回文字符串\n");
return 0;
}
printf("所输入的字符串是回文字符串\n");
}
第五题:
#include <stdioh>
#include <stringh>
int main()
{
int a[3][4];
int b[4][3];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
b[j][i]=a[i][j];
}
printf("转置后的数组为:\n");
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
printf("%3d",b[i][j]);
printf("\n");
}
}
第四题:
#include <stdioh>
#include <stringh>
int main()
{
int a[15][15]={1};
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
第三题:
#include <stdioh>
#include <stringh>
int main()
{
int a[10]={-12,5,25,33,45,56,76,96,110,115};
int n;
scanf("%d",&n);
int k=4;
for (int i=0;i<10;i++)
{
if(a[k]==n)
{
printf("%d是该数组的第 %d个数\n",n,k+1);
return 0;
}
else if(a[k]>n)
k=k/2;
else
k=(10+k)/2;
}
printf("数组中无%d这个数\n",n);
}
第二题:
#include <stdioh>
int main()
{
int a[8];
for(int i=0;i<8;i++)
scanf("%d",&a[i]);
int max,temp;
for(i=0;i<7;i++)
{
max=i;
for(int j=i+1;j<8;j++)
if(a[max]<a[j])
max=j;
temp=a[i],a[i]=a[max];a[max]=temp;
}
printf("排序后的数为:\n");
for(i=0;i<8;i++)
printf("%3d",a[i]);
printf("\n");
}
第一题:
#include <stdioh>
int main()
{
int a[10];
float average=0,sum=0;
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
average=sum/10;
int max,temp;
for(i=0;i<9;i++)
{
max=i;
for(int j=i+1;j<10;j++)
if(a[max]<a[j])
max=j;
temp=a[i],a[i]=a[max];a[max]=temp;
}
printf("最高分是:%d\t最低分是%d\n",a[9],a[0]);
printf("平均分是%g\n",average);
printf("高于平均分的分数为:\n");
for(i=0;i<10;i++)
if(a[i]>average)
printf("%4d",a[i]);
printf("\n");
}
就当做是我复习吧 楼主还有疑问吗?
以上就是关于c语言程序设计题目全部的内容,包括:c语言程序设计题目、程序题关于模拟十字路口的车辆通行情况的程序,用c++、帮忙做一下!C语言程序设计习题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)