谁能帮我解决这个C语言程序问题?

作者&投稿:荡软 (若有异议请与网页底部的电邮联系)
谁能帮我解决C语言程序设计的问题?~

======================
问题补充:还有个
8用指针方法编写程序,输入三个字符串,按由小到大的顺序输出。要求用函数实现,并用指向一维数组的指针作为函数的参数。
======================
这一个在最后,多加些分吧,累死我了:(

给,都已经编译运行确认了:

1.任意输入一个数,判断它是否为素数
#include "stdio.h"
#include "conio.h"
#include "math.h"
int ss(int inputshu)
{
int i,m,t;
m=inputshu;
for(i=2;i<=sqrt(m);i++)
if(m%i==0) {t=0; break;}
if(i>sqrt(m)+1) t=1;
return(t);
}
int main(void)
{
int j;
printf("请输入一个数:
");
scanf("%d",&j);
if(ss(j)==0) printf("%d不是素数",j);
else printf("%d是素数",j);

getch();
return 1;
}

2.打印1~1000内所有完数
#include /*头文件*/
#include
#define N 1000 /*搜索范围在1000以内*/

int wanshu(int x) /*判断x是否完数*/
{
int i,sum=0;

for(i=1;i<=x;i++) /*对所有x的因子求和*/
{
if(x%i==0) sum=sum+i;
continue;
}

if(sum==x*2) return(1); /*如果求和结果等于2x则x是完数*/
else return(0); /*否则不是完数*/
} /*完数判断函数结束*/

int print_factor(int x) /*打印结果*/
{
int i,j,res[1000]={0}; /*i,j为循环变量.res数组记录每个因子.*/

for(i=1;i<x;i++) /*将每个非零因子存在数组res[]中*/
{
if(x%i==0) res[i]=i;
continue;
}
printf("%d its factors are: ",x); /*打印提示*/

for(j=0;j<x;j++) /*打印每个因子,以逗号相隔.*/
{
if(res[j]!=0)
{
printf("%d",res[j]);
printf("\,");
}
}
printf("
");
return(0);
} /*打印函数结束*/

int main(int argc, char *argv[]) /*主函数*/
{
int i; /*循环变量*/

for(i=1;i<=N;i++) /*循环找出小于N的所有完数并输出其因子.*/
{
if(wanshu(i)) print_factor(i);
continue;
}
getch();
return 0;
} /*主函数结束*/

3.打印100~999之间的水仙花数
#include "stdio.h"
#include "conio.h"

int main()
{
int i,j,k,n;
printf("水仙花数是:
");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)

printf("%d
",n);
}

getch();
return 1;
}

4.输入若干字符(以输入!为结束条件)分别统计其中字母、空格、数字和其它字符个数
#include "stdio.h"
#include "conio.h"
int main(void)
{
int word=0,digit=0,space=0,other=0,i=0;
char *p,s[80];
printf("
Input a string:");
while ((s[i]=getchar())!='
') i++;
p=s;
while(*p!='!')
{
if(((*p>='A')&&(*p='a')&&(*p<='z')))
word++;
else if(*p==' '||*p==9)
space++;
else if((*p>='0')&&(*p<='9'))
digit++;
else
other++;
p++;
}
printf("字母:%d个,空格:%d个,数字:%d个,其它字符:%d个",word,space,digit,other);

getch();
return 1;
}

5.编写九九乘法表
#include
#include

int main(){
int t[10][10]={0};
int i,j;

for(i=1;i<10;i++)
for(j=1;j<10;j++)
t[i][j]=i*j;
for(i=1;i<10;i++){
for(j=1;j<10;j++)
if(i>=j)
printf("%d*%d=%2d ",i,j,t[i][j]);
printf("
");
}

getch();
return 0;
}

6.求极数e的x次方=1+x+2的阶乘分之x平方+3的阶乘分之x立方+......n的阶乘分之xn次方
#include
#include

int x;
float sum;

long f1(int n)
{
if(n==0) return 1;
else return x*f1(n-1);
}

long f2(int n)
{
if(n==0) return 1;
else return n*f2(n-1);
}

int main()
{
int i,n;

printf("请输入x: ");
scanf("%d",&x);
printf("请输入n: ");
scanf("%d",&n);

for(i=0;i<=n;i++)
sum+=(float)f1(i)/(float)f2(i);
printf("e的%d次方为: %f",x,sum);

getch();
return 1;
}

7.输入4个学生三门课题成绩(二维整型数组)要求:每个学生的平均分、每门课平均分、输出每个学生三门课成绩
#include
#include

int main()
{
int a[4][3]={0};
int i,j;
int total=0;
float ave;
printf("请输入4个学生三门课题成绩:
");
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{
printf("第%d个学生第%d门课成绩: ",i+1,j+1);
fflush(stdin);
scanf("%d",&a[i][j]);
}

for(i=0;i<4;i++)
{
printf("第%d个学生三门课成绩为:
",i+1);
for(j=0;j<3;j++)
{
printf("第%d门课: ",j+1);
printf("%d
",a[i][j]);
}
printf("
");
}

printf("
");

for(i=0;i<4;i++)
{
total=0;
printf("第%d个学生平均分为: ",i+1);
for(j=0;j<3;j++) total+=a[i][j];
ave=total/3.0;

printf("%.1f
",ave);
}

for(i=0;i<3;i++)
{
total=0;
printf("第%d门课平均分为: ",i+1);
for(j=0;j<4;j++) total+=a[j][i];
ave=total/4.0;

printf("%.1f
",ave);
}

getch();
return 1;
}

8.用指针方法编写程序,输入三个字符串,按由小到大的顺序输出。要求用函数实现,并用指向一维数组的指针作为函数的参数。

#include
#include
#include

void convert(char *p[3])
{
char *t;
int i,j;

for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(strcmp(p[i],p[j])<0)
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
}

int main()
{
static char *a[3],b[20],c[20],d[20];
int i;
a[0]=b;
a[1]=c;
a[2]=d;

printf("Please input 3 strings:
");
for(i=0;i <3;i++)
gets(a[i]);

convert(a);

printf("After Sort:
",a[i]);
for(i=0;i <3;i++)
printf("%s
",a[i]);

getch();
return 0;
}

#include
void Inverse( int a[], int n )
{
int i;
for( i=0; i<n/2; i++ )
{
int t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
}
}
int main()
{
int a[10];
int i;
for( i=0;i<10;i++ )
{
scanf("%d", &a[i] );

}
Inverse(a,10 );

for( i=0;i<10;i++ )
printf("%d ", a[i] );
printf("
");
return 0;
}

#include<stdio.h>
#include <Windows.h>
int main()
{
int n1,n2;
char tag;
printf("C语言四则运算器\n");
printf("请输入两个数字格式如1,2\n");
scanf("%d,%d",&n1,&n2);
printf("请输入运算符:\n");
getchar();//接受你输入数字后的回车,因为回车也是字符
scanf("%c",&tag);
if(tag=='+') printf("%d+%d=%d",n1,n2,n1+n2);
if(tag=='-') printf("%d-%d=%d",n1,n2,n1-n2);
if(tag=='*') printf("%d*%d=%d",n1,n2,n1*n2);
if(tag=='/')
if (n2!=0)//判断除数是否为零
{
printf("%d*%d=%d",n1,n2,n1/n2);
}
else
{
printf("error!\n");
}

system("pause");
return 0;
}

#include<stdio.h>
main()
{
int n1,n2;
char tag;
printf("C语言四则运算器\n");
printf("请输入两个数字格式如1,2\n");
scanf("%d,%d",&n1,&n2);
printf("请输入运算符:\n");
scanf("%c",&tag);
if(tag=='+') printf("n1+n2=%d",n1+n2);
if(tag=='-') printf("n1-n2=%d",n1-n2);
if(tag=='*') printf("n1*n2=%d",n1*n2);
if(tag=='/') printf("n1/n2=%d",n1/n2);
}

应该是无法输出结果:最后的四个printf();语句有问题:
应该是:
if(tag=='+') printf("n1+n2=%d",n1+n2);
if(tag=='-') printf("n1-n2=%d",n1-n2);
if(tag=='*') printf("n1*n2=%d",n1*n2);
if(tag=='/') printf("n1/n2=%lf",(double)n1/n2);
最后的那个除法注意,如果你用printf("n1/n2=%d",n1/n2);的话,这样得不到正确结果,因为一个int和一个int相除,会得到一个整型int,所以除要强制转换成double才行!

原因是你在第一个scanf里输入数据后,会按下Enter,这个仍然保存的缓冲区中
下一个scan时,你觉得你输入了运算符,但是在运算符前,还有一个Enter(ASCII好像是0DH),所以,结果是没有输出!!!

你应该在第一个scanf里消去那个Enter,代码:scanf("%d,%d%*c",&n1, &n2);
%*c会消支这个Enter了!!!

问题补充:还有个
8用指针方法编写程序,输入三个字符串,按由小到大的顺序输出。要求用函数实现,并用指向一维数组的指针作为函数的参数。
======================
这一个在最后,多加些分吧,累死我了:(

给,都已经编译运行确认了:

1.任意输入一个数,判断它是否为素数
#include "stdio.h"
#include "conio.h"
#include "math.h"
int ss(int inputshu)
{
int i,m,t;
m=inputshu;
for(i=2;i<=sqrt(m);i++)
if(m%i==0)
if(i>sqrt(m)+1) t=1;
return(t);
}
int main(void)
{
int j;
printf("请输入一个数: \n");
scanf("%d",&j);
if(ss(j)==0) printf("%d不是素数",j);
else printf("%d是素数",j);

getch();
return 1;
}

2.打印1~1000内所有完数
#include<stdio.h> /*头文件*/
#include<conio.h>
#define N 1000 /*搜索范围在1000以内*/

int wanshu(int x) /*判断x是否完数*/
{
int i,sum=0;

for(i=1;i<=x;i++) /*对所有x的因子求和*/
{
if(x%i==0) sum=sum+i;
continue;
}

if(sum==x*2) return(1); /*如果求和结果等于2x则x是完数*/
else return(0); /*否则不是完数*/
} /*完数判断函数结束*/

int print_factor(int x) /*打印结果*/
{
int i,j,res[1000]=; /*i,j为循环变量.res数组记录每个因子.*/

for(i=1;i<x;i++) /*将每个非零因子存在数组res[]中*/
{
if(x%i==0) res[i]=i;
continue;
}
printf("%d its factors are: ",x); /*打印提示*/

for(j=0;j<x;j++) /*打印每个因子,以逗号相隔.*/
{
if(res[j]!=0)
{
printf("%d",res[j]);
printf("\,");
}
}
printf("\n");
return(0);
} /*打印函数结束*/

int main(int argc, char *argv[]) /*主函数*/
{
int i; /*循环变量*/

for(i=1;i<=N;i++) /*循环找出小于N的所有完数并输出其因子.*/
{
if(wanshu(i)) print_factor(i);
continue;
}
getch();
return 0;
} /*主函数结束*/

3.打印100~999之间的水仙花数
#include "stdio.h"
#include "conio.h"

int main()
{
int i,j,k,n;
printf("水仙花数是:\n");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)

printf("%d\n",n);
}

getch();
return 1;
}

4.输入若干字符(以输入!为结束条件)分别统计其中字母、空格、数字和其它字符个数
#include "stdio.h"
#include "conio.h"
int main(void)
{
int word=0,digit=0,space=0,other=0,i=0;
char *p,s[80];
printf("\nInput a string:");
while ((s[i]=getchar())!='\n') i++;
p=s;
while(*p!='!')
{
if(((*p>='A')&&(*p<='Z'))||((*p>='a')&&(*p<='z')))
word++;
else if(*p==' '||*p==9)
space++;
else if((*p>='0')&&(*p<='9'))
digit++;
else
other++;
p++;
}
printf("字母:%d个,空格:%d个,数字:%d个,其它字符:%d个",word,space,digit,other);

getch();
return 1;
}

5.编写九九乘法表
#include <stdio.h>
#include <conio.h>

int main(){
int t[10][10]=;
int i,j;

for(i=1;i<10;i++)
for(j=1;j<10;j++)
t[i][j]=i*j;
for(i=1;i<10;i++){
for(j=1;j<10;j++)
if(i>=j)
printf("%d*%d=%2d ",i,j,t[i][j]);
printf("\n");
}

getch();
return 0;
}

6.求极数e的x次方=1+x+2的阶乘分之x平方+3的阶乘分之x立方+......n的阶乘分之xn次方
#include <stdio.h>
#include <conio.h>

int x;
float sum;

long f1(int n)
{
if(n==0) return 1;
else return x*f1(n-1);
}

long f2(int n)
{
if(n==0) return 1;
else return n*f2(n-1);
}

int main()
{
int i,n;

printf("请输入x: ");
scanf("%d",&x);
printf("请输入n: ");
scanf("%d",&n);

for(i=0;i<=n;i++)
sum+=(float)f1(i)/(float)f2(i);
printf("e的%d次方为: %f",x,sum);

getch();
return 1;
}

7.输入4个学生三门课题成绩(二维整型数组)要求:每个学生的平均分、每门课平均分、输出每个学生三门课成绩
#include <stdio.h>
#include <conio.h>

int main()
{
int a[4][3]=;
int i,j;
int total=0;
float ave;
printf("请输入4个学生三门课题成绩: \n");
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{
printf("第%d个学生第%d门课成绩: ",i+1,j+1);
fflush(stdin);
scanf("%d",&a[i][j]);
}

for(i=0;i<4;i++)
{
printf("第%d个学生三门课成绩为: \n",i+1);
for(j=0;j<3;j++)
{
printf("第%d门课: ",j+1);
printf("%d\n",a[i][j]);
}
printf("\n");
}

printf("\n");

for(i=0;i<4;i++)
{
total=0;
printf("第%d个学生平均分为: ",i+1);
for(j=0;j<3;j++) total+=a[i][j];
ave=total/3.0;

printf("%.1f \n",ave);
}

for(i=0;i<3;i++)
{
total=0;
printf("第%d门课平均分为: ",i+1);
for(j=0;j<4;j++) total+=a[j][i];
ave=total/4.0;

printf("%.1f \n",ave);
}

getch();
return 1;
}

8.用指针方法编写程序,输入三个字符串,按由小到大的顺序输出。要求用函数实现,并用指向一维数组的指针作为函数的参数。

#include<conio.h>
#include<stdio.h>
#include<string.h>

void convert(char *p[3])
{
char *t;
int i,j;

for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(strcmp(p[i],p[j])<0)
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
}

int main()
{
static char *a[3],b[20],c[20],d[20];
int i;
a[0]=b;
a[1]=c;
a[2]=d;

printf("Please input 3 strings: \n");
for(i=0;i <3;i++)
gets(a[i]);

convert(a);

printf("After Sort: \n",a[i]);
for(i=0;i <3;i++)
printf("%s\n",a[i]);

getch();
return 0;
}

你第一条if语句,输出打印n1+n2,少打个n啊


能不能用C语言帮我解决这个问题
s+n的结果要放在n里,但在此前n的值要用T备份,加完后,T值放入s 需要一个累加器Sum,目的是要把1,2,3,5这样的数一个个累加进去... 这值在哪个变量中不必我说了吧...基本思路如此,流程上可能还能够化简.代码自己写.

请高手帮我解决一下这道C语言题目,谢谢!
注:s是字符数组,输入时会将int转为ascii码 答案C

帮我解决这道c语言题
(int):将其后的表达式强制转化为整数 小数取整是直接将小数位截去。这种保留小数点的方法采用的是取整法,例如3.1415,首先,将其增加100倍,变为314.15,然后加0.5,变为314.65,然后取整,变为314,然后缩小100倍,则变为想要的3.14啦~~~如果这个数是3.1465,那么它的变化将是:314.65-...

...答案是6 和5,为什么不是6和6,希望大家能帮我解决一下。
printf()在对逗号后面的数据处理时是按照从右往左的顺序的,即先执行a++,再执行++a,这样,输出的第二个数就是5了,而在执行++a时,c语言中并不认为这是第二次使用a(这段执行过程最好看汇编),所以执行的其实是5+1,所以输出的第二个数是6 其实你可以试一下printf("%d %d",++a,++a)...

谁帮我解决下这个C语言程序哪里出问题了,为什么不能正确赋值给这些字符...
C语言中在输入后要回车确定,如果下一个输入语句是字符型的话,系统就自动把回车赋值给了那个字符,需要用一个语句把回车接收,不要使他赋值到下一个语句 printf("请输入性别,男用F女用M:\\n");scanf("%c",&sex); getch(); \/\/这是一个函数,作用是接收一个字符 printf("请输入饮食习...

谁能帮我解答这个问题?在c语言里的(!)逻辑非,我一直都搞不懂,取反运 ...
取值0和1)可以看做只有一个bit的二进制变量,当对这个二进制取反的时候,就达到了非的效果。~0=1;~1=0.二进制取反对不同类型的整数是不同的,如果整数是逻辑变量型,效果如上。如果整数是字节,则~0=255,~255=0,~1=254,如果整数是short,则~0=65535,~65535=0,~1=65534,...

c语言问题,正在复习国二,请高手帮我解决疑问,不胜感激
while(k++ && n++>2);等价于while((k++) && (n++>2));因为k的值为零,那么表达式k && "任意数"的结果都为假,所以不会执行&&右边的运算。然后k的值自增,所以结果k = 1,n = 2

有c语言的大手子能解决一下这个问题吗?
int main(int argc,char *argv[]){ char s[31],i;printf("Please enter a positive integer...\\n");for(i=0;i<31;i++)if((s[i]=getchar())<='0' || s[i]>='9')break;s[i]='\\0';printf("\\n%s --> ",s);for(i=0;s[i];printf("%c ",s[i++]));printf("...

c语言 请帮我解答这个问题
这个程序我打到电脑上了,但是运行不出来,应该是程序有问题吧。。。我想。。。但是你可以从这个角度去思考 第一次,x==1234,x%10==4,4+‘0’=='4'(因为0的ASC码值是32,32+4=36是int型,但是putchar是输出的字符型,所以再转为字符型就是4),然后执行fun(x\/10),x\/10==123,123%10...

这个c语言程序是错误的,找个大神帮我改正一下,谢谢了。
void shuchu(int n);void fenxi(int n){ int a[52];int i,j;printf("游戏分析:\\n\\n");printf("\\t如下列数组,游戏开始时,所有牌面朝上,每张牌翻一下,则该张牌出现一次,若");printf("出现偶数次的牌为正反抵消,依然为朝上的,所以朝上的为1和以下偶数次出现的数。\\n");for(...

海珠区19787958450: 谁能帮我解决一个C语言的题目
初柱可米: #include<stdio.h> void main() { int t=0; int a1,a2,a3,a4,a5; scanf("%d,&t"); a1=t/10000; a2=(t%10000)/1000; a4=(t%100)/10; a5=t%10; if(a1==a5&&a2==a4) printf("这是一个回文数"); else printf("这不是一个回文数"); }

海珠区19787958450: 谁能帮我解决一下这个C语言程序啊???高手请进 -
初柱可米: 这个程序和你要求得很接近,可以参考#include<iostream.h> #include<stdio.h> struct trafficaccident{ int id; char licenceplate[8];char name[10]; char sex; char detail[50]; char time[8];char address[20]; }; struct trafficaccident acdnt[50]; //数组 存放学...

海珠区19787958450: 麻烦帮我解决这道C语言难题
初柱可米: #include<stdio.h> void main() {int a[4][4],i,j,sum=0,s=1,max,n;for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);max=a[0][0];for(i=0;i<4;i++){sum+=a[i][i];if(i%2==0)s*=a[i][i];if(max<a[i][i]){max=a[i][i];n=i;}}printf("和是:%d,积是:%d,最大值是:%d,位置是:%d,%d\n",sum,s,max,n,n); }

海珠区19787958450: 谁可以帮我解答这C语言题目?
初柱可米: #include<stdio.h> main(){ int i; char a[26]; for(i=0;i<26;i++) a[i]='a'+i; for(i=0;i<26;i++) printf("%c ",a[i]);printf("\n"); }

海珠区19787958450: 急急急!!!求好心人帮忙解决这个C语言编程问题!
初柱可米: #include"stdio.h" #include"conio.h" void main(){ printf("10+20=%d\n",10+20); printf("press key!\n"); getch();printf("10/20=%d\n",10/20); printf("press key!\n"); getch(); printf("The End\n"); }

海珠区19787958450: 哪位大侠能帮我解决一个c语言编程问题?
初柱可米: st只能是整数,你可以定义为int或者long.因为switch后面的表达式的值只能是整型

海珠区19787958450: 谁能帮我解决这个C语言问题,我大大感谢 -
初柱可米: 很简单的:#include#include#include#pragma comment(lib, "WINMM.LIB")main(){ int number; system("color b"); PlaySound(TEXT("DOOR1.wav"),0,SND_FILENAME|SND_ASYNC); printf("-------------------------------------------------------------------...

海珠区19787958450: 请帮我解决下这个C语言的问题 -
初柱可米: /*TC2编译通过*/ #include#includeint main() { int y,n,i,j; char ch; clrscr(); scanf("%d",&n); y=wherey(); for(ch='A',i=0;ifor(j=0;j{ gotoxy(j+1,y+i-j); printf("%c",ch++); } getch(); }

海珠区19787958450: 谁能帮我解决这个C语言问题?
初柱可米:#include <stdio.h> #define pi 3.1415 void main() { float r=5.8,h=3.8,di=9.3; int shu; printf("请输入判断数:"); scanf("%d",&shu); if(shu==1) printf("%f",pi*r*r); else if(shu==3) printf("%f",di*h/2); else printf("输入错误!"); } 不合适的地方追问,希望能帮到你

海珠区19787958450: 请帮忙解决一个简单的C语言程序问题,新手级 -
初柱可米: 当c1>96时,printf("%c",c2);执行了两次,所以会输出两个. 改正方法是: else {c2=c1+32; printf("%c",c2); } 觉得改好,加奖哦.

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