c语言题目,求大神解答

作者&投稿:西栋 (若有异议请与网页底部的电邮联系)
一道c语言的题目。急求大神解答。~

这是由于原来的程序采用了递归,而且递归程序中的局部变量有较大的数组。当递归层数太多时,就会造成系统栈溢出,而导致程序崩溃。
以下的程序改为非递归的,就不会再有此现象:
#include
void f(int n,int a[],int b[])
{
int j,i,c[20000];
for(i=0;i<2*n;i++) c[i]=a[i];
for(i=0,j=1;i<n;i++,j=j+2) a[j]=c[i];
for(j=0;i<2*n;i++,j=j+2) a[j]=c[i];
}
int main()
{
int i,n,a[20000],b[20000],num=0; //做到20000张牌也能正确出解
scanf("%d",&n);
for(i=0;i<2*n;i++) a[i]=i;
for(i=0;i<2*n;i++) b[i]=i;
for(i=0;i<n+n;)
{
f(n,a,b);
num++;
for(i=0;i<2*n;i++)
if(a[i]!=b[i])break;
}
printf("%d
",num);
return 0;
}

#include#define PROPORTION 0.6int main(){int qm,ps; float zp; scanf("%d%d",&qm,&ps); zp=qm*PROPORTION+ps*(1-PROPORTION); printf("%.1f
",zp); return 0;}#includeconst float PROPORTION=0.6;int main(){int qm,ps; float zp; scanf("%d%d",&qm,&ps); zp=qm*PROPORTION+ps*(1-PROPORTION); printf("%.1f
",zp); return 0;}

1)

