c语言程序编程题 C语言程序编程题
2024-11-10 09:52 - 立有生活网
C语言编程题
#include
c语言程序编程题 C语言程序编程题
c语言程序编程题 C语言程序编程题
#include
int fa(){
int a=0;
for(int i=50;i<1000;i++){
if(i%8==0){
a+=i;
}}
return a;
}int x(){
int A[11]={4,5,6};
for(int i=3;i<11;i++){
A[i]=A[i-1]+A[i-2]+A[i-3];
}return A[9];
}void main(){
printf("和是%d数组第10为%d",fa(),x());
}
这是个很的问题哦。
解释如下,不是本人所写。
设dis[i]第i个贮油至终点(i=0)的距离
oil[i]第i个贮油的存贮油量
我们可以用倒推法来解决该问题。从终点向始点倒推,逐一求出每个贮油点的位置以及油量。
终点
起点
|-------|--------|---------|
i=0
i=2
...i=n
从贮油点i向贮油点i+1倒推的策略是,卡车在点i和点i+1间往返若干次。卡车每次返回i+1处时正好耗尽500公升汽油,而每次从i+1处出发时又必须满足500公升汽油。两点之间的距离必须满足在蚝油最少的条件下使
i点
贮油i500公升汽油的要求(0<=i<=n-1)。具体讲,个贮油点i=1应距离终点i=0处500km,且在该贮藏500公升汽油,这样才能保证卡车能有i=1处到达终点i=0出,就是说:
dis[1]=500
oil[1]=500
为了在i=1出贮藏500公升汽油,卡车至少从i=2出开两趟满载油的车至i=1出,所以i=2出至少贮有2500公升汽油,即oid[2]=5002=1000。另外,再加上上i=1返回至i=2处的一趟空载,合计往返3次。3次路程的蚝油量按最省要求只能为500公升,即d12=500/3(如下图示)
dis[2]=dis[1]+d12=dis[1]+500/3
|<-500/3--->|
|<----------|
|---------->|
|<----------|
|-----------|-----------|--------------->
i=0
i=1
i=2
为了在i=2出贮存1000公升汽油,卡车至少从i=3处开3趟满载油的车至i=2出。所以i=3处至少贮有3500公升汽油,即oil[3]=5003=1500.加上i=2至i=3处的两趟返程空车,合计5次。路途蚝油量也应500公升,即d23=500/5
dis[3]=dis[2]+d23=dis[2]+500/5
依次类推,为了在i=k-1出贮藏(k-1)500公升汽油,卡车至少从i=K处开k趟满载车至i=k-1处,即oid[K]=(k-1)500=oik[k-1]+500,加上从i=k返回i=k=1的k-1趟返程空间,合计2k-1。这2K-1次总耗油量按最省要求为500公升,即dk-1k=500/(2K-1)
dis[k]=dis[k-1]+dk-1k=dis[k-1]+500/(2K-1)
完整的程序如下,也不是本人所写。
#include
#include
#define
MAX_STATION_NUM
32
/定义允许的储油点数目/
int
main()
{int
k,i;
double
wDistance;
/wDistance是终点至当前贮油点的距离/
double
storedOil[MAX_STATION_NUM];/storedOil[i]是第i个储油点的储油量/
double
distance[MAX_STATION_NUM];
/distance[i]是第i个储油点到终点的距离/
puts("The
whole
distance
is
1000km,and
the
result
is:n");
puts("station
distance(km)
oil(l)");
k=1;
wDistance=500;
/从i=1处开始向始点倒推/
distance[1]=500;
storedOil[1]=500;
while(1)
{k++;
wDistance+=500/(2k-1);
distance[k]=wDistance;
storedOil[k]=storedOil[k-1]+500;
if(wDistance>=1000)
break;
}distance[k]=1000;
/置始点至终点的距离值/
storedOil[k]=(1000-distance[k-1])(2k+1)+storedOil[k-1];
/求始点藏油量/
for(i=0;i /由始点开始逐一打印始点至当前贮油点的距离和藏油量/ printf("%4d %6.3f %6.3fn",i,1000-distance[k-i],storedOil[k-i]); ("pause"); return 0; } #include void main() {long s=0,t=0; int n; scanf("%d",&n); for(int i=1;i<=n;i++) {t=t10+i; s+=t; }printf("%ldn",s); } #define MAX(x,y) (x)>(y) ? (x):(y) #define T(x,y,r) xry/4 改成 #define MAX((x),(y)) (x)>(y) ? (x):(y) #define T((x),(y),(r)) (x)(r)(y)/4 望采纳 #include char StrCat(char s,char t) {int i=0,j=0; char s1,t1; s1=s;t1=t; for(;s1;s1++,i++); for(;t1;t1++,j++); if(i<=j) {for(;t;)s1++=t++;s1='0'; return s; }else {for(;s;)t1++=s++;t1='0'; return t; }} int main(int argc, char argv[]) {char a[100],b[100]; scanf("%s",a); scanf("%s",b); printf("%s",StrCat(a,b)); return 0; } 首先分析问题:重复输出同一类语句肯定要用循环,有关判断肯定要用分支。所以解决这个问题就是在一个循环(用于重复读取数据和输出)里面套一个分支语句(判断密码是数字还是字母)。具体代码: #include #include #include main() {char c; int f=0; printf("Input your password: "); while(f<6){ scanf(" %c",&c);//重复输入这种char类型的数据一定要在前面加个空格,否则会读取上次残留的数据 if(c>='0'&&c<='9'){ f++; printf("%c, you he enter %d-bits number ",c,f); }else printf("error "); }("pause"); / 第2题 / #include int main(void) {unsigned N; unsigned i, j; / 每一行个元素的值 / unsigned lf; / 要打印的元素的值 / unsigned nxt; printf("请输入一组数据:n"); while(scanf("%u", &N) == 1) {/ 处理新一组数据时把个元素置为1 / lf = 1; / 行号从0开始,列号从1开始 / for (i = 0; i < N; i++) {/ 处理新一行数据时计算该行个元素 / / 增量是当前行号 / lf += i; nxt = lf; / 根据行数减少本行要打印的元素个数 / for (j = 1; j <= N - i; j++) {printf("%-2u", nxt); if (j < N) {/ 增量是当前行号与下个列号之和 / nxt += i + (j + 1); putchar(' '); }} putchar('n'); }} return 0; } 第1题:最直白的写法 case 1:days=31; break; case 2: if(yy%400==0||(yy%4==0&&yy%100!=0)) days=29; else days=28; break; case 3:days=31; break; case 4:days=30; break; case 5:days=31; break; case 6:days=30; break; case 7:days=31; break; case 8:days=31; break; case 9:days=30; break; case 10:days=31; break; case 11:days=30; break; case 12:days=31; break; 注:只需要注意二月份的天数,判断下是不是闰年就OK第2题: 依次对比四个数字,要达到从大到小输出,那么前面的数比后面数字小就交换两个值,依次两两全部比较 #include int main(){ int a,b,c,d,t; printf("请输入4个整数:"); scanf("%d%d%d%d",&a,&b,&c,&d); if(a t=a; a=b; b=t; }if(a t=a; a=c; c=t; }if(a t=a; a=d; d=t; }if(b t=b; b=c; c=t; }if(b t=b; b=d; d=t; }if(c t=c; c=d; d=t; }printf("将这四个数进行从大到小排序:%d,%d,%d,%d",a,b,c,d); return 0; } #include int main() {int yy, mm, days; printf("input year and month:"); scanf("%d %d", &yy, &mm); switch(mm) {case 1: days = 31; break; case 2: if ((yy % 4 == 0 && yy % 100 != 0) || yy % 400 == 0) days = 29; else days = 28; break; case 3: days = 31; break; case 4: days = 30; break; case 5: days = 31; break; case 6: days = 30; break; case 7: days = 31; break; case 8: days = 31; break; case 9: days = 30; break; case 10: days = 31; break; case 11: days = 30; break; case 12: days = 31; break; }printf("the days of %d %d is %d ", yy, mm, days); return 0; }a = int(input("请输入整数a:")) b = int(input("请输入整数b:")) c = int(input("请输入整数c:")) d = int(input("请输入整数d:")) max_num = a if b > max_num: max_num = b if c > max_num: max_num = c if d > max_num: max_num = d min_num = a if b < min_num: min_num = b if c < min_num: min_num = c if d < min_num: min_num = d if max_num == a and min_num == d: print(max_num, c, b, min_num) elif max_num == a and min_num == c: print(max_num, d, b, min_num) elif max_num == a and min_num == b: print(max_num, d, c, min_num) elif max_num == b and min_num == d: print(max_num, c, a, min_num) elif max_num == b and min_num == c: print(max_num, d, a, min_num) elif max_num == c and min_num == d: print(max_num, b, a, min_num) 其中,首先用if语句判断4个整数的值和最小值,然后通过一系列if语句来确定它们的排列顺序,并将它们按从大到小的顺序输出。 #include int main() { double ma, tr, tax, net; printf("请输入奖金数:"); scanf("%lf", &ma); switch((int)(ma / 1000)) { case 0: tr = 0.0; break; case 1: tr = 0.05; break; case 2: tr = 0.08; break; default: tr = 0.1; break; }tax = ma tr; net = ma - tax; printf("税率为 %.2f%%,应交税款为 %.2f 元,实得奖金数为 %.2f 元 ", tr 100, tax, net); return 0; }程序先提示用户输入奖金数,然后使用switch语句根据奖金数所在区间确定税率tr的值,再计算应交税款tax和实得奖金数net的值。输出税率、应交税款和实得奖金数。 以下是使用switch语句实现的程序段: switch(x) { case 0 ... 9: y = x; break; case 10 ... 19: y = x 2 + 3; break; case 20 ... 39: y = -0.5 x + 10; break; default: break; }以上是4个问题的,已经分割线,如有帮助请采纳。 #include int main(){ double a[10],sum = 0.0,erage = 0.0;; int i; double maxscore,minscore;//分和分 printf("请输入十位裁判的分数:n"); for(i = 0; i < 10; i++) scanf("%lf",&a[i]); maxscore = a[0]; minscore = a[0]; for(i = 1; i < 10; i++) {if(a[i] > maxscore) maxscore = a[i]; if(a[i] < minscore) minscore = a[i]; sum += a[i]; }erage = (sum - maxscore - minscore)/ 8; printf("选手的最终得分为%.2lfn",erage); return 0; } #include #include #include #include #include //定义二叉树数据结构 typedef struct node{ struct node lchild; char data; struct node rchild; }bitnode,bitree; //构造截取子串函数,start从零开始. char get_substr(char strDest,int start,int end) {if(start>end) return NULL; //如果左子树或右子树为空则返回空串 char strSub; //字串指针 strSub=(char)malloc((end-start+2)sizeof(char)); int i; for(i=start;i<=end;i++) strSub[i-start]=strDest[i]; strSub[end-start+1]='0'; return strSub; }//前序遍历二叉树,并输出 void preorder_trerse(bitree bt){ if(bt != NULL) {printf("%c",bt->data); preorder_trerse(bt->lchild); preorder_trerse(bt->rchild); }} //根据中序和后序遍历结果递归构造二叉树,并返回根指针 bitree create_bitree(char inorder,char torder) //inorder和toeder分别为中序和后序遍历的结果字符串 {if(inorder==NULL || torder==NULL) return NULL; //空串则返回空树 char root_data;//根字符 char lchild_instr,lchild_tr,rchild_instr,rchild_tr;//左子树和右子树中序及后序字符串 int i,len; len=strlen(inorder); //中序和后序字符串长度相等 bitree new_bitree=(bitree)malloc(sizeof(bitnode)); root_data=torder[len-1];//树的根必然为中序遍历的一个字符 new_bitree->data=root_data; for(i=0;i //找到根在中序遍历中位置 {if(inorder[i]==root_data) break; }//确定左子树和右子树中序及后序字符串 lchild_instr=get_substr(inorder,0,i-1); lchild_tr=get_substr(torder,0,i-1); rchild_instr=get_substr(inorder,i+1,len-1); rchild_tr=get_substr(torder,i,len-2); //递归构造子树 new_bitree->lchild=create_bitree(lchild_instr,lchild_tr); new_bitree->rchild=create_bitree(rchild_instr,rchild_tr); return new_bitree; }void main(){ char inorder[20]="BDCEAFHG"; char torder[20]="DECBHGFA"; bitree root; root=create_bitree(inorder,torder); //输出前序遍历结果 printf("the binary tree in preorder is:n"); preorder_trerse(root); _getch(); }//满意的话别忘了多加点分哈 float ag(float a[], int n) {float max=-1; float min=100000000; float sum=0; int i; if(n <= 2) //error return -1.0; for(i= 0; i< n;i++) {sum+=a[i]; if(a[i]>max) max = a[i]; if(a[i] }return (sum-max-min)/(n-2); }C语言编程题,写出代码
C语言编程题
C语言编程题目?
c语言编程题
C语言编程题
c语言编程题
安全生产百日攻坚 安全生产百日攻坚战实施方
村级安全隐患排查内容 三、向用人单位住所地或者劳动合同履行地劳动争议仲裁委员会申请仲裁。 法律分析:1、消防安全。组织开展村民住宅房屋消防安全检查,做好“九小”场所消防安全管理···
东营农畜牧养殖合作项目 东营农畜牧养殖合作
您好,今天小天来为大家解答以上的问题。东营农畜牧养殖合作项目相信很多小伙伴还不知道,现在让我们一起来看看吧! 东营农畜牧养殖合作项目 东营农畜牧养殖合作项目招标 东营农畜牧养殖合作···
去到县里行程码会变吗 去别的市行程码会变吗
今天乐乐来给大家分享一些关于去别的市行程码会变吗方面的知识吧,希望大家会喜欢哦 去到县里行程码会变吗 去别的市行程码会变吗 去到县里行程码会变吗 去别的市行程码会变吗 1、1、我们在···