#include "stdio.h"
#include <string.h>
void mysort(char (*p)[50],int n){
int i,j,k;
char t[50];
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(strcmp(p[k],p[j])>0)
k=j;
if(k!=i){
for(j=0;t[j]=p[i][j];j++);
for(j=0;p[i][j]=p[k][j];j++);
for(j=0;p[k][j]=t[j];j++);
}
}
}
int main(int argc,char *argv[]){
char s[100][50],n,i;
FILE *fp,*fpo;
fp=fopen("d:\\books.txt","r");
if((fpo=fopen("d:\\books_sorted.txt","w"))==NULL){
printf("Open the file failure...
");
return 0;
}
for(n=0;fscanf(fp,"%s",s[n])!=EOF;n++);
fclose(fp);
mysort(s,n);
for(i=0;i<n;fprintf(fpo,"%s
",s[i++]));
fclose(fpo);
return 0;
}

运行样例:

2)

#include "stdio.h"
struct stu{
char name[21];
int by,bm,bd;
};
int myfind(struct stu *p){
int m[]={31,28,31,30,31,30,31,31,30,31,30,31};
m[1]+=p->by%4==0 && p->by%100 || p->by%400==0;
return p->bm>0 && p->bm<13 && p->bd>0 && p->bd<=m[p->bm-1];
}
int main(int argc,char *argv[]){
struct stu stu;
FILE *fp;
if((fp=fopen("d:\\students.txt","r"))==NULL){
printf("Open the file failure...
");
return 0;
}
printf("Invalid date as follows:
");
while(fscanf(fp,"%s%d-%d-%d",stu.name,&stu.by,&stu.bm,&stu.bd)!=EOF)
if(!myfind(&stu))
printf("%s %d-%d-%d
",stu.name,stu.by,stu.bm,stu.bd);
fclose(fp);
return 0;
}

运行样例:

3)

#include "stdio.h"
int main(int argc,char *argv[]){
int n,g,l,f,s,t;
FILE *fp;
if((fp=fopen("d:\\scores.txt","r"))==NULL){
printf("Open the file failure...
");
return 0;
}
for(g=-1,l=101,f=n=s=0;fscanf(fp,"%d",&t)!=EOF;n++){
if(g<t)
g=t;
if(l>t)
l=t;
if(t<60)
f++;
s+=t;
}
printf("The total number of %d people.
",n);
printf("The highest: %d
The lowest: %d
The average: %.2f
",g,l,s/(n+0.0));
printf("%d people didn't pass the exam.
",f);
  return 0;
}

运行样例:

4)

#include "stdio.h"
int myfunc(int n){
int m,t;
for(t=n,m=0;t;t/=10)
(m*=10)+=t%10;
return m==n;
}
int main(int argc,char *argv[]){
int n,k=0;
FILE *fp;
if((fp=fopen("d:\
umbers.txt","r"))==NULL){
printf("Open the file failure...
");
return 0;
}
while(fscanf(fp,"%d",&n)!=EOF){
if(myfunc(n))
printf(++k%5 ? "%11d" : "%11d
",n);
}
fclose(fp);
if(k%5)
printf("
");
  return 0;
}

运行样例:




C语言题目,求大神解析!
程序1,输出:a972 include<stdio.h> union example_uni { int i;char ch;}a;int main(){ a.ch='a';printf("%c%d",a.i,a.ch); \/\/输出a97('a'的ASCII码即为97)a.i=2;printf("%d",a.i); \/\/输出2 } 程序2,输出:8 12 20 include<stdio.h> int f(int a)...

编程语言的题目,求大神帮忙!
第一个空填的内容是0,因为我们要求阶乘的相加,同时for循环中是通过一个变量来对阶乘进行存储的,所以说sum的值赋值为0,就可以实现记录阶乘的和。第二个空填的是“double item=1”,因为for循环中有一个item变量,但是在第二个空之前没有定义,所以说这里填的是变量的定义,并且必须赋值为1。第三...

一道c语言题目 求大神指点下算法?
根据题意,随机生成红绿蓝球任意个数,并任意顺序排列。这里采用随机数实现。统计按红绿蓝顺序排列最少交换次数,我的思路是:第一步:循环将最后一个红色球与最靠前的其它两色球(并且满足位置在红球之前)交换。第二步:循环将最后一个绿球与最靠前的蓝球(必须在绿球之前)交换。include <stdio.h> ...

c语言题目,求大神解答
1)include "stdio.h"#include <string.h>void mysort(char (*p)[50],int n){int i,j,k;char t[50];for(i=0;i<n;i++){for(k=i,j=k+1;j<n;j++)if(strcmp(p[k],p[j])>0)k=j;if(k!=i){for(j=0;t[j]=p[i][j];j++);for(j=0;p[i][j]=p[k][j];j++...

c语言题目,求大神解答
C语言代码如下:include <stdio.h> int main() { int a, b, c;scanf("%d,%d,%d", &a, &b, &c);printf("%d\\n%d\\n%d\\n", a * a, b * b, c * c);return 0;} 运行结果如下:输出符合测试用例,望采纳~

C语言题目,求大神解答
以下是使用C语言编写的解答:```c include <stdio.h> include <string.h> void compressRLC(char* input, char* output) { int length = strlen(input);int count = 1;for (int i = 0; i < length; i++) { if (input[i] == input[i+1]) { count++;} else { sprintf(output ...

求大神解答一道c语言题目
答案: c 分析: char类型指针s指向字符串"abcde"的首地址,也就是字符'a'的地址;s += 2 就是说说指针向前移动了2个单位,此时s指向的是字符'c'的地址;最后函数printf输出时, 指针s没有加*号,所以输出的是指针s所指向的地址,如果加了*号就会输出字符'c'的ASCII码,故选c;...

一道c语言指针题,求大神解答,感谢
这题目输出的结果是 5,6,6解析:首先声明一个整型数组a,整形变量y,整型指针p。p指向数组a[]的第1个元素,也就是8。接下来,指针p先--,指向了数组a[]的第0个元素,也就是5。之后y取出p指向的内容,即5。之后p指针指向的内容又累加,即数组a[]的第0个元素从5变成了6。因此打印输出y的...

C语言题目,求大神解答
typedef struct { long id; \/\/学号 char name[10]; \/\/姓名 char sex[2]; \/\/性别 }PS;\/\/删除函数 int delete(PS *p1, int m, PS *p2, int n){ int i, j;\/\/遍历p1数组 for (i = 0; i < m; i++){ \/\/遍历p2数组 for (j = 0; j < n; j++){ \/\/如果p1...

C语言题目,求大神解答
以下是一个简单的C语言程序,可以实现为指定的文本文件创建一个副本文件的命令:```c include <stdio.h> include <stdlib.h> int main(int argc, char *argv[]) { FILE *fp1, *fp2;int ch;if (argc != 3) { printf("Usage: %s source_file dest_file\\n", argv[0]);exit(EXIT_...

江川县14754862143: 请教一道简单的C语言题目,求大神解答 -
铎克坤宁: 你没考虑到相邻两个数相等你情况.你看样例第四组数开头有两个7,输出是-1,说明严格递增是a[i+1]>=a[i],严格递减是a[i]>=a[i+1].

江川县14754862143: C语言题,求大神帮忙啊C语言作业要求 1.从键盘输入3个字符串,要求找出其中最大者 . 2.写一程序,判断一字符串是否是回文,若是输出YES,否则输出... -
铎克坤宁:[答案] 具体代码如下: #include int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d\n",(a=a>b?a:b)> c?a:c); } #include #include int main() { char s[50]; char *p,*q; p = s; gets(s); q = &s[strlen(s)-1]; while(p++ = 0; i--) { if('a'

江川县14754862143: c语言问题,求大神解答!给一个不多于5位的正整数.①求出它是几位数.②分别输出每一位数字.③按逆序输出各位数字.例如原数位465,应输出5 6 4.... -
铎克坤宁:[答案] #include#include#includeint main(){int num,tmp,i,j;int n[5]={0};//用于存储num分解后的每位上的数字,由于num不超过5位,所以数组有5个单元就可以了 int *sq_ls_num;printf("请输入一个不多于5位的正整数: ");sc...

江川县14754862143: 急!!!C语言编程题求大神帮忙解答 -
铎克坤宁: 1 2 3 4 5 6 7 8 9 10 11#include <stdio.h> voidmain(){ inti,m,n,num=0,a[1000]; scanf("%d%d",&m,&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); if(m>a[i]) num++; } printf("诸葛亮最多可以战胜%d个对手",num); }

江川县14754862143: 谁会这道C语言题目?求高手解答.有1000元人民币100元面值,50元面值,20元面值,10元面值,模拟有多少种组合.最后用printf("一百元有%d张,五... -
铎克坤宁:[答案] 可以给你思路 用for循环嵌套定义4个变量int i,j,k,l,分别用来表示100,50,20,10的张数,然后嵌套 for(i=0,i

江川县14754862143: C语言大神求答案~1.从键盘输入两个运算数(datal和data2),做加法运算,并输出计算结果.2. 判断一个数n能否同时被3和5整除3. 求1+2+3+……+100 -
铎克坤宁:[答案] 第一题: #include void main() { int data1,data2; printf("请输入第一个数:"); scanf("%d",&data1); printf("请输入第二个数:"); scanf("%d",&data2); printf("两个数的和为%d",data1+data2); } 第二题: #include void main() { int ...

江川县14754862143: 一道C语言题目,请高手给详细解答: -
铎克坤宁: 1、从main()主函数开始从上往下执行函数2、执行到调用函数fun()后,结果是a=3,b=4,即px=3,py=43、由于是px、py是指针,px和 x指向同一个地址, py 和y也是一样的4、所以输出...

江川县14754862143: C语言的题目?求大神解答了~~~~~~~~~~~~~~题目如下 -
铎克坤宁: 楼主题目没问题,当输入2 4时,确实和为15.希望楼主采纳.#include<stdio.h>#define MAX 210 int Int[MAX]={2}; int is_prime(int x) { for (int i= 2; i*i <= x; i++) if (x % i == 0) return -1; return x; } int main() { int m,n; scanf("%d %d",&m,&n); int ...

江川县14754862143: 一道C语言题目!求大神帮忙啊! -
铎克坤宁: 前面没看 不过下面这里不对for (i = 0; i < y; i++) if (*(x + i) = 1) ////这里应该是 == 不是= 判断相等使用== printf("这个剩下的人的原号码是%d号...

江川县14754862143: C程序题目,求高手解答.
铎克坤宁: 用C语言实现如下: /*统计函数*/ void check(char *str) { int i,number=0,space=0,other=0; char *p=str; for(i=0;i<strlen(str);i++) { if(*(p+i)>='0' && *(p+i)<='9') /*数字*/ number++; else if(*(p+i) == 32) /*空格*/ space++; else other++; /*其它字符*/ } printf(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网